From 08b76e0b7e82756f7d9aec39780894a9c3f37d8a Mon Sep 17 00:00:00 2001 From: thzero Date: Mon, 4 Jul 2022 16:36:57 -0500 Subject: [PATCH] XMLReaderFactory.createXMLReader Deprecation (#1493) * remove the resources\datafiles\presets folder as its is being built by the copy-orc-files build script * Refactored from new Boolean and new Integer to Boolean.valueOf and Integer.valueOf due to deprecation warnings. Value of is supported in Java 8 (https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html) * Removed non-atomic updates around deprecation * updates * sync * resolved deprecated xmlreader --- .../openrocket/file/simplesax/SimpleSAX.java | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/core/src/net/sf/openrocket/file/simplesax/SimpleSAX.java b/core/src/net/sf/openrocket/file/simplesax/SimpleSAX.java index 2053d42e2..cc1fc55f6 100644 --- a/core/src/net/sf/openrocket/file/simplesax/SimpleSAX.java +++ b/core/src/net/sf/openrocket/file/simplesax/SimpleSAX.java @@ -11,6 +11,9 @@ import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.XMLReaderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; /** * A "simple SAX" XML reader. This system imposes the limit that an XML element may @@ -18,27 +21,26 @@ import org.xml.sax.helpers.XMLReaderFactory; * both. This holds true for both the OpenRocket and RockSim design formats and the * RockSim engine definition format. *

- * The actual handling is performed by subclasses of {@link ElementHandler}. The + * The actual handling is performed by subclasses of {@link ElementHandler}. The * initial handler is provided to the {@link #readXML(InputSource, ElementHandler, WarningSet)} * method. - * + * * @author Sampo Niskanen */ public class SimpleSAX { - static final XMLReaderCache cache = new XMLReaderCache(10); /** * Read a simple XML file. - * + * * @param source the SAX input source. * @param initialHandler the initial content handler. * @param warnings a warning set to store warning (cannot be null). * @throws IOException if an I/O exception occurs while reading. * @throws SAXException if e.g. malformed XML is encountered. */ - public static void readXML(InputSource source, ElementHandler initialHandler, - WarningSet warnings) throws IOException, SAXException { + public static void readXML(InputSource source, ElementHandler initialHandler, WarningSet warnings) + throws IOException, SAXException { DelegatorHandler xmlhandler = new DelegatorHandler(initialHandler, warnings); @@ -55,17 +57,27 @@ public class SimpleSAX { } private static class XMLReaderCache { + private final SAXParserFactory parserFactory; private final BlockingQueue queue; + private XMLReaderCache( int maxSize ) { - this.queue = new LinkedBlockingQueue(maxSize); + parserFactory = SAXParserFactory.newInstance(); + parserFactory.setNamespaceAware(true); + queue = new LinkedBlockingQueue(maxSize); } private XMLReader createXMLReader() throws SAXException { - XMLReader reader = queue.poll(); if ( reader == null ) { + try { reader = XMLReaderFactory.createXMLReader(); + SAXParser parser = parserFactory.newSAXParser(); + reader = parser.getXMLReader(); + } + catch (ParserConfigurationException ignore) { + System.out.print(ignore); + } } return reader; } @@ -77,5 +89,4 @@ public class SimpleSAX { queue.offer( reader ); } } - }