ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/experimental/server/XMLReader/XMLPacketMaker.java
(Generate patch)

Comparing experimental/server/XMLReader/XMLPacketMaker.java (file contents):
Revision 1.9 by pjm2, Tue Nov 14 12:36:11 2000 UTC vs.
Revision 1.13 by pjm2, Fri Nov 17 14:45:56 2000 UTC

# Line 12 | Line 12 | import javax.xml.parsers.SAXParser;
12   // XMLPacketMaker - Creates an XMLPacket object.
13   public class XMLPacketMaker extends HandlerBase {
14  
15 +    // No-args constructor.  Generally not used.
16      public XMLPacketMaker () {
17 <        // default no-args constructor.
17 >        this.xml = "<packet></packet>";
18      }
19  
20 <    // Constructor for accepting a reference to an XMLPacket
21 <    public XMLPacketMaker (XMLPacket packet) {
22 <        this.packet = packet;
20 >    // Constructor for accepting XML input.
21 >    public XMLPacketMaker (String xml) {
22 >        this.xml = xml;
23      }
24  
25 <    public static void main(String[] args){
25 <        if (args.length != 1) {
26 <            System.err.println ("Usage: cmd filename");
27 <            System.exit (1);
28 <        }
25 >    public XMLPacket createXMLPacket() {
26  
27 +        // Create the XMLPacket to store values in.
28 +        XMLPacket packet = new XMLPacket();
29 +
30          // Use the default (non-validating) parser
31          SAXParserFactory factory = SAXParserFactory.newInstance();
32          try {
33            // Set up output stream
34            out = new OutputStreamWriter (System.out, "UTF8");
33  
36            // Create the XMLPacket to store values in.
37            packet = new XMLPacket();
38
34              // Parse the input
35 +            
36 +            xml.trim();
37 +            
38 +            //debug stuff
39 +            byte[] temp = xml.getBytes();
40 +            System.out.println("String length: "+temp.length+" ");
41 +            for (int i = 0 ; i < temp.length ; i++){
42 +                System.out.print((char)temp[i]);
43 +            }
44 +            
45 +            InputSource inputSource = new InputSource(new StringReader(xml));
46              SAXParser saxParser = factory.newSAXParser();
47 <            saxParser.parse(new File(args[0]), new XMLPacketMaker(packet));
47 >            saxParser.parse(inputSource, new XMLPacketParser(packet));
48  
43            // Print out the entire contents of the packet's HashMap.
44            System.out.println("XMLPacket contents: -");
45            packet.printAll();
46
47        } catch (Throwable t) {
48            System.out.println("The recieved packet did not contain valid XML, so I'm gonna reject it.");
49            //t.printStackTrace ();
49          }
50 <        System.exit (0);
51 <    }
52 <
53 <    static private Writer out;
54 <    private String indentString = "    "; // Amount to indent
55 <    private int indentLevel = 0;
56 <
57 <    // For storing the tag heirarchy.
59 <    private ArrayList tagList = new ArrayList();
60 <    static private XMLPacket packet = null;
61 <
62 <    //===========================================================
63 <    // SAX DocumentHandler methods
64 <    //===========================================================
65 <
66 <    public void startDocument () throws SAXException {
67 <        // No purpose currently.
68 <    }
69 <
70 <    public void endDocument () throws SAXException {
71 <        // No purpose currently.
72 <    }
73 <
74 <    // Add each tag's attribute to the XMLPacket.
75 <    // Note that all attributes within an opening tag are
76 <    // stored as "someroot.sometag.attributes.attribute_name"
77 <    // E.g. If <packet> is the root node, then:
78 <    //     <packet machine_name="raptor">
79 <    // is stored as:
80 <    //     "packet.attributes.machine_name"
81 <    // within the XMLPacket.
82 <    public void startElement (String name, AttributeList attrs) throws SAXException {
83 <        indentLevel++;
84 <        tagList.add(name);
85 <        if (attrs != null) {
86 <            for (int i = 0; i < attrs.getLength (); i++) {
87 <                packet.addParam(getPath()+".attributes."+attrs.getName(i), attrs.getValue(i));
88 <            }
50 >        //catch (IOException e){
51 >        //    System.out.println("IOException: "+e);
52 >        //}
53 >        catch (Throwable t) {
54 >            System.out.println("XMLPacketMaker - I just received an XML packet that did not contain valid XML.");
55 >            //System.out.println(e);
56 >            t.printStackTrace();
57 >            return null;
58          }
59 +        
60 +        return packet;
61      }
91
92    // When an XML element is finished with, we must remove
93    // the tag name from the tagList and decrement the indent
94    // level.
95    public void endElement (String name) throws SAXException {
96        tagList.remove(tagList.size()-1);    
97        indentLevel--;
98    }
99
100    // Any text falling within a pair of terminal tags must
101    // be added to the XMLPacket.  Trim leading and trailing
102    // spaces and do not bother to add if there is no data
103    // specified within the tags.
104    public void characters (char[] buf, int offset, int len) throws SAXException {
105        String s = new String(buf, offset, len);
106        if (!s.trim().equals("")) {
107            packet.addParam(getPath(), s);
108        }
109    }
110
111
112    //===========================================================
113    // Helpers ...
114    //===========================================================
62      
63 <    
117 <    // Return the heirarchical string to be used as a key value
118 <    // in the XMLPacket.
119 <    private String getPath () {
120 <        String path = (String)tagList.get(0);
121 <        if (tagList.size() > 0) {
122 <            for (int i = 1 ; i < tagList.size() ; i++) {
123 <                path = path + "." + (String)tagList.get(i);
124 <            }
125 <        }
126 <        return path;
127 <    }
128 <    
63 >    String xml;
64   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines