Author: rineholt
Date: Tue May  9 14:56:36 2006
New Revision: 405549

URL: http://svn.apache.org/viewcvs?rev=405549&view=rev
Log:
TUSCANY-302 Single package override in tuscany-sca-plugin and 
tuscany-sdo-plugin insufficient
TUSCANY-229  Maven plugin SDO Gen and WSDL2SDO tools do not allow specific 
serices/ports to generate
This handles the SCA (Intererface handling)  SDO does not provide a means to 
limit the scope of which top
 level scheam elements to generate depending on refering ports.


Added:
    
incubator/tuscany/java/sca/plugin/src/main/java/org/apache/tuscany/tools/wsdl2java/plugin/WSDLFileOption.java
Modified:
    incubator/tuscany/java/samples/bigbank/account/pom.xml
    
incubator/tuscany/java/samples/bigbank/account/src/main/resources/wsdl/stockquotes.webservicex.wsdl
    
incubator/tuscany/java/sca/plugin/src/main/java/org/apache/tuscany/tools/wsdl2java/plugin/WSDL2JavaGeneratorMojo.java
    
incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceGenerator.java
    
incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/WSDL2JavaGenerator.java

Modified: incubator/tuscany/java/samples/bigbank/account/pom.xml
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/samples/bigbank/account/pom.xml?rev=405549&r1=405548&r2=405549&view=diff
==============================================================================
--- incubator/tuscany/java/samples/bigbank/account/pom.xml (original)
+++ incubator/tuscany/java/samples/bigbank/account/pom.xml Tue May  9 14:56:36 
2006
@@ -100,9 +100,19 @@
                 <executions>
                     <execution>
                         <configuration>
-                            
<wsdlDir>${basedir}/src/main/resources/wsdl</wsdlDir>
-                            <!-- 
wsdlFile>${basedir}/src/main/resources/wsdl/AccountService.wsdl</wsdlFile -->
-                            <!-- 
javaPackage>bigbank.account.services.account</javaPackage -->
+                            <wsdlFiles>
+                              <wsdlFile>
+                                 
<fileName>${basedir}/src/main/resources/wsdl/stockquotes.webservicex.wsdl</fileName>
+                                 <ports>
+                                  <port>
+                                   StockQuoteSoap
+                                  </port>
+                                 </ports>
+                              </wsdlFile>
+                              <wsdlFile>
+                                 
<fileName>${basedir}/src/main/resources/wsdl/AccountService.wsdl</fileName>
+                              </wsdlFile>
+                            </wsdlFiles>
                         </configuration>
                         <goals>
                             <goal>generate</goal>

Modified: 
incubator/tuscany/java/samples/bigbank/account/src/main/resources/wsdl/stockquotes.webservicex.wsdl
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/samples/bigbank/account/src/main/resources/wsdl/stockquotes.webservicex.wsdl?rev=405549&r1=405548&r2=405549&view=diff
==============================================================================
--- 
incubator/tuscany/java/samples/bigbank/account/src/main/resources/wsdl/stockquotes.webservicex.wsdl
 (original)
+++ 
incubator/tuscany/java/samples/bigbank/account/src/main/resources/wsdl/stockquotes.webservicex.wsdl
 Tue May  9 14:56:36 2006
@@ -52,7 +52,6 @@
       <wsdl:output message="tns:GetQuoteSoapOut"/>
     </wsdl:operation>
   </wsdl:portType>
- <!-- 
   <wsdl:portType name="StockQuoteHttpGet">
     <wsdl:operation name="GetQuote">
       <documentation xmlns="http://schemas.xmlsoap.org/wsdl/";>Get Stock quote 
for a company Symbol</documentation>
@@ -67,7 +66,6 @@
       <wsdl:output message="tns:GetQuoteHttpPostOut"/>
     </wsdl:operation>
   </wsdl:portType>
- --> 
   <wsdl:binding name="StockQuoteSoap" type="tns:StockQuoteSoap">
     <soap:binding transport="http://schemas.xmlsoap.org/soap/http"; 
style="document"/>
     <wsdl:operation name="GetQuote">
@@ -80,7 +78,7 @@
       </wsdl:output>
     </wsdl:operation>
   </wsdl:binding>
-<!--  
+  
   <wsdl:binding name="StockQuoteHttpGet" type="tns:StockQuoteHttpGet">
     <http:binding verb="GET"/>
     <wsdl:operation name="GetQuote">
@@ -105,19 +103,16 @@
       </wsdl:output>
     </wsdl:operation>
   </wsdl:binding>
--->  
+
   <wsdl:service name="StockQuote">
     <wsdl:port name="StockQuoteSoap" binding="tns:StockQuoteSoap">
       <soap:address location="http://www.webservicex.com/stockquote.asmx"/>
-      <!-- soap:address location="http://localhost:9999/stockquote.asmx"/ -->
     </wsdl:port>
-<!--    
     <wsdl:port name="StockQuoteHttpGet" binding="tns:StockQuoteHttpGet">
       <http:address location="http://www.webservicex.com/stockquote.asmx"/>
     </wsdl:port>
     <wsdl:port name="StockQuoteHttpPost" binding="tns:StockQuoteHttpPost">
       <http:address location="http://www.webservicex.com/stockquote.asmx"/>
     </wsdl:port>
--->
   </wsdl:service>
-</wsdl:definitions>
\ No newline at end of file
+</wsdl:definitions>

Modified: 
incubator/tuscany/java/sca/plugin/src/main/java/org/apache/tuscany/tools/wsdl2java/plugin/WSDL2JavaGeneratorMojo.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/plugin/src/main/java/org/apache/tuscany/tools/wsdl2java/plugin/WSDL2JavaGeneratorMojo.java?rev=405549&r1=405548&r2=405549&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/plugin/src/main/java/org/apache/tuscany/tools/wsdl2java/plugin/WSDL2JavaGeneratorMojo.java
 (original)
+++ 
incubator/tuscany/java/sca/plugin/src/main/java/org/apache/tuscany/tools/wsdl2java/plugin/WSDL2JavaGeneratorMojo.java
 Tue May  9 14:56:36 2006
@@ -19,11 +19,13 @@
 import java.io.File;
 import java.io.FileFilter;
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.tuscany.tools.wsdl2java.generate.WSDL2JavaGenerator;
+import org.apache.tuscany.tools.wsdl2java.plugin.WSDLFileOption;
 
 /**
  * @version $Rev$ $Date$
@@ -57,6 +59,13 @@
      * @parameter expression="${project.build.directory}/wsdl2java-source"
      */
     private String targetDirectory;
+    
+    /**
+     * The directory to generate into; defaults to 
${project.build.directory}/wsdl2java-source
+     *
+     * @parameter 
+     */
+    private WSDLFileOption[] wsdlFiles;
 
     /**
      * @parameter expression="${project.compileSourceRoots}"
@@ -65,21 +74,64 @@
     private List compilerSourceRoots;
 
     public void execute() throws MojoExecutionException {
-        File[] files;
-        if (wsdlFile == null) {
-            files = new File(wsdlDir).listFiles(FILTER);
-        } else {
-            files = new File[]{wsdlFile};
+        
+        if(null != wsdlFiles){
+            for(int i=0; i< wsdlFiles.length ; ++i ){
+                System.err.println("wsdlFiles" + wsdlFiles[i].getFileName());
+                WSDLFileOption wf = wsdlFiles[i];
+
+                if(null == wf.getTargetDirectory())
+                    wf.setTargetDirectory(targetDirectory);
+                if(null == wf.getJavaPackage()){
+                    wf.setJavaPackage(javaPackage);
+                }
+                if(wf.getFileName() == null || wf.getFileName().length() ==0){
+                    throw new MojoExecutionException("no fileName specfied for 
wsdl.");    
+                }
+                if(!wf.getFileName().canRead() || !wf.getFileName().isFile()){
+
+                    throw new MojoExecutionException("file can not be 
read:"+wf.getFileName());    
+                }
+
+            }
+        }else{
+
+
+            
+            if (wsdlFile == null) {
+             
+             File[] files = new File(wsdlDir).listFiles(FILTER);
+             
+             wsdlFiles=   new WSDLFileOption[files.length];
+             for(int i= files.length -1; i> -1; --i){
+                 
+                 
+                 wsdlFiles[i] = new WSDLFileOption();
+                 wsdlFiles[i].setFileName(files[i]);
+                 wsdlFiles[i].setJavaPackage(javaPackage);
+                 wsdlFiles[i].setPorts(null);
+                 wsdlFiles[i].setTargetDirectory(targetDirectory);
+                 
+                 
+             }
+                
+            } else {
+                wsdlFiles=   new WSDLFileOption[]{new WSDLFileOption()};
+                wsdlFiles[0].setFileName(wsdlFile);
+                wsdlFiles[0].setJavaPackage(javaPackage);
+                wsdlFiles[0].setPorts(null);
+                wsdlFiles[0].setTargetDirectory(targetDirectory);
+            }
         }
         
         int genOptions = 0;
 
-        for (int i = 0; i < files.length; i++) {
-            File file = files[i];
+        for (int i = 0; i < wsdlFiles.length; i++) {
+            File file = wsdlFiles[i].getFileName();
             File marker = new File(targetDirectory, ".gen#" + file.getName());
             if (file.lastModified() > marker.lastModified()) {
                 getLog().info("Generating Java service interfaces from " + 
file);
-                WSDL2JavaGenerator.generateFromWSDL(file.toString(), 
targetDirectory, javaPackage, null, genOptions);
+                WSDL2JavaGenerator.generateFromWSDL(file.toString(), 
wsdlFiles[i].getPorts(), wsdlFiles[i].getTargetDirectory(), 
wsdlFiles[i].getJavaPackage(), null, genOptions);
             }
             try {
                 marker.createNewFile();

Added: 
incubator/tuscany/java/sca/plugin/src/main/java/org/apache/tuscany/tools/wsdl2java/plugin/WSDLFileOption.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/plugin/src/main/java/org/apache/tuscany/tools/wsdl2java/plugin/WSDLFileOption.java?rev=405549&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/plugin/src/main/java/org/apache/tuscany/tools/wsdl2java/plugin/WSDLFileOption.java
 (added)
+++ 
incubator/tuscany/java/sca/plugin/src/main/java/org/apache/tuscany/tools/wsdl2java/plugin/WSDLFileOption.java
 Tue May  9 14:56:36 2006
@@ -0,0 +1,74 @@
+package org.apache.tuscany.tools.wsdl2java.plugin;
+
+import java.io.File;
+
+public class WSDLFileOption {
+    /**
+     * Name of the wsdl file; if omitted all files in the directory are 
processed
+     * 
+     */
+    private File fileName;
+
+    /**
+     * The Java package to generate into. By default the value is derived from 
the schema URI.
+     *
+     * 
+     */
+    private String javaPackage;
+
+    /**
+     * The directory to generate into; defaults to 
${project.build.directory}/wsdl2java-source
+     *
+     * 
+     */
+    private String targetDirectory;
+
+    /**
+     * @parameter expression="${project.compileSourceRoots}"
+     * @readonly
+     */
+
+    private String  ports[];
+
+    /**
+     * @parameter expression="${project.compileSourceRoots}"
+     * @readonly
+     */
+
+    
+   public WSDLFileOption(){}
+
+    public String getJavaPackage() {
+        return javaPackage;
+    }
+
+    public void setJavaPackage(String javaPackage) {
+        this.javaPackage = javaPackage;
+    }
+
+ 
+    public String[] getPorts() {
+        return ports;
+    }
+
+    public void setPorts(String[] ports) {
+        this.ports = ports;
+    }
+
+    public String getTargetDirectory() {
+        return targetDirectory;
+    }
+
+    public void setTargetDirectory(String targetDirectory) {
+        this.targetDirectory = targetDirectory;
+    }
+
+    public File getFileName() {
+        return fileName;
+    }
+
+    public void setFileName(File fileName) {
+        this.fileName = fileName;
+    }
+
+}

Modified: 
incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceGenerator.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceGenerator.java?rev=405549&r1=405548&r2=405549&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceGenerator.java
 (original)
+++ 
incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceGenerator.java
 Tue May  9 14:56:36 2006
@@ -19,12 +19,18 @@
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
+import javax.wsdl.Binding;
 import javax.wsdl.Definition;
 import javax.wsdl.Port;
+import javax.wsdl.PortType;
 import javax.wsdl.Service;
 import javax.wsdl.WSDLException;
 import javax.wsdl.factory.WSDLFactory;
@@ -50,9 +56,12 @@
 public class JavaInterfaceGenerator {
 
     private List codegenExtensions = new ArrayList();
-    private CodeGenConfiguration codegenConfiguration;
+    private List<CodeGenConfiguration> codegenConfigurations= new 
LinkedList<CodeGenConfiguration>();
+    
+    
 
-    public JavaInterfaceGenerator(String uri, String outputLocation, String 
packageName,
+
+    public JavaInterfaceGenerator(String uri, String ports[], String 
outputLocation, String packageName,
                                   Map<QName, SDODataBindingTypeMappingEntry> 
typeMapping) throws CodeGenerationException {
         
         Definition definition;
@@ -62,55 +71,80 @@
             throw new CodeGenerationException(e);
         }
         
-        Service 
service=(Service)definition.getServices().values().iterator().next();
-        QName serviceQname = service.getQName();
-        Port port = (Port)service.getPorts().values().iterator().next();
-
-        if (packageName == null) {
-            packageName = 
XMLNameUtil.getPackageNameFromNamespace(definition.getTargetNamespace());
-        }
-
-        JavaTypeMapper typeMapper = new JavaTypeMapper();
-        for (Map.Entry<QName, SDODataBindingTypeMappingEntry> e : 
typeMapping.entrySet()) {
-            typeMapper.addTypeMappingObject(e.getKey(), e.getValue());
-        }
+        HashSet interestedPorts= ports == null ? null : new 
HashSet(Arrays.asList(ports));
+        
+       // Service service=(Service)definition.getServices().values().().next();
+        
+        HashSet<QName> donePortTypes= new HashSet<QName>();
+        
+        for (Iterator sIter  = definition.getServices().values().iterator(); 
sIter.hasNext(); ) {
+            Service service = (Service) sIter.next();
+            
+            QName serviceQname = service.getQName();
+             for (Iterator pIter= service.getPorts().values().iterator(); 
pIter.hasNext(); ) {
+                 Port port= (Port) pIter.next();
+                if(interestedPorts != null && ! 
interestedPorts.contains(port.getName())) continue;//not iterested.
+                 PortType portType= getPortType(port);
+                 if(null == portType) continue; // not connected.
+                 QName pQName= portType.getQName();
+                 if(donePortTypes.contains(pQName)) continue; //allready did 
it.
+                 donePortTypes.add(pQName);
+              
+                if (packageName == null) {
+                    packageName = 
XMLNameUtil.getPackageNameFromNamespace(definition.getTargetNamespace());
+                }
+                JavaTypeMapper typeMapper = new JavaTypeMapper();
+                for (Map.Entry<QName, SDODataBindingTypeMappingEntry> e : 
typeMapping.entrySet()) {
+                    typeMapper.addTypeMappingObject(e.getKey(), e.getValue());
+                }
+                AxisService axisService;
+                try {
+                    axisService = new WSDL2AxisServiceBuilder(definition, 
serviceQname, port.getName()).populateService();
+                } catch (AxisFault e) {
+                    throw new CodeGenerationException(e);
+                }
+                
axisService.setName(port.getBinding().getPortType().getQName().getLocalPart());
+                CodeGenConfiguration codegenConfiguration = new 
CodeGenConfiguration(Collections.EMPTY_MAP);
+                codegenConfigurations.add(codegenConfiguration);
+                codegenConfiguration.setAxisService(axisService);
+                codegenConfiguration.setAdvancedCodeGenEnabled(false);
+                codegenConfiguration.setAsyncOn(false);
+                codegenConfiguration.setDatabindingType("sdo");
+                codegenConfiguration.setGenerateAll(true);
+                codegenConfiguration.setGenerateDeployementDescriptor(false);
+                codegenConfiguration.setOutputLanguage("java");
+                codegenConfiguration.setOutputLocation(new 
File(outputLocation));
+                codegenConfiguration.setPackageName(packageName);
+                codegenConfiguration.setPackClasses(false);
+                codegenConfiguration.setPolicyMap(Collections.EMPTY_MAP);
+                codegenConfiguration.setPortName(port.getName());
+                codegenConfiguration.setServerSide(false);
+                
codegenConfiguration.setServiceName(service.getQName().getLocalPart());
+                codegenConfiguration.setSyncOn(true);
+                codegenConfiguration.setTypeMapper(typeMapper);
+                codegenConfiguration.setWriteMessageReceiver(false);
+                codegenConfiguration.setWriteTestCase(false);
+                addExtension(new WSDLValidatorExtension(), 
codegenConfiguration);
+                addExtension(new PackageFinder(), codegenConfiguration);
+                addExtension(new SDODataBindingCodegenExtension(typeMapper), 
codegenConfiguration);
+                addExtension(new DefaultDatabindingExtension(), 
codegenConfiguration);
+            }            
+        }        
+    }
 
-        AxisService axisService;
-        try {
-            axisService = new WSDL2AxisServiceBuilder(definition, 
serviceQname, port.getName()).populateService();
-        } catch (AxisFault e) {
-            throw new CodeGenerationException(e);
-        }
-        
axisService.setName(port.getBinding().getPortType().getQName().getLocalPart());
 
-        codegenConfiguration= new CodeGenConfiguration(Collections.EMPTY_MAP);
-        codegenConfiguration.setAxisService(axisService);
-        codegenConfiguration.setAdvancedCodeGenEnabled(false);
-        codegenConfiguration.setAsyncOn(false);
-        codegenConfiguration.setDatabindingType("sdo");
-        codegenConfiguration.setGenerateAll(true);
-        codegenConfiguration.setGenerateDeployementDescriptor(false);
-        codegenConfiguration.setOutputLanguage("java");
-        codegenConfiguration.setOutputLocation(new File(outputLocation));
-        codegenConfiguration.setPackageName(packageName);
-        codegenConfiguration.setPackClasses(false);
-        codegenConfiguration.setPolicyMap(Collections.EMPTY_MAP);
-        codegenConfiguration.setPortName(port.getName());
-        codegenConfiguration.setServerSide(false);
-        codegenConfiguration.setServiceName(service.getQName().getLocalPart());
-        codegenConfiguration.setSyncOn(true);
-        codegenConfiguration.setTypeMapper(typeMapper);
-        codegenConfiguration.setWriteMessageReceiver(false);
-        codegenConfiguration.setWriteTestCase(false);
-
-        addExtension(new WSDLValidatorExtension());
-        addExtension(new PackageFinder());
-        addExtension(new SDODataBindingCodegenExtension(typeMapper));
-        addExtension(new DefaultDatabindingExtension());
+    private PortType getPortType(Port port) {
+       Binding binding = port.getBinding();
+       if(null != binding){
+          return binding.getPortType();
+       }
+       return null;
+        
     }
 
+
     @SuppressWarnings("unchecked")
-    private void addExtension(CodeGenExtension ext) {
+    private void addExtension(CodeGenExtension ext, CodeGenConfiguration 
codegenConfiguration) {
         ext.init(codegenConfiguration);
         codegenExtensions.add(ext);
     }
@@ -121,11 +155,13 @@
                 ((CodeGenExtension)codegenExtensions.get(i)).engage();
             }
 
+            for(CodeGenConfiguration codegenConfiguration : 
codegenConfigurations){
             JavaInterfaceEmitter emitter = new JavaInterfaceEmitter();
             emitter.setCodeGenConfiguration(codegenConfiguration);
             emitter.setMapper(codegenConfiguration.getTypeMapper());
 
             emitter.writeInterface(false);
+            }
 
         } catch (Exception e) {
             throw new CodeGenerationException(e);

Modified: 
incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/WSDL2JavaGenerator.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/WSDL2JavaGenerator.java?rev=405549&r1=405548&r2=405549&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/WSDL2JavaGenerator.java
 (original)
+++ 
incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/WSDL2JavaGenerator.java
 Tue May  9 14:56:36 2006
@@ -101,8 +101,20 @@
 
     @SuppressWarnings("unchecked")
     public static void generateFromWSDL(String wsdlFileName, String 
targetDirectory,
-                                        String wsdlJavaPackage,
-                                        String xsdJavaPackage, int genOptions) 
{
+            String wsdlJavaPackage,
+            String xsdJavaPackage, int genOptions){
+        generateFromWSDL( wsdlFileName, null, targetDirectory,
+                wsdlJavaPackage,
+                xsdJavaPackage, genOptions);
+        
+    }
+    
+    
+    @SuppressWarnings("unchecked")
+      public static void generateFromWSDL(String wsdlFileName, String[] ports,
+                 String targetDirectory, String wsdlJavaPackage,
+                 String xsdJavaPackage, int genOptions) 
+     {
 
         // Initialize the SDO runtime
         DataObjectUtil.initRuntime();
@@ -218,6 +230,7 @@
 
             try {
                 JavaInterfaceGenerator codeGenerator = new 
JavaInterfaceGenerator(wsdlFileName,
+                                                                               
   ports,
                                                                                
   targetDirectory,
                                                                                
   wsdlJavaPackage,
                                                                                
   typeMapping);
@@ -326,5 +339,6 @@
         System.out.println("");
         System.out.println("  generate somedir/somefile.wsdl");
     }
+
 
 }


Reply via email to