ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/util/uk/org/iscream/cms/util/XMLPacketMaker.java
(Generate patch)

Comparing projects/cms/source/util/uk/org/iscream/cms/util/XMLPacketMaker.java (file contents):
Revision 1.1 by pjm2, Wed Nov 22 08:40:53 2000 UTC vs.
Revision 1.11 by tdb, Sat Mar 10 00:49:39 2001 UTC

# Line 1 | Line 1
1 + //---PACKAGE DECLARATION---
2 + package uk.ac.ukc.iscream.util;
3 +
4 + //---IMPORTS---
5   import java.io.*;
6   import java.util.ArrayList;
7  
8   import org.xml.sax.*;
9 <
9 > import org.xml.sax.helpers.*;
10   import javax.xml.parsers.SAXParserFactory;
11   import javax.xml.parsers.ParserConfigurationException;
12   import javax.xml.parsers.SAXParser;
13  
14 < // Paul Mutton, pjm2@ukc.ac.uk
14 > /**
15 > * XMLPacketMaker - Creates an XMLPacket object.
16 > *
17 > * @author  $Author$
18 > * @version $Id$
19 > */
20 > public class XMLPacketMaker {
21  
22 < // XMLPacketMaker - Creates an XMLPacket object.
13 < public class XMLPacketMaker extends HandlerBase {
22 > //---FINAL ATTRIBUTES---
23  
24 <    // No-args constructor.  Generally not used.
25 <    public XMLPacketMaker () {
26 <        this.xml = "<packet></packet>";
27 <    }
24 >    /**
25 >     * The current CVS revision of this class
26 >     */
27 >    public final String REVISION = "$Revision$";
28 >    
29 >    /**
30 >     * A static reference to the system saxParser
31 >     * Use the default (non-validating) parser
32 >     */
33 >    private static SAXParser saxParser = null;
34 >    private static SAXParserFactory factory = SAXParserFactory.newInstance();
35 >    
36 > //---STATIC METHODS---
37  
38 <    // Constructor for accepting XML input.
38 > //---CONSTRUCTORS---
39 >
40 >    /**
41 >     * Constructor for accepting XML input.
42 >     *
43 >     * @param xml A String of XML to process.
44 >     */
45      public XMLPacketMaker (String xml) {
46 <        this.xml = xml;
46 >        _xml = xml;
47      }
48  
49 <    public XMLPacket createXMLPacket() {
49 > //---PUBLIC METHODS---
50  
51 +    /**
52 +     * Method to create an XML packet from the data this
53 +     * class was constructed with.
54 +     *
55 +     * @return an XMLPacket representing the XML String given
56 +     * @throws InvalidXMLException if the XML cannot be parsed
57 +     */
58 +    public XMLPacket createXMLPacket() throws InvalidXMLException {
59 +
60          // Create the XMLPacket to store values in.
61          XMLPacket packet = new XMLPacket();
62 <
30 <        // Use the default (non-validating) parser
31 <        SAXParserFactory factory = SAXParserFactory.newInstance();
62 >        
63          try {
33
64              // Parse the input
65 <            InputSource inputSource = new InputSource(new StringReader(xml));
66 <            SAXParser saxParser = factory.newSAXParser();
65 >            InputSource inputSource = new InputSource(new StringReader(_xml));
66 >            
67 >            if (saxParser == null) {
68 >                saxParser = factory.newSAXParser();
69 >            }
70 >            
71              saxParser.parse(inputSource, new XMLStringParser(packet));
38
72          }
73          catch (Exception e) {
74 <            System.out.println("XMLPacketMaker - I just received an XML packet that did not contain valid XML.");
75 <            //t.printStackTrace();
43 <            return null;
74 >            // couldn't parse the XML for some reason
75 >            throw new InvalidXMLException("Could not parse the XML: "+_xml);
76          }
77 <        
77 >        // parsed successfully, return the packet
78          return packet;
79      }
80 +
81 +    /**
82 +     * Overrides the {@link java.lang.Object#toString() Object.toString()}
83 +     * method to provide clean logging (every class should have this).
84 +     *
85 +     * This uses the uk.ac.ukc.iscream.util.NameFormat class
86 +     * to format the toString()
87 +     *
88 +     * @return the name of this class and its CVS revision
89 +     */
90 +    public String toString() {
91 +        return FormatName.getName(
92 +            _name,
93 +            getClass().getName(),
94 +            REVISION);
95 +    }
96 +
97 + //---PRIVATE METHODS---
98 +
99 + //---ACCESSOR/MUTATOR METHODS---
100 +
101 + //---ATTRIBUTES---
102 +
103 +    /**
104 +     * Holds the xml
105 +     */
106 +    String _xml;
107      
108 <    String xml;
109 < }
108 >    /**
109 >     * This is the friendly identifier of the
110 >     * component this class is running in.
111 >     * eg, a Filter may be called "filter1",
112 >     * If this class does not have an owning
113 >     * component,  a name from the configuration
114 >     * can be placed here.  This name could also
115 >     * be changed to null for utility classes.
116 >     */
117 >    private String _name = null;
118 >
119 > //---STATIC ATTRIBUTES---
120 >
121 > }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines