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)
-                                                            &amp;&amp;
-                                                            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 &amp;&amp; <xsl:value-of select="$propQName"/>.equals(reader.getName())) {
-                                                            reader.next();
-                                                        }
-                                                        if (reader.getEventType() == javax.xml.stream.XMLStreamConstants.START_ELEMENT &amp;&amp; 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)
-                                                                        &amp;&amp;
-                                                                        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 &amp;&amp; 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)
-                                            &amp;&amp;
-                                            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 &amp;&amp; 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)
-                                                            &amp;&amp;
-                                                            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 &amp;&amp; <xsl:value-of select="$propQName"/>.equals(reader.getName())) {
-                                                            reader.next();
-                                                        }
-                                                        if (reader.getEventType() == javax.xml.stream.XMLStreamConstants.START_ELEMENT &amp;&amp; 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)
-                                                                        &amp;&amp;
-                                                                        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 &amp;&amp; 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)
-                                            &amp;&amp;
-                                            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 &amp;&amp; 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){