git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1867497 13f79535-47bb-0310-9956-ffa450edef68tags/REL_4_1_1
@@ -0,0 +1,49 @@ | |||
/* ==================================================================== | |||
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.ooxml.util; | |||
import org.apache.poi.util.POILogFactory; | |||
import org.apache.poi.util.POILogger; | |||
import javax.xml.XMLConstants; | |||
import javax.xml.xpath.XPathFactory; | |||
public final class XPathHelper { | |||
private static POILogger logger = POILogFactory.getLogger(XPathHelper.class); | |||
private XPathHelper() {} | |||
static final XPathFactory xpathFactory = XPathFactory.newInstance(); | |||
static { | |||
trySetFeature(xpathFactory, XMLConstants.FEATURE_SECURE_PROCESSING, true); | |||
} | |||
public static XPathFactory getFactory() { | |||
return xpathFactory; | |||
} | |||
private static void trySetFeature(XPathFactory xpf, String feature, boolean enabled) { | |||
try { | |||
xpf.setFeature(feature, enabled); | |||
} catch (Exception e) { | |||
logger.log(POILogger.WARN, "XPathFactory Feature unsupported", feature, e); | |||
} catch (AbstractMethodError ame) { | |||
logger.log(POILogger.WARN, "Cannot set XPathFactory feature because outdated XML parser in classpath", feature, ame); | |||
} | |||
} | |||
} |
@@ -38,10 +38,10 @@ import javax.xml.namespace.NamespaceContext; | |||
import javax.xml.xpath.XPath; | |||
import javax.xml.xpath.XPathConstants; | |||
import javax.xml.xpath.XPathExpressionException; | |||
import javax.xml.xpath.XPathFactory; | |||
import org.apache.poi.EncryptedDocumentException; | |||
import org.apache.poi.ooxml.util.DocumentHelper; | |||
import org.apache.poi.ooxml.util.XPathHelper; | |||
import org.apache.poi.openxml4j.opc.PackagePart; | |||
import org.apache.poi.util.POILogFactory; | |||
import org.apache.poi.util.POILogger; | |||
@@ -107,7 +107,7 @@ public class SignaturePart { | |||
*/ | |||
public boolean validate() { | |||
KeyInfoKeySelector keySelector = new KeyInfoKeySelector(); | |||
XPath xpath = XPathFactory.newInstance().newXPath(); | |||
XPath xpath = XPathHelper.getFactory().newXPath(); | |||
xpath.setNamespaceContext(new XPathNSContext()); | |||
try { | |||
@@ -165,7 +165,7 @@ public class SignaturePart { | |||
signatureConfig.setSigningCertificateChain(certChain); | |||
signatureConfig.setSignatureMethodFromUri(xmlSignature.getSignedInfo().getSignatureMethod().getAlgorithm()); | |||
final XPath xpath = XPathFactory.newInstance().newXPath(); | |||
final XPath xpath = XPathHelper.getFactory().newXPath(); | |||
xpath.setNamespaceContext(new XPathNSContext()); | |||
final Map<String,Consumer<String>> m = new HashMap(); |
@@ -34,8 +34,8 @@ import javax.xml.parsers.DocumentBuilder; | |||
import javax.xml.xpath.XPath; | |||
import javax.xml.xpath.XPathConstants; | |||
import javax.xml.xpath.XPathExpressionException; | |||
import javax.xml.xpath.XPathFactory; | |||
import org.apache.poi.ooxml.util.XPathHelper; | |||
import org.apache.poi.ss.usermodel.DateUtil; | |||
import org.apache.poi.ss.util.CellReference; | |||
import org.apache.poi.ooxml.util.DocumentHelper; | |||
@@ -95,8 +95,7 @@ public class XSSFImportFromXML { | |||
List<XSSFTable> tables = _map.getRelatedTables(); | |||
XPathFactory xpathFactory = XPathFactory.newInstance(); | |||
XPath xpath = xpathFactory.newXPath(); | |||
XPath xpath = XPathHelper.getFactory().newXPath(); | |||
// Setting namespace context to XPath | |||
// Assuming that the namespace prefix in the mapping xpath is the | |||
@@ -305,4 +304,5 @@ public class XSSFImportFromXML { | |||
return null; | |||
} | |||
} | |||
} |