Return-Path: X-Original-To: apmail-poi-commits-archive@minotaur.apache.org Delivered-To: apmail-poi-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 15037112D8 for ; Mon, 18 Aug 2014 16:01:58 +0000 (UTC) Received: (qmail 88735 invoked by uid 500); 18 Aug 2014 16:01:57 -0000 Delivered-To: apmail-poi-commits-archive@poi.apache.org Received: (qmail 88695 invoked by uid 500); 18 Aug 2014 16:01:57 -0000 Mailing-List: contact commits-help@poi.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@poi.apache.org Delivered-To: mailing list commits@poi.apache.org Received: (qmail 88686 invoked by uid 99); 18 Aug 2014 16:01:57 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 18 Aug 2014 16:01:57 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 18 Aug 2014 16:01:55 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id ACE4323888E2; Mon, 18 Aug 2014 16:01:35 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1618644 - in /poi/trunk/src: java/org/apache/poi/util/XMLHelper.java ooxml/java/org/apache/poi/util/DocumentHelper.java ooxml/java/org/apache/poi/util/SAXHelper.java Date: Mon, 18 Aug 2014 16:01:35 -0000 To: commits@poi.apache.org From: uschindler@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20140818160135.ACE4323888E2@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: uschindler Date: Mon Aug 18 16:01:35 2014 New Revision: 1618644 URL: http://svn.apache.org/r1618644 Log: Add Dominik's suggestion to DocumentBuilderFactories. I also removed the setXIncludeAware(false) in XMLHelper, because it causes the same problem and is disabled by default. Modified: poi/trunk/src/java/org/apache/poi/util/XMLHelper.java poi/trunk/src/ooxml/java/org/apache/poi/util/DocumentHelper.java poi/trunk/src/ooxml/java/org/apache/poi/util/SAXHelper.java Modified: poi/trunk/src/java/org/apache/poi/util/XMLHelper.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/util/XMLHelper.java?rev=1618644&r1=1618643&r2=1618644&view=diff ============================================================================== --- poi/trunk/src/java/org/apache/poi/util/XMLHelper.java (original) +++ poi/trunk/src/java/org/apache/poi/util/XMLHelper.java Mon Aug 18 16:01:35 2014 @@ -19,7 +19,6 @@ package org.apache.poi.util; import javax.xml.XMLConstants; import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; /** * Helper methods for working with javax.xml classes. @@ -27,22 +26,31 @@ import javax.xml.parsers.ParserConfigura */ public final class XMLHelper { + private static POILogger logger = POILogFactory.getLogger(XMLHelper.class); + /** * Creates a new DocumentBuilderFactory, with sensible defaults */ public static DocumentBuilderFactory getDocumentBuilderFactory() { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + factory.setExpandEntityReferences(false); + trySetSAXFeature(factory, XMLConstants.FEATURE_SECURE_PROCESSING, true); + trySetSAXFeature(factory, "http://xml.org/sax/features/external-general-entities", false); + trySetSAXFeature(factory, "http://xml.org/sax/features/external-parameter-entities", false); + trySetSAXFeature(factory, "http://apache.org/xml/features/nonvalidating/load-external-dtd", false); + trySetSAXFeature(factory, "http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false); + return factory; + } + + private static void trySetSAXFeature(DocumentBuilderFactory documentBuilderFactory, String feature, boolean enabled) { try { - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - factory.setXIncludeAware(false); - factory.setExpandEntityReferences(false); - factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); - factory.setFeature("http://xml.org/sax/features/external-general-entities", false); - factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); - factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); - factory.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false); - return factory; - } catch (ParserConfigurationException e) { - throw new RuntimeException("Broken XML Setup", e); + documentBuilderFactory.setFeature(feature, enabled); + } catch (Exception e) { + logger.log(POILogger.WARN, "SAX Feature unsupported", feature, e); + } catch (AbstractMethodError ame) { + logger.log(POILogger.WARN, "Cannot set SAX feature because outdated XML parser in classpath", feature, ame); } } + + } Modified: poi/trunk/src/ooxml/java/org/apache/poi/util/DocumentHelper.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/util/DocumentHelper.java?rev=1618644&r1=1618643&r2=1618644&view=diff ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/util/DocumentHelper.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/util/DocumentHelper.java Mon Aug 18 16:01:35 2014 @@ -61,9 +61,12 @@ public final class DocumentHelper { try { documentBuilderFactory.setFeature(feature, enabled); } catch (Exception e) { - logger.log(POILogger.INFO, "SAX Feature unsupported", feature, e); + logger.log(POILogger.WARN, "SAX Feature unsupported", feature, e); + } catch (AbstractMethodError ame) { + logger.log(POILogger.WARN, "Cannot set SAX feature because outdated XML parser in classpath", feature, ame); } } + private static void trySetXercesSecurityManager(DocumentBuilderFactory documentBuilderFactory) { // Try built-in JVM one first, standalone if not for (String securityManagerClassName : new String[] { @@ -78,7 +81,7 @@ public final class DocumentHelper { // Stop once one can be setup without error return; } catch (Exception e) { - logger.log(POILogger.INFO, "SAX Security Manager could not be setup", e); + logger.log(POILogger.WARN, "SAX Security Manager could not be setup", e); } } } Modified: poi/trunk/src/ooxml/java/org/apache/poi/util/SAXHelper.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/util/SAXHelper.java?rev=1618644&r1=1618643&r2=1618644&view=diff ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/util/SAXHelper.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/util/SAXHelper.java Mon Aug 18 16:01:35 2014 @@ -69,7 +69,9 @@ public final class SAXHelper { try { xmlReader.setFeature(feature, enabled); } catch (Exception e) { - logger.log(POILogger.INFO, "SAX Feature unsupported", feature, e); + logger.log(POILogger.WARN, "SAX Feature unsupported", feature, e); + } catch (AbstractMethodError ame) { + logger.log(POILogger.WARN, "Cannot set SAX feature because outdated XML parser in classpath", feature, ame); } } @@ -87,7 +89,7 @@ public final class SAXHelper { // Stop once one can be setup without error return; } catch (Exception e) { - logger.log(POILogger.INFO, "SAX Security Manager could not be setup", e); + logger.log(POILogger.WARN, "SAX Security Manager could not be setup", e); } } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org For additional commands, e-mail: commits-help@poi.apache.org