Author: amilas
Date: Wed Oct 7 14:08:20 2009
New Revision: 822747
URL: http://svn.apache.org/viewvc?rev=822747&view=rev
Log:
supporting empty elements for base64Binary elements.
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/XMLStreamReaderUtils.java
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/XMLStreamReaderUtils.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/XMLStreamReaderUtils.java?rev=822747&r1=822746&r2=822747&view=diff
==============================================================================
---
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/XMLStreamReaderUtils.java
(original)
+++
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/XMLStreamReaderUtils.java
Wed Oct 7 14:08:20 2009
@@ -64,17 +64,26 @@
*/
public static DataHandler getDataHandlerFromElement(XMLStreamReader reader)
throws XMLStreamException {
+
+ // according to the pre and post conditions it is possible to have an
+ // empty element eg. <ns3:inByteArray
xmlns:ns3="http://tempuri.org/"></ns3:inByteArray> for empty data handlers
+ // in that case we return a new data handler.
+ // This method is used by adb parser we can not return null since this
element is not null.
+ reader.next();
+ if (!reader.hasText()){
+ DataHandler dataHandler = new DataHandler(new
ByteArrayDataSource(new byte[0]));
+ // return from here since reader at the end element
+ return dataHandler;
+ }
DataHandlerReader dhr = getDataHandlerReader(reader);
String base64;
if (dhr == null) {
- // In this case the best way to get the content of the element is
using
- // the getElementText method
- base64 = reader.getElementText();
+ // since we have advance the reader to next have to use the
+ // reader.getText
+ base64 = reader.getText();
+ reader.next();
} else {
- if (reader.next() != XMLStreamConstants.CHARACTERS) {
- throw new XMLStreamException("Expected a CHARACTER event");
- }
if (dhr.isBinary()) {
DataHandler dh = dhr.getDataHandler();
reader.next();