summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen
diff options
context:
space:
mode:
Diffstat (limited to 'sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen')
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/pom.xml94
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/anotherpackage/BBean.java56
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/anotherpackage/CBean.java45
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/BaseClass.java46
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/ComplexNumber.java48
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/DataTypes.java78
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/ExtClass.java34
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/GetDataServiceWithoutException.java42
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/impl/DataTypesImpl.java100
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/impl/GetDataServiceWithoutExceptionImpl.java53
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/ABean.java65
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/HelloWorldClientImpl.java85
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/HelloWorldException.java44
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/HelloWorldImpl.java87
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/HelloWorldService.java57
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/package-info.java20
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/other/EBean.java44
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/other/OtherPojo.java48
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/other/package-info.java23
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/yetanotherpackage/AnotherHelloWorldException.java44
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/yetanotherpackage/DBean.java73
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/yetyetanotherpackage/FBean.java42
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/yetyetanotherpackage/package-info.java23
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/DataTypes.composite38
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/META-INF/sca-contribution.xml23
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/definitions.xml49
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/helloworld.composite55
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/HelloWorldImplService.wsdl251
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/HelloWorldImplService_schema1.xsd29
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/HelloWorldImplService_schema2.xsd33
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/HelloWorldImplService_schema3.xsd29
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/HelloWorldImplService_schema4.xsd237
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/README2
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/test/java/datatypes/BaseFramework.java266
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/test/java/datatypes/DataTypesTestCase.java186
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/test/java/datatypes/DynamicSDOTestCase.java81
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/test/java/helloworld/SchemaCorrectionTestCase.java462
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/test/java/helloworld/WSDLGenTestCase.java184
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/wsgen.bat18
39 files changed, 3194 insertions, 0 deletions
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/pom.xml b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/pom.xml
new file mode 100644
index 0000000000..7f6cf26289
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/pom.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>itest-ws</artifactId>
+ <version>2.0.1</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>itest-ws-wsdlgen</artifactId>
+ <name>Apache Tuscany SCA iTest WS WSDL Generation</name>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-base-runtime-pom</artifactId>
+ <type>pom</type>
+ <version>2.0.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-runtime-axis2</artifactId>
+ <version>2.0.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-databinding-sdo</artifactId>
+ <version>2.0.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty</artifactId>
+ <version>6.1.19</version>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${project.artifactId}</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.jvnet.jax-ws-commons</groupId>
+ <artifactId>jaxws-maven-plugin</artifactId>
+ <version>2.1</version>
+ <dependencies>
+ <dependency>
+ <groupId>com.sun.xml.ws</groupId>
+ <artifactId>jaxws-tools</artifactId>
+ <version>2.2.6-promoted-b10</version>
+ </dependency>
+ </dependencies>
+ <executions>
+ <execution>
+ <phase>generate-test-sources</phase>
+ <goals>
+ <goal>wsgen</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <sei>helloworld.HelloWorldImpl</sei>
+ <genWsdl>true</genWsdl>
+ <keep>true</keep>
+ <destDir>${basedir}/target/classes</destDir>
+ <resourceDestDir>${basedir}/target/jaxws/wsgen/wsdl</resourceDestDir>
+ <sourceDestDir>${basedir}/target/jaxws/wsgen/source</sourceDestDir>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/anotherpackage/BBean.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/anotherpackage/BBean.java
new file mode 100644
index 0000000000..41ed1b8878
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/anotherpackage/BBean.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package anotherpackage;
+
+import javax.xml.bind.annotation.XmlType;
+
+import yetyetanotherpackage.FBean;
+
+@XmlType(namespace="http://helloworld/")
+public class BBean {
+
+ protected String field1;
+ protected String field2;
+ protected FBean field3;
+
+ public String getField1() {
+ return field1;
+ }
+
+ public void setField1(String field1) {
+ this.field1 = field1;
+ }
+
+ public String getField2() {
+ return field2;
+ }
+
+ public void setField2(String field2) {
+ this.field2 = field2;
+ }
+
+ public FBean getField3() {
+ return field3;
+ }
+
+ public void setField3(FBean field3) {
+ this.field3 = field3;
+ }
+}
+
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/anotherpackage/CBean.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/anotherpackage/CBean.java
new file mode 100644
index 0000000000..4b0064aee8
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/anotherpackage/CBean.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package anotherpackage;
+
+import javax.xml.bind.annotation.XmlType;
+
+@XmlType(name="")
+public class CBean {
+
+ protected String field1;
+ protected String field2;
+
+ public String getField1() {
+ return field1;
+ }
+
+ public void setField1(String field1) {
+ this.field1 = field1;
+ }
+
+ public String getField2() {
+ return field2;
+ }
+
+ public void setField2(String field2) {
+ this.field2 = field2;
+ }
+}
+
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/BaseClass.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/BaseClass.java
new file mode 100644
index 0000000000..904ca55617
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/BaseClass.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+package datatypes;
+
+import java.io.Serializable;
+
+public class BaseClass implements Serializable {
+ private static final long serialVersionUID = -4086312879555658070L;
+
+ private long id;
+
+ private String commentair;
+
+ public long getId() {
+ return id;
+ }
+
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ public String getCommentair() {
+ return commentair;
+ }
+
+ public void setCommentair(String commentair) {
+ this.commentair = commentair;
+ }
+}
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/ComplexNumber.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/ComplexNumber.java
new file mode 100644
index 0000000000..96a53f7eeb
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/ComplexNumber.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+package datatypes;
+
+public class ComplexNumber {
+ private double real, imaginary;
+
+ public ComplexNumber(double real, double imaginary) {
+ this.real = real;
+ this.imaginary = imaginary;
+ }
+
+ public ComplexNumber() {
+ }
+
+ public double getReal() {
+ return real;
+ }
+
+ public void setReal(double real) {
+ this.real = real;
+ }
+
+ public double getImaginary() {
+ return imaginary;
+ }
+
+ public void setImaginary(double imaginary) {
+ this.imaginary = imaginary;
+ }
+}
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/DataTypes.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/DataTypes.java
new file mode 100644
index 0000000000..d4e3609abb
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/DataTypes.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+package datatypes;
+
+import java.util.List;
+import javax.jws.WebParam;
+import javax.jws.soap.SOAPBinding;
+
+import org.oasisopen.sca.ServiceReference;
+import org.oasisopen.sca.annotation.Remotable;
+
+import commonj.sdo.DataObject;
+import other.OtherPojo;
+
+@Remotable
+public interface DataTypes {
+
+ void testSimpleInt(int simple);
+
+ void testSimpleArrayInt(int[] simple);
+
+ void testSimpleMultiArrayInt(int[][] simple);
+
+ void testSimpleMulti3ArrayInt(int[][][] simple);
+
+ void testList(List any);
+
+ void testSimpleListString(List<String> simple);
+
+ List<String> testReturnSimpleListString();
+
+ void testListByteArray(List<byte[]> byteArrayList);
+
+ void testListWildcard(List<?> wild);
+
+ void testComplex(ComplexNumber complex);
+
+ void testOtherPackage(OtherPojo pojo);
+
+ void testByteArray(byte[] byteArray);
+
+ void testBaseExtension(ExtClass ext);
+
+ void testServiceReference(ServiceReference ref);
+
+ void testException() throws Exception;
+
+ DataObject testDynamicSDO();
+
+ void testWebParamSDO(@WebParam(name="foo") DataObject myObject);
+
+ void testWebParamSDOArray(@WebParam(name="foo") DataObject[] myArray);
+/*
+
+ @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
+ void testWebParamBare(@WebParam(name="simpleInt") int simple);
+
+ @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
+ void testWebParamBareArray(@WebParam(name="arrayInt") int[] array);
+*/
+}
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/ExtClass.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/ExtClass.java
new file mode 100644
index 0000000000..86be949630
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/ExtClass.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+package datatypes;
+
+public class ExtClass extends BaseClass {
+ private static final long serialVersionUID = 7076974968473202208L;
+
+ private String name;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/GetDataServiceWithoutException.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/GetDataServiceWithoutException.java
new file mode 100644
index 0000000000..d4c64a837a
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/GetDataServiceWithoutException.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+package datatypes;
+
+import commonj.sdo.DataObject;
+import java.util.List;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public abstract interface GetDataServiceWithoutException
+{
+ public abstract byte[] getMessage(String paramString);
+
+ public abstract List<byte[]> getMessageList(String paramString);
+
+ public abstract DataObject getMessageSDO(String paramString);
+
+ public abstract List<DataObject> getMessageListSDOList(String paramString);
+
+ public abstract DataObject[] getMessageListSDOArr(String paramString);
+
+ public abstract DataObject getMessageListSDOinSDO(String paramString);
+}
+
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/impl/DataTypesImpl.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/impl/DataTypesImpl.java
new file mode 100644
index 0000000000..df492d8e7e
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/impl/DataTypesImpl.java
@@ -0,0 +1,100 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+package datatypes.impl;
+
+import java.util.List;
+import javax.jws.WebParam;
+import javax.jws.soap.SOAPBinding;
+
+import org.oasisopen.sca.ServiceReference;
+
+import other.OtherPojo;
+
+import commonj.sdo.DataObject;
+import datatypes.ComplexNumber;
+import datatypes.DataTypes;
+import datatypes.ExtClass;
+
+public class DataTypesImpl implements DataTypes {
+
+ public void testSimpleInt(int simple) {
+ }
+
+ public void testSimpleArrayInt(int[] simple) {
+ }
+
+ public void testSimpleMultiArrayInt(int[][] simple) {
+ }
+
+ public void testSimpleMulti3ArrayInt(int[][][] simple) {
+ }
+
+ public void testList(List any) {
+ }
+
+ public void testSimpleListString(List<String> simple) {
+ }
+
+ public List<String> testReturnSimpleListString() {
+ return null;
+ }
+
+ public void testListByteArray(List<byte[]> byteArrayList) {
+ }
+
+ public void testListWildcard(List<?> wild) {
+ }
+
+ public void testComplex(ComplexNumber complex) {
+ }
+
+ public void testOtherPackage(OtherPojo pojo) {
+ }
+
+ public void testByteArray(byte[] byteArray) {
+ }
+
+ public void testBaseExtension(ExtClass ext) {
+ }
+
+ public void testServiceReference(ServiceReference ref) {
+ }
+
+ public void testException() throws Exception {
+ }
+
+ public DataObject testDynamicSDO() {
+ return null;
+ }
+
+ public void testWebParamSDO(DataObject myObject) {
+ }
+
+ public void testWebParamSDOArray(DataObject[] myArray) {
+ }
+/*
+
+ public void testWebParamBare(int simple) {
+ }
+
+ public void testWebParamBareArray(int[] array) {
+ }
+*/
+}
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/impl/GetDataServiceWithoutExceptionImpl.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/impl/GetDataServiceWithoutExceptionImpl.java
new file mode 100644
index 0000000000..d28df3fbdd
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/datatypes/impl/GetDataServiceWithoutExceptionImpl.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+package datatypes.impl;
+
+import commonj.sdo.DataObject;
+import java.util.List;
+
+import datatypes.GetDataServiceWithoutException;
+
+public class GetDataServiceWithoutExceptionImpl implements GetDataServiceWithoutException {
+
+ public byte[] getMessage(String paramString) {
+ return null;
+ }
+
+ public List<byte[]> getMessageList(String paramString) {
+ return null;
+ }
+
+ public DataObject getMessageSDO(String paramString) {
+ return null;
+ }
+
+ public List<DataObject> getMessageListSDOList(String paramString) {
+ return null;
+ }
+
+ public DataObject[] getMessageListSDOArr(String paramString) {
+ return null;
+ }
+
+ public DataObject getMessageListSDOinSDO(String paramString) {
+ return null;
+ }
+}
+
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/ABean.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/ABean.java
new file mode 100644
index 0000000000..2d15ea2334
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/ABean.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package helloworld;
+
+import yetanotherpackage.DBean;
+import anotherpackage.BBean;
+
+
+
+public class ABean {
+
+ protected String field1;
+ protected String field2;
+ protected BBean field3;
+ protected DBean field4;
+
+ public String getField1() {
+ return field1;
+ }
+
+ public void setField1(String field1) {
+ this.field1 = field1;
+ }
+
+ public String getField2() {
+ return field2;
+ }
+
+ public void setField2(String field2) {
+ this.field2 = field2;
+ }
+
+ public BBean getField3() {
+ return field3;
+ }
+
+ public void setField3(BBean field3) {
+ this.field3 = field3;
+ }
+
+ public DBean getField4() {
+ return field4;
+ }
+
+ public void setField4(DBean field4) {
+ this.field4 = field4;
+ }
+}
+
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/HelloWorldClientImpl.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/HelloWorldClientImpl.java
new file mode 100644
index 0000000000..0ec380b935
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/HelloWorldClientImpl.java
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package helloworld;
+
+
+import org.oasisopen.sca.annotation.Reference;
+import org.oasisopen.sca.annotation.Service;
+
+import yetanotherpackage.AnotherHelloWorldException;
+import yetanotherpackage.DBean;
+
+import anotherpackage.BBean;
+import anotherpackage.CBean;
+
+/**
+ * This class implements the HelloWorld service.
+ */
+@Service(HelloWorldService.class)
+public class HelloWorldClientImpl implements HelloWorldService {
+
+ @Reference
+ protected HelloWorldService hwService;
+
+ public String getGreetings(String name) {
+ return "Hello " + hwService.getGreetings(name);
+ }
+
+ public String getGreetingsBean(ABean bean){
+ return "Hello " + hwService.getGreetingsBean(bean);
+ }
+
+ public String getGreetingsBeanArray(ABean[] bean){
+ return "Hello " + hwService.getGreetingsBeanArray(bean);
+ }
+
+ /*
+ public String getGreetingsBeanVector(Vector<ABean> bean){
+ return "Hello " + bean.get(0).getField1() + " " + bean.get(0).getField2();
+ }
+ */
+
+ public String getGreetingsBBean(BBean bean){
+ return "Hello " + hwService.getGreetingsBBean(bean);
+ }
+
+ public String getGreetingsCBean(CBean bean){
+ return "Hello " + hwService.getGreetingsCBean(bean);
+ }
+
+ public String getGreetingsDBean(DBean bean){
+ return "Hello " + hwService.getGreetingsDBean(bean);
+ }
+
+ public String getGreetingsException(String input) throws HelloWorldException {
+ return hwService.getGreetingsException(input);
+ }
+
+ public String getGreetingsAnotherException(String input) throws AnotherHelloWorldException {
+ return hwService.getGreetingsAnotherException(input);
+ }
+
+ public byte[] getGreetingsByteArray(byte[] input) {
+ return input;
+ }
+
+ public ABean getGreetingsABeanMultiple(ABean bean1, ABean bean2){
+ return hwService.getGreetingsABeanMultiple(bean1, bean2);
+ }
+}
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/HelloWorldException.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/HelloWorldException.java
new file mode 100644
index 0000000000..29b0d11fdb
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/HelloWorldException.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package helloworld;
+
+public class HelloWorldException extends Exception {
+
+ public HelloWorldException() {
+ }
+
+ public HelloWorldException(String message) {
+ super(message);
+ }
+
+ public HelloWorldException(Throwable cause) {
+ super(cause);
+ }
+
+ public HelloWorldException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+/*
+ public HelloWorldException(String message, String errorCode) {
+ super(message, errorCode);
+ }
+*/
+
+}
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/HelloWorldImpl.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/HelloWorldImpl.java
new file mode 100644
index 0000000000..e4dd7523f2
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/HelloWorldImpl.java
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package helloworld;
+
+import javax.jws.WebService;
+
+import org.oasisopen.sca.annotation.Service;
+
+import yetanotherpackage.DBean;
+import yetanotherpackage.AnotherHelloWorldException;
+
+import anotherpackage.BBean;
+import anotherpackage.CBean;
+
+/**
+ * This class implements the HelloWorld service.
+ */
+@WebService
+@Service(HelloWorldService.class)
+public class HelloWorldImpl implements HelloWorldService {
+
+ public String getGreetings(String name) {
+ return "Hello " + name;
+ }
+
+ public String getGreetingsBean(ABean bean) {
+ return "Hello " + bean.getField1() + " " + bean.getField2()
+ + bean.getField3().getField1() + " "
+ + bean.getField3().getField2();
+ }
+
+ public String getGreetingsBeanArray(ABean[] bean) {
+ return "Hello " + bean[0].getField1() + " " + bean[0].getField2();
+ }
+
+ /*
+ * public String getGreetingsBeanVector(Vector<ABean> bean){ return "Hello "
+ * + bean.get(0).getField1() + " " + bean.get(0).getField2(); }
+ */
+
+ public String getGreetingsBBean(BBean bean) {
+ return "Hello " + bean.getField1() + " " + bean.getField2();
+ }
+
+ public String getGreetingsCBean(CBean bean) {
+ return "Hello " + bean.getField1() + " " + bean.getField2();
+ }
+
+ public String getGreetingsDBean(DBean bean) {
+ return "Hello " + bean.getField1() + " " + bean.getField2() + " "
+ + bean.getField3().getField1() + " "
+ + bean.getField3().getField2();
+ }
+
+ public String getGreetingsException(String input) throws HelloWorldException {
+ throw new HelloWorldException("Hello " + input);
+ }
+
+ public String getGreetingsAnotherException(String input) throws AnotherHelloWorldException {
+ throw new AnotherHelloWorldException("Hello " + input);
+ }
+
+ public byte[] getGreetingsByteArray(byte[] input){
+ System.out.println(String.valueOf(input));
+ return input;
+ }
+
+ public ABean getGreetingsABeanMultiple(ABean bean1, ABean bean2){
+ return bean1;
+ }
+}
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/HelloWorldService.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/HelloWorldService.java
new file mode 100644
index 0000000000..aae8a6763c
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/HelloWorldService.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package helloworld;
+
+import javax.jws.WebService;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+import yetanotherpackage.AnotherHelloWorldException;
+import yetanotherpackage.DBean;
+
+import anotherpackage.BBean;
+import anotherpackage.CBean;
+
+/**
+ * This is the business interface of the HelloWorld greetings service.
+ */
+@WebService
+@Remotable
+public interface HelloWorldService {
+
+ // primitives
+ public String getGreetings(String name);
+ byte[] getGreetingsByteArray(byte[] input);
+ String getGreetingsException(String input) throws HelloWorldException;
+ String getGreetingsAnotherException(String input) throws AnotherHelloWorldException;
+
+ // simple bean configs
+ public String getGreetingsBean(ABean bean);
+ public String getGreetingsBeanArray(ABean[] bean);
+ public String getGreetingsBBean(BBean bean);
+ public String getGreetingsCBean(CBean bean);
+ public String getGreetingsDBean(DBean bean);
+
+ // more complex bean configs
+ public ABean getGreetingsABeanMultiple(ABean bean1, ABean bean2);
+
+ // collections
+ //public String getGreetingsBeanVector(Vector<ABean> bean);
+}
+
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/package-info.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/package-info.java
new file mode 100644
index 0000000000..22583a95a3
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/helloworld/package-info.java
@@ -0,0 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+@javax.xml.bind.annotation.XmlSchema(namespace="http://test")
+package helloworld;
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/other/EBean.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/other/EBean.java
new file mode 100644
index 0000000000..5f097d53cb
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/other/EBean.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package other;
+
+import javax.xml.bind.annotation.XmlType;
+
+public class EBean {
+
+ protected String field1;
+ protected String field2;
+
+ public String getField1() {
+ return field1;
+ }
+
+ public void setField1(String field1) {
+ this.field1 = field1;
+ }
+
+ public String getField2() {
+ return field2;
+ }
+
+ public void setField2(String field2) {
+ this.field2 = field2;
+ }
+}
+
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/other/OtherPojo.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/other/OtherPojo.java
new file mode 100644
index 0000000000..d23327913c
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/other/OtherPojo.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+package other;
+
+public class OtherPojo {
+ private double real, imaginary;
+
+ public OtherPojo(double real, double imaginary) {
+ this.real = real;
+ this.imaginary = imaginary;
+ }
+
+ public OtherPojo() {
+ }
+
+ public double getReal() {
+ return real;
+ }
+
+ public void setReal(double real) {
+ this.real = real;
+ }
+
+ public double getImaginary() {
+ return imaginary;
+ }
+
+ public void setImaginary(double imaginary) {
+ this.imaginary = imaginary;
+ }
+}
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/other/package-info.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/other/package-info.java
new file mode 100644
index 0000000000..8fd41ce70b
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/other/package-info.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+@XmlSchema(namespace = "http://other.jtest/")
+package other;
+
+import javax.xml.bind.annotation.XmlSchema;
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/yetanotherpackage/AnotherHelloWorldException.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/yetanotherpackage/AnotherHelloWorldException.java
new file mode 100644
index 0000000000..669d9ba3a7
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/yetanotherpackage/AnotherHelloWorldException.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package yetanotherpackage;
+
+public class AnotherHelloWorldException extends Exception {
+
+ public AnotherHelloWorldException() {
+ }
+
+ public AnotherHelloWorldException(String message) {
+ super(message);
+ }
+
+ public AnotherHelloWorldException(Throwable cause) {
+ super(cause);
+ }
+
+ public AnotherHelloWorldException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+/*
+ public HelloWorldException(String message, String errorCode) {
+ super(message, errorCode);
+ }
+*/
+
+}
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/yetanotherpackage/DBean.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/yetanotherpackage/DBean.java
new file mode 100644
index 0000000000..fe4c28d817
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/yetanotherpackage/DBean.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package yetanotherpackage;
+
+import other.EBean;
+import anotherpackage.BBean;
+import anotherpackage.CBean;
+
+public class DBean {
+
+ protected String field1;
+ protected String field2;
+ protected BBean field3;
+ protected CBean field4;
+ protected EBean field5;
+
+ public String getField1() {
+ return field1;
+ }
+
+ public void setField1(String field1) {
+ this.field1 = field1;
+ }
+
+ public String getField2() {
+ return field2;
+ }
+
+ public void setField2(String field2) {
+ this.field2 = field2;
+ }
+
+ public BBean getField3() {
+ return field3;
+ }
+
+ public void setField3(BBean field3) {
+ this.field3 = field3;
+ }
+
+ public CBean getField4() {
+ return field4;
+ }
+
+ public void setField4(CBean field4) {
+ this.field4 = field4;
+ }
+
+ public EBean getField5() {
+ return field5;
+ }
+
+ public void setField5(EBean field5) {
+ this.field5 = field5;
+ }
+}
+
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/yetyetanotherpackage/FBean.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/yetyetanotherpackage/FBean.java
new file mode 100644
index 0000000000..2ea36b3ffa
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/yetyetanotherpackage/FBean.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package yetyetanotherpackage;
+
+public class FBean {
+
+ protected String field1;
+ protected String field2;
+
+ public String getField1() {
+ return field1;
+ }
+
+ public void setField1(String field1) {
+ this.field1 = field1;
+ }
+
+ public String getField2() {
+ return field2;
+ }
+
+ public void setField2(String field2) {
+ this.field2 = field2;
+ }
+}
+
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/yetyetanotherpackage/package-info.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/yetyetanotherpackage/package-info.java
new file mode 100644
index 0000000000..1472d7c4b8
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/java/yetyetanotherpackage/package-info.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+@XmlSchema(namespace = "http://wahooo/")
+package yetyetanotherpackage;
+
+import javax.xml.bind.annotation.XmlSchema;
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/DataTypes.composite b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/DataTypes.composite
new file mode 100644
index 0000000000..991b9078d9
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/DataTypes.composite
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+-->
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ targetNamespace="http://verify.wsdlgen/"
+ name="DataTypes">
+
+ <component name="DataTypes">
+ <implementation.java class="datatypes.impl.DataTypesImpl" />
+ <service name="DataTypes">
+ <binding.ws uri="http://localhost:8085/DataTypes" />
+ </service>
+ </component>
+
+ <component name="DynamicSDO">
+ <implementation.java class="datatypes.impl.GetDataServiceWithoutExceptionImpl" />
+ <service name="GetDataServiceWithoutException">
+ <binding.ws uri="http://localhost:8085/GetDataServiceWithoutException" />
+ </service>
+ </component>
+
+</composite>
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..34da25216d
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+-->
+<contribution xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:hw="http://helloworld">
+ <deployable composite="hw:helloworldws" />
+</contribution>
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/definitions.xml b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/definitions.xml
new file mode 100644
index 0000000000..b5679ed329
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/definitions.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+-->
+<sca:definitions xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ targetNamespace="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1">
+
+ <sca:intent name="transport"
+ constrains="sca:binding.ws">
+ <sca:description>
+ The general intent that a transport is available over which SOAP messages flow
+ </sca:description>
+ </sca:intent>
+
+
+ <sca:intent name="transport.http">
+ <sca:description>
+ An HTTP transport is required
+ </sca:description>
+ </sca:intent>
+
+ <!--
+ how does the following relate to confidentiality intents
+ does confidentiality become a profile intent?
+ -->
+ <sca:intent name="transport.https">
+ <sca:description>
+ An HTTPS transport is required
+ </sca:description>
+ </sca:intent>
+
+ </sca:definitions> \ No newline at end of file
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/helloworld.composite b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/helloworld.composite
new file mode 100644
index 0000000000..52b957d4a6
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/helloworld.composite
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+-->
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ targetNamespace="http://helloworld"
+ xmlns:hw="http://helloworld"
+ name="helloworldws">
+
+ <component name="HelloWorldClientComponent">
+ <implementation.java class="helloworld.HelloWorldClientImpl" />
+ <service name="HelloWorldService">
+ <binding.sca/>
+ </service>
+ <reference name="hwService">
+ <binding.ws uri="http://localhost:8085/HelloWorldServiceComponent"/>
+ </reference>
+ </component>
+
+ <component name="HelloWorldServiceComponent">
+ <implementation.java class="helloworld.HelloWorldImpl" />
+ <service name="HelloWorldService">
+ <binding.ws uri="http://localhost:8085/HelloWorldServiceComponent"/>
+ </service>
+ </component>
+
+ <!--
+ test compatibility between the JAXWS-RI wsdlgen'd WSDL and the Tuscany
+ gen'd WSDL by setting the service interface to the RI WSDL. Tuscany should
+ generate a WSDL for the component and compare the two for compatibility
+ -->
+ <component name="HelloWorldServiceCompatibilityComponent">
+ <implementation.java class="helloworld.HelloWorldImpl" />
+ <service name="HelloWorldService">
+ <interface.wsdl interface="http://helloworld/#wsdl.interface(HelloWorldImpl)"/>
+ <binding.ws uri="http://localhost:8085/HelloWorldServiceCompatibilityComponent"/>
+ </service>
+ </component>
+</composite>
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/HelloWorldImplService.wsdl b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/HelloWorldImplService.wsdl
new file mode 100644
index 0000000000..e544beefbf
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/HelloWorldImplService.wsdl
@@ -0,0 +1,251 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+-->
+<!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.3-b02-. -->
+<definitions targetNamespace="http://helloworld/" name="HelloWorldImplService" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://helloworld/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+ <types>
+ <xsd:schema>
+ <xsd:import namespace="http://wahooo/" schemaLocation="HelloWorldImplService_schema1.xsd"/>
+ </xsd:schema>
+ <xsd:schema>
+ <xsd:import namespace="http://test" schemaLocation="HelloWorldImplService_schema2.xsd"/>
+ </xsd:schema>
+ <xsd:schema>
+ <xsd:import namespace="http://other.jtest/" schemaLocation="HelloWorldImplService_schema3.xsd"/>
+ </xsd:schema>
+ <xsd:schema>
+ <xsd:import namespace="http://helloworld/" schemaLocation="HelloWorldImplService_schema4.xsd"/>
+ </xsd:schema>
+ </types>
+ <message name="getGreetings">
+ <part name="parameters" element="tns:getGreetings"/>
+ </message>
+ <message name="getGreetingsResponse">
+ <part name="parameters" element="tns:getGreetingsResponse"/>
+ </message>
+ <message name="getGreetingsBean">
+ <part name="parameters" element="tns:getGreetingsBean"/>
+ </message>
+ <message name="getGreetingsBeanResponse">
+ <part name="parameters" element="tns:getGreetingsBeanResponse"/>
+ </message>
+ <message name="getGreetingsBeanArray">
+ <part name="parameters" element="tns:getGreetingsBeanArray"/>
+ </message>
+ <message name="getGreetingsBeanArrayResponse">
+ <part name="parameters" element="tns:getGreetingsBeanArrayResponse"/>
+ </message>
+ <message name="getGreetingsBBean">
+ <part name="parameters" element="tns:getGreetingsBBean"/>
+ </message>
+ <message name="getGreetingsBBeanResponse">
+ <part name="parameters" element="tns:getGreetingsBBeanResponse"/>
+ </message>
+ <message name="getGreetingsCBean">
+ <part name="parameters" element="tns:getGreetingsCBean"/>
+ </message>
+ <message name="getGreetingsCBeanResponse">
+ <part name="parameters" element="tns:getGreetingsCBeanResponse"/>
+ </message>
+ <message name="getGreetingsDBean">
+ <part name="parameters" element="tns:getGreetingsDBean"/>
+ </message>
+ <message name="getGreetingsDBeanResponse">
+ <part name="parameters" element="tns:getGreetingsDBeanResponse"/>
+ </message>
+ <message name="getGreetingsException">
+ <part name="parameters" element="tns:getGreetingsException"/>
+ </message>
+ <message name="getGreetingsExceptionResponse">
+ <part name="parameters" element="tns:getGreetingsExceptionResponse"/>
+ </message>
+ <message name="HelloWorldException">
+ <part name="fault" element="tns:HelloWorldException"/>
+ </message>
+ <message name="getGreetingsAnotherException">
+ <part name="parameters" element="tns:getGreetingsAnotherException"/>
+ </message>
+ <message name="getGreetingsAnotherExceptionResponse">
+ <part name="parameters" element="tns:getGreetingsAnotherExceptionResponse"/>
+ </message>
+ <message name="AnotherHelloWorldException">
+ <part name="fault" element="tns:AnotherHelloWorldException"/>
+ </message>
+ <message name="getGreetingsByteArray">
+ <part name="parameters" element="tns:getGreetingsByteArray"/>
+ </message>
+ <message name="getGreetingsByteArrayResponse">
+ <part name="parameters" element="tns:getGreetingsByteArrayResponse"/>
+ </message>
+ <message name="getGreetingsABeanMultiple">
+ <part name="parameters" element="tns:getGreetingsABeanMultiple"/>
+ </message>
+ <message name="getGreetingsABeanMultipleResponse">
+ <part name="parameters" element="tns:getGreetingsABeanMultipleResponse"/>
+ </message>
+ <portType name="HelloWorldImpl">
+ <operation name="getGreetings">
+ <input message="tns:getGreetings"/>
+ <output message="tns:getGreetingsResponse"/>
+ </operation>
+ <operation name="getGreetingsBean">
+ <input message="tns:getGreetingsBean"/>
+ <output message="tns:getGreetingsBeanResponse"/>
+ </operation>
+ <operation name="getGreetingsBeanArray">
+ <input message="tns:getGreetingsBeanArray"/>
+ <output message="tns:getGreetingsBeanArrayResponse"/>
+ </operation>
+ <operation name="getGreetingsBBean">
+ <input message="tns:getGreetingsBBean"/>
+ <output message="tns:getGreetingsBBeanResponse"/>
+ </operation>
+ <operation name="getGreetingsCBean">
+ <input message="tns:getGreetingsCBean"/>
+ <output message="tns:getGreetingsCBeanResponse"/>
+ </operation>
+ <operation name="getGreetingsDBean">
+ <input message="tns:getGreetingsDBean"/>
+ <output message="tns:getGreetingsDBeanResponse"/>
+ </operation>
+ <operation name="getGreetingsException">
+ <input message="tns:getGreetingsException"/>
+ <output message="tns:getGreetingsExceptionResponse"/>
+ <fault message="tns:HelloWorldException" name="HelloWorldException"/>
+ </operation>
+ <operation name="getGreetingsAnotherException">
+ <input message="tns:getGreetingsAnotherException"/>
+ <output message="tns:getGreetingsAnotherExceptionResponse"/>
+ <fault message="tns:AnotherHelloWorldException" name="AnotherHelloWorldException"/>
+ </operation>
+ <operation name="getGreetingsByteArray">
+ <input message="tns:getGreetingsByteArray"/>
+ <output message="tns:getGreetingsByteArrayResponse"/>
+ </operation>
+ <operation name="getGreetingsABeanMultiple">
+ <input message="tns:getGreetingsABeanMultiple"/>
+ <output message="tns:getGreetingsABeanMultipleResponse"/>
+ </operation>
+ </portType>
+ <binding name="HelloWorldImplPortBinding" type="tns:HelloWorldImpl">
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+ <operation name="getGreetings">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="getGreetingsBean">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="getGreetingsBeanArray">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="getGreetingsBBean">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="getGreetingsCBean">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="getGreetingsDBean">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="getGreetingsException">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ <fault name="HelloWorldException">
+ <soap:fault name="HelloWorldException" use="literal"/>
+ </fault>
+ </operation>
+ <operation name="getGreetingsAnotherException">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ <fault name="AnotherHelloWorldException">
+ <soap:fault name="AnotherHelloWorldException" use="literal"/>
+ </fault>
+ </operation>
+ <operation name="getGreetingsByteArray">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="getGreetingsABeanMultiple">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ </binding>
+ <service name="HelloWorldImplService">
+ <port name="HelloWorldImplPort" binding="tns:HelloWorldImplPortBinding">
+ <soap:address location="http://localhost:8085/HelloWorldServiceComponent"/>
+ </port>
+ </service>
+</definitions>
+
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/HelloWorldImplService_schema1.xsd b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/HelloWorldImplService_schema1.xsd
new file mode 100644
index 0000000000..ff5f9c8f8a
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/HelloWorldImplService_schema1.xsd
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+-->
+<xs:schema version="1.0" targetNamespace="http://wahooo/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:complexType name="fBean">
+ <xs:sequence>
+ <xs:element name="field1" type="xs:string" minOccurs="0"/>
+ <xs:element name="field2" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
+
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/HelloWorldImplService_schema2.xsd b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/HelloWorldImplService_schema2.xsd
new file mode 100644
index 0000000000..9e88adc607
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/HelloWorldImplService_schema2.xsd
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+-->
+<xs:schema version="1.0" targetNamespace="http://test" xmlns:ns1="http://helloworld/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:import namespace="http://helloworld/" schemaLocation="HelloWorldImplService_schema4.xsd"/>
+
+ <xs:complexType name="aBean">
+ <xs:sequence>
+ <xs:element name="field1" type="xs:string" minOccurs="0"/>
+ <xs:element name="field2" type="xs:string" minOccurs="0"/>
+ <xs:element name="field3" type="ns1:bBean" minOccurs="0"/>
+ <xs:element name="field4" type="ns1:dBean" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
+
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/HelloWorldImplService_schema3.xsd b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/HelloWorldImplService_schema3.xsd
new file mode 100644
index 0000000000..01e04822c0
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/HelloWorldImplService_schema3.xsd
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+-->
+<xs:schema version="1.0" targetNamespace="http://other.jtest/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:complexType name="eBean">
+ <xs:sequence>
+ <xs:element name="field1" type="xs:string" minOccurs="0"/>
+ <xs:element name="field2" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
+
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/HelloWorldImplService_schema4.xsd b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/HelloWorldImplService_schema4.xsd
new file mode 100644
index 0000000000..95c82cb269
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/HelloWorldImplService_schema4.xsd
@@ -0,0 +1,237 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+-->
+<xs:schema version="1.0" targetNamespace="http://helloworld/" xmlns:ns2="http://wahooo/" xmlns:ns1="http://test" xmlns:ns3="http://other.jtest/" xmlns:tns="http://helloworld/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:import namespace="http://test" schemaLocation="HelloWorldImplService_schema2.xsd"/>
+
+ <xs:import namespace="http://wahooo/" schemaLocation="HelloWorldImplService_schema1.xsd"/>
+
+ <xs:import namespace="http://other.jtest/" schemaLocation="HelloWorldImplService_schema3.xsd"/>
+
+ <xs:element name="AnotherHelloWorldException" type="tns:AnotherHelloWorldException"/>
+
+ <xs:element name="HelloWorldException" type="tns:HelloWorldException"/>
+
+ <xs:element name="getGreetings" type="tns:getGreetings"/>
+
+ <xs:element name="getGreetingsABeanMultiple" type="tns:getGreetingsABeanMultiple"/>
+
+ <xs:element name="getGreetingsABeanMultipleResponse" type="tns:getGreetingsABeanMultipleResponse"/>
+
+ <xs:element name="getGreetingsAnotherException" type="tns:getGreetingsAnotherException"/>
+
+ <xs:element name="getGreetingsAnotherExceptionResponse" type="tns:getGreetingsAnotherExceptionResponse"/>
+
+ <xs:element name="getGreetingsBBean" type="tns:getGreetingsBBean"/>
+
+ <xs:element name="getGreetingsBBeanResponse" type="tns:getGreetingsBBeanResponse"/>
+
+ <xs:element name="getGreetingsBean" type="tns:getGreetingsBean"/>
+
+ <xs:element name="getGreetingsBeanArray" type="tns:getGreetingsBeanArray"/>
+
+ <xs:element name="getGreetingsBeanArrayResponse" type="tns:getGreetingsBeanArrayResponse"/>
+
+ <xs:element name="getGreetingsBeanResponse" type="tns:getGreetingsBeanResponse"/>
+
+ <xs:element name="getGreetingsByteArray" type="tns:getGreetingsByteArray"/>
+
+ <xs:element name="getGreetingsByteArrayResponse" type="tns:getGreetingsByteArrayResponse"/>
+
+ <xs:element name="getGreetingsCBean" type="tns:getGreetingsCBean"/>
+
+ <xs:element name="getGreetingsCBeanResponse" type="tns:getGreetingsCBeanResponse"/>
+
+ <xs:element name="getGreetingsDBean" type="tns:getGreetingsDBean"/>
+
+ <xs:element name="getGreetingsDBeanResponse" type="tns:getGreetingsDBeanResponse"/>
+
+ <xs:element name="getGreetingsException" type="tns:getGreetingsException"/>
+
+ <xs:element name="getGreetingsExceptionResponse" type="tns:getGreetingsExceptionResponse"/>
+
+ <xs:element name="getGreetingsResponse" type="tns:getGreetingsResponse"/>
+
+ <xs:complexType name="getGreetingsException">
+ <xs:sequence>
+ <xs:element name="arg0" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getGreetingsExceptionResponse">
+ <xs:sequence>
+ <xs:element name="return" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="HelloWorldException">
+ <xs:sequence>
+ <xs:element name="message" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getGreetingsBeanArray">
+ <xs:sequence>
+ <xs:element name="arg0" type="ns1:aBean" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="bBean">
+ <xs:sequence>
+ <xs:element name="field1" type="xs:string" minOccurs="0"/>
+ <xs:element name="field2" type="xs:string" minOccurs="0"/>
+ <xs:element name="field3" type="ns2:fBean" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="dBean">
+ <xs:sequence>
+ <xs:element name="field1" type="xs:string" minOccurs="0"/>
+ <xs:element name="field2" type="xs:string" minOccurs="0"/>
+ <xs:element name="field3" type="tns:bBean" minOccurs="0"/>
+ <xs:element name="field4" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="field1" type="xs:string" minOccurs="0"/>
+ <xs:element name="field2" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="field5" type="ns3:eBean" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getGreetingsBeanArrayResponse">
+ <xs:sequence>
+ <xs:element name="return" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getGreetingsByteArray">
+ <xs:sequence>
+ <xs:element name="arg0" type="xs:base64Binary" nillable="true" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getGreetingsByteArrayResponse">
+ <xs:sequence>
+ <xs:element name="return" type="xs:base64Binary" nillable="true" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getGreetingsBBean">
+ <xs:sequence>
+ <xs:element name="arg0" type="tns:bBean" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getGreetingsBBeanResponse">
+ <xs:sequence>
+ <xs:element name="return" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getGreetingsCBean">
+ <xs:sequence>
+ <xs:element name="arg0" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="field1" type="xs:string" minOccurs="0"/>
+ <xs:element name="field2" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getGreetingsCBeanResponse">
+ <xs:sequence>
+ <xs:element name="return" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getGreetingsAnotherException">
+ <xs:sequence>
+ <xs:element name="arg0" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getGreetingsAnotherExceptionResponse">
+ <xs:sequence>
+ <xs:element name="return" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="AnotherHelloWorldException">
+ <xs:sequence>
+ <xs:element name="message" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getGreetingsABeanMultiple">
+ <xs:sequence>
+ <xs:element name="arg0" type="ns1:aBean" minOccurs="0"/>
+ <xs:element name="arg1" type="ns1:aBean" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getGreetingsABeanMultipleResponse">
+ <xs:sequence>
+ <xs:element name="return" type="ns1:aBean" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getGreetingsBean">
+ <xs:sequence>
+ <xs:element name="arg0" type="ns1:aBean" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getGreetingsBeanResponse">
+ <xs:sequence>
+ <xs:element name="return" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getGreetingsDBean">
+ <xs:sequence>
+ <xs:element name="arg0" type="tns:dBean" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getGreetingsDBeanResponse">
+ <xs:sequence>
+ <xs:element name="return" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getGreetings">
+ <xs:sequence>
+ <xs:element name="arg0" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getGreetingsResponse">
+ <xs:sequence>
+ <xs:element name="return" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
+
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/README b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/README
new file mode 100644
index 0000000000..0830253f0a
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/main/resources/jaxws/wsgen/wsdl/README
@@ -0,0 +1,2 @@
+The result of the jaxws-maven-plugin copied manually from ./target
+and updated to include the correct port URL and license headers
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/test/java/datatypes/BaseFramework.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/test/java/datatypes/BaseFramework.java
new file mode 100644
index 0000000000..4cae4595a4
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/test/java/datatypes/BaseFramework.java
@@ -0,0 +1,266 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+package datatypes;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.wsdl.Binding;
+import javax.wsdl.Definition;
+import javax.wsdl.Fault;
+import javax.wsdl.Input;
+import javax.wsdl.Message;
+import javax.wsdl.Operation;
+import javax.wsdl.Output;
+import javax.wsdl.Part;
+import javax.wsdl.Port;
+import javax.wsdl.PortType;
+import javax.wsdl.Service;
+import javax.wsdl.Types;
+import javax.wsdl.extensions.ExtensibilityElement;
+import javax.wsdl.extensions.schema.Schema;
+import javax.wsdl.factory.WSDLFactory;
+import javax.wsdl.xml.WSDLReader;
+import javax.xml.namespace.QName;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.tuscany.sca.TuscanyRuntime;
+import org.apache.tuscany.sca.binding.ws.wsdlgen.WSDLServiceGenerator;
+import static org.junit.Assert.assertNotNull;
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+
+/**
+ * Test ?wsdl works and that the returned WSDL is correct
+ *
+ * @version $Rev: 814373 $ $Date: 2009-09-13 19:06:29 +0100 (Sun, 13 Sep 2009) $
+ */
+public class BaseFramework {
+ private static final String SCHEMA_NS = "http://www.w3.org/2001/XMLSchema";
+ private static final String SCHEMA_NAME = "schema";
+ private static final QName SCHEMA_QNAME = new QName(SCHEMA_NS, SCHEMA_NAME);
+
+ private static Map<String, Element> schemaMap;
+ private static PortType portType;
+ private static boolean printWSDL = true;
+ private static org.apache.tuscany.sca.Node node;
+
+ private Map<String, String> prefixMap;
+
+ public BaseFramework() {
+ // create a new instance of this for each of the tests
+ prefixMap = new HashMap<String, String>();
+ }
+
+ protected Element parameterElement(String methodName) {
+ Operation op = portType.getOperation(methodName, null, null);
+ Input in = op.getInput();
+ Message msg = in.getMessage();
+ Part part = msg.getPart(msg.getQName().getLocalPart());
+ if (part == null) {
+ // bare parameter style
+ part = msg.getPart("arg0");
+ return bareElement(part.getElementName());
+ } else {
+ return schemaElement(part.getElementName());
+ }
+ }
+
+ protected String parameterType(String methodName) {
+ return parameterElement(methodName).getAttribute("type");
+ }
+
+ protected Element returnElement(String methodName) {
+ Operation op = portType.getOperation(methodName, null, null);
+ Output out = op.getOutput();
+ Message msg = out.getMessage();
+ Part part = msg.getPart(msg.getQName().getLocalPart());
+ QName elementQName = part.getElementName();
+ return schemaElement(elementQName);
+ }
+
+ protected String returnType(String methodName) {
+ return returnElement(methodName).getAttribute("type");
+ }
+
+ protected Element faultElement(String methodName, String faultName) {
+ Operation op = portType.getOperation(methodName, null, null);
+ Fault fault = op.getFault(faultName);
+ Message msg = fault.getMessage();
+ Part part = msg.getPart(msg.getQName().getLocalPart());
+ QName elementQName = part.getElementName();
+ return schemaElement(elementQName);
+ }
+
+ protected String faultType(String methodName, String faultName) {
+ return faultElement(methodName, faultName).getAttribute("type");
+ }
+
+ private Element bareElement(QName elementQName) {
+ // find schema definition for wrapper element
+ Element schema = schemaMap.get(elementQName.getNamespaceURI());
+
+ // find namespace prefixes for this schema definition
+ NamedNodeMap attrNodes = schema.getAttributes();
+ for (int i = 0; i < attrNodes.getLength(); i++) {
+ Attr attr = (Attr)attrNodes.item(i);
+ String attrName = attr.getName();
+ if (attrName.startsWith("xmlns:")) {
+ prefixMap.put(attrName.substring(6), attr.getValue());
+ }
+ }
+
+ // find wrapper element definition in schema
+ String elementName = elementQName.getLocalPart();
+ Element wrapper = null;
+ NodeList childNodes = schema.getElementsByTagNameNS(SCHEMA_NS, "element");
+ for (int i = 0; i < childNodes.getLength(); i++) {
+ Node childNode = childNodes.item(i);
+ if (childNode instanceof Element) {
+ String name = ((Element)childNode).getAttribute("name");
+ if (elementName.equals(name)) {
+ wrapper = (Element)childNode;
+ break;
+ }
+ }
+ }
+ return wrapper;
+ }
+
+ private Element schemaElement(QName elementQName) {
+ Element wrapper = bareElement(elementQName);
+
+ // find type definition for wrapper element
+ String typeName = wrapper.getAttribute("type");
+ Element wrapperType = null;
+ if ("".equals(typeName)) {
+ NodeList childNodes = wrapper.getElementsByTagNameNS(SCHEMA_NS, "complexType");
+ wrapperType = (Element)childNodes.item(0);
+ } else {
+ wrapperType = typeDefinition(typeName);
+ }
+
+ return firstChild(wrapperType);
+ }
+
+ protected Element typeDefinition(String typeName) {
+ String typePrefix = typeName.substring(0, typeName.indexOf(":"));
+ String typeLocalName = typeName.substring(typeName.indexOf(":") + 1);
+ Element typeSchema = schemaMap.get(prefixMap.get(typePrefix));
+ Element typeElement = null;
+ NodeList childNodes = typeSchema.getElementsByTagNameNS(SCHEMA_NS, "complexType");
+ for (int i = 0; i < childNodes.getLength(); i++) {
+ Node childNode = childNodes.item(i);
+ if (childNode instanceof Element) {
+ String name = ((Element)childNode).getAttribute("name");
+ if (typeLocalName.equals(name)) {
+ typeElement = (Element)childNode;
+ break;
+ }
+ }
+ }
+ return typeElement;
+ }
+
+ protected Element firstChild(Element complexType) {
+ // find xs:sequence child element
+ NodeList childNodes = complexType.getElementsByTagNameNS(SCHEMA_NS, "sequence");
+ Element sequence = (Element)childNodes.item(0);
+
+ // find first xs:element child element
+ childNodes = sequence.getElementsByTagNameNS(SCHEMA_NS, "element");
+ return (Element)childNodes.item(0);
+ }
+
+ protected Element extensionElement(Element complexType) {
+ // find xs:complexContent child element
+ NodeList childNodes = complexType.getElementsByTagNameNS(SCHEMA_NS, "complexContent");
+ Element complexContent = (Element)childNodes.item(0);
+
+ // find first xs:extension child element
+ childNodes = complexContent.getElementsByTagNameNS(SCHEMA_NS, "extension");
+ return (Element)childNodes.item(0);
+ }
+
+ private static void readWSDL(String componentName, String serviceName) throws Exception {
+ WSDLReader wsdlReader = WSDLFactory.newInstance().newWSDLReader();
+ wsdlReader.setFeature("javax.wsdl.verbose",false);
+ wsdlReader.setFeature("javax.wsdl.importDocuments",true);
+
+ Definition definition = wsdlReader.readWSDL("http://localhost:8085/" + serviceName + "?wsdl");
+ assertNotNull(definition);
+
+ // find portType
+ Service service = definition.getService(new QName("http://datatypes/", componentName+'_'+serviceName));
+ Port port = service.getPort(serviceName + "SOAP11Port");
+ Binding binding = port.getBinding();
+ portType = binding.getPortType();
+
+ // find schema definitions
+ Types types = definition.getTypes();
+ schemaMap = new HashMap<String, Element>();
+ for (Object ext : types.getExtensibilityElements()) {
+ ExtensibilityElement extElement = (ExtensibilityElement)ext;
+ if (SCHEMA_QNAME.equals(extElement.getElementType())) {
+ if (extElement instanceof Schema) {
+ Element schemaElement = ((Schema)extElement).getElement();
+ schemaMap.put(schemaElement.getAttribute("targetNamespace"), schemaElement);
+ }
+ }
+ }
+ }
+
+ /*
+ * Used for debugging DOM problems
+ */
+ private void printDOM(Node node){
+ try {
+ Transformer transformer = TransformerFactory.newInstance().newTransformer();
+ Source source = new DOMSource(node);
+ Result result = new StreamResult(System.out);
+ transformer.transform(source, result);
+ } catch (Exception ex){
+ ex.printStackTrace();
+ }
+ }
+
+ protected static void start(String componentName, String serviceName) throws Exception {
+ WSDLServiceGenerator.printWSDL = printWSDL;
+ node = TuscanyRuntime.newInstance().createNode("default");
+ node.installContribution("datatypescontrib", "target/classes", null, null);
+ node.startComposite("datatypescontrib", "DataTypes.composite");
+ printWSDL = false; // print WSDL once only
+ readWSDL(componentName, serviceName);
+ }
+
+ protected static void stop() throws Exception {
+ node.stop();
+ }
+}
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/test/java/datatypes/DataTypesTestCase.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/test/java/datatypes/DataTypesTestCase.java
new file mode 100644
index 0000000000..1e83fe3435
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/test/java/datatypes/DataTypesTestCase.java
@@ -0,0 +1,186 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+package datatypes;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.w3c.dom.Element;
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Test ?wsdl works and that the returned WSDL is correct
+ *
+ * @version $Rev: 814373 $ $Date: 2009-09-13 19:06:29 +0100 (Sun, 13 Sep 2009) $
+ */
+public class DataTypesTestCase extends BaseFramework {
+
+ @Test
+ public void testSimpleInt() throws Exception {
+ assertEquals("xs:int", parameterType("testSimpleInt"));
+ }
+
+ @Test
+ public void testSimpleArrayInt() throws Exception {
+ Element paramElement = parameterElement("testSimpleArrayInt");
+ assertEquals("xs:int", paramElement.getAttribute("type"));
+ assertEquals("unbounded", paramElement.getAttribute("maxOccurs"));
+ }
+
+ @Test
+ public void testSimpleMultiArrayInt() throws Exception {
+ Element paramElement = parameterElement("testSimpleMultiArrayInt");
+ // prefix name can vary, so compare only the fixed parts
+ assertEquals("ns", paramElement.getAttribute("type").substring(0, 2));
+ assertEquals(":intArray", paramElement.getAttribute("type").substring(3));
+ assertEquals("unbounded", paramElement.getAttribute("maxOccurs"));
+ }
+
+ @Test
+ public void testSimpleMulti3ArrayInt() throws Exception {
+ Element paramElement = parameterElement("testSimpleMulti3ArrayInt");
+ // prefix name can vary, so compare only the fixed parts
+ assertEquals("ns", paramElement.getAttribute("type").substring(0, 2));
+ assertEquals(":intArrayArray", paramElement.getAttribute("type").substring(3));
+ assertEquals("unbounded", paramElement.getAttribute("maxOccurs"));
+ }
+
+ @Test
+ public void testList() throws Exception {
+ Element paramElement = parameterElement("testList");
+ assertEquals("xs:anyType", paramElement.getAttribute("type"));
+ assertEquals("unbounded", paramElement.getAttribute("maxOccurs"));
+ }
+
+ @Test
+ public void testSimpleListString() throws Exception {
+ Element paramElement = parameterElement("testSimpleListString");
+ assertEquals("xs:string", paramElement.getAttribute("type"));
+ assertEquals("unbounded", paramElement.getAttribute("maxOccurs"));
+ }
+
+ @Test
+ public void testReturnSimpleListString() throws Exception {
+ Element retElement = returnElement("testReturnSimpleListString");
+ assertEquals("xs:string", retElement.getAttribute("type"));
+ assertEquals("unbounded", retElement.getAttribute("maxOccurs"));
+ }
+
+ @Test
+ public void testListByteArray() throws Exception {
+ Element paramElement = parameterElement("testListByteArray");
+ assertEquals("xs:base64Binary", paramElement.getAttribute("type"));
+ assertEquals("unbounded", paramElement.getAttribute("maxOccurs"));
+ }
+
+ @Test
+ public void testListWildcard() throws Exception {
+ Element paramElement = parameterElement("testListWildcard");
+ assertEquals("xs:anyType", paramElement.getAttribute("type"));
+ assertEquals("unbounded", paramElement.getAttribute("maxOccurs"));
+ }
+
+ @Test
+ public void testComplex() throws Exception {
+ String paramType = parameterType("testComplex");
+ assertEquals("tns:complexNumber", paramType);
+ assertEquals("xs:double", firstChild(typeDefinition(paramType)).getAttribute("type"));
+ }
+
+ @Test
+ public void testOtherPackage() throws Exception {
+ String paramType = parameterType("testOtherPackage");
+ // prefix name can vary, so compare only the fixed parts
+ assertEquals("ns", paramType.substring(0, 2));
+ assertEquals(":otherPojo", paramType.substring(3));
+ assertEquals("xs:double", firstChild(typeDefinition(paramType)).getAttribute("type"));
+ }
+
+ @Test
+ public void testByteArray() throws Exception {
+ assertEquals("xs:base64Binary", parameterType("testByteArray"));
+ }
+
+ @Test
+ public void testBaseExtension() throws Exception {
+ String paramType = parameterType("testBaseExtension");
+ assertEquals("tns:extClass", paramType);
+ assertEquals("tns:baseClass", extensionElement(typeDefinition(paramType)).getAttribute("base"));
+ }
+
+ @Test
+ public void testServiceReference() throws Exception {
+ assertEquals("xs:anyType", parameterType("testServiceReference"));
+ }
+
+ @Test
+ public void testException() throws Exception {
+ assertEquals("xs:string", faultType("testException", "Exception"));
+ }
+
+ @Test
+ public void testDynamicSDO() throws Exception {
+ assertEquals("xs:anyType", returnType("testDynamicSDO"));
+ }
+
+ @Test
+ public void testWebParamSDO() throws Exception {
+ Element paramElement = parameterElement("testWebParamSDO");
+ assertEquals("foo", paramElement.getAttribute("name"));
+ assertEquals("xs:anyType", paramElement.getAttribute("type"));
+ }
+
+ @Test
+ public void testWebParamSDOArray() throws Exception {
+ Element paramElement = parameterElement("testWebParamSDOArray");
+ assertEquals("foo", paramElement.getAttribute("name"));
+ assertEquals("xs:anyType", paramElement.getAttribute("type"));
+ assertEquals("unbounded", paramElement.getAttribute("maxOccurs"));
+ }
+/*
+
+ @Test
+ public void testWebParamBare() throws Exception {
+ Element paramElement = parameterElement("testWebParamBare");
+ assertEquals("simpleInt", paramElement.getAttribute("name"));
+ assertEquals("xs:int", paramElement.getAttribute("type"));
+ }
+
+ @Test
+ @Ignore
+ public void testWebParamBareArray() throws Exception {
+ Element paramElement = parameterElement("testWebParamBareArray");
+ assertEquals("arrayInt", paramElement.getAttribute("name"));
+ assertEquals("xs:int", paramElement.getAttribute("type"));
+ assertEquals("unbounded", paramElement.getAttribute("maxOccurs"));
+ }
+*/
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ BaseFramework.start("DataTypes", "DataTypes");
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ BaseFramework.stop();
+ }
+}
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/test/java/datatypes/DynamicSDOTestCase.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/test/java/datatypes/DynamicSDOTestCase.java
new file mode 100644
index 0000000000..94d7765466
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/test/java/datatypes/DynamicSDOTestCase.java
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+package datatypes;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.w3c.dom.Element;
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Test ?wsdl works and that the returned WSDL is correct
+ *
+ * @version $Rev: 814373 $ $Date: 2009-09-13 19:06:29 +0100 (Sun, 13 Sep 2009) $
+ */
+public class DynamicSDOTestCase extends BaseFramework {
+
+ @Test
+ public void testGetMessage() throws Exception {
+ assertEquals("xs:base64Binary", returnType("getMessage"));
+ }
+
+ @Test
+ public void testGetMessageList() throws Exception {
+ Element retElement = returnElement("getMessageList");
+ assertEquals("xs:base64Binary", retElement.getAttribute("type"));
+ assertEquals("unbounded", retElement.getAttribute("maxOccurs"));
+ }
+
+ @Test
+ public void testGetMessageSDO() throws Exception {
+ assertEquals("xs:anyType", returnType("getMessageSDO"));
+ }
+
+ @Test
+ public void testGetMessageListSDOList() throws Exception {
+ Element retElement = returnElement("getMessageListSDOList");
+ assertEquals("xs:anyType", retElement.getAttribute("type"));
+ assertEquals("unbounded", retElement.getAttribute("maxOccurs"));
+ }
+
+ @Test
+ public void testGetMessageListSDOArr() throws Exception {
+ Element retElement = returnElement("getMessageListSDOArr");
+ assertEquals("xs:anyType", retElement.getAttribute("type"));
+ assertEquals("unbounded", retElement.getAttribute("maxOccurs"));
+ }
+
+ @Test
+ public void testGetMessageListSDOinSDO() throws Exception {
+ assertEquals("xs:anyType", returnType("getMessageListSDOinSDO"));
+ }
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ BaseFramework.start("DynamicSDO", "GetDataServiceWithoutException");
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ BaseFramework.stop();
+ }
+}
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/test/java/helloworld/SchemaCorrectionTestCase.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/test/java/helloworld/SchemaCorrectionTestCase.java
new file mode 100644
index 0000000000..39f5380a00
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/test/java/helloworld/SchemaCorrectionTestCase.java
@@ -0,0 +1,462 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package helloworld;
+
+import java.io.IOException;
+import java.lang.annotation.Annotation;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.SchemaOutputResolver;
+import javax.xml.bind.annotation.XmlSchema;
+import javax.xml.namespace.QName;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMResult;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.tuscany.sca.Node;
+import org.apache.tuscany.sca.TuscanyRuntime;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.databinding.jaxb.JAXBContextHelper;
+import org.apache.tuscany.sca.databinding.jaxb.JAXBTypeHelper;
+import org.apache.tuscany.sca.impl.NodeImpl;
+import org.apache.tuscany.sca.interfacedef.java.jaxws.GeneratedClassLoader;
+import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.apache.ws.commons.schema.XmlSchemaComplexType;
+import org.apache.ws.commons.schema.XmlSchemaElement;
+import org.apache.ws.commons.schema.XmlSchemaGroupBase;
+import org.apache.ws.commons.schema.XmlSchemaImport;
+import org.apache.ws.commons.schema.XmlSchemaObject;
+import org.apache.ws.commons.schema.XmlSchemaObjectCollection;
+import org.apache.ws.commons.schema.XmlSchemaSerializer.XmlSchemaSerializerException;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.objectweb.asm.AnnotationVisitor;
+import org.objectweb.asm.ClassWriter;
+import org.objectweb.asm.FieldVisitor;
+import org.objectweb.asm.MethodVisitor;
+import org.objectweb.asm.Opcodes;
+import org.w3c.dom.Document;
+
+import anotherpackage.BBean;
+import anotherpackage.CBean;
+import yetanotherpackage.DBean;
+
+/**
+ * Tests that the helloworld server is available
+ */
+@Ignore("Just some scratch code I don't want to loose just yet")
+public class SchemaCorrectionTestCase{
+
+ private Node node;
+
+ @Before
+ public void startServer() throws Exception {
+ node = TuscanyRuntime.newInstance().createNode("default");
+ }
+
+ @Test
+ public void testSchemaGen() throws JAXBException, IOException, TransformerException, Exception {
+ ExtensionPointRegistry extensionPointRegistry = ((NodeImpl)node).getExtensionPointRegistry();
+ JAXBTypeHelper typeHelper = new JAXBTypeHelper(extensionPointRegistry);
+ JAXBContextHelper contextHelper = new JAXBContextHelper(extensionPointRegistry);
+
+ //typeHelper.getSchemaDefinitions(factory, resolver, intf);
+
+ Package pkg = CBean.class.getPackage();
+ String pkgName = pkg.getName();
+ Annotation[] pkgAnnotations = pkg.getAnnotations();
+ boolean genPkgInfo = true;
+
+ for (Annotation annotation : pkgAnnotations){
+ if (annotation instanceof XmlSchema){
+ XmlSchema schemaAnnotation = (XmlSchema)annotation;
+ if (schemaAnnotation.namespace() != null){
+ genPkgInfo = false;
+ break;
+ }
+ }
+ }
+
+ JAXBContext context = null;
+
+ if (genPkgInfo){
+ System.out.println("There is no package info so generate one");
+/* Can gen the annotation but then what?
+ Class<?> genClass = generatePackageInfo(pkgName, "http://sometestsnamespace");
+
+ Package pkgGen = aClass.getPackage();
+ String pkgGenName = pkg.getName();
+ Annotation[] pkgGenAnnotations = pkg.getAnnotations();
+ XmlSchema schemaAnnotation = null;
+
+ for (Annotation annotation : pkgGenAnnotations){
+ if (annotation instanceof XmlSchema){
+ schemaAnnotation = (XmlSchema)annotation;
+ }
+ }
+
+ pkgAnnotations = pkgGenAnnotations;
+*/
+
+/* Can't pass the generarted package into JAXB. It has to
+ * be properly referenced as a package of a class you're trying
+ * generate.
+ Class<?>[] classes = {aClass, genClass};
+ context = contextHelper.createJAXBContext(classes);
+*/
+ } else {
+ System.out.println("There is package info");
+ }
+
+ Class<?>[] classes = {ABean.class, BBean.class, CBean.class, DBean.class};
+ context = contextHelper.createJAXBContext(classes);
+
+ DOMResolverImpl resolver = new DOMResolverImpl();
+ context.generateSchema(resolver);
+
+ String toNamespace = null;
+ String fromNamespace = null;
+ Document toDocument = null;
+ Document fromDocument = null;
+ Map<String, Document> otherDocuments = new HashMap<String, Document>();
+
+ Map<String, DOMResult> results = resolver.getResults();
+ for (Map.Entry<String, DOMResult> entry : results.entrySet()) {
+ System.out.println("\nPREMERGE NS: " + entry.getKey());
+ if (entry.getKey().equals("")){
+ fromNamespace = entry.getKey();
+ fromDocument = (Document)entry.getValue().getNode();
+ } else if (entry.getKey().equals("http://helloworld/")){
+ toNamespace = entry.getKey();
+ toDocument = (Document)entry.getValue().getNode();
+ } else {
+ otherDocuments.put(entry.getKey(), (Document)entry.getValue().getNode());
+ }
+ System.out.println("PREMERGE XSD: ");
+ printDOM((Document)entry.getValue().getNode());
+ }
+
+ // merge no-namespace XSD into default namespace XSD
+ System.out.println("\nPOSTMERGE");
+ List<Document> mergedDocuments = mergeSchema(fromNamespace, fromDocument, toNamespace, toDocument, otherDocuments.values());
+
+ for (Document mergedDocument : mergedDocuments){
+ System.out.println("\n");
+ printDOM(mergedDocument);
+ }
+ }
+
+ @After
+ public void stopServer() throws Exception {
+
+ }
+
+ private static class DOMResolverImpl extends SchemaOutputResolver {
+ private Map<String, DOMResult> results = new HashMap<String, DOMResult>();
+
+ @Override
+ public Result createOutput(String ns, String file) throws IOException {
+ DOMResult result = new DOMResult();
+ // TUSCANY-2498: Set the system id to "" so that the xsd:import doesn't produce
+ // an illegal schemaLocation attr
+ result.setSystemId("");
+ results.put(ns, result);
+ return result;
+ }
+
+ public Map<String, DOMResult> getResults() {
+ return results;
+ }
+ }
+
+ private void printDOM(Document document)throws TransformerException {
+ Transformer transformer = TransformerFactory.newInstance().newTransformer();
+ Source source = new DOMSource(document);
+ Result output = new StreamResult(System.out);
+ transformer.transform(source, output);
+ }
+
+ public Class<?> generatePackageInfo(String packageName, String namespace) throws Exception{
+ String className = packageName + ".package-info";
+ String internalClassName = className.replace('.', '/');
+
+ PackageInfoGenerator pig = new PackageInfoGenerator();
+
+ byte[] byteCode = pig.dump(internalClassName, namespace);
+
+ GeneratedClassLoader classLoader = new GeneratedClassLoader(this.getClass().getClassLoader());
+ return classLoader.getGeneratedClass(className, byteCode);
+ }
+
+
+ public class PackageInfoGenerator implements Opcodes {
+
+ public byte[] dump (String internalClassName, String namespace) throws Exception {
+ ClassWriter cw = new ClassWriter(0);
+ FieldVisitor fv;
+ MethodVisitor mv;
+ AnnotationVisitor av0;
+
+ cw.visit(V1_6, ACC_ABSTRACT + ACC_INTERFACE + ACC_SYNTHETIC, internalClassName, null, "java/lang/Object", null);
+
+ cw.visitSource("package-info.java", null);
+
+
+ av0 = cw.visitAnnotation("Ljavax/xml/bind/annotation/XmlSchema;", true);
+ av0.visit("namespace", namespace);
+ av0.visitEnd();
+
+ cw.visitEnd();
+
+ return cw.toByteArray();
+ }
+ }
+
+ private List<Document> mergeSchema(String fromNamespace, Document fromDoc, String toNamespace, Document toDoc, Collection<Document> relatedDocs) throws XmlSchemaSerializerException{
+ // Read all the input DOMs into a schema collection so we can maniuplate them
+ XmlSchemaCollection schemaCollection = new XmlSchemaCollection();
+ schemaCollection.read(fromDoc.getDocumentElement());
+ schemaCollection.read(toDoc.getDocumentElement());
+
+ for(Document doc : relatedDocs){
+ schemaCollection.read(doc.getDocumentElement());
+ }
+
+ org.apache.ws.commons.schema.XmlSchema fromSchema = null;
+ org.apache.ws.commons.schema.XmlSchema toSchema = null;
+ List<org.apache.ws.commons.schema.XmlSchema> relatedSchema = new ArrayList<org.apache.ws.commons.schema.XmlSchema>();
+ org.apache.ws.commons.schema.XmlSchema schemas[] = schemaCollection.getXmlSchemas();
+ for (int i=1; i < schemas.length; i++){
+ org.apache.ws.commons.schema.XmlSchema schema = schemas[i];
+ if (schema.getTargetNamespace() == null){
+ fromSchema = schema;
+ } else if (schema.getTargetNamespace().equals(toNamespace)){
+ toSchema = schema;
+ relatedSchema.add(schema);
+ } else {
+ relatedSchema.add(schema);
+ }
+ }
+
+ // copy all the FROM items to the TO schema
+ XmlSchemaObjectCollection fromItems = fromSchema.getItems();
+ XmlSchemaObjectCollection toItems = toSchema.getItems();
+
+ Iterator<XmlSchemaObject> iter = fromItems.getIterator();
+ while(iter.hasNext()){
+ // don't copy import for TO namespace
+ XmlSchemaObject obj = iter.next();
+ if (obj instanceof XmlSchemaImport &&
+ ((XmlSchemaImport)obj).getNamespace().equals(toNamespace)){
+ // do nothing
+ } else {
+ toItems.add(obj);
+ // correct any references to the item just moved
+ fixUpMovedTypeReferences(fromNamespace, toNamespace, obj, relatedSchema);
+ }
+ }
+
+ // Create the list of resulting DOMs
+ List<Document> resultDocs = new ArrayList<Document>();
+
+ for (org.apache.ws.commons.schema.XmlSchema related : relatedSchema){
+ resultDocs.add(related.getSchemaDocument());
+ }
+
+ return resultDocs;
+ }
+
+ public void fixUpMovedTypeReferences(String fromNamespace, String toNamespace, XmlSchemaObject fixUpObj, List<org.apache.ws.commons.schema.XmlSchema> relatedSchema){
+
+ if (!(fixUpObj instanceof XmlSchemaComplexType)){
+ return;
+ }
+
+ for (org.apache.ws.commons.schema.XmlSchema schema : relatedSchema){
+ int importRemoveIndex = -1;
+ for (int i = 0; i < schema.getItems().getCount(); i++){
+ XmlSchemaObject obj = schema.getItems().getItem(i);
+
+ // if this is not the TO schema then fix up all references
+ // to items moved to the TO schema
+ if(!schema.getTargetNamespace().equals(toNamespace)){
+ processXMLSchemaObject(toNamespace, obj, fixUpObj);
+ }
+
+ // remove FROM imports
+ if (obj instanceof XmlSchemaImport &&
+ ((XmlSchemaImport)obj).getNamespace().equals(fromNamespace)){
+ importRemoveIndex = i;
+ }
+ }
+
+ if (importRemoveIndex >= 0){
+ schema.getItems().removeAt(importRemoveIndex);
+ }
+ }
+ }
+
+ public void processXMLSchemaObject(String toNamespace, XmlSchemaObject obj, XmlSchemaObject fixUpObj){
+ if (obj instanceof XmlSchemaComplexType){
+ processXMLSchemaObject(toNamespace, ((XmlSchemaComplexType)obj).getParticle(), fixUpObj);
+ } else if (obj instanceof XmlSchemaElement){
+ XmlSchemaElement element = (XmlSchemaElement)obj;
+ if(element.getSchemaType() == fixUpObj){
+ QName name = element.getSchemaTypeName();
+ QName newName = new QName(toNamespace, name.getLocalPart());
+ element.setSchemaTypeName(newName);
+ }
+ ((XmlSchemaElement)obj).getSchemaType();
+ } else if (obj instanceof XmlSchemaGroupBase){
+ XmlSchemaObjectCollection items = ((XmlSchemaGroupBase)obj).getItems();
+ Iterator<XmlSchemaObject> iter = items.getIterator();
+ while(iter.hasNext()){
+ processXMLSchemaObject(toNamespace, iter.next(), fixUpObj);
+ }
+ }
+ }
+
+/*
+ private List<Document> mergeSchema(String fromNamespace, Document fromDoc, String toNamespace, Document toDoc, Collection<Document> relatedDocs) throws XmlSchemaSerializerException{
+ XmlSchemaCollection schemaCollection = new XmlSchemaCollection();
+ schemaCollection.read(fromDoc.getDocumentElement());
+ schemaCollection.read(toDoc.getDocumentElement());
+
+ for(Document doc : relatedDocs){
+ schemaCollection.read(doc.getDocumentElement());
+ }
+
+ org.apache.ws.commons.schema.XmlSchema fromSchema = null;
+ org.apache.ws.commons.schema.XmlSchema toSchema = null;
+ List<org.apache.ws.commons.schema.XmlSchema> relatedSchema = new ArrayList<org.apache.ws.commons.schema.XmlSchema>();
+ org.apache.ws.commons.schema.XmlSchema schemas[] = schemaCollection.getXmlSchemas();
+ for (int i=1; i < schemas.length; i++){
+ org.apache.ws.commons.schema.XmlSchema schema = schemas[i];
+ if (schema.getTargetNamespace() == null){
+ fromSchema = schema;
+ } else if (schema.getTargetNamespace().equals(toNamespace)){
+ toSchema = schema;
+ } else {
+ relatedSchema.add(schema);
+ }
+ }
+
+ // add all the FROM items to the TO schema
+ XmlSchemaObjectCollection fromItems = fromSchema.getItems();
+ XmlSchemaObjectCollection toItems = toSchema.getItems();
+
+ Iterator<XmlSchemaObject> iter = fromItems.getIterator();
+ while(iter.hasNext()){
+ // don't copy import for TO namespace
+ XmlSchemaObject obj = iter.next();
+ if (obj instanceof XmlSchemaImport &&
+ ((XmlSchemaImport)obj).getNamespace().equals(toNamespace)){
+ // do nothing
+ } else {
+ toItems.add(obj);
+ fixUpMovedTypeReferences(fromNamespace, toNamespace, obj, relatedSchema);
+ }
+ }
+
+ // remove the FROM namespace from TO schema includes list
+ XmlSchemaObjectCollection toIncludes = toSchema.getIncludes();
+ XmlSchemaImport schemaImport = null;
+ iter = toIncludes.getIterator();
+ while(iter.hasNext()){
+ XmlSchemaImport tmpImport = (XmlSchemaImport)iter.next();
+ if (tmpImport.getNamespace().equals(fromNamespace)){
+ schemaImport = tmpImport;
+ break;
+ }
+ }
+
+ if (schemaImport != null){
+ toIncludes.remove(schemaImport);
+ toItems.remove(schemaImport);
+ }
+
+ List<Document> resultDocs = new ArrayList<Document>();
+ resultDocs.add(toSchema.getSchemaDocument());
+
+ for (org.apache.ws.commons.schema.XmlSchema related : relatedSchema){
+ resultDocs.add(related.getSchemaDocument());
+ }
+
+ return resultDocs;
+ }
+
+ public void fixUpMovedTypeReferences(String fromNamespace, String toNamespace, XmlSchemaObject fixUpObj, List<org.apache.ws.commons.schema.XmlSchema> relatedSchema){
+ for (org.apache.ws.commons.schema.XmlSchema schema : relatedSchema){
+ XmlSchemaObjectCollection items = schema.getItems();
+ Iterator<XmlSchemaObject> iter = items.getIterator();
+ XmlSchemaImport importToRemove = null;
+ while(iter.hasNext()){
+ XmlSchemaObject obj = iter.next();
+ processXMLSchemaObject(toNamespace, obj, fixUpObj);
+
+ // remote FROM imports
+ if (obj instanceof XmlSchemaImport &&
+ ((XmlSchemaImport)obj).getNamespace().equals(fromNamespace)){
+ importToRemove = (XmlSchemaImport)obj;
+ }
+ }
+
+ if (importToRemove != null){
+ items.remove(importToRemove);
+ schema.getIncludes().remove(importToRemove);
+ }
+ }
+ }
+
+ public void processXMLSchemaObject(String toNamespace, XmlSchemaObject obj, XmlSchemaObject fixUpObj){
+ if (obj instanceof XmlSchemaComplexType){
+ processXMLSchemaObject(toNamespace, ((XmlSchemaComplexType)obj).getParticle(), fixUpObj);
+ } else if (obj instanceof XmlSchemaElement){
+ XmlSchemaElement element = (XmlSchemaElement)obj;
+ if(element.getSchemaType() == fixUpObj){
+ QName name = element.getSchemaTypeName();
+ QName newName = new QName(toNamespace, name.getLocalPart());
+ element.setSchemaTypeName(newName);
+ }
+ ((XmlSchemaElement)obj).getSchemaType();
+ } else if (obj instanceof XmlSchemaGroupBase){
+ XmlSchemaObjectCollection items = ((XmlSchemaGroupBase)obj).getItems();
+ Iterator<XmlSchemaObject> iter = items.getIterator();
+ while(iter.hasNext()){
+ processXMLSchemaObject(toNamespace, iter.next(), fixUpObj);
+ }
+ }
+ }
+ */
+
+} \ No newline at end of file
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/test/java/helloworld/WSDLGenTestCase.java b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/test/java/helloworld/WSDLGenTestCase.java
new file mode 100644
index 0000000000..6954a8a7ac
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/src/test/java/helloworld/WSDLGenTestCase.java
@@ -0,0 +1,184 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package helloworld;
+
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.fail;
+
+import java.io.IOException;
+import java.net.URL;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.Service;
+
+import org.apache.tuscany.sca.Node;
+import org.apache.tuscany.sca.TuscanyRuntime;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.oasisopen.sca.NoSuchServiceException;
+
+import yetanotherpackage.DBean;
+
+import anotherpackage.BBean;
+
+/**
+ * Tests that the helloworld server is available
+ */
+public class WSDLGenTestCase{
+
+ private Node node;
+
+ @Before
+ public void startServer() throws Exception {
+ node = TuscanyRuntime.newInstance().createNode("default");
+ node.installContribution("helloworld", "target/classes", null, null);
+ node.startComposite("helloworld", "helloworld.composite");
+ }
+
+ @Ignore
+ @Test
+ public void testWaitForInput() {
+ System.out.println("Press a key to end");
+ try {
+ System.in.read();
+ } catch (Exception ex) {
+ }
+ System.out.println("Shutting down");
+ }
+
+ @Test
+ public void testComponentSCA() throws IOException, NoSuchServiceException {
+ HelloWorldService helloWorldService = node.getService(HelloWorldService.class, "HelloWorldServiceComponent/HelloWorldService");
+ assertNotNull(helloWorldService);
+
+ HelloWorldService helloWorldClient = node.getService(HelloWorldService.class, "HelloWorldClientComponent/HelloWorldService");
+ assertNotNull(helloWorldClient);
+
+ assertEquals("Hello Smith", helloWorldService.getGreetings("Smith"));
+ assertEquals("Hello Hello Smith", helloWorldClient.getGreetings("Smith"));
+
+ BBean bbean = new BBean();
+ bbean.setField1("1");
+ bbean.setField2("2");
+
+ DBean abean = new DBean();
+ abean.setField1("3");
+ abean.setField2("4");
+ abean.setField3(bbean);
+
+ assertEquals("Hello Hello 3 4 1 2", helloWorldClient.getGreetingsDBean(abean));
+
+ try {
+ helloWorldClient.getGreetingsException("Fred");
+ fail("exception not returned");
+ } catch(Exception ex) {
+
+ }
+ }
+
+ @Test
+ public void testComponentJAXWSwsgen() throws IOException {
+
+ // talk to the service using JAXWS with WSDL generated from this service using wsgen
+ // the idea here is to demonstrate that the service is providing a JAXWS compliant
+ // interface
+ QName serviceName = new QName("http://helloworld/", "HelloWorldImplService");
+ QName portName = new QName("http://helloworld/", "HelloWorldImplPort");
+ URL wsdlLocation = this.getClass().getClassLoader().getResource("jaxws/wsgen/wsdl/HelloWorldImplService.wsdl");
+ Service webService = Service.create( wsdlLocation, serviceName );
+ HelloWorldService wsProxy = (HelloWorldService) webService.getPort(portName, HelloWorldService.class);
+
+ assertEquals("Hello Fred", wsProxy.getGreetings("Fred"));
+
+ BBean bbean = new BBean();
+ bbean.setField1("1");
+ bbean.setField2("2");
+
+ DBean abean = new DBean();
+ abean.setField1("3");
+ abean.setField2("4");
+ abean.setField3(bbean);
+
+ assertEquals("Hello 3 4 1 2", wsProxy.getGreetingsDBean(abean));
+
+ String byteArrayString = "Hello World";
+ assertEquals(byteArrayString, new String(wsProxy.getGreetingsByteArray(byteArrayString.getBytes())));
+
+ try {
+ wsProxy.getGreetingsException("Fred");
+ fail("exception not returned");
+ } catch(Exception ex) {
+
+ }
+ }
+
+ @Test
+ public void testComponentJAXWStuscanygen() throws IOException {
+ // talk to the service using JAXWS with WSDL generated from this service used Tuscany's ?wsdl
+ // the idea here is to demonstrate that the service is providing a JAXWS compliant
+ // WSDL
+ QName serviceName = new QName("http://helloworld/", "HelloWorldServiceComponent_HelloWorldService");
+ QName portName = new QName("http://helloworld/", "HelloWorldServiceSOAP11Port");
+ URL wsdlLocation = new URL("http://localhost:8085/HelloWorldServiceComponent?wsdl");
+ Service webService = Service.create( wsdlLocation, serviceName );
+ HelloWorldService wsProxy = (HelloWorldService) webService.getPort(portName, HelloWorldService.class);
+
+ assertEquals("Hello Fred", wsProxy.getGreetings("Fred"));
+
+ BBean bbean = new BBean();
+ bbean.setField1("1");
+ bbean.setField2("2");
+
+ DBean abean = new DBean();
+ abean.setField1("3");
+ abean.setField2("4");
+ abean.setField3(bbean);
+
+ assertEquals("Hello 3 4 1 2", wsProxy.getGreetingsDBean(abean));
+
+ String byteArrayString = "Hello World";
+ assertEquals(byteArrayString, new String(wsProxy.getGreetingsByteArray(byteArrayString.getBytes())));
+
+ try {
+ wsProxy.getGreetingsException("Fred");
+ fail("exception not returned");
+ } catch(Exception ex) {
+
+ }
+ }
+
+ // Differences between JAXWS WSDL (J) and Tuscany WSDL (T)
+ //
+ // Service name
+ // J/ HelloWorldImplService T/ HelloWorldService
+ //
+ // Port name
+ // J/ HelloWorldImplPort T/ HelloWorldServiceSOAP11Port
+
+ @After
+ public void stopServer() throws Exception {
+ if (node != null) {
+ node.stop();
+ }
+ }
+
+}
diff --git a/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/wsgen.bat b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/wsgen.bat
new file mode 100644
index 0000000000..5426508882
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/testing/itest/ws/wsdlgen/wsgen.bat
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+
+c:\simon\apps\jdk-60-ibm\bin\wsgen.exe -cp target/classes;"C:\Users\slaws\.m2\repository\org\apache\tuscany\sca\tuscany-sca-api\2.0-SNAPSHOT\tuscany-sca-api-2.0-SNAPSHOT.jar" -d target/wsgenout -wsdl -verbose helloworld.HelloWorldImpl