// WSDL generated classes import edu.isi.www.fedd_types.*; import edu.isi.www.fedd_wsdl.*; import edu.isi.www.topdl.*; import java.io.*; import java.util.*; import javax.xml.parsers.*; import org.xml.sax.*; import org.xml.sax.helpers.*; class ParseTopdl { /** Parser instance */ protected XMLReader xr; protected class TopdlHandler extends DefaultHandler { protected String topName; protected TopologyType topo; protected ElementType element; protected ComputerType comp; protected TestbedType tb; protected SegmentType seg; protected OtherType other; protected String name; protected String type; protected String aname; protected String aval; protected Vector elements; protected Vector subs; protected Vector attrs; protected Vector cpus; protected char[] c; TopdlHandler(String top) { topName = top; topo = null; element = null; comp = null; tb = null; seg = null; other = null; type = null; name = aname = aval = null; elements = new Vector(); subs = new Vector(); attrs = new Vector(); c = new char[0]; } public void startElement(String u, String l, String qn, Attributes a) throws SAXException { c = new char[0]; } public void endElement(String u, String l, String qn) throws SAXException { if (qn.equals(topName)) { topo = new TopologyType("1.0", subs.toArray(new SubstrateType[subs.size()]), elements.toArray(new ElementType[elements.size()]), attrs.toArray(new AttributeType[attrs.size()])); elements = new Vector(); subs = new Vector(); attrs = new Vector(); } else if (qn.equals("element")) { elements.add(new ElementType(comp, tb, seg, other)); comp = null; tb = null; seg = null; other = null; } else if (qn.equals("computer")) { comp = new ComputerType(name, cpus.toArray(new CpuType[cpus.size()]), null, null, null, null, null); name = null; cpus = new Vector(); } else if (qn.equals("testbed")) { tb = new TestbedType(null, null, null, null); } else if (qn.equals("segment")) { seg = new SegmentType(null, null, null, null, null); } else if (qn.equals("other")) { other = new OtherType(null, null); } else if (qn.equals("cpu")) { cpus.add(new CpuType(type, attrs.toArray(new AttributeType[attrs.size()]), 1)); type = null; attrs = new Vector(); } else if (qn.equals("type")) { type = new String(c); } else if (qn.equals("attribute")) { if ( aname != null && aval != null ) { attrs.add(new AttributeType(aname, aval)); aname = aval = null; } else { aname = new String(c); } } else if ( qn.equals("value")) { aval = new String(c); } else if ( qn.equals("name")) { name = new String(c); } c = new char[0]; } } public ParseTopdl(InputStream s) throws IOException, SAXException, ParserConfigurationException { xr = SAXParserFactory.newInstance().newSAXParser().getXMLReader(); xr.parse(new InputSource(s)); } }