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) && (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) && (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 < <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 &&
!<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