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");
}
+
}