You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2015/11/06 20:35:08 UTC
[1/2] cxf git commit: Remove xerces dep (use xerces built into the
JDK) to allow test failures to duplicate in eclipse
Repository: cxf
Updated Branches:
refs/heads/master ce6923c37 -> ced98c6e9
Remove xerces dep (use xerces built into the JDK) to allow test failures to duplicate in eclipse
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/39851b83
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/39851b83
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/39851b83
Branch: refs/heads/master
Commit: 39851b83af116611ce0efe70c4b9a32ee8491523
Parents: ce6923c
Author: Daniel Kulp <dk...@apache.org>
Authored: Fri Nov 6 14:08:30 2015 -0500
Committer: Daniel Kulp <dk...@apache.org>
Committed: Fri Nov 6 14:09:04 2015 -0500
----------------------------------------------------------------------
core/pom.xml | 7 --
.../cxf/common/xmlschema/ImportRepairTest.java | 107 +++++++++++--------
rt/wsdl/pom.xml | 6 --
.../factory/XercesSchemaValidationUtils.java | 88 ++++++++-------
.../factory/XercesXsdValidationImpl.java | 2 +
.../validator/internal/SchemaValidator.java | 1 +
6 files changed, 112 insertions(+), 99 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/39851b83/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index 81abf12..ab6ccbd 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -142,13 +142,6 @@
<artifactId>woodstox-core-asl</artifactId>
</dependency>
<dependency>
- <!-- this is probably not quite what we want in terms of the behavior of the other tests
- than the schema surgery test. -->
- <groupId>xerces</groupId>
- <artifactId>xercesImpl</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<optional>true</optional>
http://git-wip-us.apache.org/repos/asf/cxf/blob/39851b83/core/src/test/java/org/apache/cxf/common/xmlschema/ImportRepairTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/cxf/common/xmlschema/ImportRepairTest.java b/core/src/test/java/org/apache/cxf/common/xmlschema/ImportRepairTest.java
index 95e202f..14e5e25 100644
--- a/core/src/test/java/org/apache/cxf/common/xmlschema/ImportRepairTest.java
+++ b/core/src/test/java/org/apache/cxf/common/xmlschema/ImportRepairTest.java
@@ -19,6 +19,8 @@
package org.apache.cxf.common.xmlschema;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -30,8 +32,10 @@ import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamWriter;
import javax.xml.transform.dom.DOMSource;
+import org.w3c.dom.DOMConfiguration;
import org.w3c.dom.DOMError;
import org.w3c.dom.DOMErrorHandler;
+import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.bootstrap.DOMImplementationRegistry;
import org.w3c.dom.ls.LSInput;
@@ -52,9 +56,6 @@ import org.apache.ws.commons.schema.XmlSchemaSerializer;
import org.apache.ws.commons.schema.XmlSchemaSimpleType;
import org.apache.ws.commons.schema.XmlSchemaSimpleTypeRestriction;
import org.apache.ws.commons.schema.utils.NamespaceMap;
-import org.apache.xerces.xs.LSInputList;
-import org.apache.xerces.xs.XSImplementation;
-import org.apache.xerces.xs.XSLoader;
import org.junit.Assert;
import org.junit.Test;
@@ -66,24 +67,6 @@ public class ImportRepairTest extends Assert {
static boolean dumpSchemas;
- @SuppressWarnings("rawtypes")
- private static final class ListLSInput extends ArrayList implements LSInputList {
- private static final long serialVersionUID = 1L;
-
- @SuppressWarnings("unchecked")
- private ListLSInput(List inputs) {
- super(inputs);
- }
-
- public int getLength() {
- return size();
- }
-
- public LSInput item(int index) {
- return (LSInput)get(index);
- }
- }
-
private static final Logger LOG = LogUtils.getL7dLogger(ImportRepairTest.class);
private static final String IMPORTING_SCHEMA = "urn:importing";
@@ -152,6 +135,15 @@ public class ImportRepairTest extends Assert {
collection.addCrossImports();
tryToParseSchemas();
}
+
+ Method findMethod(Object o, String name) {
+ for (Method m: o.getClass().getMethods()) {
+ if (m.getName() == name) {
+ return m;
+ }
+ }
+ return null;
+ }
private void tryToParseSchemas() throws Exception {
// Get DOM Implementation using DOM Registry
@@ -169,34 +161,57 @@ public class ImportRepairTest extends Assert {
inputs.add(input);
}
- System.setProperty(DOMImplementationRegistry.PROPERTY,
- "org.apache.xerces.dom.DOMXSImplementationSourceImpl");
DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance();
+ DOMImplementation impl = registry.getDOMImplementation("XS-Loader");
- XSImplementation impl = (XSImplementation)registry.getDOMImplementation("XS-Loader");
-
- XSLoader schemaLoader = impl.createXSLoader(null);
- schemaLoader.getConfig().setParameter("validate", Boolean.TRUE);
- schemaLoader.getConfig().setParameter("error-handler", new DOMErrorHandler() {
-
- public boolean handleError(DOMError error) {
- LOG.info("Schema parsing error: " + error.getMessage()
- + " " + error.getType()
- + " " + error.getLocation().getUri()
- + " " + error.getLocation().getLineNumber()
- + ":" + error.getLocation().getColumnNumber());
- throw new DOMErrorException(error);
- }
- });
- schemaLoader.getConfig().setParameter("resource-resolver", new LSResourceResolver() {
-
- public LSInput resolveResource(String type, String namespaceURI, String publicId,
- String systemId, String baseURI) {
- return resolverMap.get(namespaceURI);
+
+ try {
+ Object schemaLoader = findMethod(impl, "createXSLoader").invoke(impl, new Object[1]);
+ DOMConfiguration config = (DOMConfiguration)findMethod(schemaLoader, "getConfig").invoke(schemaLoader);
+
+ config.setParameter("validate", Boolean.TRUE);
+ try {
+ //bug in the JDK doesn't set this, but accesses it
+ config.setParameter("http://www.oracle.com/xml/jaxp/properties/xmlSecurityPropertyManager",
+ Class.forName("com.sun.org.apache.xerces.internal.utils.XMLSecurityPropertyManager")
+ .newInstance());
+
+ config.setParameter("http://apache.org/xml/properties/security-manager",
+ Class.forName("com.sun.org.apache.xerces.internal.utils.XMLSecurityManager")
+ .newInstance());
+ } catch (Throwable t) {
+ //ignore
}
- });
-
- schemaLoader.loadInputList(new ListLSInput(inputs));
+ config.setParameter("error-handler", new DOMErrorHandler() {
+
+ public boolean handleError(DOMError error) {
+ LOG.info("Schema parsing error: " + error.getMessage()
+ + " " + error.getType()
+ + " " + error.getLocation().getUri()
+ + " " + error.getLocation().getLineNumber()
+ + ":" + error.getLocation().getColumnNumber());
+ throw new DOMErrorException(error);
+ }
+ });
+ config.setParameter("resource-resolver", new LSResourceResolver() {
+
+ public LSInput resolveResource(String type, String namespaceURI, String publicId,
+ String systemId, String baseURI) {
+ return resolverMap.get(namespaceURI);
+ }
+ });
+
+ Method m = findMethod(schemaLoader, "loadInputList");
+ String name = m.getParameterTypes()[0].getName() + "Impl";
+ name = name.replace("xs.LS", "impl.xs.util.LS");
+ Class<?> c = Class.forName(name);
+ Object inputList = c.getConstructor(LSInput[].class, Integer.TYPE)
+ .newInstance(inputs.toArray(new LSInput[inputs.size()]), inputs.size());
+
+ findMethod(schemaLoader, "loadInputList").invoke(schemaLoader, inputList);
+ } catch (InvocationTargetException ite) {
+ throw (Exception)ite.getTargetException();
+ }
}
private void dumpSchema(Document document) throws Exception {
http://git-wip-us.apache.org/repos/asf/cxf/blob/39851b83/rt/wsdl/pom.xml
----------------------------------------------------------------------
diff --git a/rt/wsdl/pom.xml b/rt/wsdl/pom.xml
index 54af181..719cba3 100644
--- a/rt/wsdl/pom.xml
+++ b/rt/wsdl/pom.xml
@@ -70,12 +70,6 @@
<artifactId>spring-context</artifactId>
<scope>provided</scope>
</dependency>
- <dependency>
- <groupId>xerces</groupId>
- <artifactId>xercesImpl</artifactId>
- <scope>provided</scope>
- <optional>true</optional>
- </dependency>
</dependencies>
<build>
<plugins>
http://git-wip-us.apache.org/repos/asf/cxf/blob/39851b83/rt/wsdl/src/main/java/org/apache/cxf/wsdl/service/factory/XercesSchemaValidationUtils.java
----------------------------------------------------------------------
diff --git a/rt/wsdl/src/main/java/org/apache/cxf/wsdl/service/factory/XercesSchemaValidationUtils.java b/rt/wsdl/src/main/java/org/apache/cxf/wsdl/service/factory/XercesSchemaValidationUtils.java
index e8366e8..0456671 100644
--- a/rt/wsdl/src/main/java/org/apache/cxf/wsdl/service/factory/XercesSchemaValidationUtils.java
+++ b/rt/wsdl/src/main/java/org/apache/cxf/wsdl/service/factory/XercesSchemaValidationUtils.java
@@ -21,6 +21,8 @@ package org.apache.cxf.wsdl.service.factory;
import java.io.InputStream;
import java.io.Reader;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -29,8 +31,11 @@ import java.util.Map;
import javax.xml.XMLConstants;
import javax.xml.transform.TransformerException;
+import org.w3c.dom.DOMConfiguration;
import org.w3c.dom.DOMErrorHandler;
+import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
+import org.w3c.dom.bootstrap.DOMImplementationRegistry;
import org.w3c.dom.ls.LSInput;
import org.w3c.dom.ls.LSResourceResolver;
@@ -38,35 +43,13 @@ import org.apache.cxf.staxutils.StaxUtils;
import org.apache.ws.commons.schema.XmlSchema;
import org.apache.ws.commons.schema.XmlSchemaCollection;
import org.apache.ws.commons.schema.XmlSchemaSerializer;
-import org.apache.ws.commons.schema.XmlSchemaSerializer.XmlSchemaSerializerException;
-import org.apache.xerces.dom.DOMXSImplementationSourceImpl;
-import org.apache.xerces.xs.LSInputList;
-import org.apache.xerces.xs.XSImplementation;
-import org.apache.xerces.xs.XSLoader;
/**
*
*/
class XercesSchemaValidationUtils {
- @SuppressWarnings("rawtypes")
- private static final class ListLSInput extends ArrayList implements LSInputList {
- private static final long serialVersionUID = 1L;
-
- @SuppressWarnings("unchecked")
- private ListLSInput(List inputs) {
- super(inputs);
- }
-
- public int getLength() {
- return size();
- }
-
- public LSInput item(int index) {
- return (LSInput)get(index);
- }
- }
-
+
class DOMLSInput implements LSInput {
private String systemId;
private String data;
@@ -150,15 +133,27 @@ class XercesSchemaValidationUtils {
}
- private XSImplementation impl;
+ private DOMImplementation impl;
- XercesSchemaValidationUtils() {
- DOMXSImplementationSourceImpl source = new org.apache.xerces.dom.DOMXSImplementationSourceImpl();
- impl = (XSImplementation)source.getDOMImplementation("XS-Loader");
+ XercesSchemaValidationUtils() throws ClassNotFoundException, InstantiationException,
+ IllegalAccessException, ClassCastException {
+
+ DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance();
+ impl = registry.getDOMImplementation("XS-Loader");
}
+
+ Method findMethod(Object o, String name) {
+ for (Method m: o.getClass().getMethods()) {
+ if (m.getName() == name) {
+ m.setAccessible(true);
+ return m;
+ }
+ }
+ return null;
+ }
void tryToParseSchemas(XmlSchemaCollection collection, DOMErrorHandler handler)
- throws XmlSchemaSerializerException, TransformerException {
+ throws Exception {
final List<DOMLSInput> inputs = new ArrayList<DOMLSInput>();
final Map<String, LSInput> resolverMap = new HashMap<String, LSInput>();
@@ -173,17 +168,30 @@ class XercesSchemaValidationUtils {
inputs.add(input);
}
- XSLoader schemaLoader = impl.createXSLoader(null);
- schemaLoader.getConfig().setParameter("validate", Boolean.TRUE);
- schemaLoader.getConfig().setParameter("error-handler", handler);
- schemaLoader.getConfig().setParameter("resource-resolver", new LSResourceResolver() {
-
- public LSInput resolveResource(String type, String namespaceURI, String publicId,
- String systemId, String baseURI) {
- return resolverMap.get(namespaceURI);
- }
- });
-
- schemaLoader.loadInputList(new ListLSInput(inputs));
+ try {
+
+ Object schemaLoader = findMethod(impl, "createXSLoader").invoke(impl, new Object[1]);
+ DOMConfiguration config = (DOMConfiguration)findMethod(schemaLoader, "getConfig").invoke(schemaLoader);
+
+ config.setParameter("validate", Boolean.TRUE);
+ config.setParameter("error-handler", handler);
+ config.setParameter("resource-resolver", new LSResourceResolver() {
+ public LSInput resolveResource(String type, String namespaceURI, String publicId,
+ String systemId, String baseURI) {
+ return resolverMap.get(namespaceURI);
+ }
+ });
+
+
+ Method m = findMethod(schemaLoader, "loadInputList");
+ String name = m.getParameterTypes()[0].getName() + "Impl";
+ name = name.replace("xs.LS", "impl.xs.util.LS");
+ Class<?> c = Class.forName(name);
+ Object inputList = c.getConstructor(LSInput[].class, Integer.TYPE)
+ .newInstance(inputs.toArray(new LSInput[inputs.size()]), inputs.size());
+ m.invoke(schemaLoader, inputList);
+ } catch (InvocationTargetException e) {
+ throw (Exception)e.getTargetException();
+ }
}
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/39851b83/rt/wsdl/src/main/java/org/apache/cxf/wsdl/service/factory/XercesXsdValidationImpl.java
----------------------------------------------------------------------
diff --git a/rt/wsdl/src/main/java/org/apache/cxf/wsdl/service/factory/XercesXsdValidationImpl.java b/rt/wsdl/src/main/java/org/apache/cxf/wsdl/service/factory/XercesXsdValidationImpl.java
index 7715e8b..e2c6c0d 100644
--- a/rt/wsdl/src/main/java/org/apache/cxf/wsdl/service/factory/XercesXsdValidationImpl.java
+++ b/rt/wsdl/src/main/java/org/apache/cxf/wsdl/service/factory/XercesXsdValidationImpl.java
@@ -54,6 +54,8 @@ class XercesXsdValidationImpl {
LOG.log(Level.WARNING, "XML Schema serialization error", e);
} catch (TransformerException e) {
LOG.log(Level.SEVERE, "TraX failure converting DOM to string", e);
+ } catch (Exception e) {
+ LOG.log(Level.SEVERE, "XML failure", e);
}
}
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/39851b83/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/SchemaValidator.java
----------------------------------------------------------------------
diff --git a/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/SchemaValidator.java b/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/SchemaValidator.java
index 87bf631..c8e80e1 100644
--- a/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/SchemaValidator.java
+++ b/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/SchemaValidator.java
@@ -354,6 +354,7 @@ class SchemaResourceResolver implements LSResourceResolver {
private LSInput loadLSInput(String ns) {
String path = ToolConstants.CXF_SCHEMAS_DIR_INJAR + NSFILEMAP.get(ns);
URL url = getClass().getClassLoader().getResource(path);
+ System.out.println(url);
LSInput lsin = new LSInputImpl();
lsin.setSystemId(url.toString());
try {
[2/2] cxf git commit: Allow file protocol for SchemaValidator. It's a
command line tool,
not sure if all the secure processing even makes sense but test fail without
allowing file.
Posted by dk...@apache.org.
Allow file protocol for SchemaValidator. It's a command line tool, not sure if all the secure processing even makes sense but test fail without allowing file.
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/ced98c6e
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/ced98c6e
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/ced98c6e
Branch: refs/heads/master
Commit: ced98c6e937bd93f92dac9043fa0406c696bfd84
Parents: 39851b8
Author: Daniel Kulp <dk...@apache.org>
Authored: Fri Nov 6 14:34:15 2015 -0500
Committer: Daniel Kulp <dk...@apache.org>
Committed: Fri Nov 6 14:34:15 2015 -0500
----------------------------------------------------------------------
.../org/apache/cxf/tools/validator/internal/SchemaValidator.java | 2 +-
.../java/org/apache/cxf/tools/validator/WSDLValidationTest.java | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/ced98c6e/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/SchemaValidator.java
----------------------------------------------------------------------
diff --git a/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/SchemaValidator.java b/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/SchemaValidator.java
index c8e80e1..d8d09cc 100644
--- a/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/SchemaValidator.java
+++ b/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/SchemaValidator.java
@@ -126,6 +126,7 @@ public class SchemaValidator extends AbstractDefinitionValidator {
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
sf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE);
+ sf.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "file");
SchemaResourceResolver resourceResolver = new SchemaResourceResolver();
sf.setResourceResolver(resourceResolver);
@@ -354,7 +355,6 @@ class SchemaResourceResolver implements LSResourceResolver {
private LSInput loadLSInput(String ns) {
String path = ToolConstants.CXF_SCHEMAS_DIR_INJAR + NSFILEMAP.get(ns);
URL url = getClass().getClassLoader().getResource(path);
- System.out.println(url);
LSInput lsin = new LSInputImpl();
lsin.setSystemId(url.toString());
try {
http://git-wip-us.apache.org/repos/asf/cxf/blob/ced98c6e/tools/validator/src/test/java/org/apache/cxf/tools/validator/WSDLValidationTest.java
----------------------------------------------------------------------
diff --git a/tools/validator/src/test/java/org/apache/cxf/tools/validator/WSDLValidationTest.java b/tools/validator/src/test/java/org/apache/cxf/tools/validator/WSDLValidationTest.java
index 2e34f3d..c1c36ee 100644
--- a/tools/validator/src/test/java/org/apache/cxf/tools/validator/WSDLValidationTest.java
+++ b/tools/validator/src/test/java/org/apache/cxf/tools/validator/WSDLValidationTest.java
@@ -110,7 +110,7 @@ public class WSDLValidationTest extends ToolTestBase {
getLocation("/validator_wsdl/hello_world_import.wsdl")};
WSDLValidator.main(args);
- assertTrue("Is not valid wsdl!: " + getStdOut(),
+ assertTrue("Is not valid wsdl!: " + getStdOut() + "\n" + getStdErr(),
getStdOut().indexOf("Passed Validation") > -1);
}