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 aj...@apache.org on 2006/04/27 12:14:51 UTC

svn commit: r397505 - in /webservices/axis2/trunk/java/modules/codegen: maven.xml test-resources/xsd/simple-recursive-datatypes.xsd test/org/apache/axis2/schema/populate/other/PopulateRecursiveTest.java

Author: ajith
Date: Thu Apr 27 03:14:48 2006
New Revision: 397505

URL: http://svn.apache.org/viewcvs?rev=397505&view=rev
Log:
Adding a test case to test recursive XML population 
e.g.
<E> <E> test </E> </E>
1. Added the simple-recursive-datatypes.xsd
2. Added the PopulateRecursiveTest.java - the junit test case
3. Updated the maven.xml to compile the schema before running the tests 

Added:
    webservices/axis2/trunk/java/modules/codegen/test-resources/xsd/simple-recursive-datatypes.xsd
    webservices/axis2/trunk/java/modules/codegen/test/org/apache/axis2/schema/populate/other/PopulateRecursiveTest.java
Modified:
    webservices/axis2/trunk/java/modules/codegen/maven.xml

Modified: webservices/axis2/trunk/java/modules/codegen/maven.xml
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/maven.xml?rev=397505&r1=397504&r2=397505&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/maven.xml (original)
+++ webservices/axis2/trunk/java/modules/codegen/maven.xml Thu Apr 27 03:14:48 2006
@@ -111,6 +111,14 @@
             <arg file="${schema.generated.src.dir}"/>
         </java>
 
+        <ant:echo>Compiling simple-recursive-datatypes.xsd</ant:echo>
+        <java classname="org.apache.axis2.schema.XSD2Java" fork="true">
+            <jvmarg line="${maven.junit.jvmargs}"/>
+            <classpath refid="maven.dependency.classpath"/>
+            <classpath location="${compiled.classes.dir}"/>
+            <arg file="${schema.source.dir}/simple-recursive-datatypes.xsd"/>
+            <arg file="${schema.generated.src.dir}"/>
+        </java>
         <!-- ################################################################### -->
         <!-- All simple primitive types xsd -->
         <java classname="org.apache.axis2.schema.XSD2Java" fork="true">

Added: webservices/axis2/trunk/java/modules/codegen/test-resources/xsd/simple-recursive-datatypes.xsd
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/test-resources/xsd/simple-recursive-datatypes.xsd?rev=397505&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/test-resources/xsd/simple-recursive-datatypes.xsd (added)
+++ webservices/axis2/trunk/java/modules/codegen/test-resources/xsd/simple-recursive-datatypes.xsd Thu Apr 27 03:14:48 2006
@@ -0,0 +1,12 @@
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+        xmlns:tns="http://recursion.org"
+        targetNamespace="http://recursion.org"
+        elementFormDefault="qualified">
+    <complexType name="TypeE">
+        <sequence>
+            <element name="E" type="xsd:string"/>
+        </sequence>
+    </complexType>
+    <element name="E" type="tns:TypeE"/>
+</schema>
\ No newline at end of file

Added: webservices/axis2/trunk/java/modules/codegen/test/org/apache/axis2/schema/populate/other/PopulateRecursiveTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/test/org/apache/axis2/schema/populate/other/PopulateRecursiveTest.java?rev=397505&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/test/org/apache/axis2/schema/populate/other/PopulateRecursiveTest.java (added)
+++ webservices/axis2/trunk/java/modules/codegen/test/org/apache/axis2/schema/populate/other/PopulateRecursiveTest.java Thu Apr 27 03:14:48 2006
@@ -0,0 +1,76 @@
+package org.apache.axis2.schema.populate.other;
+
+import junit.framework.TestCase;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamException;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.beans.IntrospectionException;
+import java.beans.PropertyDescriptor;
+import java.beans.Introspector;
+import java.beans.BeanInfo;
+import java.io.ByteArrayInputStream;
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+
+public class PopulateRecursiveTest extends TestCase {
+
+// all are present
+    private String xmlString1 = "<E xmlns=\"http://recursion.org\">" +
+            "<E>test</E>" +
+            "</E>";
+
+
+
+
+    public void testPopulate1() throws Exception {
+        populateAndAssert(xmlString1);
+    }
+
+
+    private void populateAndAssert(String s
+    ) throws XMLStreamException, ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, IntrospectionException {
+        XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(new ByteArrayInputStream(s.getBytes()));
+        Class clazz = Class.forName("org.recursion.E");
+        Class innerClazz = clazz.getDeclaredClasses()[0];
+        Method parseMethod = innerClazz.getMethod("parse", new Class[]{XMLStreamReader.class});
+        Object obj = parseMethod.invoke(null, new Object[]{reader});
+
+        assertNotNull(obj);
+
+        Object eObject = null;
+        BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
+        PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
+        Method readMethod;
+
+        for (int i = 0; i < propertyDescriptors.length; i++) {
+            PropertyDescriptor propertyDescriptor = propertyDescriptors[i];
+            if ("e".equals(propertyDescriptor.getDisplayName())) {
+                readMethod = propertyDescriptor.getReadMethod();
+                eObject = readMethod.invoke(obj, null);
+
+                assertNotNull(eObject);
+
+                assertTrue(eObject.getClass().equals(Class.forName("org.recursion.TypeE")) );
+            }
+        }
+    }
+
+
+
+}