You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by am...@apache.org on 2007/11/14 15:35:40 UTC

svn commit: r594910 - in /webservices/axis2/trunk/java/modules/adb-codegen: src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl test-resources/testsuite/anytype.xsd test/org/apache/axis2/schema/anytype/AnyTypeTest.java

Author: amilas
Date: Wed Nov 14 06:35:38 2007
New Revision: 594910

URL: http://svn.apache.org/viewvc?rev=594910&view=rev
Log:
add support custom bean anytype support to adb

Modified:
    webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl
    webservices/axis2/trunk/java/modules/adb-codegen/test-resources/testsuite/anytype.xsd
    webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/anytype/AnyTypeTest.java

Modified: webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl?rev=594910&r1=594909&r2=594910&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl Wed Nov 14 06:35:38 2007
@@ -741,11 +741,17 @@
        </xsl:choose>
        }
 
-
+         public void serialize(final javax.xml.namespace.QName parentQName,
+                                       final org.apache.axiom.om.OMFactory factory,
+                                       org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter)
+                                throws javax.xml.stream.XMLStreamException, org.apache.axis2.databinding.ADBException{
+                           serialize(parentQName,factory,xmlWriter,false);
+         }
 
          public void serialize(final javax.xml.namespace.QName parentQName,
                                final org.apache.axiom.om.OMFactory factory,
-                               org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter)
+                               org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter,
+                               boolean serializeType)
             throws javax.xml.stream.XMLStreamException, org.apache.axis2.databinding.ADBException{
             <xsl:choose>
 
@@ -873,18 +879,22 @@
 
 
                 <!-- write the type attribute if needed -->
-               <xsl:if test="$extension and not(@anon)">
-               java.lang.String namespacePrefix = registerPrefix(xmlWriter,"<xsl:value-of select="$nsuri"/>");
-               if ((namespacePrefix != null) &amp;&amp; (namespacePrefix.trim().length() > 0)){
-                   writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","type",
-                       namespacePrefix+":<xsl:value-of select="$originalName"/>",
-                       xmlWriter);
-               } else {
-                   writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","type",
-                       "<xsl:value-of select="$originalName"/>",
-                       xmlWriter);
-               }
+               <xsl:if test="not($extension) or @anon">
+                  if (serializeType){
+               </xsl:if>
+                   java.lang.String namespacePrefix = registerPrefix(xmlWriter,"<xsl:value-of select="$nsuri"/>");
+                   if ((namespacePrefix != null) &amp;&amp; (namespacePrefix.trim().length() > 0)){
+                       writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","type",
+                           namespacePrefix+":<xsl:value-of select="$originalName"/>",
+                           xmlWriter);
+                   } else {
+                       writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","type",
+                           "<xsl:value-of select="$originalName"/>",
+                           xmlWriter);
+                   }
 
+               <xsl:if test="not($extension) or @anon">
+                   }
                </xsl:if>
                 <!--First serialize the attributes!-->
                 <xsl:for-each select="property[@attribute]">
@@ -1157,27 +1167,34 @@
                             if (<xsl:value-of select="$varName"/>!=null){
                                  for (int i = 0;i &lt; <xsl:value-of select="$varName"/>.length;i++){
                                     if (<xsl:value-of select="$varName"/>[i] != null){
-                                           // write null attribute
-                                            java.lang.String namespace2 = "<xsl:value-of select="$namespace"/>";
-                                            if (! namespace2.equals("")) {
-                                                java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
 
-                                                if (prefix2 == null) {
-                                                    prefix2 = generatePrefix(namespace2);
+                                           if (<xsl:value-of select="$varName"/>[i] instanceof org.apache.axis2.databinding.ADBBean){
+                                                ((org.apache.axis2.databinding.ADBBean)<xsl:value-of select="$varName"/>[i]).serialize(
+                                                           new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>"),
+                                                           factory,xmlWriter,true);
+                                            } else {
+                                                java.lang.String namespace2 = "<xsl:value-of select="$namespace"/>";
+                                                if (! namespace2.equals("")) {
+                                                    java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
 
-                                                    xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace2);
-                                                    xmlWriter.writeNamespace(prefix2, namespace2);
-                                                    xmlWriter.setPrefix(prefix2, namespace2);
+                                                    if (prefix2 == null) {
+                                                        prefix2 = generatePrefix(namespace2);
+
+                                                        xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace2);
+                                                        xmlWriter.writeNamespace(prefix2, namespace2);
+                                                        xmlWriter.setPrefix(prefix2, namespace2);
+
+                                                    } else {
+                                                        xmlWriter.writeStartElement(namespace2,"<xsl:value-of select="$propertyName"/>");
+                                                    }
 
                                                 } else {
-                                                    xmlWriter.writeStartElement(namespace2,"<xsl:value-of select="$propertyName"/>");
+                                                    xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
                                                 }
+                                                org.apache.axis2.databinding.utils.ConverterUtil.serializeAnyType(<xsl:value-of select="$varName"/>[i], xmlWriter);
+                                                xmlWriter.writeEndElement();
+                                             }
 
-                                            } else {
-                                                xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
-                                            }
-                                            org.apache.axis2.databinding.utils.ConverterUtil.serializeAnyType(<xsl:value-of select="$varName"/>[i], xmlWriter);
-                                            xmlWriter.writeEndElement();
                                     } else {
                                        <xsl:choose>
                                        <xsl:when test="@nillable">
@@ -1252,27 +1269,32 @@
                         <xsl:when test="@default and not(@array)">
                             <!-- Note - Assumed to be OMElement-->
                             if (<xsl:value-of select="$varName"/>!=null){
-                                // write null attribute
-                                java.lang.String namespace2 = "<xsl:value-of select="$namespace"/>";
-                                if (! namespace2.equals("")) {
-                                    java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
-
-                                    if (prefix2 == null) {
-                                        prefix2 = generatePrefix(namespace2);
-
-                                        xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace2);
-                                        xmlWriter.writeNamespace(prefix2, namespace2);
-                                        xmlWriter.setPrefix(prefix2, namespace2);
+                                if (<xsl:value-of select="$varName"/> instanceof org.apache.axis2.databinding.ADBBean){
+                                    ((org.apache.axis2.databinding.ADBBean)<xsl:value-of select="$varName"/>).serialize(
+                                               new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>"),
+                                               factory,xmlWriter,true);
+                                 } else {
+                                    java.lang.String namespace2 = "<xsl:value-of select="$namespace"/>";
+                                    if (! namespace2.equals("")) {
+                                        java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
+
+                                        if (prefix2 == null) {
+                                            prefix2 = generatePrefix(namespace2);
+
+                                            xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace2);
+                                            xmlWriter.writeNamespace(prefix2, namespace2);
+                                            xmlWriter.setPrefix(prefix2, namespace2);
+
+                                        } else {
+                                            xmlWriter.writeStartElement(namespace2,"<xsl:value-of select="$propertyName"/>");
+                                        }
 
                                     } else {
-                                        xmlWriter.writeStartElement(namespace2,"<xsl:value-of select="$propertyName"/>");
+                                        xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
                                     }
-
-                                } else {
-                                    xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
-                                }
-                                org.apache.axis2.databinding.utils.ConverterUtil.serializeAnyType(<xsl:value-of select="$varName"/>, xmlWriter);
-                                xmlWriter.writeEndElement();
+                                    org.apache.axis2.databinding.utils.ConverterUtil.serializeAnyType(<xsl:value-of select="$varName"/>, xmlWriter);
+                                    xmlWriter.writeEndElement();
+                                 }
                             } else {
                                 <xsl:choose>
                                  <xsl:when test="@nillable">
@@ -1748,8 +1770,8 @@
                                                     xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
                                                }
                             </xsl:if>
+                            xmlWriter.writeEndElement();
 
-                       xmlWriter.writeEndElement();
                     </xsl:otherwise>
                 </xsl:choose>
             </xsl:otherwise>
@@ -2939,7 +2961,8 @@
                                                               reader.next();
                                                           }else{
                                                       </xsl:if>
-                                                           <xsl:value-of select="$listName"/>.add(org.apache.axis2.databinding.utils.ConverterUtil.getAnyTypeObject(reader));
+                                                           <xsl:value-of select="$listName"/>.add(org.apache.axis2.databinding.utils.ConverterUtil.getAnyTypeObject(reader,
+                                                                            <xsl:value-of select="$mapperClass"/>.class));
                                                        <xsl:if test="@nillable">}</xsl:if>
                                                  } else if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event &amp;&amp;
                                                             !<xsl:value-of select="$startQname"/>.equals(reader.getName())){
@@ -3272,7 +3295,8 @@
                                 <!-- end of adb type handling code -->
                                 <!-- start of OMelement handling -->
                                  <xsl:when test="@default">
-                                     object.set<xsl:value-of select="$javaName"/>(org.apache.axis2.databinding.utils.ConverterUtil.getAnyTypeObject(reader));
+                                     object.set<xsl:value-of select="$javaName"/>(org.apache.axis2.databinding.utils.ConverterUtil.getAnyTypeObject(reader,
+                                                <xsl:value-of select="$mapperClass"/>.class));
                                      <xsl:if test="$isType or $anon">  <!-- This is a subelement property to be consumed -->
                                          reader.next();
                                      </xsl:if>

Modified: webservices/axis2/trunk/java/modules/adb-codegen/test-resources/testsuite/anytype.xsd
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/test-resources/testsuite/anytype.xsd?rev=594910&r1=594909&r2=594910&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/test-resources/testsuite/anytype.xsd (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/test-resources/testsuite/anytype.xsd Wed Nov 14 06:35:38 2007
@@ -1,6 +1,7 @@
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
-           xmlns:xmime="http://www.w3.org/2005/05/xmlmime"
-           targetNamespace="http://www.w3.org/2005/05/xmlmime">
+           targetNamespace="http://adb.test/anyType"
+           xmlns:tns="http://adb.test/anyType"
+           elementFormDefault="qualified">
     <xs:element name="TestAnyTypeElement1" type="xs:anyType"/>
     <xs:element name="TestAnyTypeElement2" type="xs:anyType" nillable="true"/>
     <xs:element name="TestAnyTypeElement3">
@@ -59,5 +60,19 @@
             </xs:sequence>
         </xs:complexType>
     </xs:element>
+    <xs:complexType name="TestComplexParent">
+        <xs:sequence>
+            <xs:element name="param1" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="TestComplexChild">
+        <xs:complexContent>
+            <xs:extension base="tns:TestComplexParent">
+                <xs:sequence>
+                    <xs:element name="param2" type="xs:int"/>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
 </xs:schema>
 

Modified: webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/anytype/AnyTypeTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/anytype/AnyTypeTest.java?rev=594910&r1=594909&r2=594910&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/anytype/AnyTypeTest.java (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/anytype/AnyTypeTest.java Wed Nov 14 06:35:38 2007
@@ -16,7 +16,7 @@
 package org.apache.axis2.schema.anytype;
 
 import junit.framework.TestCase;
-import org.w3.www._2005._05.xmlmime.*;
+import test.adb.anytype.*;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axiom.om.util.StAXUtils;
@@ -28,6 +28,7 @@
 import java.io.ByteArrayInputStream;
 
 
+
 public class AnyTypeTest extends TestCase {
 
     public void testAnyTypeElement1() {
@@ -354,6 +355,43 @@
         }
     }
 
+    public void testAnyTypeElement61(){
+        TestAnyTypeElement6 testAnyTypeElement6 = new TestAnyTypeElement6();
+
+        TestComplexParent[] testComplexParents = new TestComplexParent[2];
+        testComplexParents[0] = new TestComplexParent();
+        testComplexParents[0].setParam1("test param1");
+
+        TestComplexChild testComplexChild = new TestComplexChild();
+        testComplexChild.setParam1("test param1");
+        testComplexChild.setParam2(3);
+        testComplexParents[1] = testComplexChild;
+
+        testAnyTypeElement6.setParam1(testComplexParents);
+
+        try {
+            OMElement omElement = testAnyTypeElement6.getOMElement(
+                    TestAnyTypeElement6.MY_QNAME,OMAbstractFactory.getOMFactory());
+            String omElementString = omElement.toStringWithConsume();
+            System.out.println("OM Element String ==> " + omElementString);
+            XMLStreamReader xmlReader = StAXUtils.createXMLStreamReader(
+                    new ByteArrayInputStream(omElementString.getBytes()));
+            TestAnyTypeElement6 result = TestAnyTypeElement6.Factory.parse(xmlReader);
+            TestComplexParent resultParent = (TestComplexParent) result.getParam1()[0];
+            assertEquals(resultParent.getParam1(),"test param1");
+            TestComplexChild resultChild = (TestComplexChild) result.getParam1()[1];
+            assertEquals(resultChild.getParam1(), "test param1");
+            assertEquals(resultChild.getParam2(), 3);
+        } catch (ADBException e) {
+            fail();
+        } catch (XMLStreamException e) {
+            fail();
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
     public void testAnyTypeElement7() {
         TestAnyTypeElement7 testAnyTypeElement;
 
@@ -385,6 +423,32 @@
             XMLStreamReader xmlReader = StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
             TestAnyTypeElement7 result = TestAnyTypeElement7.Factory.parse(xmlReader);
             assertEquals(result.getParam1(),null);
+        } catch (ADBException e) {
+            fail();
+        } catch (XMLStreamException e) {
+            fail();
+        } catch (Exception e) {
+            fail();
+        }
+    }
+
+    public void testAnyTypeElement71(){
+        TestAnyTypeElement7 testAnyTypeElement7 = new TestAnyTypeElement7();
+        TestComplexParent testComplexParent = new TestComplexParent();
+        testComplexParent.setParam1("test param1");
+        testAnyTypeElement7.setParam1(testComplexParent);
+
+        try {
+            OMElement omElement = testAnyTypeElement7.getOMElement(
+                    TestAnyTypeElement7.MY_QNAME,OMAbstractFactory.getOMFactory());
+            String omElementString = omElement.toStringWithConsume();
+            System.out.println("OM Element ==> " + omElementString);
+            XMLStreamReader xmlReader = StAXUtils.createXMLStreamReader(
+                    new ByteArrayInputStream(omElementString.getBytes()));
+            TestAnyTypeElement7 result = TestAnyTypeElement7.Factory.parse(xmlReader);
+            TestComplexParent resultParent = (TestComplexParent) result.getParam1();
+            assertEquals(resultParent.getParam1(),"test param1");
+
         } catch (ADBException e) {
             fail();
         } catch (XMLStreamException e) {



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org