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 ve...@apache.org on 2016/03/10 23:34:51 UTC
svn commit: r1734473 - in /axis/axis2/java/core/trunk/modules:
adb-codegen/src/org/apache/axis2/schema/template/
adb/src/org/apache/axis2/databinding/types/soapencoding/
adb/src/org/apache/axis2/databinding/utils/
adb/test/org/apache/axis2/databinding/...
Author: veithen
Date: Thu Mar 10 22:34:50 2016
New Revision: 1734473
URL: http://svn.apache.org/viewvc?rev=1734473&view=rev
Log:
Replace some obscure and dubious ADB code with a simpler and more straightforward solution.
Added:
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/FactoryUtil.java (with props)
Removed:
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/NamedStaxOMBuilder.java
axis/axis2/java/core/trunk/modules/adb/test/org/apache/axis2/databinding/utils/NamedStaxOMBuilderTest.java
Modified:
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-bean.xsl
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/types/soapencoding/AnyType.java
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/types/soapencoding/Struct.java
Modified: axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-bean.xsl
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-bean.xsl?rev=1734473&r1=1734472&r2=1734473&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-bean.xsl (original)
+++ axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-bean.xsl Thu Mar 10 22:34:50 2016
@@ -2155,7 +2155,6 @@
<xsl:variable name="loopBoolName">loopDone<xsl:value-of select="position()"/></xsl:variable>
<xsl:variable name="startQname">startQname<xsl:value-of select="position()"/></xsl:variable>
<xsl:variable name="stateMachineName">stateMachine<xsl:value-of select="position()"/></xsl:variable>
- <xsl:variable name="builderName">builder<xsl:value-of select="position()"/></xsl:variable>
<xsl:variable name="basePropertyType"><xsl:value-of select="@arrayBaseType"/></xsl:variable>
<xsl:variable name="namespace"><xsl:value-of select="@nsuri"/></xsl:variable>
<xsl:variable name="min"><xsl:value-of select="@minOccurs"/></xsl:variable>
@@ -2310,14 +2309,7 @@
while (!<xsl:value-of select="$loopBoolName"/>){
event = reader.getEventType();
if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event){
-
- // We need to wrap the reader so that it produces a fake START_DOCUEMENT event
- org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/>
- = new org.apache.axis2.databinding.utils.NamedStaxOMBuilder(
- new org.apache.axis2.util.StreamWrapper(reader), reader.getName());
-
- <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$builderName"/>.getOMElement());
- reader.next();
+ <xsl:value-of select="$listName"/>.add(org.apache.axis2.databinding.utils.FactoryUtil.extractElement(reader, true));
if (reader.isEndElement()) {
// we have two countinuos end elements
<xsl:value-of select="$loopBoolName"/> = true;
@@ -2474,12 +2466,7 @@
}else{
</xsl:if>
- // We need to wrap the reader so that it produces a fake START_DOCUEMENT event
- org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/>
- = new org.apache.axis2.databinding.utils.NamedStaxOMBuilder(
- new org.apache.axis2.util.StreamWrapper(reader), <xsl:value-of select="$startQname"/>);
-
- <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$builderName"/>.getOMElement().getFirstElement());
+ <xsl:value-of select="$listName"/>.add(org.apache.axis2.databinding.utils.FactoryUtil.extractElement(reader, false).getFirstElement());
<xsl:if test="@nillable">}</xsl:if>
} else if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event &&
!<xsl:value-of select="$startQname"/>.equals(reader.getName())){
@@ -2643,16 +2630,8 @@
<xsl:when test="@any">
<!--No concerns of being nillable here. if it's ours and if the nillable attribute was present
we would have outputted a null already-->
- <!--This can be any element and we may not know the name. so we pick the name of the element from the parser-->
- //use the QName from the parser as the name for the builder
- javax.xml.namespace.QName <xsl:value-of select="$startQname"/> = reader.getName();
-
- // We need to wrap the reader so that it produces a fake START_DOCUMENT event
- // this is needed by the builder classes
- org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/> =
- new org.apache.axis2.databinding.utils.NamedStaxOMBuilder(
- new org.apache.axis2.util.StreamWrapper(reader),<xsl:value-of select="$startQname"/>);
- object.set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$builderName"/>.getOMElement());
+
+ object.set<xsl:value-of select="$javaName"/>(org.apache.axis2.databinding.utils.FactoryUtil.extractElement(reader, false));
<xsl:if test="$isType or $anon"> <!-- This is a subelement property to be consumed -->
reader.next();
</xsl:if>
Modified: axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl?rev=1734473&r1=1734472&r2=1734473&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl (original)
+++ axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl Thu Mar 10 22:34:50 2016
@@ -1269,7 +1269,6 @@ public <xsl:if test="not(@unwrapped) or
<xsl:variable name="loopBoolName">loopDone<xsl:value-of select="position()"/></xsl:variable>
<xsl:variable name="startQname">startQname<xsl:value-of select="position()"/></xsl:variable>
<xsl:variable name="stateMachineName">stateMachine<xsl:value-of select="position()"/></xsl:variable>
- <xsl:variable name="builderName">builder<xsl:value-of select="position()"/></xsl:variable>
<xsl:variable name="basePropertyType"><xsl:value-of select="@arrayBaseType"/></xsl:variable>
<xsl:variable name="namespace"><xsl:value-of select="@nsuri"/></xsl:variable>
<xsl:variable name="min"><xsl:value-of select="@minOccurs"/></xsl:variable>
@@ -1370,13 +1369,7 @@ public <xsl:if test="not(@unwrapped) or
event = reader.getEventType();
if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event){
- // We need to wrap the reader so that it produces a fake START_DOCUEMENT event
- org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/>
- = new org.apache.axis2.databinding.utils.NamedStaxOMBuilder(
- new org.apache.axis2.util.StreamWrapper(reader), reader.getName());
-
- <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$builderName"/>.getOMElement());
- reader.next();
+ <xsl:value-of select="$listName"/>.add(org.apache.axis2.databinding.utils.FactoryUtil.extractElement(reader, true));
if (reader.isEndElement()) {
// we have two countinuos end elements
<xsl:value-of select="$loopBoolName"/> = true;
@@ -1424,13 +1417,7 @@ public <xsl:if test="not(@unwrapped) or
reader.next();
}else{
</xsl:if>
- // we parse it as an omElement
- // We need to wrap the reader so that it produces a fake START_DOCUEMENT event
- // this is needed by the builder classes
- org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/> =
- new org.apache.axis2.databinding.utils.NamedStaxOMBuilder(
- new org.apache.axis2.util.StreamWrapper(reader),<xsl:value-of select="$startQname"/>);
- <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$builderName"/>.getOMElement().getFirstElement());
+ <xsl:value-of select="$listName"/>.add(org.apache.axis2.databinding.utils.FactoryUtil.extractElement(reader, false).getFirstElement());
<xsl:if test="@nillable">}</xsl:if>
} else if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event &&
!<xsl:value-of select="$startQname"/>.equals(reader.getName())){
@@ -1540,12 +1527,7 @@ public <xsl:if test="not(@unwrapped) or
}else{
</xsl:if>
- // We need to wrap the reader so that it produces a fake START_DOCUEMENT event
- org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/>
- = new org.apache.axis2.databinding.utils.NamedStaxOMBuilder(
- new org.apache.axis2.util.StreamWrapper(reader), <xsl:value-of select="$startQname"/>);
-
- <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$builderName"/>.getOMElement().getFirstElement());
+ <xsl:value-of select="$listName"/>.add(org.apache.axis2.databinding.utils.FactoryUtil.extractElement(reader, false).getFirstElement());
<xsl:if test="@nillable">}</xsl:if>
} else if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event &&
!<xsl:value-of select="$startQname"/>.equals(reader.getName())){
@@ -1654,16 +1636,8 @@ public <xsl:if test="not(@unwrapped) or
<xsl:when test="@any">
<!--No concerns of being nillable here. if it's ours and if the nillable attribute was present
we would have outputted a null already-->
- <!--This can be any element and we may not know the name. so we pick the name of the element from the parser-->
- //use the QName from the parser as the name for the builder
- javax.xml.namespace.QName <xsl:value-of select="$startQname"/> = reader.getName();
-
- // We need to wrap the reader so that it produces a fake START_DOCUMENT event
- // this is needed by the builder classes
- org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/> =
- new org.apache.axis2.databinding.utils.NamedStaxOMBuilder(
- new org.apache.axis2.util.StreamWrapper(reader),<xsl:value-of select="$startQname"/>);
- object.set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$builderName"/>.getOMElement());
+
+ object.set<xsl:value-of select="$javaName"/>(org.apache.axis2.databinding.utils.FactoryUtil.extractElement(reader, false));
<xsl:if test="$isType or $anon"> <!-- This is a subelement property to be consumed -->
reader.next();
</xsl:if>
@@ -1684,13 +1658,7 @@ public <xsl:if test="not(@unwrapped) or
}
}
- <!-- todo put the code here for nillable -->
- // We need to wrap the reader so that it produces a fake START_DOCUEMENT event
- // this is needed by the builder classes
- org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/> =
- new org.apache.axis2.databinding.utils.NamedStaxOMBuilder(
- new org.apache.axis2.util.StreamWrapper(reader),<xsl:value-of select="$startQname"/>);
- object.set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$builderName"/>.getOMElement().getFirstElement());
+ object.set<xsl:value-of select="$javaName"/>(org.apache.axis2.databinding.utils.FactoryUtil.extractElement(reader, false).getFirstElement());
<xsl:if test="$isType or $anon"> <!-- This is a subelement property to be consumed -->
reader.next();
</xsl:if>
Modified: axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/types/soapencoding/AnyType.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/types/soapencoding/AnyType.java?rev=1734473&r1=1734472&r2=1734473&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/types/soapencoding/AnyType.java (original)
+++ axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/types/soapencoding/AnyType.java Thu Mar 10 22:34:50 2016
@@ -356,15 +356,7 @@ import javax.xml.stream.XMLStreamWriter;
- //use the QName from the parser as the name for the builder
- javax.xml.namespace.QName startQname1 = reader.getName();
-
- // We need to wrap the reader so that it produces a fake START_DOCUMENT event
- // this is needed by the builder classes
- org.apache.axis2.databinding.utils.NamedStaxOMBuilder builder1 =
- new org.apache.axis2.databinding.utils.NamedStaxOMBuilder(
- new org.apache.axis2.util.StreamWrapper(reader),startQname1);
- object.setAnyType(builder1.getOMElement());
+ object.setAnyType(org.apache.axis2.databinding.utils.FactoryUtil.extractElement(reader, false));
} // End of if for expected property start element
Modified: axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/types/soapencoding/Struct.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/types/soapencoding/Struct.java?rev=1734473&r1=1734472&r2=1734473&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/types/soapencoding/Struct.java (original)
+++ axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/types/soapencoding/Struct.java Thu Mar 10 22:34:50 2016
@@ -568,13 +568,7 @@ import javax.xml.stream.XMLStreamWriter;
event = reader.getEventType();
if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event){
- // We need to wrap the reader so that it produces a fake START_DOCUEMENT event
- org.apache.axis2.databinding.utils.NamedStaxOMBuilder builder1
- = new org.apache.axis2.databinding.utils.NamedStaxOMBuilder(
- new org.apache.axis2.util.StreamWrapper(reader), reader.getName());
-
- list1.add(builder1.getOMElement());
- reader.next();
+ list1.add(org.apache.axis2.databinding.utils.FactoryUtil.extractElement(reader, true));
if (reader.isEndElement()) {
// we have two countinuos end elements
loopDone1 = true;
Added: axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/FactoryUtil.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/FactoryUtil.java?rev=1734473&view=auto
==============================================================================
--- axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/FactoryUtil.java (added)
+++ axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/FactoryUtil.java Thu Mar 10 22:34:50 2016
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis2.databinding.utils;
+
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.axiom.om.OMDocument;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMXMLBuilderFactory;
+import org.apache.axiom.util.stax.XMLFragmentStreamReader;
+
+public final class FactoryUtil {
+ private FactoryUtil() {}
+
+ public static OMElement extractElement(XMLStreamReader reader, boolean proceedToNext) {
+ OMDocument document = OMXMLBuilderFactory.createStAXOMBuilder(
+ new XMLFragmentStreamReader(reader, proceedToNext)).getDocument();
+ document.build();
+ return document.getOMDocumentElement();
+ }
+}
Propchange: axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/FactoryUtil.java
------------------------------------------------------------------------------
svn:eol-style = native