Author: veithen
Date: Sun Mar 27 12:41:46 2011
New Revision: 1085927
URL: http://svn.apache.org/viewvc?rev=1085927&view=rev
Log:
Fixed the ADB code so that it no longer depends on the incorrect behavior
described in AXIOM-358.
Modified:
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/reader/WrappingXMLStreamReader.java
Modified:
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java?rev=1085927&r1=1085926&r2=1085927&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java
(original)
+++
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java
Sun Mar 27 12:41:46 2011
@@ -962,9 +962,8 @@ public class ADBXMLStreamReaderImpl impl
}
}
- ADBXMLStreamReader reader = new
ADBXMLStreamReaderImpl(propertyQName,
+ childReader = new ADBXMLStreamReaderImpl(propertyQName,
objects.toArray(), new ArrayList().toArray(),
typeTable, qualified);
- childReader = new WrappingXMLStreamReader(reader);
}
} else if (propertyValue instanceof ADBBean) {
//ADBbean has it's own method to get a reader
@@ -991,9 +990,9 @@ public class ADBXMLStreamReaderImpl impl
} else {
//all special possiblilities has been tried! Let's treat
//the thing as a bean and try generating events from it
- childReader = new WrappingXMLStreamReader
- (BeanUtil.getPullParser(propertyValue,
- propertyQName, typeTable,
qualified, false));
+ childReader = (ADBXMLStreamReader)
+ BeanUtil.getPullParser(propertyValue,
+ propertyQName, typeTable,
qualified, false);
//we cannot register the namespace context here
}
Modified:
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/reader/WrappingXMLStreamReader.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/reader/WrappingXMLStreamReader.java?rev=1085927&r1=1085926&r2=1085927&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/reader/WrappingXMLStreamReader.java
(original)
+++
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/reader/WrappingXMLStreamReader.java
Sun Mar 27 12:41:46 2011
@@ -28,17 +28,15 @@ import javax.xml.stream.XMLStreamReader;
public class WrappingXMLStreamReader implements ADBXMLStreamReader {
private XMLStreamReader reader;
+ private int depth;
+ private boolean done;
public WrappingXMLStreamReader(XMLStreamReader reader) {
this.reader = reader;
}
public boolean isDone() {
- try {
- return !hasNext();
- } catch (XMLStreamException e) {
- throw new RuntimeException(e);
- }
+ return done;
}
public Object getProperty(String string) throws IllegalArgumentException {
@@ -46,7 +44,16 @@ public class WrappingXMLStreamReader imp
}
public int next() throws XMLStreamException {
- return reader.next();
+ int event = reader.next();
+ if (event == START_ELEMENT) {
+ depth++;
+ } else if (event == END_ELEMENT) {
+ depth--;
+ if (depth == 0) {
+ done = true;
+ }
+ }
+ return event;
}
public void require(int i, String string, String string1) throws
XMLStreamException {