home *** CD-ROM | disk | FTP | other *** search
Wrap
package java.util; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; import org.xml.sax.SAXException; class XMLUtils { private static final String PROPS_DTD_URI = "http://java.sun.com/dtd/properties.dtd"; private static final String PROPS_DTD = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><!-- DTD for properties --><!ELEMENT properties ( comment?, entry* ) ><!ATTLIST properties version CDATA #FIXED \"1.0\"><!ELEMENT comment (#PCDATA) ><!ELEMENT entry (#PCDATA) ><!ATTLIST entry key CDATA #REQUIRED>"; private static final String EXTERNAL_XML_VERSION = "1.0"; static void load(Properties var0, InputStream var1) throws IOException, InvalidPropertiesFormatException { Object var2 = null; try { var6 = getLoadingDoc(var1); } catch (SAXException var5) { throw new InvalidPropertiesFormatException(var5); } Element var3 = (Element)var6.getChildNodes().item(1); String var4 = var3.getAttribute("version"); if (var4.compareTo("1.0") > 0) { throw new InvalidPropertiesFormatException("Exported Properties file format version " + var4 + " is not supported. This java installation can read" + " versions " + "1.0" + " or older. You" + " may need to install a newer version of JDK."); } else { importProperties(var0, var3); } } static Document getLoadingDoc(InputStream var0) throws SAXException, IOException { DocumentBuilderFactory var1 = DocumentBuilderFactory.newInstance(); var1.setIgnoringElementContentWhitespace(true); var1.setValidating(true); var1.setCoalescing(true); var1.setIgnoringComments(true); try { DocumentBuilder var2 = var1.newDocumentBuilder(); var2.setEntityResolver(new Resolver((1)null)); var2.setErrorHandler(new EH((1)null)); InputSource var3 = new InputSource(var0); return var2.parse(var3); } catch (ParserConfigurationException var4) { throw new Error(var4); } } static void importProperties(Properties var0, Element var1) { NodeList var2 = var1.getChildNodes(); int var3 = var2.getLength(); int var4 = var3 > 0 && var2.item(0).getNodeName().equals("comment") ? 1 : 0; for(int var5 = var4; var5 < var3; ++var5) { Element var6 = (Element)var2.item(var5); if (var6.hasAttribute("key")) { Node var7 = var6.getFirstChild(); String var8 = var7 == null ? "" : var7.getNodeValue(); var0.setProperty(var6.getAttribute("key"), var8); } } } static void save(Properties var0, OutputStream var1, String var2, String var3) throws IOException { DocumentBuilderFactory var4 = DocumentBuilderFactory.newInstance(); DocumentBuilder var5 = null; try { var5 = var4.newDocumentBuilder(); } catch (ParserConfigurationException var12) { assert false; } Document var6 = var5.newDocument(); Element var7 = (Element)var6.appendChild(var6.createElement("properties")); if (var2 != null) { Element var8 = (Element)var7.appendChild(var6.createElement("comment")); var8.appendChild(var6.createTextNode(var2)); } for(String var10 : var0.keySet()) { Element var11 = (Element)var7.appendChild(var6.createElement("entry")); var11.setAttribute("key", var10); var11.appendChild(var6.createTextNode(var0.getProperty(var10))); } emitDocument(var6, var1, var3); } static void emitDocument(Document var0, OutputStream var1, String var2) throws IOException { TransformerFactory var3 = TransformerFactory.newInstance(); Transformer var4 = null; try { var4 = var3.newTransformer(); var4.setOutputProperty("doctype-system", "http://java.sun.com/dtd/properties.dtd"); var4.setOutputProperty("indent", "yes"); var4.setOutputProperty("method", "xml"); var4.setOutputProperty("encoding", var2); } catch (TransformerConfigurationException var10) { assert false; } DOMSource var5 = new DOMSource(var0); StreamResult var6 = new StreamResult(var1); try { var4.transform(var5, var6); } catch (TransformerException var9) { IOException var8 = new IOException(); var8.initCause(var9); throw var8; } } }