You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by bi...@apache.org on 2009/04/01 13:49:23 UTC
svn commit: r760861 - in /cxf/trunk: ./
api/src/main/java/org/apache/cxf/databinding/
api/src/main/java/org/apache/cxf/io/
common/common/src/main/java/org/apache/cxf/staxutils/
common/wstx-msv-validation/
common/wstx-msv-validation/src/main/java/org/ap...
Author: bimargulies
Date: Wed Apr 1 11:49:22 2009
New Revision: 760861
URL: http://svn.apache.org/viewvc?rev=760861&view=rev
Log:
Progress toward Aegis schema validation. Sadly, this now hits a bug in the validation support in woodstox.
Added:
cxf/trunk/api/src/main/java/org/apache/cxf/io/StaxValidationManager.java
- copied, changed from r760066, cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxValidationManager.java
cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/EmbeddedSchema.java (with props)
cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/cxf-extension-wstx-msv-validation.xml (with props)
cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/cxf.extension
Removed:
cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxValidationManager.java
Modified:
cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataBindingValidation2.java
cxf/trunk/common/wstx-msv-validation/pom.xml
cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/ResolvingGrammarReaderController.java
cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/Stax2ValidationUtils.java
cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/W3CMultiSchemaFactory.java
cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/WoodstoxValidationImpl.java
cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/bus-extensions.xml
cxf/trunk/parent/pom.xml
cxf/trunk/pom.xml
cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java
cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java
cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/ElementDataReader.java
cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/ElementDataWriter.java
cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataReader.java
cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataWriter.java
cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataReaderImpl.java
Modified: cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataBindingValidation2.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataBindingValidation2.java?rev=760861&r1=760860&r2=760861&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataBindingValidation2.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataBindingValidation2.java Wed Apr 1 11:49:22 2009
@@ -19,17 +19,13 @@
package org.apache.cxf.databinding;
-import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.apache.cxf.service.model.ServiceInfo;
/**
* If a DataReader<T> implements this interface, it prefers to be supplied with schema
- * for validation via an XmlSchemaCollection instead of via a packaged Schema object.
+ * for validation via a service model instead of via a packaged Schema object.
*/
public interface DataBindingValidation2 {
- /**
- *
- * @param schema
- */
- void setSchema(XmlSchemaCollection schema);
+ void setValidationServiceModel(ServiceInfo serviceInfo);
}
Copied: cxf/trunk/api/src/main/java/org/apache/cxf/io/StaxValidationManager.java (from r760066, cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxValidationManager.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/io/StaxValidationManager.java?p2=cxf/trunk/api/src/main/java/org/apache/cxf/io/StaxValidationManager.java&p1=cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxValidationManager.java&r1=760066&r2=760861&rev=760861&view=diff
==============================================================================
--- cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxValidationManager.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/io/StaxValidationManager.java Wed Apr 1 11:49:22 2009
@@ -17,12 +17,13 @@
* under the License.
*/
-package org.apache.cxf.staxutils;
+package org.apache.cxf.io;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
-import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.apache.cxf.service.model.ServiceInfo;
/**
* This interface defines a bus service for Stax validation.
@@ -35,6 +36,7 @@
* @param schemas
* @throws XMLStreamException
*/
- void setupValidation(XMLStreamReader reader, XmlSchemaCollection schemas) throws XMLStreamException;
+ void setupValidation(XMLStreamReader reader, ServiceInfo serviceInfo) throws XMLStreamException;
+ void setupValidation(XMLStreamWriter writer, ServiceInfo serviceInfo) throws XMLStreamException;
}
Modified: cxf/trunk/common/wstx-msv-validation/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/common/wstx-msv-validation/pom.xml?rev=760861&r1=760860&r2=760861&view=diff
==============================================================================
--- cxf/trunk/common/wstx-msv-validation/pom.xml (original)
+++ cxf/trunk/common/wstx-msv-validation/pom.xml Wed Apr 1 11:49:22 2009
@@ -54,37 +54,15 @@
<dependency>
<groupId>org.codehaus.woodstox</groupId>
<artifactId>woodstox-core-asl</artifactId>
- <version>4.0.2</version>
</dependency>
<dependency>
- <groupId>msv</groupId>
- <artifactId>relaxngDatatype</artifactId>
- <version>20050913</version>
- </dependency>
- <dependency>
- <groupId>msv</groupId>
- <artifactId>isorelax</artifactId>
- <version>20050913</version>
- </dependency>
- <dependency>
- <groupId>msv</groupId>
- <artifactId>msv</artifactId>
- <version>20050913</version>
- </dependency>
- <dependency>
- <groupId>msv</groupId>
- <artifactId>xsdlib</artifactId>
- <version>20050913</version>
+ <groupId>net.java.dev.msv</groupId>
+ <artifactId>msv-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.ws.commons.schema</groupId>
<artifactId>XmlSchema</artifactId>
</dependency>
- <dependency>
- <groupId>${stax.impl.groupId}</groupId>
- <artifactId>${stax.impl.artifactId}</artifactId>
- <scope>test</scope>
- </dependency>
</dependencies>
<scm>
<connection>scm:svn:http://svn.apache.org/repos/asf/cxf/trunk/common/wstx-msv-validation</connection>
Added: cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/EmbeddedSchema.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/EmbeddedSchema.java?rev=760861&view=auto
==============================================================================
--- cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/EmbeddedSchema.java (added)
+++ cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/EmbeddedSchema.java Wed Apr 1 11:49:22 2009
@@ -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.cxf.wstx_msv_validation;
+
+import org.w3c.dom.Element;
+
+/**
+ * A schema in a DOM Element. This is used in the WSDLSchemaReader to handle inter-schema cross-references. XS
+ */
+public class EmbeddedSchema {
+
+ private String systemId;
+ private Element schemaElement;
+
+ /**
+ * Create object to represent one of the schemas in a WSDL
+ *
+ * @param systemId schema system Id.
+ * @param schemaElement Element for the schema.
+ */
+ public EmbeddedSchema(String systemId, Element schemaElement) {
+ this.systemId = systemId;
+ this.schemaElement = schemaElement;
+ }
+
+ public String getSystemId() {
+ return systemId;
+ }
+
+ public Element getSchemaElement() {
+ return schemaElement;
+ }
+}
Propchange: cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/EmbeddedSchema.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/EmbeddedSchema.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/ResolvingGrammarReaderController.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/ResolvingGrammarReaderController.java?rev=760861&r1=760860&r2=760861&view=diff
==============================================================================
--- cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/ResolvingGrammarReaderController.java (original)
+++ cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/ResolvingGrammarReaderController.java Wed Apr 1 11:49:22 2009
@@ -24,23 +24,30 @@
import java.util.logging.Level;
import java.util.logging.Logger;
+import org.w3c.dom.ls.LSInput;
+import org.w3c.dom.ls.LSResourceResolver;
+
import org.xml.sax.InputSource;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
-import com.sun.msv.reader.GrammarReaderController;
+import com.sun.msv.reader.GrammarReaderController2;
+import com.sun.msv.reader.xmlschema.DOMLSInputImpl;
import org.apache.cxf.common.logging.LogUtils;
/**
- * Catch error messages and resolve schema locations.
+ * Catch error messages and resolve schema locations.
*/
-public class ResolvingGrammarReaderController implements GrammarReaderController {
+public class ResolvingGrammarReaderController implements GrammarReaderController2, LSResourceResolver {
private static final Logger LOG = LogUtils.getL7dLogger(ResolvingGrammarReaderController.class);
- private Map<String, InputSource> sources;
+ private Map<String, EmbeddedSchema> sources;
+
+ private String baseURI;
- public ResolvingGrammarReaderController(Map<String, InputSource> sources) {
+ public ResolvingGrammarReaderController(String baseURI, Map<String, EmbeddedSchema> sources) {
+ this.baseURI = baseURI;
this.sources = sources;
}
@@ -61,7 +68,21 @@
}
public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
- // CXF never trucks with publicId's.
- return sources.get(systemId);
+ return null;
+ }
+
+ public LSResourceResolver getLSResourceResolver() {
+ return this;
+ }
+
+ public LSInput resolveResource(String type, String namespaceURI, String publicId, String systemId,
+ String resolveBaseURI) {
+ EmbeddedSchema embeddedSchema = sources.get(namespaceURI);
+ if (embeddedSchema != null) {
+ return new DOMLSInputImpl(this.baseURI, embeddedSchema.getSystemId(), embeddedSchema
+ .getSchemaElement());
+ } else {
+ return null;
+ }
}
}
Modified: cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/Stax2ValidationUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/Stax2ValidationUtils.java?rev=760861&r1=760860&r2=760861&view=diff
==============================================================================
--- cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/Stax2ValidationUtils.java (original)
+++ cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/Stax2ValidationUtils.java Wed Apr 1 11:49:22 2009
@@ -19,31 +19,24 @@
package org.apache.cxf.wstx_msv_validation;
-import java.io.Reader;
-import java.io.StringReader;
-import java.io.StringWriter;
import java.util.Map;
import java.util.TreeMap;
import java.util.logging.Logger;
+import javax.xml.XMLConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
+import javax.xml.stream.XMLStreamWriter;
-import org.w3c.dom.Document;
-
-import org.xml.sax.InputSource;
+import org.w3c.dom.Element;
import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.service.model.SchemaInfo;
+import org.apache.cxf.service.model.ServiceInfo;
import org.apache.cxf.staxutils.DepthXMLStreamReader;
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.ws.commons.schema.utils.NamespaceMap;
import org.codehaus.stax2.XMLStreamReader2;
+import org.codehaus.stax2.XMLStreamWriter2;
import org.codehaus.stax2.validation.XMLValidationSchema;
/**
@@ -54,34 +47,28 @@
private static final Logger LOG = LogUtils.getL7dLogger(Stax2ValidationUtils.class);
public Stax2ValidationUtils() {
- throw new RuntimeException("Not ready");
+ new W3CMultiSchemaFactory(); // will throw if wrong woodstox.
}
/** {@inheritDoc}
* @throws XMLStreamException */
public void setupValidation(XMLStreamReader reader,
- XmlSchemaCollection schemas) throws XMLStreamException {
+ ServiceInfo serviceInfo) throws XMLStreamException {
// Gosh, this is bad, but I don't know a better solution, unless we're willing
// to require the stax2 API no matter what.
- if (reader instanceof DepthXMLStreamReader) {
- reader = ((DepthXMLStreamReader)reader).getReader();
+ XMLStreamReader effectiveReader = reader;
+ if (effectiveReader instanceof DepthXMLStreamReader) {
+ effectiveReader = ((DepthXMLStreamReader)reader).getReader();
}
- XMLStreamReader2 reader2 = (XMLStreamReader2)reader;
- XMLValidationSchema vs = getValidator(schemas);
+ final XMLStreamReader2 reader2 = (XMLStreamReader2)effectiveReader;
+ XMLValidationSchema vs = getValidator(serviceInfo);
reader2.validateAgainst(vs);
-
-
}
-
- private Reader getSchemaAsStream(DOMSource source) {
- StringWriter writer = new StringWriter();
- StreamResult result = new StreamResult(writer);
- try {
- TransformerFactory.newInstance().newTransformer().transform(source, result);
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- return new StringReader(writer.toString());
+
+ public void setupValidation(XMLStreamWriter writer, ServiceInfo serviceInfo) throws XMLStreamException {
+ XMLStreamWriter2 writer2 = (XMLStreamWriter2)writer;
+ XMLValidationSchema vs = getValidator(serviceInfo);
+ writer2.validateAgainst(vs);
}
/**
@@ -90,38 +77,34 @@
* @return
* @throws XMLStreamException
*/
- private XMLValidationSchema getValidator(XmlSchemaCollection schemas) throws XMLStreamException {
- Map<String, InputSource> sources = new TreeMap<String, InputSource>();
- XmlSchemaSerializer serializer = new XmlSchemaSerializer();
- NamespaceMap namespaceContext = new NamespaceMap();
- for (XmlSchema sch : schemas.getXmlSchemas()) {
+ private XMLValidationSchema getValidator(ServiceInfo serviceInfo) throws XMLStreamException {
+ Map<String, EmbeddedSchema> sources = new TreeMap<String, EmbeddedSchema>();
+
+ for (SchemaInfo schemaInfo : serviceInfo.getSchemas()) {
+ XmlSchema sch = schemaInfo.getSchema();
String uri = sch.getTargetNamespace();
+ if (XMLConstants.W3C_XML_SCHEMA_NS_URI.equals(uri)) {
+ continue;
+ }
LOG.info(uri);
- if (sch.getNamespaceContext() == null) {
- sch.setNamespaceContext(namespaceContext);
- }
- Document[] serialized;
- try {
- serialized = serializer.serializeSchema(sch, false);
- } catch (XmlSchemaSerializerException e) {
- throw new RuntimeException(e);
- }
- DOMSource domSource = new DOMSource(serialized[0]);
- Reader schemaReader = getSchemaAsStream(domSource);
- InputSource inputSource = new InputSource(schemaReader);
+ Element serialized = schemaInfo.getElement();
String schemaSystemId = sch.getSourceURI();
if (null == schemaSystemId) {
schemaSystemId = sch.getTargetNamespace();
}
- inputSource.setSystemId(schemaSystemId);
- sources.put(schemaSystemId, inputSource);
+
+ EmbeddedSchema embeddedSchema =
+ new EmbeddedSchema(schemaSystemId, serialized);
+ sources.put(sch.getTargetNamespace(), embeddedSchema);
}
W3CMultiSchemaFactory factory = new W3CMultiSchemaFactory();
XMLValidationSchema vs;
- vs = factory.loadSchemas(sources);
+ // I don't think that we need the baseURI.
+ vs = factory.loadSchemas(null, sources);
return vs;
}
+
}
Modified: cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/W3CMultiSchemaFactory.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/W3CMultiSchemaFactory.java?rev=760861&r1=760860&r2=760861&view=diff
==============================================================================
--- cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/W3CMultiSchemaFactory.java (original)
+++ cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/W3CMultiSchemaFactory.java Wed Apr 1 11:49:22 2009
@@ -27,6 +27,7 @@
import javax.xml.parsers.SAXParserFactory;
import javax.xml.stream.XMLStreamException;
+import javax.xml.transform.dom.DOMSource;
import org.xml.sax.InputSource;
@@ -51,14 +52,17 @@
super(XMLValidationSchema.SCHEMA_ID_W3C_SCHEMA);
}
- public XMLValidationSchema loadSchemas(Map<String, InputSource> sources) throws XMLStreamException {
+ public XMLValidationSchema loadSchemas(String baseURI,
+ Map<String, EmbeddedSchema> sources) throws XMLStreamException {
parserFactory = getSaxFactory();
- ResolvingGrammarReaderController ctrl = new ResolvingGrammarReaderController(sources);
+ ResolvingGrammarReaderController ctrl = new ResolvingGrammarReaderController(baseURI, sources);
xmlSchemaReader = new XMLSchemaReader(ctrl, parserFactory);
multiSchemaReader = new MultiSchemaReader(xmlSchemaReader);
- for (InputSource source : sources.values()) {
- multiSchemaReader.parse(source);
+ for (EmbeddedSchema source : sources.values()) {
+ DOMSource domSource = new DOMSource(source.getSchemaElement());
+ domSource.setSystemId(source.getSystemId());
+ multiSchemaReader.parse(domSource);
}
XMLSchemaGrammar grammar = multiSchemaReader.getResult();
Modified: cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/WoodstoxValidationImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/WoodstoxValidationImpl.java?rev=760861&r1=760860&r2=760861&view=diff
==============================================================================
--- cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/WoodstoxValidationImpl.java (original)
+++ cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/WoodstoxValidationImpl.java Wed Apr 1 11:49:22 2009
@@ -23,11 +23,11 @@
import javax.annotation.Resource;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
import org.apache.cxf.Bus;
-import org.apache.cxf.staxutils.StaxValidationManager;
-
-import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.apache.cxf.io.StaxValidationManager;
+import org.apache.cxf.service.model.ServiceInfo;
/**
*
@@ -61,7 +61,11 @@
/** {@inheritDoc}
* @throws XMLStreamException */
public void setupValidation(XMLStreamReader reader,
- XmlSchemaCollection schemas) throws XMLStreamException {
- utils.setupValidation(reader, schemas);
+ ServiceInfo serviceInfo) throws XMLStreamException {
+ utils.setupValidation(reader, serviceInfo);
+ }
+
+ public void setupValidation(XMLStreamWriter writer, ServiceInfo serviceInfo) throws XMLStreamException {
+ utils.setupValidation(writer, serviceInfo);
}
}
Modified: cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/bus-extensions.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/bus-extensions.xml?rev=760861&r1=760860&r2=760861&view=diff
==============================================================================
--- cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/bus-extensions.xml (original)
+++ cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/bus-extensions.xml Wed Apr 1 11:49:22 2009
@@ -19,5 +19,5 @@
-->
<extensions xmlns="http://cxf.apache.org/bus/extension">
<extension class="org.apache.cxf.wstx_msv_validation.WoodstoxValidationImpl"
- interface="org.apache.cxf.staxutils.StaxValidationManager"/>
+ interface="org.apache.cxf.io.StaxValidationManager"/>
</extensions>
Added: cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/cxf-extension-wstx-msv-validation.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/cxf-extension-wstx-msv-validation.xml?rev=760861&view=auto
==============================================================================
--- cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/cxf-extension-wstx-msv-validation.xml (added)
+++ cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/cxf-extension-wstx-msv-validation.xml Wed Apr 1 11:49:22 2009
@@ -0,0 +1,30 @@
+<!--
+ 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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+ <bean id="org.apache.cxf.wstx_msv_validation.WoodstoxValidationImpl"
+ class="org.apache.cxf.wstx_msv_validation.WoodstoxValidationImpl"
+ >
+ <property name="bus" ref="cxf"/>
+ </bean>
+
+</beans>
Propchange: cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/cxf-extension-wstx-msv-validation.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/cxf-extension-wstx-msv-validation.xml
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/cxf-extension-wstx-msv-validation.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/cxf.extension
URL: http://svn.apache.org/viewvc/cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/cxf.extension?rev=760861&view=auto
==============================================================================
--- cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/cxf.extension (added)
+++ cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/cxf.extension Wed Apr 1 11:49:22 2009
@@ -0,0 +1 @@
+META-INF/cxf/cxf-extension-wstx-msv-validation.xml
\ No newline at end of file
Modified: cxf/trunk/parent/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/parent/pom.xml?rev=760861&r1=760860&r2=760861&view=diff
==============================================================================
--- cxf/trunk/parent/pom.xml (original)
+++ cxf/trunk/parent/pom.xml Wed Apr 1 11:49:22 2009
@@ -52,6 +52,7 @@
<jaxb.xjc.version>2.1.9</jaxb.xjc.version>
<jdom.version>1.0</jdom.version>
<jetty.version>6.1.15</jetty.version>
+ <msv.version>2009.1-SNAPSHOT</msv.version>
<rhino.version>1.7R1</rhino.version>
<saaj.version>1.3</saaj.version>
<spring.version>2.5.5</spring.version>
@@ -1063,7 +1064,17 @@
<artifactId>xercesImpl</artifactId>
<version>2.9.1</version>
</dependency>
-
+ <!-- if we use the new woodstox artifact, we're using the new version -->
+ <dependency>
+ <groupId>org.codehaus.woodstox</groupId>
+ <artifactId>woodstox-core-asl</artifactId>
+ <version>4.0.3</version>
+ </dependency>
+ <dependency>
+ <groupId>net.java.dev.msv</groupId>
+ <artifactId>msv-core</artifactId>
+ <version>${msv.version}</version>
+ </dependency>
</dependencies>
</dependencyManagement>
@@ -1117,7 +1128,7 @@
<properties>
<stax.impl.groupId>org.codehaus.woodstox</stax.impl.groupId>
<stax.impl.artifactId>woodstox-core-asl</stax.impl.artifactId>
- <stax.impl.version>4.0.2</stax.impl.version>
+ <stax.impl.version>4.0.3</stax.impl.version>
</properties>
</profile>
<profile>
Modified: cxf/trunk/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/pom.xml?rev=760861&r1=760860&r2=760861&view=diff
==============================================================================
--- cxf/trunk/pom.xml (original)
+++ cxf/trunk/pom.xml Wed Apr 1 11:49:22 2009
@@ -44,6 +44,20 @@
<compiler.fork>false</compiler.fork>
</properties>
+ <!-- java.net for msv snapshots -->
+ <repositories>
+ <repository>
+ <id>maven2-repository.dev.java.net</id>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ <name>Java.net Repository for Maven</name>
+ <url>http://download.java.net/maven/2/</url>
+ </repository>
+ </repositories>
<distributionManagement>
<repository>
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java?rev=760861&r1=760860&r2=760861&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java Wed Apr 1 11:49:22 2009
@@ -108,8 +108,7 @@
* service info.
*/
if (reader instanceof DataBindingValidation2) {
- ((DataBindingValidation2)reader).setSchema(service.getServiceInfos().get(0)
- .getXmlSchemaCollection().getXmlSchemaCollection());
+ ((DataBindingValidation2)reader).setValidationServiceModel(service.getServiceInfos().get(0));
}
}
}
Modified: cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java?rev=760861&r1=760860&r2=760861&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java (original)
+++ cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java Wed Apr 1 11:49:22 2009
@@ -162,7 +162,7 @@
public <T> DataWriter<T> createWriter(Class<T> cls) {
ensureInitialized();
if (cls.equals(XMLStreamWriter.class)) {
- return (DataWriter<T>)new XMLStreamDataWriter(this);
+ return (DataWriter<T>)new XMLStreamDataWriter(this, getBus());
} else if (cls.equals(Node.class)) {
return (DataWriter<T>)new ElementDataWriter(this);
} else {
Modified: cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/ElementDataReader.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/ElementDataReader.java?rev=760861&r1=760860&r2=760861&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/ElementDataReader.java (original)
+++ cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/ElementDataReader.java Wed Apr 1 11:49:22 2009
@@ -33,7 +33,7 @@
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.message.Attachment;
import org.apache.cxf.service.model.MessagePartInfo;
-import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.apache.cxf.service.model.ServiceInfo;
/**
*
@@ -94,8 +94,6 @@
reader.setSchema(s);
}
- public void setSchema(XmlSchemaCollection schema) {
- // TODO Auto-generated method stub
-
+ public void setValidationServiceModel(ServiceInfo serviceInfo) {
}
}
Modified: cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/ElementDataWriter.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/ElementDataWriter.java?rev=760861&r1=760860&r2=760861&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/ElementDataWriter.java (original)
+++ cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/ElementDataWriter.java Wed Apr 1 11:49:22 2009
@@ -41,8 +41,8 @@
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.message.Attachment;
import org.apache.cxf.service.model.MessagePartInfo;
+import org.apache.cxf.service.model.ServiceInfo;
import org.apache.cxf.staxutils.W3CDOMStreamWriter;
-import org.apache.ws.commons.schema.XmlSchemaCollection;
public class ElementDataWriter implements DataWriter<Element>, DataBindingValidation2 {
@@ -114,10 +114,6 @@
return properties.get(key);
}
- public void setSchema(XmlSchemaCollection schema) {
- // TODO Auto-generated method stub
-
+ public void setValidationServiceModel(ServiceInfo serviceInfo) {
}
-
-
}
Modified: cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataReader.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataReader.java?rev=760861&r1=760860&r2=760861&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataReader.java (original)
+++ cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataReader.java Wed Apr 1 11:49:22 2009
@@ -30,17 +30,18 @@
import org.apache.cxf.databinding.DataBindingValidation2;
import org.apache.cxf.databinding.DataReader;
import org.apache.cxf.interceptor.Fault;
+import org.apache.cxf.io.StaxValidationManager;
import org.apache.cxf.message.Attachment;
import org.apache.cxf.service.model.MessagePartInfo;
-import org.apache.cxf.staxutils.StaxValidationManager;
-import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.apache.cxf.service.model.ServiceInfo;
public class XMLStreamDataReader implements DataReader<XMLStreamReader>, DataBindingValidation2 {
private AegisDatabinding databinding;
private AegisXMLStreamDataReader reader;
private Bus bus;
- private XmlSchemaCollection schemas;
+ private ServiceInfo serviceInfo;
+ private boolean validate;
public XMLStreamDataReader(AegisDatabinding databinding, Bus bus) {
this.bus = bus;
@@ -51,10 +52,10 @@
public Object read(MessagePartInfo part, XMLStreamReader input) {
Type type = databinding.getType(part);
try {
- if (schemas != null) {
+ if (validate) {
StaxValidationManager mgr = bus.getExtension(StaxValidationManager.class);
if (mgr != null) {
- mgr.setupValidation(input, schemas);
+ mgr.setupValidation(input, serviceInfo);
}
}
return reader.read(input, type);
@@ -87,7 +88,8 @@
reader.setSchema(s);
}
- public void setSchema(XmlSchemaCollection validationSchemas) {
- this.schemas = validationSchemas;
+ public void setValidationServiceModel(ServiceInfo serviceModel) {
+ serviceInfo = serviceModel;
+ validate = true;
}
}
Modified: cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataWriter.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataWriter.java?rev=760861&r1=760860&r2=760861&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataWriter.java (original)
+++ cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataWriter.java Wed Apr 1 11:49:22 2009
@@ -23,9 +23,11 @@
import java.util.Map;
import java.util.logging.Logger;
+import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
import javax.xml.validation.Schema;
+import org.apache.cxf.Bus;
import org.apache.cxf.aegis.Context;
import org.apache.cxf.aegis.DatabindingException;
import org.apache.cxf.aegis.type.Type;
@@ -37,9 +39,10 @@
import org.apache.cxf.databinding.DataBindingValidation2;
import org.apache.cxf.databinding.DataWriter;
import org.apache.cxf.interceptor.Fault;
+import org.apache.cxf.io.StaxValidationManager;
import org.apache.cxf.message.Attachment;
import org.apache.cxf.service.model.MessagePartInfo;
-import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.apache.cxf.service.model.ServiceInfo;
import org.apache.ws.commons.schema.XmlSchemaElement;
public class XMLStreamDataWriter implements DataWriter<XMLStreamWriter>, DataBindingValidation2 {
@@ -47,13 +50,14 @@
private static final Logger LOG = LogUtils.getL7dLogger(XMLStreamDataReader.class);
private AegisDatabinding databinding;
-
private Collection<Attachment> attachments;
-
private Map<String, Object> properties;
+ private ServiceInfo validationServiceInfo;
+ private Bus bus;
- public XMLStreamDataWriter(AegisDatabinding databinding) {
+ public XMLStreamDataWriter(AegisDatabinding databinding, Bus bus) {
this.databinding = databinding;
+ this.bus = bus;
}
public void setAttachments(Collection<Attachment> attachments) {
@@ -70,6 +74,17 @@
throw new Fault(new Message("NO_MESSAGE_FOR_PART", LOG, part));
}
+ if (validationServiceInfo != null) {
+ StaxValidationManager mgr = bus.getExtension(StaxValidationManager.class);
+ if (mgr != null) {
+ try {
+ mgr.setupValidation(output, validationServiceInfo);
+ } catch (XMLStreamException e) {
+ throw new Fault(e);
+ }
+ }
+ }
+
Context context = new Context(databinding.getAegisContext());
context.setAttachments(attachments);
@@ -118,10 +133,7 @@
return properties.get(key);
}
- public void setSchema(XmlSchemaCollection schema) {
- // TODO Auto-generated method stub
-
+ public void setValidationServiceModel(ServiceInfo serviceInfo) {
+ validationServiceInfo = serviceInfo;
}
-
-
}
Modified: cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataReaderImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataReaderImpl.java?rev=760861&r1=760860&r2=760861&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataReaderImpl.java (original)
+++ cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataReaderImpl.java Wed Apr 1 11:49:22 2009
@@ -35,7 +35,7 @@
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.message.Attachment;
import org.apache.cxf.service.model.MessagePartInfo;
-import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.apache.cxf.service.model.ServiceInfo;
import org.apache.xmlbeans.SchemaType;
import org.apache.xmlbeans.XmlAnySimpleType;
import org.apache.xmlbeans.XmlObject;
@@ -44,7 +44,7 @@
public class DataReaderImpl implements DataReader<XMLStreamReader> , DataBindingValidation2 {
private static final Logger LOG = LogUtils.getLogger(XmlBeansDataBinding.class);
- private XmlSchemaCollection schemas;
+ private boolean validate;
public DataReaderImpl() {
}
@@ -74,7 +74,7 @@
SchemaType st = (SchemaType)part.getProperty(SchemaType.class.getName());
XmlOptions options = new XmlOptions();
- if (schemas != null) {
+ if (validate) {
options.setValidateOnSet();
}
if (st != null && !st.isDocumentType() && !isOutClass) {
@@ -84,7 +84,6 @@
obj = meth.invoke(null, reader, options);
break;
} catch (Exception e) {
- e.printStackTrace();
throw new Fault(new Message("UNMARSHAL_ERROR", LOG, part.getTypeClass()), e);
}
}
@@ -124,8 +123,7 @@
try {
reader.next();
} catch (XMLStreamException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ throw new RuntimeException(e);
}
}
return obj;
@@ -145,8 +143,7 @@
public void setSchema(Schema s) {
}
- public void setSchema(XmlSchemaCollection validationSchemas) {
- this.schemas = validationSchemas;
+ public void setValidationServiceModel(ServiceInfo serviceModel) {
+ validate = true;
}
-
}