[CXF-5800] SchemaValidation of RPC/Lit endpoints fails if data has attributes
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/b1b5ab5d
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/b1b5ab5d
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/b1b5ab5d
Branch: refs/heads/3.0.x-fixes
Commit: b1b5ab5d30f78837c371b8927d7684eefb8e86e5
Parents: 8c8bbac
Author: Daniel Kulp <dkulp@apache.org>
Authored: Thu Mar 23 12:42:23 2017 -0400
Committer: Daniel Kulp <dkulp@apache.org>
Committed: Thu Mar 23 13:15:37 2017 -0400
----------------------------------------------------------------------
.../org/apache/cxf/jaxb/JAXBEncoderDecoder.java | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/b1b5ab5d/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBEncoderDecoder.java
----------------------------------------------------------------------
diff --git a/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBEncoderDecoder.java
b/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBEncoderDecoder.java
index b7b0478..341d65e 100644
--- a/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBEncoderDecoder.java
+++ b/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBEncoderDecoder.java
@@ -102,6 +102,7 @@ import org.apache.ws.commons.schema.constants.Constants;
public final class JAXBEncoderDecoder {
private static final class AddXSITypeStreamReader extends StreamReaderDelegate {
private boolean first = true;
+ private int offset = 1;
private final QName typeQName;
private AddXSITypeStreamReader(XMLStreamReader reader, QName typeQName) {
@@ -110,42 +111,42 @@ public final class JAXBEncoderDecoder {
}
public int getAttributeCount() {
- return super.getAttributeCount() + (first ? 1 : 0);
+ return super.getAttributeCount() + offset;
}
public String getAttributeLocalName(int index) {
if (first && index == 0) {
return "type";
}
- return super.getAttributeLocalName(index - 1);
+ return super.getAttributeLocalName(index - offset);
}
public QName getAttributeName(int index) {
if (first && index == 0) {
return new QName(Constants.URI_2001_SCHEMA_XSI, "type");
}
- return super.getAttributeName(index - 1);
+ return super.getAttributeName(index - offset);
}
public String getAttributeNamespace(int index) {
if (first && index == 0) {
return Constants.URI_2001_SCHEMA_XSI;
}
- return super.getAttributeNamespace(index - 1);
+ return super.getAttributeNamespace(index - offset);
}
public String getAttributePrefix(int index) {
if (first && index == 0) {
return "xsi";
}
- return super.getAttributePrefix(index - 1);
+ return super.getAttributePrefix(index - offset);
}
public String getAttributeType(int index) {
if (first && index == 0) {
return "#TEXT";
}
- return super.getAttributeType(index - 1);
+ return super.getAttributeType(index - offset);
}
public String getAttributeValue(int index) {
@@ -156,11 +157,12 @@ public final class JAXBEncoderDecoder {
}
return pfx + ":" + typeQName.getLocalPart();
}
- return super.getAttributeValue(index);
+ return super.getAttributeValue(index - offset);
}
public int next() throws XMLStreamException {
first = false;
+ offset = 0;
return super.next();
}
|