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 2005/11/03 13:30:54 UTC

svn commit: r330532 - in /webservices/axis2/trunk/java/modules: codegen/src/org/apache/axis2/databinding/schema/ codegen/src/org/apache/axis2/wsdl/codegen/ codegen/src/org/apache/axis2/wsdl/codegen/emitter/ codegen/src/org/apache/axis2/wsdl/codegen/ext...

Author: ajith
Date: Thu Nov  3 04:30:28 2005
New Revision: 330532

URL: http://svn.apache.org/viewcvs?rev=330532&view=rev
Log:
1.Added a new ant build file generator/template to the codegen
  The config file/Emitter is also modified
2.Modified the WSDLPump.java to process imports
3.Added a newline that adds a feature to the WSDL reader in WSDL1ToWOMBuilder.java

Added:
    webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/AntBuildWriter.java
    webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/general/xmlbeansAntBuildTemplate.xsl
Modified:
    webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/SchemaCompiler.java
    webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/XSLTConstants.java
    webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/codegen-config.properties
    webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/MultiLanguageClientEmitter.java
    webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/XMLBeansExtension.java
    webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/builder/wsdl4j/WSDL1ToWOMBuilder.java
    webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/builder/wsdl4j/WSDLPump.java

Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/SchemaCompiler.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/SchemaCompiler.java?rev=330532&r1=330531&r2=330532&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/SchemaCompiler.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/SchemaCompiler.java Thu Nov  3 04:30:28 2005
@@ -234,6 +234,8 @@
         if (isArray){
             //append the square braces that say this is an array
             //hope this works for all cases!!!!!!!
+            //todo this however is a thing that needs to be
+            //todo fixed to get complete language support
             className = className + "[]";
         }
         return className;

Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/XSLTConstants.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/XSLTConstants.java?rev=330532&r1=330531&r2=330532&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/XSLTConstants.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/XSLTConstants.java Thu Nov  3 04:30:28 2005
@@ -40,6 +40,7 @@
         public static final int XML_BEANS = 1;
         public static final int JAXB = 2;
         public static final int ADB = 3;
+        public static final int USER = 4;
 
     }
 

Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/codegen-config.properties
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/codegen-config.properties?rev=330532&r1=330531&r2=330532&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/codegen-config.properties (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/codegen-config.properties Thu Nov  3 04:30:28 2005
@@ -48,6 +48,7 @@
 java.dbsupporter.adb.template=org.apache.axis2.wsdl.codegen.writer.DatabindingSupportClassWriter,/org/apache/axis2/wsdl/template/java/ADBSupporterTemplate.xsl
 ###########
 java.dbsupporter.default.template=org.apache.axis2.wsdl.codegen.writer.DatabindingSupportClassWriter,/org/apache/axis2/wsdl/template/java/DefaultDataBindingSupporterTemplate.xsl
+java.antbuild.template=org.apache.axis2.wsdl.codegen.writer.AntBuildWriter,/org/apache/axis2/wsdl/template/general/xmlbeansAntBuildTemplate.xsl
 # file extension for generated files from this language
 java.filename.extension=java
 #

Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/MultiLanguageClientEmitter.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/MultiLanguageClientEmitter.java?rev=330532&r1=330531&r2=330532&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/MultiLanguageClientEmitter.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/MultiLanguageClientEmitter.java Thu Nov  3 04:30:28 2005
@@ -79,7 +79,7 @@
      */
     public void setMapper(TypeMapper mapper) {
         this.mapper = mapper;
-       
+
     }
 
     /**
@@ -266,6 +266,8 @@
                 //writeTestSkeletonImpl(axisBinding);
                 //write a testservice.xml that will load the dummy skeleton impl for testing
                 //writeTestServiceXML(axisBinding);
+                //write an ant build file
+                writeAntBuild(axisBinding.getBoundInterface(),axisBinding);
             }
         }
     }
@@ -405,9 +407,25 @@
 
     }
 
+    /**
+     * Writes the Ant build
+     *
+     * @param axisInterface
+     * @param axisBinding
+     * @throws Exception
+     */
+    protected void writeAntBuild(WSDLInterface axisInterface, WSDLBinding axisBinding) throws Exception {
+        //Write the service xml in a folder with the
+        Document skeletonModel = createDOMDocumentForInterface(
+                axisInterface, axisBinding);
+        ClassWriter antBuildWriter = new AntBuildWriter(
+                this.configuration.getOutputLocation(),
+                this.configuration.getOutputLanguage());
+        writeClass(skeletonModel, antBuildWriter);
+    }
 
     /**
-     * Writes the skeleton
+     * Writes the Service XML
      *
      * @param axisInterface
      * @param axisBinding
@@ -882,9 +900,12 @@
             if (null != binding) {
                 WSDLBindingOperation bindingOperation =
                         binding.getBindingOperation(operation.getName());
-                addSOAPAction(doc, methodElement, bindingOperation);
-                addHeaderOperations(soapHeaderInputParameterList,bindingOperation,true);
-                addHeaderOperations(soapHeaderOutputParameterList,bindingOperation,false);
+                // todo This can be a prob !!!!!
+                if (bindingOperation!=null){
+                    addSOAPAction(doc, methodElement, bindingOperation);
+                    addHeaderOperations(soapHeaderInputParameterList,bindingOperation,true);
+                    addHeaderOperations(soapHeaderOutputParameterList,bindingOperation,false);
+                }
             }
 
             methodElement.appendChild(getInputElement(doc, operation, soapHeaderInputParameterList));

Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/XMLBeansExtension.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/XMLBeansExtension.java?rev=330532&r1=330531&r2=330532&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/XMLBeansExtension.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/XMLBeansExtension.java Thu Nov  3 04:30:28 2005
@@ -101,6 +101,9 @@
             }
 
             List typesArray = typesList.getExtensibilityElements();
+            //this a list that keeps the already processed schemas
+            List processedSchemas = new ArrayList();
+
             WSDLExtensibilityElement extensiblityElt;
             SchemaTypeSystem sts = null;
             Vector xmlObjectsVector = new Vector();
@@ -125,23 +128,28 @@
                     //compile these schemas
                     while (!importedSchemaStack.isEmpty()) {
                         Element element = (Element)importedSchemaStack.pop();
+                        String tagetNamespace = element.getAttribute("targetNamespace");
+                        if (!processedSchemas.contains(tagetNamespace)){
+
+                            // we are not using DOM toString method here, as it seems it depends on the
+                            // JDK version that is being used.
+                            String s = DOM2Writer.nodeToString(element);
+
+                            //write the schema to a file
+                            File tempFile = File.createTempFile("temp", ".xsd", schemaFolder);
+                            FileWriter writer = new FileWriter(tempFile);
+                            writer.write(s);
+                            writer.flush();
+                            writer.close();
+
+
+                            xmlObjectsVector.add(
+                                    XmlObject.Factory.parse(
+                                            element
+                                            , options));
 
-                        // we are not using DOM toString method here, as it seems it depends on the
-                        // JDK version that is being used.
-                        String s = DOM2Writer.nodeToString(element);
-
-                        //write the schema to a file
-                        File tempFile = File.createTempFile("temp", ".xsd", schemaFolder);
-                        FileWriter writer = new FileWriter(tempFile);
-                        writer.write(s);
-                        writer.flush();
-                        writer.close();
-
-
-                        xmlObjectsVector.add(
-                                XmlObject.Factory.parse(
-                                        element
-                                        , options));
+                            processedSchemas.add(tagetNamespace);
+                        }
                     }
                 }
             }
@@ -268,9 +276,11 @@
             DocumentBuilder documentBuilder = getNamespaceAwareDocumentBuilder();
             for (int i = 0; i < schemaNames.length; i++) {
                 //the location for the third party schema;s is hardcoded
-                InputStream schemaStream = this.getClass().getResourceAsStream("/org/apache/axis2/wsdl/codegen/schema/" + schemaNames[i]);
-                Document doc = documentBuilder.parse(schemaStream);
-                additionalSchemaElements.add(doc.getDocumentElement());
+                if (!"".equals(schemaNames[i].trim())){
+                    InputStream schemaStream = this.getClass().getResourceAsStream("/org/apache/axis2/wsdl/codegen/schema/" + schemaNames[i]);
+                    Document doc = documentBuilder.parse(schemaStream);
+                    additionalSchemaElements.add(doc.getDocumentElement());
+                }
             }
 
             //Create the Schema element array
@@ -329,11 +339,7 @@
     }
 
     private XmlObject[] convertToXMLObjectArray(Vector vec) {
-        XmlObject[] xmlObjects = new XmlObject[vec.size()];
-        for (int i = 0; i < vec.size(); i++) {
-            xmlObjects[i] = (XmlObject) vec.get(i);
-        }
-        return xmlObjects;
+        return (XmlObject[])vec.toArray(new XmlObject[vec.size()]);
     }
 
     /**

Added: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/AntBuildWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/AntBuildWriter.java?rev=330532&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/AntBuildWriter.java (added)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/AntBuildWriter.java Thu Nov  3 04:30:28 2005
@@ -0,0 +1,46 @@
+package org.apache.axis2.wsdl.codegen.writer;
+
+import org.apache.axis2.util.FileWriter;
+
+import java.io.File;
+import java.io.FileOutputStream;
+/*
+ * 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 AntBuildWriter extends ClassWriter{
+     public AntBuildWriter(String outputFileLocation) {
+        this.outputFileLocation = new File(outputFileLocation);
+    }
+
+    public AntBuildWriter(File outputFileLocation, String language) {
+        this.outputFileLocation = outputFileLocation;
+        this.language = language;
+    }
+
+
+
+    public void createOutFile(String packageName, String fileName) throws Exception {
+        File outputFile = FileWriter.createClassFile(outputFileLocation,
+                "",
+                packageName.replaceAll("\\.","_")+"build",
+                ".xml");
+        //set the existing flag
+        fileExists = outputFile.exists();
+        if (!fileExists){
+            this.stream = new FileOutputStream(outputFile);
+        }
+    }
+}

Added: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/general/xmlbeansAntBuildTemplate.xsl
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/general/xmlbeansAntBuildTemplate.xsl?rev=330532&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/general/xmlbeansAntBuildTemplate.xsl (added)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/general/xmlbeansAntBuildTemplate.xsl Thu Nov  3 04:30:28 2005
@@ -0,0 +1,147 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
+    <xsl:template match="/interface">
+        <xsl:variable name="package"><xsl:value-of select="@package"/></xsl:variable>
+
+        <project basedir="." default="jar.xbeans"  >
+            <xsl:comment>Auto generated ant build file</xsl:comment>
+            <property name="src">
+                <xsl:attribute name="value">${basedir}\src</xsl:attribute>
+            </property>
+            <property name="classes">
+                <xsl:attribute name="value">${basedir}\classes</xsl:attribute>
+            </property>
+            <property name="bin">
+                <xsl:attribute name="value">${basedir}\bin</xsl:attribute>
+            </property>
+            <property name="other">
+                <xsl:attribute name="value">${basedir}\other</xsl:attribute>
+            </property>
+            <property name="temp">
+                <xsl:attribute name="value">${basedir}\temp</xsl:attribute>
+            </property>
+            <property name="xbeans.packaged.jar.name" value="XBeans-packaged.jar"></property>
+            <!--<property name="xbeans.jar.name" value="C:\Documents and Settings\Ajith\.maven\repository\xmlbeans\jars\xbean-2.0.0.jar"></property>-->
+            <property name="xbeans.available" value=""></property>
+            <!--<property name="stax.jar.name" value="C:\Documents and Settings\Ajith\.maven\repository\stax\jars\stax-api-1.0.jar"></property>-->
+            <property name="stax.available" value=""></property>
+            <property name="axis2.available" value=""></property>
+            <property name="jars.ok" value=""></property>
+            <property name="mappings.folder.name" value="Mapping"></property>
+            <property name="schemas.folder.name" value="schemas"></property>
+
+
+            <target name="move.files" depends="init">
+                <xsl:comment>first move the generated packages</xsl:comment>
+                <move>
+                    <xsl:attribute name="todir">${src}</xsl:attribute>
+                    <fileset >
+                        <xsl:attribute name="dir">${basedir}</xsl:attribute>
+                        <xsl:attribute name="includes"><xsl:value-of select="$package"></xsl:value-of>\**\</xsl:attribute>
+                    </fileset>
+
+                </move>
+                <xsl:comment>move the XBeans stuff to the temp</xsl:comment>
+                <move>
+                    <xsl:attribute name="todir">${temp}</xsl:attribute>
+                    <fileset >
+                        <xsl:attribute name="dir">${basedir}</xsl:attribute>
+                        <xsl:attribute name="includes">schemaorg_apache_xmlbeans\**\</xsl:attribute>
+                    </fileset>
+                </move>
+                <xsl:comment>move the rest of the stuff to the other folder</xsl:comment>
+                <move>
+                    <xsl:attribute name="todir">${other}</xsl:attribute>
+                    <fileset >
+                        <xsl:attribute name="dir">${basedir}</xsl:attribute>
+                        <xsl:attribute name="includes">${mappings.folder.name}\**\</xsl:attribute>
+                    </fileset>
+                </move>
+                <move>
+                    <xsl:attribute name="todir">${other}</xsl:attribute>
+                    <fileset >
+                        <xsl:attribute name="dir">${basedir}</xsl:attribute>
+                        <xsl:attribute name="includes">${schemas.folder.name}\**\</xsl:attribute>
+                    </fileset>
+                </move>
+
+            </target>
+
+            <target name="init">
+                <mkdir>
+                    <xsl:attribute name="dir">${src}</xsl:attribute>
+                </mkdir>
+                <mkdir>
+                    <xsl:attribute name="dir">${classes}</xsl:attribute>
+                </mkdir>
+                <mkdir>
+                    <xsl:attribute name="dir">${bin}</xsl:attribute>
+                </mkdir>
+                <mkdir>
+                    <xsl:attribute name="dir">${temp}</xsl:attribute>
+                </mkdir>
+            </target>
+
+            <target name="jar.xbeans" depends="move.files">
+                <!-- jar the  XMLbeans stuff to the bin folder-->
+                <jar>
+                    <xsl:attribute name="basedir">${temp}</xsl:attribute>
+                    <xsl:attribute name="destfile">${bin}\${xbeans.packaged.jar.name}</xsl:attribute>
+                </jar>
+            </target>
+
+            <target name="pre.compile.test">
+                <available classname="org.apache.xmlbeans.*">
+                    <xsl:attribute name="property">${xbeans.available}</xsl:attribute>
+                </available>
+                <available classname="javax.xml.stream.*" >
+                    <xsl:attribute name="property">${stax.available}</xsl:attribute>
+                </available>
+                <available classname="org.apache.axis.*">
+                    <xsl:attribute name="property">${axis2.available}</xsl:attribute>
+                </available>
+
+                <condition>
+                    <xsl:attribute name="property">${jars.ok}</xsl:attribute>
+                    <and>
+                        <isset>
+                            <xsl:attribute name="property">${xbeans.available}</xsl:attribute>
+                        </isset>
+                        <isset>
+                            <xsl:attribute name="property">${stax.available}</xsl:attribute>
+                        </isset>
+                        <isset>
+                            <xsl:attribute name="property">${axis2.available}</xsl:attribute>
+                        </isset>
+                    </and>
+                </condition>
+            </target>
+
+            <target name="compile.all"  depends="pre.compile.test">
+                <xsl:attribute name="if">${jars.ok}</xsl:attribute>
+                <javac>
+                    <xsl:attribute name="destdir">${classes}</xsl:attribute>
+                    <xsl:attribute name="srcdir">${src}</xsl:attribute>
+                    <classpath>
+                        <xsl:attribute name="location">${bin}\${xbeans.packaged.jar.name}</xsl:attribute>
+                    </classpath>
+                    <classpath >
+                        <xsl:attribute name="location">${java.class.path}</xsl:attribute>
+                    </classpath>
+                </javac>
+            </target>
+
+            <target name="echo.classpath.problem"  depends="pre.compile.test">
+                <xsl:attribute name="unless">${jars.ok}</xsl:attribute>
+                <echo message="The class path is not set right!"></echo>
+            </target>
+            <target name="jar.all" depends="compile.all,echo.classpath.problem" >
+                <xsl:attribute name="if">${jars.ok}</xsl:attribute>
+                <jar>
+                    <xsl:attribute name="basedir">${classes}</xsl:attribute>
+                    <xsl:attribute name="destfile">${bin}</xsl:attribute>
+                </jar>
+            </target>
+        </project>
+    </xsl:template>
+</xsl:stylesheet>

Modified: webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/builder/wsdl4j/WSDL1ToWOMBuilder.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/builder/wsdl4j/WSDL1ToWOMBuilder.java?rev=330532&r1=330531&r2=330532&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/builder/wsdl4j/WSDL1ToWOMBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/builder/wsdl4j/WSDL1ToWOMBuilder.java Thu Nov  3 04:30:28 2005
@@ -135,6 +135,8 @@
 
         WSDLReader reader =
                 WSDLFactory.newInstance().newWSDLReader();
+        reader.setFeature("javax.wsdl.importDocuments", true);
+
         File file = new File(uri);
         String baseURI = file.getParentFile()!=null?file.getParentFile().toURI().toString():null;
 
@@ -161,7 +163,7 @@
 
         WSDLReader reader =
                 WSDLFactory.newInstance().newWSDLReader();
-
+        reader.setFeature("javax.wsdl.importDocuments", true);
         Document doc;
         try {
             doc = XMLUtils.newDocument(in);

Modified: webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/builder/wsdl4j/WSDLPump.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/builder/wsdl4j/WSDLPump.java?rev=330532&r1=330531&r2=330532&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/builder/wsdl4j/WSDLPump.java (original)
+++ webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/builder/wsdl4j/WSDLPump.java Thu Nov  3 04:30:28 2005
@@ -131,6 +131,11 @@
         //																   	//
         //////////////////////////////////////////////////////////////////////
 
+        //////////////////(0) process the imports ///////////////////////////
+        // There can be types that are imported. Check the imports and
+        // These schemas are needed for code generation
+        processImports(wsdl4JDefinition);
+
         //////////////////(1)First Copy the Types/////////////////////////////
         //Types may get changed inside the Operation pumping.
 
@@ -144,37 +149,6 @@
         }
 
 
-        // There can be types that are imported. Check the imports and
-        // These schemas are needed for code generation
-
-        Map wsdlImports = wsdl4JDefinition.getImports();
-
-        if (null != wsdlImports && !wsdlImports.isEmpty()){
-            Collection importsCollection = wsdlImports.values();
-            for (Iterator iterator = importsCollection.iterator(); iterator.hasNext();) {
-                Vector values = (Vector)iterator.next();
-                for (int i = 0; i < values.size(); i++) {
-                    Import wsdlImport = (Import)values.elementAt(i);
-
-                    if (wsdlImport.getDefinition()!=null){
-                        Definition importedDef = wsdlImport.getDefinition();
-
-                        if (wsdlTypes==null){
-                            wsdlTypes = this.wsdlComponentFactory.createTypes();
-                        }
-                        //add the imported types
-                        this.copyExtensibleElements(importedDef.getTypes().
-                                getExtensibilityElements(),
-                                wsdlTypes, null);
-                        this.womDefinition.setTypes(wsdlTypes);
-                    }
-                }
-
-            }
-        }
-
-
-
         ///////////////////(2)Copy the Interfaces///////////////////////////
         //copy the Interfaces: Get the PortTypes from WSDL4J parse OM and
         // copy it to the
@@ -272,6 +246,49 @@
         }
     }
 
+
+    private void processImports(Definition wsdl4JDefinition){
+        Map wsdlImports = wsdl4JDefinition.getImports();
+
+        if (null != wsdlImports && !wsdlImports.isEmpty()){
+            Collection importsCollection = wsdlImports.values();
+            for (Iterator iterator = importsCollection.iterator(); iterator.hasNext();) {
+                Vector values = (Vector)iterator.next();
+                for (int i = 0; i < values.size(); i++) {
+                    Import wsdlImport = (Import)values.elementAt(i);
+
+                    if (wsdlImport.getDefinition()!=null){
+                        Definition importedDef = wsdlImport.getDefinition();
+                        if (importedDef!=null){
+                            processImports(importedDef);
+
+                            //copy types
+                            Types t = importedDef.getTypes();
+                            List typesList = t.getExtensibilityElements();
+                            for (int j = 0; j < typesList.size(); j++) {
+                                wsdl4JDefinition.getTypes().addExtensibilityElement(
+                                        (ExtensibilityElement)typesList.get(j));
+
+                            }
+
+                            //add messages
+                            Map messagesMap = importedDef.getMessages();
+                            wsdl4JDefinition.getMessages().putAll(messagesMap);
+
+                            //add portypes
+                            Map porttypeMap = importedDef.getPortTypes();
+                            wsdl4JDefinition.getPortTypes().putAll(porttypeMap);
+
+                        }
+
+                    }
+                }
+            }
+        }
+    }
+
+
+
     /**
      *
 
@@ -306,6 +323,7 @@
      */
     private void populateBindings(WSDLBinding wsdlBinding,
                                   Binding wsdl4JBinding, Definition wsdl4jDefinition) {
+       
         //Copy attributes
         wsdlBinding.setName(wsdl4JBinding.getQName());
         QName interfaceName = wsdl4JBinding.getPortType().getQName();
@@ -397,9 +415,9 @@
         Input wsdl4jInputMessage = wsdl4jOperation.getInput();
         QName wrappedInputName = wsdlOperation.getName();
         QName wrappedOutputName = new QName(
-                               wrappedInputName.getNamespaceURI(),
-                               wrappedInputName.getLocalPart()+ "Response",
-                               wrappedInputName.getPrefix());
+                wrappedInputName.getNamespaceURI(),
+                wrappedInputName.getLocalPart()+ "Response",
+                wrappedInputName.getPrefix());
 
         if (null != wsdl4jInputMessage) {
             MessageReference wsdlInputMessage = this.wsdlComponentFactory
@@ -559,8 +577,8 @@
                 //the DOMlevel2 documentation states that namespaces need to
                 //declared like this
                 schemaElement.setAttributeNS("http://www.w3.org/2000/xmlns/",
-                                              XMLNS_AXIS2WRAPPED,
-                                              targetNamespaceUri);
+                        XMLNS_AXIS2WRAPPED,
+                        targetNamespaceUri);
 
                 schemaElement.setAttribute(XSD_TARGETNAMESPACE,targetNamespaceUri);
                 //schemaElement.setAttribute("xmlns:"+XMLSCHEMA_NAMESPACE_PREFIX,XMLSCHEMA_NAMESPACE_URI);
@@ -622,7 +640,7 @@
                         outerName.getLocalPart());
                 newElement.setAttribute(WSDLPump.XSD_TYPE,
                         AXIS2WRAPPED +":"+//whats the prefix to put here!!!
-                        wsdl4jMessage.getQName().getLocalPart());
+                                wsdl4jMessage.getQName().getLocalPart());
                 schemaElement.appendChild(newElement);
 
                 //Now since  a new type is created augmenting the parts add the QName