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 sa...@apache.org on 2012/07/17 08:58:28 UTC
svn commit: r1362377 - in /axis/axis2/java/core/trunk/modules/adb-codegen:
src/org/apache/axis2/schema/ src/org/apache/axis2/schema/writer/
test-resources/testsuite/ test/org/apache/axis2/schema/extension/
Author: sagara
Date: Tue Jul 17 06:58:27 2012
New Revision: 1362377
URL: http://svn.apache.org/viewvc?rev=1362377&view=rev
Log:
Fixed AXIS2-4193.
- Added support to generate code for types with nested extensions.
- Make sure mergeBeanWriterMetaInfoHolderForRestriction() method only apply for restrictions.
- Improved XSD extension test coverage.
Modified:
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/SchemaCompiler.java
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java
axis/axis2/java/core/trunk/modules/adb-codegen/test-resources/testsuite/extensions.xsd
axis/axis2/java/core/trunk/modules/adb-codegen/test/org/apache/axis2/schema/extension/SimpleExtensionTest.java
Modified: axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/SchemaCompiler.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/SchemaCompiler.java?rev=1362377&r1=1362376&r2=1362377&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/SchemaCompiler.java (original)
+++ axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/SchemaCompiler.java Tue Jul 17 06:58:27 2012
@@ -1622,13 +1622,16 @@ public class SchemaCompiler {
copyMetaInfoHierarchy(metaInfHolder, extBaseType, resolvedSchema);
} else if (type instanceof XmlSchemaComplexType) {
XmlSchemaComplexType complexType = (XmlSchemaComplexType) type;
- if (complexType.getContentModel() == null) {
// do not set as a simple type since we want to
// print the element names
metaInfHolder.setExtension(true);
metaInfHolder.setExtensionClassName(className);
copyMetaInfoHierarchy(metaInfHolder, extBaseType, resolvedSchema);
- }
+ XmlSchemaContentModel typeContent =complexType.getContentModel();
+ if(typeContent != null && typeContent instanceof XmlSchemaSimpleContent){
+ metaInfHolder.setSimple(true);
+ }
+
}
}
Modified: axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java?rev=1362377&r1=1362376&r2=1362377&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java (original)
+++ axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java Tue Jul 17 06:58:27 2012
@@ -709,7 +709,9 @@ public class JavaBeanWriter implements B
* current and parent BeanWriterMetaInfoHolders.Decide best approach
* ?
*/
- mergeBeanWriterMetaInfoHolderForRestriction(metainf, parent);
+ if(metainf.isRestriction()){
+ mergeBeanWriterMetaInfoHolderForRestriction(metainf, parent);
+ }
populateInfo(parent, model, rootElt, propertyNames, typeMap, groupTypeMap, true);
}
addPropertyEntries(metainf, model, rootElt, propertyNames, typeMap, groupTypeMap,
Modified: axis/axis2/java/core/trunk/modules/adb-codegen/test-resources/testsuite/extensions.xsd
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb-codegen/test-resources/testsuite/extensions.xsd?rev=1362377&r1=1362376&r2=1362377&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/adb-codegen/test-resources/testsuite/extensions.xsd (original)
+++ axis/axis2/java/core/trunk/modules/adb-codegen/test-resources/testsuite/extensions.xsd Tue Jul 17 06:58:27 2012
@@ -85,6 +85,51 @@
<xs:element minOccurs="0" name="SORT_DESCENDING" type="xs:int"/>
</xs:sequence>
</xs:complexType>
-
+
+ <xs:element name="SimpleAmmountElement" type="tns:SimpleAmmount" />
+ <xs:complexType name="SimpleAmmount">
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="currency" type="xs:string"
+ use="required" />
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <!-- complexType having simpleContent extension -->
+ <xs:element name="PaymentAmountElement" type="tns:PaymentAmount" />
+ <xs:complexType name="PaymentAmount">
+ <xs:simpleContent>
+ <xs:extension base="tns:Amount" />
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:complexType name="Amount">
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="currency" type="xs:string"
+ use="required" />
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <!-- complexType having complexContent extension -->
+ <xs:element name="fullpersoninfoElement" type="tns:fullpersoninfo" />
+ <xs:complexType name="fullpersoninfo">
+ <xs:complexContent>
+ <xs:extension base="tns:personinfo">
+ <xs:sequence>
+ <xs:element name="address" type="xs:string" />
+ <xs:element name="city" type="xs:string" />
+ <xs:element name="country" type="xs:string" />
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="personinfo">
+ <xs:sequence>
+ <xs:element name="firstname" type="xs:string" />
+ <xs:element name="lastname" type="xs:string" />
+ </xs:sequence>
+ </xs:complexType>
</schema>
\ No newline at end of file
Modified: axis/axis2/java/core/trunk/modules/adb-codegen/test/org/apache/axis2/schema/extension/SimpleExtensionTest.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb-codegen/test/org/apache/axis2/schema/extension/SimpleExtensionTest.java?rev=1362377&r1=1362376&r2=1362377&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/adb-codegen/test/org/apache/axis2/schema/extension/SimpleExtensionTest.java (original)
+++ axis/axis2/java/core/trunk/modules/adb-codegen/test/org/apache/axis2/schema/extension/SimpleExtensionTest.java Tue Jul 17 06:58:27 2012
@@ -19,8 +19,15 @@
package org.apache.axis2.schema.extension;
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
import org.apache.axis2.databinding.types.Language;
import org.apache.axis2.schema.AbstractTestCase;
+import org.apache.axis2.schema.restriction.LimitedString;
+import org.apache.axis2.schema.restriction.LimitedStringE;
public class SimpleExtensionTest extends AbstractTestCase {
@@ -36,6 +43,99 @@ public class SimpleExtensionTest extends
testSerializeDeserialize(fullName);
}
+
+ public void testSimpleAmmountElementGetOMElement() throws Exception {
+ SimpleAmmountElement ammountElement = new SimpleAmmountElement();
+ SimpleAmmount param = new SimpleAmmount();
+ param.setCurrency("SLR");
+ param.setString("1000");
+ ammountElement.setSimpleAmmountElement(param);
+ OMElement omElement = ammountElement.getOMElement(SimpleAmmountElement.MY_QNAME,
+ OMAbstractFactory.getSOAP11Factory());
+ }
+
+ public void testSimpleAmmountElementParse() throws Exception {
+ OMFactory factory = OMAbstractFactory.getOMFactory();
+ OMElement element = factory.createOMElement(new QName(
+ "http://apache.org/axis2/schema/extension", "SimpleAmmountElement"));
+ element.addAttribute("currency", "SLR", null);
+ element.setText("1000");
+ SimpleAmmountElement ammountElement = SimpleAmmountElement.Factory.parse(element
+ .getXMLStreamReader());
+ assertNotNull(ammountElement);
+ assertEquals("SLR", ammountElement.getSimpleAmmountElement().getCurrency());
+ assertEquals("1000", ammountElement.getSimpleAmmountElement().getString());
+ }
+ public void testPaymentAmountElementGetOMElement() throws Exception {
+ PaymentAmountElement ammountElement = new PaymentAmountElement();
+ PaymentAmount param = new PaymentAmount();
+ param.setCurrency("SLR");
+ param.setString("2000");
+ ammountElement.setPaymentAmountElement(param);
+ OMElement omElement = ammountElement.getOMElement(PaymentAmountElement.MY_QNAME,
+ OMAbstractFactory.getSOAP11Factory());
+ }
+ public void testPaymentAmountElementParse() throws Exception {
+ OMFactory factory = OMAbstractFactory.getOMFactory();
+ OMElement element = factory.createOMElement(new QName(
+ "http://apache.org/axis2/schema/extension", "PaymentAmountElement"));
+ element.addAttribute("currency", "SLR", null);
+ element.setText("2000");
+ PaymentAmountElement ammountElement = PaymentAmountElement.Factory.parse(element
+ .getXMLStreamReader());
+ assertNotNull(ammountElement);
+ assertEquals("SLR", ammountElement.getPaymentAmountElement().getCurrency());
+ assertEquals("2000", ammountElement.getPaymentAmountElement().getString());
+ }
+
+ public void testFullpersoninfoElementGetOMElement() throws Exception {
+ FullpersoninfoElement fullpersoninfoElement = new FullpersoninfoElement();
+ Fullpersoninfo param = new Fullpersoninfo();
+ param.setAddress("123 Main Street");
+ param.setCity("Kandy");
+ param.setCountry("Sri Lanka");
+ param.setFirstname("Sagara");
+ param.setLastname("Gunathunga");
+ fullpersoninfoElement.setFullpersoninfoElement(param);
+ OMElement omElement = fullpersoninfoElement.getOMElement(FullpersoninfoElement.MY_QNAME,
+ OMAbstractFactory.getSOAP11Factory());
+ }
+
+ public void testFullpersoninfoElementParse() throws Exception {
+ OMFactory factory = OMAbstractFactory.getOMFactory();
+ OMElement element = factory.createOMElement(new QName(
+ "http://apache.org/axis2/schema/extension", "fullpersoninfoElement"));
+ OMElement firstname = factory.createOMElement(new QName(
+ "http://apache.org/axis2/schema/extension", "firstname"));
+ firstname.setText("Sagara");
+ OMElement lastname = factory.createOMElement(new QName(
+ "http://apache.org/axis2/schema/extension", "lastname"));
+ lastname.setText("Gunathunga");
+ OMElement address = factory.createOMElement(new QName(
+ "http://apache.org/axis2/schema/extension", "address"));
+ address.setText("123 Main Street");
+ OMElement city = factory.createOMElement(new QName(
+ "http://apache.org/axis2/schema/extension", "city"));
+ city.setText("Kandy");
+ OMElement country = factory.createOMElement(new QName(
+ "http://apache.org/axis2/schema/extension", "country"));
+ country.setText("Sri Lanka");
+ element.addChild(firstname);
+ element.addChild(lastname);
+ element.addChild(address);
+ element.addChild(city);
+ element.addChild(country);
+ FullpersoninfoElement fullpersoninfoElement = FullpersoninfoElement.Factory.parse(element
+ .getXMLStreamReader());
+ assertNotNull(fullpersoninfoElement);
+ assertEquals("Sagara", fullpersoninfoElement.getFullpersoninfoElement().getFirstname());
+ assertEquals("Gunathunga", fullpersoninfoElement.getFullpersoninfoElement().getLastname());
+ assertEquals("123 Main Street", fullpersoninfoElement.getFullpersoninfoElement()
+ .getAddress());
+ assertEquals("Kandy", fullpersoninfoElement.getFullpersoninfoElement().getCity());
+ assertEquals("Sri Lanka", fullpersoninfoElement.getFullpersoninfoElement().getCountry());
+
+ }
}