| 1 |
|
//---PACKAGE DECLARATION--- |
| 2 |
< |
package uk.ac.ukc.iscream.util; |
| 2 |
> |
package uk.org.iscream.util; |
| 3 |
|
|
| 4 |
|
//---IMPORTS--- |
| 5 |
|
import java.io.*; |
| 6 |
– |
import java.util.ArrayList; |
| 7 |
– |
|
| 6 |
|
import org.xml.sax.*; |
| 7 |
< |
import javax.xml.parsers.SAXParserFactory; |
| 10 |
< |
import javax.xml.parsers.ParserConfigurationException; |
| 11 |
< |
import javax.xml.parsers.SAXParser; |
| 7 |
> |
import javax.xml.parsers.*; |
| 8 |
|
|
| 13 |
– |
import uk.ac.ukc.iscream.core.*; |
| 14 |
– |
|
| 9 |
|
/** |
| 10 |
|
* XMLPacketMaker - Creates an XMLPacket object. |
| 11 |
|
* |
| 12 |
|
* @author $Author$ |
| 13 |
|
* @version $Id$ |
| 14 |
|
*/ |
| 15 |
< |
public class XMLPacketMaker extends HandlerBase { |
| 15 |
> |
public class XMLPacketMaker { |
| 16 |
|
|
| 17 |
|
//---FINAL ATTRIBUTES--- |
| 18 |
|
|
| 20 |
|
* The current CVS revision of this class |
| 21 |
|
*/ |
| 22 |
|
public final String REVISION = "$Revision$"; |
| 23 |
< |
|
| 23 |
> |
|
| 24 |
> |
/** |
| 25 |
> |
* A reference to the system saxParser factory |
| 26 |
> |
*/ |
| 27 |
> |
private final SAXParserFactory _factory = SAXParserFactory.newInstance(); |
| 28 |
> |
|
| 29 |
|
//---STATIC METHODS--- |
| 30 |
|
|
| 31 |
|
//---CONSTRUCTORS--- |
| 32 |
|
|
| 34 |
– |
// Constructor for accepting XML input. |
| 35 |
– |
public XMLPacketMaker (String xml) { |
| 36 |
– |
_xml = xml; |
| 37 |
– |
} |
| 38 |
– |
|
| 33 |
|
//---PUBLIC METHODS--- |
| 34 |
|
|
| 35 |
< |
public XMLPacket createXMLPacket() { |
| 35 |
> |
/** |
| 36 |
> |
* Method to create an XML packet from the data this |
| 37 |
> |
* class was constructed with. |
| 38 |
> |
* |
| 39 |
> |
* @param xml the XML String to parse |
| 40 |
> |
* @return an XMLPacket representing the XML String given |
| 41 |
> |
* @throws InvalidXMLException if the XML cannot be parsed |
| 42 |
> |
*/ |
| 43 |
> |
public XMLPacket createXMLPacket(String xml) throws InvalidXMLException { |
| 44 |
|
|
| 45 |
|
// Create the XMLPacket to store values in. |
| 46 |
|
XMLPacket packet = new XMLPacket(); |
| 47 |
< |
|
| 46 |
< |
// Use the default (non-validating) parser |
| 47 |
< |
SAXParserFactory factory = SAXParserFactory.newInstance(); |
| 47 |
> |
|
| 48 |
|
try { |
| 49 |
– |
|
| 49 |
|
// Parse the input |
| 50 |
< |
InputSource inputSource = new InputSource(new StringReader(_xml)); |
| 51 |
< |
SAXParser saxParser = factory.newSAXParser(); |
| 53 |
< |
saxParser.parse(inputSource, new XMLStringParser(packet)); |
| 54 |
< |
|
| 50 |
> |
InputSource inputSource = new InputSource(new StringReader(xml)); |
| 51 |
> |
_factory.newSAXParser().parse(inputSource, new XMLStringParser(packet)); |
| 52 |
|
} |
| 53 |
|
catch (Exception e) { |
| 54 |
< |
_logger.write(this.toString(), Logger.WARNING, e.toString()); |
| 55 |
< |
_logger.write(this.toString(), Logger.WARNING, "An invalid XML UDP packet has been detected: "+packet.printAll()); |
| 59 |
< |
return null; |
| 54 |
> |
// couldn't parse the XML for some reason |
| 55 |
> |
throw new InvalidXMLException("Could not parse the XML: "+xml); |
| 56 |
|
} |
| 57 |
|
|
| 58 |
+ |
// parsed successfully, return the packet |
| 59 |
|
return packet; |
| 60 |
|
} |
| 61 |
|
|
| 63 |
|
* Overrides the {@link java.lang.Object#toString() Object.toString()} |
| 64 |
|
* method to provide clean logging (every class should have this). |
| 65 |
|
* |
| 66 |
< |
* This uses the uk.ac.ukc.iscream.util.NameFormat class |
| 66 |
> |
* This uses the uk.org.iscream.util.NameFormat class |
| 67 |
|
* to format the toString() |
| 68 |
|
* |
| 69 |
|
* @return the name of this class and its CVS revision |
| 80 |
|
//---ACCESSOR/MUTATOR METHODS--- |
| 81 |
|
|
| 82 |
|
//---ATTRIBUTES--- |
| 86 |
– |
|
| 87 |
– |
/** |
| 88 |
– |
* Holds the xml |
| 89 |
– |
*/ |
| 90 |
– |
String _xml; |
| 91 |
– |
|
| 92 |
– |
/** |
| 93 |
– |
* This holds a reference to the |
| 94 |
– |
* system logger that is being used. |
| 95 |
– |
*/ |
| 96 |
– |
private Logger _logger = ReferenceManager.getInstance().getLogger(); |
| 83 |
|
|
| 84 |
|
/** |
| 85 |
|
* This is the friendly identifier of the |