You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ve...@apache.org on 2009/07/20 13:58:47 UTC
svn commit: r795789 - in /webservices/axis2/trunk/java/modules:
adb-codegen/src/org/apache/axis2/schema/template/
adb-codegen/test/org/apache/axis2/schema/base64binary/
adb/src/org/apache/axis2/databinding/utils/
Author: veithen
Date: Mon Jul 20 11:58:46 2009
New Revision: 795789
URL: http://svn.apache.org/viewvc?rev=795789&view=rev
Log:
Simplified and fixed the base64 parsing in ADB generated code. This should solve AXIS2-4363 and AXIS2-4387.
Modified:
webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-bean.xsl
webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl
webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/base64binary/Base64BinaryTest.java
webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java
Modified: webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-bean.xsl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-bean.xsl?rev=795789&r1=795788&r2=795789&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-bean.xsl (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-bean.xsl Mon Jul 20 11:58:46 2009
@@ -655,20 +655,6 @@
}
</xsl:if>
- /**
- * isReaderMTOMAware
- * @return true if the reader supports MTOM
- */
- public static boolean isReaderMTOMAware(javax.xml.stream.XMLStreamReader reader) {
- boolean isReaderMTOMAware = false;
- <!-- workaround for the issues in the wstx reader!-->
- try{
- isReaderMTOMAware = java.lang.Boolean.TRUE.equals(reader.getProperty(org.apache.axiom.om.OMConstants.IS_DATA_HANDLERS_AWARE));
- }catch(java.lang.IllegalArgumentException e){
- isReaderMTOMAware = false;
- }
- return isReaderMTOMAware;
- }
<!-- ######################################################################################### -->
<!-- get OMElement methods that allows direct writing -->
/**
@@ -2726,34 +2712,7 @@
} else {
</xsl:if>
- if (isReaderMTOMAware(reader)
- &&
- java.lang.Boolean.TRUE.equals(reader.getProperty(org.apache.axiom.om.OMConstants.IS_BINARY)))
- {
- //MTOM aware reader - get the datahandler directly and put it in the object
- <xsl:value-of select="$listName"/>.add(
- (javax.activation.DataHandler) reader.getProperty(org.apache.axiom.om.OMConstants.DATA_HANDLER));
- } else {
- // Step in
- if (reader.getEventType() == javax.xml.stream.XMLStreamConstants.START_ELEMENT && <xsl:value-of select="$propQName"/>.equals(reader.getName())) {
- reader.next();
- }
- if (reader.getEventType() == javax.xml.stream.XMLStreamConstants.START_ELEMENT && reader.getName().equals(new javax.xml.namespace.QName(org.apache.axiom.om.impl.MTOMConstants.XOP_NAMESPACE_URI, org.apache.axiom.om.impl.MTOMConstants.XOP_INCLUDE)))
- {
- java.lang.String id = org.apache.axiom.om.util.ElementHelper.getContentID(reader, "UTF-8");
- <xsl:value-of select="$listName"/>.add(((org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder) ((org.apache.axiom.om.impl.llom.OMStAXWrapper) reader).getBuilder()).getDataHandler(id));
- reader.next();
- reader.next();
- } else if(reader.hasText()) {
- //Do the usual conversion
- java.lang.String content = reader.getText();
- <xsl:value-of select="$listName"/>.add(
- org.apache.axis2.databinding.utils.ConverterUtil.convertToBase64Binary(content));
- reader.next();
- }
-
- }
-
+ <xsl:value-of select="$listName"/>.add(org.apache.axiom.util.stax.XMLStreamReaderUtils.getDataHandlerFromElement(reader));
<xsl:if test="@nillable">}</xsl:if>
//loop until we find a start element that is not part of this array
@@ -2781,30 +2740,7 @@
} else {
</xsl:if>
- <xsl:if test="not($simple)">reader.next();</xsl:if>
- if (isReaderMTOMAware(reader)
- &&
- java.lang.Boolean.TRUE.equals(reader.getProperty(org.apache.axiom.om.OMConstants.IS_BINARY)))
- {
- //MTOM aware reader - get the datahandler directly and put it in the object
- <xsl:value-of select="$listName"/>.add(
- (javax.activation.DataHandler) reader.getProperty(org.apache.axiom.om.OMConstants.DATA_HANDLER));
- } else {
- if (reader.getEventType() == javax.xml.stream.XMLStreamConstants.START_ELEMENT && reader.getName().equals(new javax.xml.namespace.QName(org.apache.axiom.om.impl.MTOMConstants.XOP_NAMESPACE_URI, org.apache.axiom.om.impl.MTOMConstants.XOP_INCLUDE)))
- {
- java.lang.String id = org.apache.axiom.om.util.ElementHelper.getContentID(reader, "UTF-8");
- <xsl:value-of select="$listName"/>.add(((org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder) ((org.apache.axiom.om.impl.llom.OMStAXWrapper) reader).getBuilder()).getDataHandler(id));
- reader.next();
- reader.next();
- } else if(reader.hasText()) {
- //Do the usual conversion
- java.lang.String content = reader.getText();
- <xsl:value-of select="$listName"/>.add(
- org.apache.axis2.databinding.utils.ConverterUtil.convertToBase64Binary(content));
- reader.next();
- }
-
- }
+ <xsl:value-of select="$listName"/>.add(org.apache.axiom.util.stax.XMLStreamReaderUtils.getDataHandlerFromElement(reader));
<xsl:if test="@nillable">}</xsl:if>
}else{
@@ -3042,35 +2978,9 @@
<!-- end of OMelement handling -->
<!-- start of the simple types handling for binary content-->
<xsl:when test="@binary">
- <xsl:if test="not($simple)">reader.next();</xsl:if>
- if (isReaderMTOMAware(reader)
- &&
- java.lang.Boolean.TRUE.equals(reader.getProperty(org.apache.axiom.om.OMConstants.IS_BINARY)))
- {
- //MTOM aware reader - get the datahandler directly and put it in the object
- object.set<xsl:value-of select="$javaName"/>(
- (javax.activation.DataHandler) reader.getProperty(org.apache.axiom.om.OMConstants.DATA_HANDLER));
- } else {
- if (reader.getEventType() == javax.xml.stream.XMLStreamConstants.START_ELEMENT && reader.getName().equals(new javax.xml.namespace.QName(org.apache.axiom.om.impl.MTOMConstants.XOP_NAMESPACE_URI, org.apache.axiom.om.impl.MTOMConstants.XOP_INCLUDE)))
- {
- java.lang.String id = org.apache.axiom.om.util.ElementHelper.getContentID(reader, "UTF-8");
- object.set<xsl:value-of select="$javaName"/>(((org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder) ((org.apache.axiom.om.impl.llom.OMStAXWrapper) reader).getBuilder()).getDataHandler(id));
- reader.next();
- <xsl:if test="($isType or $anon) and not($simple)">
- reader.next();
- </xsl:if>
- } else if(reader.hasText()) {
- //Do the usual conversion
- java.lang.String content = reader.getText();
- object.set<xsl:value-of select="$javaName"/>(
- org.apache.axis2.databinding.utils.ConverterUtil.convertToBase64Binary(content));
- <xsl:if test="($isType or $anon) and not($simple)">
- reader.next();
- </xsl:if>
- }
- }
+ object.set<xsl:value-of select="$javaName"/>(org.apache.axiom.util.stax.XMLStreamReaderUtils.getDataHandlerFromElement(reader));
- <xsl:if test="$isType or $anon"> <!-- This is a subelement property to be consumed -->
+ <xsl:if test="($isType or $anon) and not($simple)"> <!-- This is a subelement property to be consumed -->
reader.next();
</xsl:if>
</xsl:when>
Modified: webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl?rev=795789&r1=795788&r2=795789&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl Mon Jul 20 11:58:46 2009
@@ -537,20 +537,6 @@
return <xsl:value-of select="$fullyQualifiedName"/>.class;
}
- /**
- * isReaderMTOMAware
- * @return true if the reader supports MTOM
- */
- public static boolean isReaderMTOMAware(javax.xml.stream.XMLStreamReader reader) {
- boolean isReaderMTOMAware = false;
- <!-- workaround for the issues in the wstx reader!-->
- try{
- isReaderMTOMAware = java.lang.Boolean.TRUE.equals(reader.getProperty(org.apache.axiom.om.OMConstants.IS_DATA_HANDLERS_AWARE));
- }catch(java.lang.IllegalArgumentException e){
- isReaderMTOMAware = false;
- }
- return isReaderMTOMAware;
- }
<!-- ######################################################################################### -->
<!-- get OMElement methods that allows direct writing -->
/**
@@ -1752,34 +1738,7 @@
} else {
</xsl:if>
- if (isReaderMTOMAware(reader)
- &&
- java.lang.Boolean.TRUE.equals(reader.getProperty(org.apache.axiom.om.OMConstants.IS_BINARY)))
- {
- //MTOM aware reader - get the datahandler directly and put it in the object
- <xsl:value-of select="$listName"/>.add(
- (javax.activation.DataHandler) reader.getProperty(org.apache.axiom.om.OMConstants.DATA_HANDLER));
- } else {
- // Step in
- if (reader.getEventType() == javax.xml.stream.XMLStreamConstants.START_ELEMENT && <xsl:value-of select="$propQName"/>.equals(reader.getName())) {
- reader.next();
- }
- if (reader.getEventType() == javax.xml.stream.XMLStreamConstants.START_ELEMENT && reader.getName().equals(new javax.xml.namespace.QName(org.apache.axiom.om.impl.MTOMConstants.XOP_NAMESPACE_URI, org.apache.axiom.om.impl.MTOMConstants.XOP_INCLUDE)))
- {
- java.lang.String id = org.apache.axiom.om.util.ElementHelper.getContentID(reader, "UTF-8");
- <xsl:value-of select="$listName"/>.add(((org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder) ((org.apache.axiom.om.impl.llom.OMStAXWrapper) reader).getBuilder()).getDataHandler(id));
- reader.next();
- reader.next();
- } else if(reader.hasText()) {
- //Do the usual conversion
- java.lang.String content = reader.getText();
- <xsl:value-of select="$listName"/>.add(
- org.apache.axis2.databinding.utils.ConverterUtil.convertToBase64Binary(content));
- reader.next();
- }
-
- }
-
+ <xsl:value-of select="$listName"/>.add(org.apache.axiom.util.stax.XMLStreamReaderUtils.getDataHandlerFromElement(reader));
<xsl:if test="@nillable">}</xsl:if>
//loop until we find a start element that is not part of this array
@@ -1807,30 +1766,7 @@
} else {
</xsl:if>
- <xsl:if test="not($simple)">reader.next();</xsl:if>
- if (isReaderMTOMAware(reader)
- &&
- java.lang.Boolean.TRUE.equals(reader.getProperty(org.apache.axiom.om.OMConstants.IS_BINARY)))
- {
- //MTOM aware reader - get the datahandler directly and put it in the object
- <xsl:value-of select="$listName"/>.add(
- (javax.activation.DataHandler) reader.getProperty(org.apache.axiom.om.OMConstants.DATA_HANDLER));
- } else {
- if (reader.getEventType() == javax.xml.stream.XMLStreamConstants.START_ELEMENT && reader.getName().equals(new javax.xml.namespace.QName(org.apache.axiom.om.impl.MTOMConstants.XOP_NAMESPACE_URI, org.apache.axiom.om.impl.MTOMConstants.XOP_INCLUDE)))
- {
- java.lang.String id = org.apache.axiom.om.util.ElementHelper.getContentID(reader, "UTF-8");
- <xsl:value-of select="$listName"/>.add(((org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder) ((org.apache.axiom.om.impl.llom.OMStAXWrapper) reader).getBuilder()).getDataHandler(id));
- reader.next();
- reader.next();
- } else if(reader.hasText()) {
- //Do the usual conversion
- java.lang.String content = reader.getText();
- <xsl:value-of select="$listName"/>.add(
- org.apache.axis2.databinding.utils.ConverterUtil.convertToBase64Binary(content));
- reader.next();
- }
-
- }
+ <xsl:value-of select="$listName"/>.add(org.apache.axiom.util.stax.XMLStreamReaderUtils.getDataHandlerFromElement(reader));
<xsl:if test="@nillable">}</xsl:if>
}else{
@@ -2031,35 +1967,9 @@
<!-- end of OMelement handling -->
<!-- start of the simple types handling for binary content-->
<xsl:when test="@binary">
- <xsl:if test="not($simple)">reader.next();</xsl:if>
- if (isReaderMTOMAware(reader)
- &&
- java.lang.Boolean.TRUE.equals(reader.getProperty(org.apache.axiom.om.OMConstants.IS_BINARY)))
- {
- //MTOM aware reader - get the datahandler directly and put it in the object
- object.set<xsl:value-of select="$javaName"/>(
- (javax.activation.DataHandler) reader.getProperty(org.apache.axiom.om.OMConstants.DATA_HANDLER));
- } else {
- if (reader.getEventType() == javax.xml.stream.XMLStreamConstants.START_ELEMENT && reader.getName().equals(new javax.xml.namespace.QName(org.apache.axiom.om.impl.MTOMConstants.XOP_NAMESPACE_URI, org.apache.axiom.om.impl.MTOMConstants.XOP_INCLUDE)))
- {
- java.lang.String id = org.apache.axiom.om.util.ElementHelper.getContentID(reader, "UTF-8");
- object.set<xsl:value-of select="$javaName"/>(((org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder) ((org.apache.axiom.om.impl.llom.OMStAXWrapper) reader).getBuilder()).getDataHandler(id));
- reader.next();
- <xsl:if test="($isType or $anon) and not($simple)">
- reader.next();
- </xsl:if>
- } else if(reader.hasText()) {
- //Do the usual conversion
- java.lang.String content = reader.getText();
- object.set<xsl:value-of select="$javaName"/>(
- org.apache.axis2.databinding.utils.ConverterUtil.convertToBase64Binary(content));
- <xsl:if test="($isType or $anon) and not($simple)">
- reader.next();
- </xsl:if>
- }
- }
+ object.set<xsl:value-of select="$javaName"/>(org.apache.axiom.util.stax.XMLStreamReaderUtils.getDataHandlerFromElement(reader));
- <xsl:if test="$isType or $anon"> <!-- This is a subelement property to be consumed -->
+ <xsl:if test="($isType or $anon) and not($simple)"> <!-- This is a subelement property to be consumed -->
reader.next();
</xsl:if>
</xsl:when>
Modified: webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/base64binary/Base64BinaryTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/base64binary/Base64BinaryTest.java?rev=795789&r1=795788&r2=795789&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/base64binary/Base64BinaryTest.java (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/base64binary/Base64BinaryTest.java Mon Jul 20 11:58:46 2009
@@ -80,6 +80,6 @@
new DataHandler("DataHandler 2", "text/plain"),
new DataHandler("DataHandler 3", "text/plain")
});
- testSerializeDeserialize(bean);
+ testSerializeDeserialize(bean, false);
}
}
Modified: webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java?rev=795789&r1=795788&r2=795789&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java (original)
+++ webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java Mon Jul 20 11:58:46 2009
@@ -22,15 +22,11 @@
import org.apache.axiom.attachments.ByteArrayDataSource;
import org.apache.axiom.attachments.utils.IOUtils;
import org.apache.axiom.om.OMAbstractFactory;
-import org.apache.axiom.om.OMConstants;
import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.impl.MTOMConstants;
import org.apache.axiom.om.impl.builder.StAXOMBuilder;
-import org.apache.axiom.om.impl.llom.OMStAXWrapper;
import org.apache.axiom.om.util.Base64;
-import org.apache.axiom.om.util.ElementHelper;
import org.apache.axiom.om.util.StAXUtils;
-import org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder;
+import org.apache.axiom.util.stax.XMLStreamReaderUtils;
import org.apache.axis2.databinding.ADBBean;
import org.apache.axis2.databinding.ADBException;
import org.apache.axis2.databinding.i18n.ADBMessages;
@@ -1526,8 +1522,7 @@
if (Constants.XSD_NAMESPACE.equals(attributeNameSpace)) {
if ("base64Binary".equals(attributeType)) {
- xmlStreamReader.next();
- returnObject = getDataHandlerObject(xmlStreamReader);
+ returnObject = XMLStreamReaderUtils.getDataHandlerFromElement(xmlStreamReader);
} else {
String attribValue = xmlStreamReader.getElementText();
if (attribValue != null) {
@@ -1618,26 +1613,6 @@
return returnObject;
}
- private static Object getDataHandlerObject(XMLStreamReader reader) throws XMLStreamException {
- Object dataHandler = null;
- if (Boolean.TRUE.equals(reader.getProperty(OMConstants.IS_DATA_HANDLERS_AWARE))
- && Boolean.TRUE.equals(reader.getProperty(OMConstants.IS_BINARY))) {
- dataHandler = reader.getProperty(org.apache.axiom.om.OMConstants.DATA_HANDLER);
- } else {
- if (reader.getEventType() == XMLStreamConstants.START_ELEMENT &&
- reader.getName().equals(new QName(MTOMConstants.XOP_NAMESPACE_URI, MTOMConstants.XOP_INCLUDE))) {
- String id = ElementHelper.getContentID(reader, "UTF-8");
- dataHandler = ((MTOMStAXSOAPModelBuilder) ((OMStAXWrapper) reader).getBuilder()).getDataHandler(id);
- reader.next();
- } else if (reader.hasText()) {
- String content = reader.getText();
- dataHandler = ConverterUtil.convertToBase64Binary(content);
-
- }
- }
- return dataHandler;
- }
-
static {
isCustomClassPresent = (System.getProperty(SYSTEM_PROPERTY_ADB_CONVERTERUTIL) != null);
if (isCustomClassPresent){