]> source.dussan.org Git - poi.git/commitdiff
Fix XmlInputFactory error of gump build
authorAndreas Beeker <kiwiwings@apache.org>
Sat, 1 Aug 2015 16:10:11 +0000 (16:10 +0000)
committerAndreas Beeker <kiwiwings@apache.org>
Sat, 1 Aug 2015 16:10:11 +0000 (16:10 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1693720 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/sl/draw/geom/PresetGeometries.java

index c5aef249fe4a9b43d6e5798bb34551d1b0a22c33..e338ec91c5ddcc8cb48645b6fc1cf43e35fd57f6 100644 (file)
@@ -37,6 +37,7 @@ import org.apache.poi.util.POILogger;
 public class PresetGeometries extends LinkedHashMap<String, CustomGeometry> {
     private final static POILogger LOG = POILogFactory.getLogger(PresetGeometries.class);
     protected final static String BINDING_PACKAGE = "org.apache.poi.sl.draw.binding";
+    private static final String JAXPFACTORYID = "javax.xml.stream.XMLInputFactory";
     
     protected static PresetGeometries _inst;
 
@@ -44,9 +45,6 @@ public class PresetGeometries extends LinkedHashMap<String, CustomGeometry> {
 
     @SuppressWarnings("unused")
     public void init(InputStream is) throws XMLStreamException, JAXBException {
-        // Reader xml = new InputStreamReader( is, Charset.forName("UTF-8") );
-        
-
         // StAX:
         EventFilter startElementFilter = new EventFilter() {
             @Override
@@ -55,8 +53,9 @@ public class PresetGeometries extends LinkedHashMap<String, CustomGeometry> {
             }
         };
         
-        long cntElem = 0;
-        XMLInputFactory staxFactory = XMLInputFactory.newInstance();
+        fixXmlSystemProperties();
+        
+        XMLInputFactory staxFactory = XMLInputFactory.newFactory();
         XMLEventReader staxReader = staxFactory.createXMLEventReader(is);
         XMLEventReader staxFiltRd = staxFactory.createFilteredReader(staxReader, startElementFilter);
         // ignore StartElement:
@@ -65,6 +64,7 @@ public class PresetGeometries extends LinkedHashMap<String, CustomGeometry> {
         JAXBContext jaxbContext = JAXBContext.newInstance(BINDING_PACKAGE);
         Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
 
+        long cntElem = 0;
         while (staxFiltRd.peek() != null) {
             StartElement evRoot = (StartElement)staxFiltRd.peek();
             String name = evRoot.getName().getLocalPart();
@@ -115,4 +115,21 @@ public class PresetGeometries extends LinkedHashMap<String, CustomGeometry> {
 
         return _inst;
     }
+    
+    public static void fixXmlSystemProperties() {
+        // handling for illegal system properties - mainly because of failing gump build
+        String xmlFactClass = System.getProperty(JAXPFACTORYID);
+        if (xmlFactClass != null) {
+            try {
+                Class.forName(xmlFactClass);
+            } catch (Exception e) {
+                LOG.log(POILogger.ERROR, "Invalid xml input factory config detected. ("+JAXPFACTORYID+"="+xmlFactClass+")");
+                try {
+                    System.clearProperty(JAXPFACTORYID);
+                } catch (Exception e2) {
+                    LOG.log(POILogger.ERROR, "Failed to remove invalid xml input factory", e2);
+                }
+            }
+        }
+    }
 }