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 ch...@apache.org on 2006/10/12 11:12:29 UTC
svn commit: r463168 -
/webservices/axis2/branches/java/1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl
Author: chinthaka
Date: Thu Oct 12 02:12:28 2006
New Revision: 463168
URL: http://svn.apache.org/viewvc?view=rev&rev=463168
Log:
Fixing xs:any de-serialization problem.
Modified:
webservices/axis2/branches/java/1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl
Modified: webservices/axis2/branches/java/1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl?view=diff&rev=463168&r1=463167&r2=463168
==============================================================================
--- webservices/axis2/branches/java/1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl (original)
+++ webservices/axis2/branches/java/1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl Thu Oct 12 02:12:28 2006
@@ -1788,7 +1788,50 @@
<xsl:value-of select="$listName"/>));
</xsl:when>
<!-- End of Array handling of ADB classes -->
- <xsl:when test="@default">
+
+ <!--Let's handle xs:any here-->
+ <xsl:when test="$shortTypeName='OMElement'">
+ boolean <xsl:value-of select="$loopBoolName"/>=false;
+
+ while (!<xsl:value-of select="$loopBoolName"/>){
+ event = reader.getEventType();
+ if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event){
+
+ <!-- if-block that handles nillable -->
+ <xsl:if test="@nillable">
+ if ("true".equals(reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"))){
+ <xsl:value-of select="$listName"/>.add(null);
+ }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), reader.getName());
+
+ <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$builderName"/>.getOMElement());
+ <xsl:if test="@nillable">}</xsl:if>
+ } else if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event){
+ <xsl:value-of select="$loopBoolName"/> = true;
+ }else if (javax.xml.stream.XMLStreamConstants.END_ELEMENT == event){
+ <xsl:value-of select="$loopBoolName"/> = true;
+ }else if (javax.xml.stream.XMLStreamConstants.END_DOCUMENT == event){
+ <xsl:value-of select="$loopBoolName"/> = true;
+ }else{
+ reader.next();
+ }
+
+ }
+
+ object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>)
+ org.apache.axis2.databinding.utils.ConverterUtil.convertToArray(
+ <xsl:value-of select="$basePropertyType"/>.class,<xsl:value-of select="$listName"/>));
+ </xsl:when>
+
+
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="@default">
boolean <xsl:value-of select="$loopBoolName"/>=false;
javax.xml.namespace.QName <xsl:value-of select="$startQname"/> = new javax.xml.namespace.QName(
"<xsl:value-of select="$namespace"/>",
@@ -1864,6 +1907,8 @@
<xsl:value-of select="$basePropertyType"/>.class,
<xsl:value-of select="$listName"/>));
</xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="@ours">
@@ -2840,6 +2885,50 @@
<xsl:value-of select="$basePropertyType"/>.class,
<xsl:value-of select="$listName"/>));
</xsl:when>
+
+ <!--Let's handle xs:any here-->
+ <xsl:when test="$shortTypeName='OMElement'">
+ boolean <xsl:value-of select="$loopBoolName"/>=false;
+
+ while (!<xsl:value-of select="$loopBoolName"/>){
+ event = reader.getEventType();
+ if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event){
+
+ <!-- if-block that handles nillable -->
+ <xsl:if test="@nillable">
+ if ("true".equals(reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"))){
+ <xsl:value-of select="$listName"/>.add(null);
+ }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), reader.getName());
+
+ <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$builderName"/>.getOMElement());
+ <xsl:if test="@nillable">}</xsl:if>
+ } else if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event){
+ <xsl:value-of select="$loopBoolName"/> = true;
+ }else if (javax.xml.stream.XMLStreamConstants.END_ELEMENT == event){
+ <xsl:value-of select="$loopBoolName"/> = true;
+ }else if (javax.xml.stream.XMLStreamConstants.END_DOCUMENT == event){
+ <xsl:value-of select="$loopBoolName"/> = true;
+ }else{
+ reader.next();
+ }
+
+ }
+
+ object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>)
+ org.apache.axis2.databinding.utils.ConverterUtil.convertToArray(
+ <xsl:value-of select="$basePropertyType"/>.class,<xsl:value-of select="$listName"/>));
+ </xsl:when>
+
+
+ <xsl:otherwise>
+ <xsl:choose>
+
<!-- End of Array handling of ADB classes -->
<xsl:when test="@default">
boolean <xsl:value-of select="$loopBoolName"/>=false;
@@ -2917,6 +3006,9 @@
<xsl:value-of select="$basePropertyType"/>.class,
<xsl:value-of select="$listName"/>));
</xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="@ours">
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org