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/07/23 15:24:34 UTC

svn commit: r424737 - in /webservices/axis2/trunk/java/modules: adb-codegen/src/org/apache/axis2/schema/ adb-codegen/src/org/apache/axis2/schema/template/ adb-codegen/src/org/apache/axis2/schema/writer/ codegen/src/org/apache/axis2/wsdl/codegen/emitter...

Author: ajith
Date: Sun Jul 23 06:24:33 2006
New Revision: 424737

URL: http://svn.apache.org/viewvc?rev=424737&view=rev
Log:
1. Enabling helpergen support
 I. Added a new parameter -h for ADB
 II. Modified the ADBDatabindingTemplate to generate a different conversion mechanism in the helpergen mode
 III. Modified the AxisServiceBasedMultiLanguageEmitter.java to populate the extra parameters to the databinder section of the XML model

2. Added a new method to the BeanWriter.java interface to enable the setting of the mapper package externally
3. Added the mentioned parameter to CompilerOptions.java
4. Added two test cases to test the helpergen stuff

Modified:
    webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/CompilerOptions.java
    webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/ExtensionUtility.java
    webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/SchemaCompiler.java
    webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/SchemaConstants.java
    webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl
    webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBDatabindingTemplate.xsl
    webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/BeanWriter.java
    webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/CStructWriter.java
    webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java
    webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java
    webservices/axis2/trunk/java/modules/integration/maven.xml

Modified: webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/CompilerOptions.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/CompilerOptions.java?rev=424737&r1=424736&r2=424737&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/CompilerOptions.java (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/CompilerOptions.java Sun Jul 23 06:24:33 2006
@@ -54,6 +54,15 @@
     }
 
     /**
+     * get whether the mapper class package
+     * name is present
+     * @return
+     */
+    public boolean isMapperClassPackagePresent(){
+        return   (mapperClassPackage!=null &&
+                       "".equals(mapperClassPackage));
+    }
+    /**
      * The flag keeping whether seperate helpers
      * need to be generated or not
      */

Modified: webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/ExtensionUtility.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/ExtensionUtility.java?rev=424737&r1=424736&r2=424737&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/ExtensionUtility.java (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/ExtensionUtility.java Sun Jul 23 06:24:33 2006
@@ -231,7 +231,7 @@
             typeMap.addTypeMappingName(partQName,className);
             if (Boolean.TRUE.equals(
                     metaInfoMap.get(SchemaConstants.
-                    SchemaCompilerInfoHolder.CLASSNAME_PRIMITVE_KEY))){
+                            SchemaCompilerInfoHolder.CLASSNAME_PRIMITVE_KEY))){
 
                 //this type is primitive - add that to the type mapper status
                 //for now lets add a boolean
@@ -251,7 +251,7 @@
         //find the schema
         XmlSchema schema = (XmlSchema) schemaMap.get(schemaTypeName.getNamespaceURI());
         if (schema!=null){
-             return schema.getTypeByName(schemaTypeName);
+            return schema.getTypeByName(schemaTypeName);
         }
         return null;
     }
@@ -289,6 +289,23 @@
                 options.setPackageName(packageName);
             }
 
+        }
+
+        //add custom mapper package name
+        if (propertyMap.containsKey(SchemaConstants.SchemaCompilerArguments.MAPPER_PACKAGE)) {
+            String packageName = (String) propertyMap.get(SchemaConstants.SchemaCompilerArguments.MAPPER_PACKAGE);
+            if (packageName != null || !"".equals(packageName)) {
+                options.setMapperClassPackage(packageName);
+            }
+
+        }
+
+        //set helper mode
+        //this becomes effective only if the classes are unpacked
+        if (!options.isWrapClasses()){
+            if (propertyMap.containsKey(SchemaConstants.SchemaCompilerArguments.HELPER_MODE)) {
+                options.setHelperMode(true);
+            }
         }
     }
 

Modified: webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/SchemaCompiler.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/SchemaCompiler.java?rev=424737&r1=424736&r2=424737&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/SchemaCompiler.java (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/SchemaCompiler.java Sun Jul 23 06:24:33 2006
@@ -209,11 +209,13 @@
                 );
             }
 
-            //get the first schema from the list and take that namespace as the
-            //mapper namespace
-            writer.registerExtensionMapperPackageName(
-                    URLProcessor.makePackageName(((XmlSchema) schemalist.get(0)).getTargetNamespace()));
-
+            //set a mapper package if not avaialable
+            if (writer.getExtensionMapperPackageName()==null){
+                //get the first schema from the list and take that namespace as the
+                //mapper namespace
+                writer.registerExtensionMapperPackageName(
+                        URLProcessor.makePackageName(((XmlSchema) schemalist.get(0)).getTargetNamespace()));
+            }
             // second round - call the schema compiler one by one
             for (int i = 0; i < schemalist.size(); i++) {
                 compile((XmlSchema) schemalist.get(i),true);
@@ -254,8 +256,11 @@
 
         //register the package from this namespace as the mapper classes package
         if (!isPartofGroup){
-            writer.registerExtensionMapperPackageName(
-                    URLProcessor.makePackageName(schema.getTargetNamespace()));
+            //set a mapper package if not avaialable
+            if (writer.getExtensionMapperPackageName()==null){
+                writer.registerExtensionMapperPackageName(
+                        URLProcessor.makePackageName(schema.getTargetNamespace()));
+            }
         }
 
         //First look for the schemas that are imported and process them

Modified: webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/SchemaConstants.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/SchemaConstants.java?rev=424737&r1=424736&r2=424737&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/SchemaConstants.java (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/SchemaConstants.java Sun Jul 23 06:24:33 2006
@@ -104,6 +104,8 @@
         public static final String WRITE_SCHEMA_CLASSES = "r";
         public static final String STYLE = "s";
         public static final String PACKAGE = "p";
+        public static final String MAPPER_PACKAGE = "mp";
+        public static final String HELPER_MODE = "h";
 
     }
 

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=424737&r1=424736&r2=424737&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 Sun Jul 23 06:24:33 2006
@@ -1538,7 +1538,7 @@
             final org.apache.axiom.om.OMFactory factory){
 
         org.apache.axiom.om.OMDataSource dataSource =
-                       new org.apache.axis2.databinding.ADBDataSource(this){
+                       new org.apache.axis2.databinding.ADBDataSource(this,parentQName){
                            public void serialize(
                                   javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException {
             <xsl:choose>
@@ -2440,8 +2440,9 @@
   </xsl:template>
 
   <xsl:template match="mapper">
-        <xsl:variable name="name"><xsl:value-of select="@name"/></xsl:variable>
-       
+        <xsl:variable name="name" select="@name"/>
+        <xsl:variable name="helperMode" select="@helpermode"/>
+
          <xsl:if test="not(not(@unwrapped) or (@skip-write))">
             /**
             * <xsl:value-of select="$name"/>.java
@@ -2465,7 +2466,15 @@
                 <xsl:if test="position() &gt; 1">else </xsl:if> if (
                   "<xsl:value-of select="@nsuri"/>".equals(namespaceURI) &amp;&amp;
                   "<xsl:value-of select="@shortname"/>".equals(typeName)){
-                     return  <xsl:value-of select="@classname"/>.Factory.parse(reader);
+                   <xsl:choose>
+                       <xsl:when test="$helperMode">
+                           return  <xsl:value-of select="@classname"/>Helper.parse(reader); 
+                       </xsl:when>
+                        <xsl:otherwise>
+                            return  <xsl:value-of select="@classname"/>.Factory.parse(reader);
+                        </xsl:otherwise>
+                   </xsl:choose>
+
                   }
 
               </xsl:for-each>

Modified: webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBDatabindingTemplate.xsl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBDatabindingTemplate.xsl?rev=424737&r1=424736&r2=424737&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBDatabindingTemplate.xsl (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBDatabindingTemplate.xsl Sun Jul 23 06:24:33 2006
@@ -4,6 +4,7 @@
     <!-- ############################   ADB template   ##############################  -->
     <xsl:template match="databinders[@dbtype='adb']">
         <xsl:variable name="serverside"  select="@isserverside"></xsl:variable>
+        <xsl:variable name="helpermode"  select="extra/@h"></xsl:variable>
 
         <!--  generate toOM for only non parts and non primitives!!! -->
         <xsl:for-each select="param[@type!='' and not(@primitive)]">
@@ -104,7 +105,15 @@
         try {
         <xsl:for-each select="param[not(@primitive) and @type!='']">
                 if (<xsl:value-of select="@type"/>.class.equals(type)){
-                return <xsl:value-of select="@type"/>.Factory.parse(param.getXMLStreamReaderWithoutCaching());
+                <xsl:choose>
+                    <xsl:when test="$helpermode">
+                           return <xsl:value-of select="@type"/>Helper.parse(param.getXMLStreamReaderWithoutCaching());
+                    </xsl:when>
+                    <xsl:otherwise>
+                           return <xsl:value-of select="@type"/>.Factory.parse(param.getXMLStreamReaderWithoutCaching());
+                    </xsl:otherwise>
+                </xsl:choose>
+
                 }
            </xsl:for-each>
         } catch (Exception e) {

Modified: webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/BeanWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/BeanWriter.java?rev=424737&r1=424736&r2=424737&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/BeanWriter.java (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/BeanWriter.java Sun Jul 23 06:24:33 2006
@@ -96,6 +96,12 @@
     public String write(XmlSchemaSimpleType simpleType, Map typeMap, BeanWriterMetaInfoHolder metainf) throws SchemaCompilationException;
 
 
+     /**
+     * Find whether the mapper class name is present
+     * @param mapperPackageName
+     */
+    public String getExtensionMapperPackageName();
+
     /**
      * Registers the mapper package name - this is relevant to languages
      * that enforce packaging such as Java or C#. May be ignored in other

Modified: webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/CStructWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/CStructWriter.java?rev=424737&r1=424736&r2=424737&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/CStructWriter.java (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/CStructWriter.java Sun Jul 23 06:24:33 2006
@@ -699,4 +699,13 @@
     public void writeExtensionMapper(BeanWriterMetaInfoHolder[] metainfArray) throws SchemaCompilationException{
         //unimplemented
     }
+
+    /**
+     * Keep unimplemented
+     * @see org.apache.axis2.schema.writer.BeanWriter#getExtensionMapperPackageName() 
+     * @return
+     */
+    public String getExtensionMapperPackageName() {
+        return null;
+    }
 }

Modified: webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java?rev=424737&r1=424736&r2=424737&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java Sun Jul 23 06:24:33 2006
@@ -151,8 +151,12 @@
 
             // add the ns mappings
             this.ns2packageNameMap = options.getNs2PackageMap();
-
+            //set helper mode
             this.isHelperMode = options.isHelperMode();
+            //set mapper class package if present
+            if (options.isMapperClassPackagePresent()){
+                this.mappingClassPackage = options.getMapperClassPackage();
+            }
 
         } catch (IOException e) {
             throw new SchemaCompilationException(e);
@@ -796,6 +800,15 @@
     }
 
     /**
+     * get the mapper class package name
+     * May be ignored by the implementer
+     * @return
+     */
+    public String getExtensionMapperPackageName() {
+        return mappingClassPackage;
+    }
+
+    /**
      * Sets the mapping class name of this writer. A mapping class
      * package set by the options may be overridden at the this point
      * @param mapperPackageName
@@ -837,6 +850,9 @@
                 XSLTUtils.addAttribute(model, "skip-write", "yes", rootElt);
             }
 
+            if (isHelperMode){
+                 XSLTUtils.addAttribute(model, "helpermode", "yes", rootElt);
+            }
 
             for (int i = 0; i < metainfArray.length; i++) {
                 QName ownQname = metainfArray[i].getOwnQname();

Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java?rev=424737&r1=424736&r2=424737&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java Sun Jul 23 06:24:33 2006
@@ -65,7 +65,7 @@
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.Text;
-//import com.ibm.wsdl.util.xml.DOM2Writer;
+import com.ibm.wsdl.util.xml.DOM2Writer;
 
 /*
  * Copyright 2004,2005 The Apache Software Foundation.
@@ -1063,6 +1063,25 @@
         //this will be used to select the correct template
         addAttribute(doc, "dbtype", codeGenConfiguration.getDatabindingType(), rootElement);
 
+        //at this point we may need to capture the extra parameters passes to the
+        //particular databinding framework
+        //these parameters showup in the property map and we can just copy these items over
+        //to an extra element.
+        Element extraElement = addElement(doc, "extra", null, rootElement);
+        Map propertiesMap = codeGenConfiguration.getProperties();
+        for (Iterator it = propertiesMap.keySet().iterator();
+             it.hasNext();){
+            Object key = it.next();
+            Object value = propertiesMap.get(key);
+            //if the value is null set it to empty string
+            if (value==null) value="";
+            //add the property to the extra element only if both
+            //are strings
+            if (key instanceof String && value instanceof String){
+                 addAttribute(doc,(String)key,(String)value, extraElement);
+            }
+        }
+
         //add the server side attribute. this helps the databinding template
         //to determine the methods to generate
         if (isServerside){
@@ -1084,7 +1103,7 @@
 
 
         ///////////////////////////////////////////////
-        //System.out.println(DOM2Writer.nodeToString(rootElement));
+        System.out.println(DOM2Writer.nodeToString(rootElement));
         ////////////////////////////////////////////////
 
         return rootElement;
@@ -2058,7 +2077,9 @@
      */
     protected Element addElement(Document document, String eltName, String eltValue, Element element) {
         Element elt = XSLTUtils.addChildElement(document, eltName, element);
-        elt.appendChild(document.createTextNode(eltValue));
+        if (eltValue!=null){
+            elt.appendChild(document.createTextNode(eltValue));
+        }
         return elt;
     }
 

Modified: webservices/axis2/trunk/java/modules/integration/maven.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/maven.xml?rev=424737&r1=424736&r2=424737&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/maven.xml (original)
+++ webservices/axis2/trunk/java/modules/integration/maven.xml Sun Jul 23 06:24:33 2006
@@ -109,6 +109,22 @@
 	  <ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="target/rpc-test4"
 						 target="jar.server"/>
 
+        <ant:echo>Running codegen RPC WSDLs with helper mode -  take 1</ant:echo>
+        <java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+            <classpath refid="maven.dependency.classpath"/>
+            <arg line="-o target/helper-test1 -uri test-resources/rpc/test-rpc-2.wsdl -u -Eh"/>
+        </java>
+        <ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="target/helper-test1"
+                 target="jar.client"/>
+
+        <ant:echo>Running codegen RPC WSDLs with helper mode -  take 2</ant:echo>
+        <java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+            <classpath refid="maven.dependency.classpath"/>
+            <arg line="-o target/helper-test2 -uri test-resources/rpc/test-rpc-2.wsdl -u -Eh"/>
+        </java>
+        <ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="target/helper-test2"
+                 target="jar.client"/>
+
         <j:if test="${context.getVariable('maven.test.skip') != 'true'}">
 		<j:if test="${context.getVariable('skip.enterprise.tests') != 'true'}">
 			<!-- codegen for the enterprise wsdl -->



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