You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2019/12/03 21:56:48 UTC

svn commit: r1870769 [2/2] - in /poi: site/src/documentation/content/xdocs/components/spreadsheet/ trunk/src/examples/src/org/apache/poi/xssf/eventusermodel/ trunk/src/examples/src/org/apache/poi/xssf/eventusermodel/examples/ trunk/src/java/org/apache/...

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToFoConverter.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToFoConverter.java?rev=1870769&r1=1870768&r2=1870769&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToFoConverter.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToFoConverter.java Tue Dec  3 21:56:47 2019
@@ -22,9 +22,7 @@ import static org.apache.poi.POITestCase
 
 import java.io.StringWriter;
 
-import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
@@ -45,14 +43,12 @@ public class TestWordToFoConverter
                 .getDocumentInstance().openResourceAsStream( sampleFileName ) );
 
         WordToFoConverter wordToFoConverter = new WordToFoConverter(
-                XMLHelper.getDocumentBuilderFactory().newDocumentBuilder().newDocument() );
+                XMLHelper.newDocumentBuilder().newDocument() );
         wordToFoConverter.processDocument( hwpfDocument );
 
         StringWriter stringWriter = new StringWriter();
 
-        Transformer transformer = TransformerFactory.newInstance()
-                .newTransformer();
-        transformer.setOutputProperty( OutputKeys.INDENT, "yes" );
+        Transformer transformer = XMLHelper.newTransformer();
         transformer.transform(
                 new DOMSource( wordToFoConverter.getDocument() ),
                 new StreamResult( stringWriter ) );

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToHtmlConverter.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToHtmlConverter.java?rev=1870769&r1=1870768&r2=1870769&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToHtmlConverter.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToHtmlConverter.java Tue Dec  3 21:56:47 2019
@@ -16,21 +16,21 @@
 ==================================================================== */
 package org.apache.poi.hwpf.converter;
 
-import org.apache.poi.POIDataSamples;
-import org.apache.poi.hwpf.HWPFDocument;
-import org.apache.poi.util.XMLHelper;
-import org.junit.Test;
-import org.w3c.dom.Document;
+import static org.apache.poi.POITestCase.assertContains;
+import static org.junit.Assert.assertFalse;
+
+import java.io.StringWriter;
 
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
-import java.io.StringWriter;
 
-import static org.apache.poi.POITestCase.assertContains;
-import static org.junit.Assert.assertFalse;
+import org.apache.poi.POIDataSamples;
+import org.apache.poi.hwpf.HWPFDocument;
+import org.apache.poi.util.XMLHelper;
+import org.junit.Test;
+import org.w3c.dom.Document;
 
 /**
  * Test cases for {@link WordToHtmlConverter}
@@ -45,7 +45,7 @@ public class TestWordToHtmlConverter {
         HWPFDocument hwpfDocument = new HWPFDocument(POIDataSamples
                 .getDocumentInstance().openResourceAsStream(sampleFileName));
 
-        Document newDocument = XMLHelper.getDocumentBuilderFactory().newDocumentBuilder().newDocument();
+        Document newDocument = XMLHelper.newDocumentBuilder().newDocument();
         WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(
                 newDocument);
 
@@ -58,10 +58,7 @@ public class TestWordToHtmlConverter {
 
         StringWriter stringWriter = new StringWriter();
 
-        Transformer transformer = TransformerFactory.newInstance()
-                .newTransformer();
-        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
-        transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
+        Transformer transformer = XMLHelper.newTransformer();
         transformer.setOutputProperty(OutputKeys.METHOD, "html");
         transformer.transform(
                 new DOMSource(wordToHtmlConverter.getDocument()),

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java?rev=1870769&r1=1870768&r2=1870769&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java Tue Dec  3 21:56:47 2019
@@ -899,7 +899,7 @@ public class TestBugs{
     @Test
     public void test59322() throws Exception {
         try(HWPFDocument doc = HWPFTestDataSamples.openSampleFile("59322.doc")) {
-            Document document = XMLHelper.getDocumentBuilderFactory().newDocumentBuilder().newDocument();
+            Document document = XMLHelper.newDocumentBuilder().newDocument();
             WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(document);
             wordToHtmlConverter.processDocument(doc);
             assertNotNull(document);

Added: poi/trunk/src/testcases/org/apache/poi/util/TestXMLHelper.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/util/TestXMLHelper.java?rev=1870769&view=auto
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/util/TestXMLHelper.java (added)
+++ poi/trunk/src/testcases/org/apache/poi/util/TestXMLHelper.java Tue Dec  3 21:56:47 2019
@@ -0,0 +1,161 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+
+package org.apache.poi.util;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertTrue;
+
+import java.io.ByteArrayInputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.TimeUnit;
+
+import javax.xml.XMLConstants;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLOutputFactory;
+
+import org.junit.Test;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXNotRecognizedException;
+import org.xml.sax.XMLReader;
+
+public class TestXMLHelper {
+    @Test
+    public void testDocumentBuilder() throws Exception {
+        DocumentBuilder documentBuilder = XMLHelper.newDocumentBuilder();
+        assertNotSame(documentBuilder, XMLHelper.newDocumentBuilder());
+        assertTrue(documentBuilder.isNamespaceAware());
+        assertFalse(documentBuilder.isValidating());
+        documentBuilder.parse(new InputSource(new ByteArrayInputStream("<xml></xml>".getBytes(StandardCharsets.UTF_8))));
+    }
+
+    @Test
+    public void testCreatingManyDocumentBuilders() throws Exception {
+        int limit = 1000;
+        ArrayList<CompletableFuture<DocumentBuilder>> futures = new ArrayList<>();
+        for (int i = 0; i < limit; i++) {
+            futures.add(CompletableFuture.supplyAsync(XMLHelper::newDocumentBuilder));
+        }
+        HashSet<DocumentBuilder> dbs = new HashSet<>();
+        for (CompletableFuture<DocumentBuilder> future : futures) {
+            DocumentBuilder documentBuilder = future.get(10, TimeUnit.SECONDS);
+            assertTrue(documentBuilder.isNamespaceAware());
+            dbs.add(documentBuilder);
+        }
+        assertEquals(limit, dbs.size());
+    }
+
+    @Test
+    public void testDocumentBuilderFactory() throws Exception {
+        try {
+            DocumentBuilderFactory dbf = XMLHelper.getDocumentBuilderFactory();
+            assertTrue(dbf.getFeature(XMLConstants.FEATURE_SECURE_PROCESSING));
+            assertTrue(dbf.getFeature(XMLHelper.FEATURE_DISALLOW_DOCTYPE_DECL));
+            assertFalse(dbf.getFeature(XMLHelper.FEATURE_LOAD_DTD_GRAMMAR));
+            assertFalse(dbf.getFeature(XMLHelper.FEATURE_LOAD_EXTERNAL_DTD));
+        } catch (AbstractMethodError e) {
+            // ignore exceptions from old parsers that don't support this API (https://bz.apache.org/bugzilla/show_bug.cgi?id=62692)
+        }
+    }
+
+    @Test
+    public void testXMLReader() throws Exception {
+        XMLReader reader = XMLHelper.newXMLReader();
+        assertNotSame(reader, XMLHelper.newXMLReader());
+        try {
+            assertTrue(reader.getFeature(XMLConstants.FEATURE_SECURE_PROCESSING));
+            assertFalse(reader.getFeature(XMLHelper.FEATURE_LOAD_DTD_GRAMMAR));
+            assertFalse(reader.getFeature(XMLHelper.FEATURE_LOAD_EXTERNAL_DTD));
+            // assertEquals(XMLHelper.IGNORING_ENTITY_RESOLVER, reader.getEntityResolver());
+            assertNotNull(reader.getProperty(XMLHelper.PROPERTY_ENTITY_EXPANSION_LIMIT));
+            assertEquals("1", reader.getProperty(XMLHelper.PROPERTY_ENTITY_EXPANSION_LIMIT));
+            assertNotNull(reader.getProperty(XMLHelper.PROPERTY_SECURITY_MANAGER));
+        } catch (SAXNotRecognizedException e) {
+            // ignore exceptions from old parsers that don't support these features
+            // (https://bz.apache.org/bugzilla/show_bug.cgi?id=62692)
+        }
+        reader.parse(new InputSource(new ByteArrayInputStream("<xml></xml>".getBytes(StandardCharsets.UTF_8))));
+    }
+
+    @Test
+    public void testCreatingManyXMLReaders() throws Exception {
+        int limit = 1000;
+        ArrayList<CompletableFuture<XMLReader>> futures = new ArrayList<>();
+        for (int i = 0; i < limit; i++) {
+            futures.add(CompletableFuture.supplyAsync(() -> {
+                try {
+                    return XMLHelper.newXMLReader();
+                } catch (RuntimeException e) {
+                    throw e;
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+            }));
+        }
+        HashSet<XMLReader> readers = new HashSet<>();
+        for (CompletableFuture<XMLReader> future : futures) {
+            XMLReader reader = future.get(10, TimeUnit.SECONDS);
+            try {
+                assertTrue(reader.getFeature(XMLConstants.FEATURE_SECURE_PROCESSING));
+            } catch (SAXNotRecognizedException e) {
+                // can happen for older XML Parsers, e.g. we have a CI Job which runs with Xerces XML Parser
+                assertTrue("Had Exception about not-recognized SAX feature: " + e + " which is only expected" +
+                                   " for Xerces XML Parser, but had parser: " + reader,
+                           reader.getClass().getName().contains("org.apache.xerces"));
+            }
+            readers.add(reader);
+        }
+        assertEquals(limit, readers.size());
+    }
+
+    /**
+     * test that newXMLInputFactory returns a factory with sensible defaults
+     */
+    @Test
+    public void testNewXMLInputFactory() {
+        XMLInputFactory factory = XMLHelper.newXMLInputFactory();
+        assertTrue((boolean)factory.getProperty(XMLInputFactory.IS_NAMESPACE_AWARE));
+        assertFalse((boolean)factory.getProperty(XMLInputFactory.IS_VALIDATING));
+        assertFalse((boolean)factory.getProperty(XMLInputFactory.SUPPORT_DTD));
+        assertFalse((boolean)factory.getProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES));
+    }
+
+    /**
+     * test that newXMLOutputFactory returns a factory with sensible defaults
+     */
+    @Test
+    public void testNewXMLOutputFactory() {
+        XMLOutputFactory factory = XMLHelper.newXMLOutputFactory();
+        assertTrue((boolean)factory.getProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES));
+    }
+
+    /**
+     * test that newXMLEventFactory returns a factory
+     */
+    @Test
+    public void testNewXMLEventFactory() {
+        assertNotNull(XMLHelper.newXMLEventFactory());
+    }
+}

Propchange: poi/trunk/src/testcases/org/apache/poi/util/TestXMLHelper.java
------------------------------------------------------------------------------
    svn:eol-style = native



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org