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 2013/10/29 20:47:38 UTC
svn commit: r1536866 - in /cxf/branches/2.7.x-fixes:
api/src/main/java/org/apache/cxf/io/
common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/
rt/core/src/main/java/org/apache/cxf/databinding/source/
Author: dkulp
Date: Tue Oct 29 19:47:37 2013
New Revision: 1536866
URL: http://svn.apache.org/r1536866
Log:
Merged revisions 1536860 via git cherry-pick from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1536860 | dkulp | 2013-10-29 15:33:19 -0400 (Tue, 29 Oct 2013) | 3 lines
[CXF-5365] Part 1: if woodstox cannot process the schemas, fallback to slower method.
Part 2: If element doesn't have XOP elements, still validate.
........
Modified:
cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/io/StaxValidationManager.java
cxf/branches/2.7.x-fixes/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/WoodstoxValidationImpl.java
cxf/branches/2.7.x-fixes/rt/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataReader.java
Modified: cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/io/StaxValidationManager.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/io/StaxValidationManager.java?rev=1536866&r1=1536865&r2=1536866&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/io/StaxValidationManager.java (original)
+++ cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/io/StaxValidationManager.java Tue Oct 29 19:47:37 2013
@@ -36,7 +36,7 @@ public interface StaxValidationManager {
* @param serviceInfo - the Service to pull the schema from
* @throws XMLStreamException
*/
- void setupValidation(XMLStreamReader reader, ServiceInfo serviceInfo) throws XMLStreamException;
+ boolean setupValidation(XMLStreamReader reader, ServiceInfo serviceInfo) throws XMLStreamException;
/**
* Install the schemas onto the writer for validation.
@@ -44,6 +44,6 @@ public interface StaxValidationManager {
* @param serviceInfo - the Service to pull the schema from
* @throws XMLStreamException
*/
- void setupValidation(XMLStreamWriter writer, ServiceInfo serviceInfo) throws XMLStreamException;
+ boolean setupValidation(XMLStreamWriter writer, ServiceInfo serviceInfo) throws XMLStreamException;
}
Modified: cxf/branches/2.7.x-fixes/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/WoodstoxValidationImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/WoodstoxValidationImpl.java?rev=1536866&r1=1536865&r2=1536866&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/WoodstoxValidationImpl.java (original)
+++ cxf/branches/2.7.x-fixes/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/WoodstoxValidationImpl.java Tue Oct 29 19:47:37 2013
@@ -61,16 +61,20 @@ public class WoodstoxValidationImpl impl
/** {@inheritDoc}
* @throws XMLStreamException */
- public void setupValidation(XMLStreamReader reader,
+ public boolean setupValidation(XMLStreamReader reader,
ServiceInfo serviceInfo) throws XMLStreamException {
if (utils != null && reader != null) {
utils.setupValidation(reader, serviceInfo);
+ return true;
}
+ return false;
}
- public void setupValidation(XMLStreamWriter writer, ServiceInfo serviceInfo) throws XMLStreamException {
+ public boolean setupValidation(XMLStreamWriter writer, ServiceInfo serviceInfo) throws XMLStreamException {
if (utils != null && writer != null) {
utils.setupValidation(writer, serviceInfo);
+ return true;
}
+ return false;
}
}
Modified: cxf/branches/2.7.x-fixes/rt/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataReader.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataReader.java?rev=1536866&r1=1536865&r2=1536866&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataReader.java (original)
+++ cxf/branches/2.7.x-fixes/rt/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataReader.java Tue Oct 29 19:47:37 2013
@@ -23,6 +23,7 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.util.Collection;
import java.util.List;
+import java.util.logging.Level;
import java.util.logging.Logger;
import javax.activation.DataSource;
@@ -216,22 +217,26 @@ public class XMLStreamDataReader impleme
rootElement = (Element)ds.getNode();
}
StaxValidationManager svm = message.getExchange().getBus().getExtension(StaxValidationManager.class);
+ boolean stax = false;
if (svm != null) {
//filter xop node
- XMLStreamReader reader = StaxUtils.createXMLStreamReader(ds);
- XMLStreamReader filteredReader =
- StaxUtils.createFilteredReader(reader,
- new StaxStreamFilter(new QName[] {XOP}));
XMLStreamWriter nullWriter = StaxUtils.createXMLStreamWriter(new NUllOutputStream());
-
- svm.setupValidation(nullWriter, message.getExchange().getService().getServiceInfos().get(0));
- StaxUtils.copy(filteredReader, nullWriter);
- } else {
+ if (svm.setupValidation(nullWriter, message.getExchange().getService().getServiceInfos().get(0))) {
+ XMLStreamReader reader = StaxUtils.createXMLStreamReader(ds);
+ XMLStreamReader filteredReader =
+ StaxUtils.createFilteredReader(reader,
+ new StaxStreamFilter(new QName[] {XOP}));
+ StaxUtils.copy(filteredReader, nullWriter);
+ stax = true;
+ }
+ }
+ if (!stax) {
//MSV not available, use a slower method of cloning the data, replace the xop's, validate
LOG.fine("NO_MSV_AVAILABLE");
+ Element newElement = rootElement;
if (DOMUtils.hasElementWithName(rootElement, "http://www.w3.org/2004/08/xop/include", "Include")) {
- Element newElement = (Element)rootElement.cloneNode(true);
+ newElement = (Element)rootElement.cloneNode(true);
List<Element> elems = DOMUtils.findAllElementsByTagNameNS(newElement,
"http://www.w3.org/2004/08/xop/include",
"Include");
@@ -242,11 +247,11 @@ public class XMLStreamDataReader impleme
//set the fake base64Binary to validate instead of reading the attachment from message
parentNode.setTextContent(javax.xml.bind.DatatypeConverter.printBase64Binary(cid.getBytes()));
}
- try {
- schema.newValidator().validate(new DOMSource(newElement));
- } catch (SAXException e) {
- throw new XMLStreamException(e);
- }
+ }
+ try {
+ schema.newValidator().validate(new DOMSource(newElement));
+ } catch (SAXException e) {
+ throw new XMLStreamException(e);
}
}
return rootElement;