You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@axis.apache.org by bi...@apache.org on 2020/04/14 20:02:19 UTC
[axis-axis2-java-core] 07/38: Backported r795789 and part of
r1042244 to the 1.5 branch to reduce the coupling to Axiom internals. This
should solve AXIS2-4363 and AXIS2-4387.
This is an automated email from the ASF dual-hosted git repository.
billblough pushed a commit to branch 1_5
in repository https://gitbox.apache.org/repos/asf/axis-axis2-java-core.git
commit e929313a2986b02a9ff867456c38c1a954bf98c9
Author: Andreas Veithen <ve...@apache.org>
AuthorDate: Sat Oct 15 20:53:41 2011 +0000
Backported r795789 and part of r1042244 to the 1.5 branch to reduce the coupling to Axiom internals. This should solve AXIS2-4363 and AXIS2-4387.
---
.../axis2/schema/template/ADBBeanTemplate.xsl | 194 +--------------------
.../types/soapencoding/Base64Binary.java | 42 +----
.../axis2/databinding/types/xsd/Base64Binary.java | 26 +--
.../axis2/databinding/utils/ConverterUtil.java | 29 +--
4 files changed, 12 insertions(+), 279 deletions(-)
diff --git a/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl b/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl
index 03fd807..2daa034 100644
--- a/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl
+++ b/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl
@@ -692,20 +692,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 -->
/**
@@ -3052,33 +3038,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>
@@ -3107,30 +3067,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{
@@ -3368,35 +3305,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>
@@ -4129,20 +4040,6 @@ public <xsl:if test="not(@unwrapped) or (@skip-write)">static</xsl:if> class <xs
return org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
}
- /**
- * 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 -->
/**
@@ -5343,33 +5240,7 @@ public <xsl:if test="not(@unwrapped) or (@skip-write)">static</xsl:if> class <xs
} 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>
@@ -5398,30 +5269,7 @@ public <xsl:if test="not(@unwrapped) or (@skip-write)">static</xsl:if> class <xs
} 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{
@@ -5622,35 +5470,9 @@ public <xsl:if test="not(@unwrapped) or (@skip-write)">static</xsl:if> class <xs
<!-- 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>
diff --git a/modules/adb/src/org/apache/axis2/databinding/types/soapencoding/Base64Binary.java b/modules/adb/src/org/apache/axis2/databinding/types/soapencoding/Base64Binary.java
index 8872ef2..1a97229 100644
--- a/modules/adb/src/org/apache/axis2/databinding/types/soapencoding/Base64Binary.java
+++ b/modules/adb/src/org/apache/axis2/databinding/types/soapencoding/Base64Binary.java
@@ -87,22 +87,6 @@
}
- /**
- * isReaderMTOMAware
- * @return true if the reader supports MTOM
- */
- public static boolean isReaderMTOMAware(javax.xml.stream.XMLStreamReader reader) {
- boolean isReaderMTOMAware = false;
-
- 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;
- }
-
-
/**
*
* @param parentQName
@@ -455,31 +439,7 @@
if (reader.isStartElement() || reader.hasText()){
- 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.setBase64Binary(
- (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.setBase64Binary(((org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder) ((org.apache.axiom.om.impl.llom.OMStAXWrapper) reader).getBuilder()).getDataHandler(id));
- reader.next();
-
- } else if(reader.hasText()) {
- //Do the usual conversion
- java.lang.String content = reader.getText();
- object.setBase64Binary(
- org.apache.axis2.databinding.utils.ConverterUtil.convertToBase64Binary(content));
-
- }
- }
-
-
- reader.next();
+ object.setBase64Binary(org.apache.axiom.util.stax.XMLStreamReaderUtils.getDataHandlerFromElement(reader));
} // End of if for expected property start element
diff --git a/modules/adb/src/org/apache/axis2/databinding/types/xsd/Base64Binary.java b/modules/adb/src/org/apache/axis2/databinding/types/xsd/Base64Binary.java
index 2ba0cd7..15fb552 100644
--- a/modules/adb/src/org/apache/axis2/databinding/types/xsd/Base64Binary.java
+++ b/modules/adb/src/org/apache/axis2/databinding/types/xsd/Base64Binary.java
@@ -455,31 +455,7 @@
if (reader.isStartElement() || reader.hasText()){
- 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.setBase64Binary(
- (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.setBase64Binary(((org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder) ((org.apache.axiom.om.impl.llom.OMStAXWrapper) reader).getBuilder()).getDataHandler(id));
- reader.next();
-
- } else if(reader.hasText()) {
- //Do the usual conversion
- java.lang.String content = reader.getText();
- object.setBase64Binary(
- org.apache.axis2.databinding.utils.ConverterUtil.convertToBase64Binary(content));
-
- }
- }
-
-
- reader.next();
+ object.setBase64Binary(org.apache.axiom.util.stax.XMLStreamReaderUtils.getDataHandlerFromElement(reader));
} // End of if for expected property start element
diff --git a/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java b/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java
index 8547210..ad98668 100644
--- a/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java
+++ b/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java
@@ -22,15 +22,11 @@ package org.apache.axis2.databinding.utils;
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;
@@ -1525,8 +1521,7 @@ public class ConverterUtil {
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) {
@@ -1617,26 +1612,6 @@ public class ConverterUtil {
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){