From 8ae95d6e100b095d57502be4247803451a16d97e Mon Sep 17 00:00:00 2001 From: antelder Date: Thu, 10 Feb 2011 08:40:56 +0000 Subject: Copy all trunk samples to contrib git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1069274 13f79535-47bb-0310-9956-ffa450edef68 --- .../samples/learning-more/binding-ws/README | 1 + .../binding-ws/calculator-contribution/README | 9 + .../binding-ws/calculator-contribution/build.xml | 55 ++++ .../calculator-contribution/calculator.odg | Bin 0 -> 12477 bytes .../calculator-contribution/calculator.png | Bin 0 -> 41196 bytes .../binding-ws/calculator-contribution/pom.xml | 53 ++++ .../src/main/java/calculator/AddService.java | 31 ++ .../src/main/java/calculator/AddServiceImpl.java | 35 +++ .../main/java/calculator/CalculatorService.java | 35 +++ .../java/calculator/CalculatorServiceImpl.java | 70 +++++ .../src/main/java/calculator/DivideService.java | 28 ++ .../main/java/calculator/DivideServiceImpl.java | 35 +++ .../src/main/java/calculator/MultiplyService.java | 28 ++ .../main/java/calculator/MultiplyServiceImpl.java | 35 +++ .../src/main/java/calculator/SubtractService.java | 28 ++ .../main/java/calculator/SubtractServiceImpl.java | 35 +++ .../src/main/resources/Calculator.composite | 54 ++++ .../main/resources/META-INF/sca-contribution.xml | 23 ++ .../test/java/calculator/CalculatorTestCase.java | 50 ++++ .../helloworld-ws-sdo-contribution/README | 214 ++++++++++++++ .../helloworld-ws-sdo-contribution/build.xml | 101 +++++++ .../helloworld-ws-sdo.png | Bin 0 -> 7549 bytes .../maven-eclipse.xml | 8 + .../helloworld-ws-sdo-contribution/pom.xml | 180 +++++++++++ .../src/main/java/helloworld/HelloWorldClient.java | 51 ++++ .../src/main/java/helloworld/HelloWorldImpl.java | 33 +++ .../src/main/java/helloworld/HelloWorldServer.java | 51 ++++ .../main/java/helloworld/HelloWorldService.java | 34 +++ .../helloworld/HelloWorldServiceComponent.java | 42 +++ .../main/java/services/bcircle/BioTestCase.java | 59 ++++ .../java/services/bcircle/BiochemicalCircle.java | 29 ++ .../services/bcircle/BiochemicalCircleImpl.java | 40 +++ .../main/resources/META-INF/sca-contribution.xml | 28 ++ .../src/main/resources/helloworldws.composite | 31 ++ .../main/resources/helloworldwsclient.composite | 34 +++ .../src/main/resources/logging.properties | 30 ++ .../resources/clinicalLaboratory.composite | 34 +++ .../src/main/resources/test.xsd | 35 +++ .../src/main/resources/wsdl/helloworld.wsdl | 88 ++++++ .../java/helloworld/HelloWorldClientTestCase.java | 85 ++++++ .../test/java/helloworld/HelloWorldTestServer.java | 67 +++++ .../src/test/java/helloworld/TestCaseRunner.java | 329 +++++++++++++++++++++ .../binding-ws/holder-ws-service/pom.xml | 124 ++++++++ .../org/example/orderservice/ObjectFactory.java | 74 +++++ .../main/java/org/example/orderservice/Order.java | 147 +++++++++ .../org/example/orderservice/OrderService.java | 55 ++++ .../org/example/orderservice/OrderServiceImpl.java | 65 ++++ .../example/orderservice/OrderServiceServer.java | 112 +++++++ .../example/orderservice/OrderService_Service.java | 84 ++++++ .../java/org/example/orderservice/ReviewOrder.java | 82 +++++ .../example/orderservice/ReviewOrderResponse.java | 82 +++++ .../main/java/org/example/orderservice/Status.java | 75 +++++ .../org/example/orderservice/package-info.java | 21 ++ .../src/main/resources/orderws.composite | 33 +++ .../src/main/resources/wsdl/orderservice.wsdl | 89 ++++++ .../example/orderservice/OrderServiceTestCase.java | 116 ++++++++ .../samples/learning-more/binding-ws/pom.xml | 44 +++ 57 files changed, 3411 insertions(+) create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/build.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/calculator.odg create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/calculator.png create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/AddService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/AddServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/CalculatorService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/CalculatorServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/DivideService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/DivideServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/MultiplyService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/MultiplyServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/SubtractService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/SubtractServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/resources/Calculator.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/test/java/calculator/CalculatorTestCase.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/build.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/helloworld-ws-sdo.png create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/maven-eclipse.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/helloworld/HelloWorldClient.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/helloworld/HelloWorldImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/helloworld/HelloWorldServer.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/helloworld/HelloWorldService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/helloworld/HelloWorldServiceComponent.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/services/bcircle/BioTestCase.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/services/bcircle/BiochemicalCircle.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/services/bcircle/BiochemicalCircleImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/META-INF/sca-contribution.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/helloworldws.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/helloworldwsclient.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/logging.properties create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/resources/clinicalLaboratory.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/test.xsd create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/wsdl/helloworld.wsdl create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/test/java/helloworld/HelloWorldClientTestCase.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/test/java/helloworld/HelloWorldTestServer.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/test/java/helloworld/TestCaseRunner.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/ObjectFactory.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/Order.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/OrderService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/OrderServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/OrderServiceServer.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/OrderService_Service.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/ReviewOrder.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/ReviewOrderResponse.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/Status.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/package-info.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/resources/orderws.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/resources/wsdl/orderservice.wsdl create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/test/java/org/example/orderservice/OrderServiceTestCase.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-ws/pom.xml (limited to 'sca-java-2.x/contrib/samples/learning-more/binding-ws') diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/README b/sca-java-2.x/contrib/samples/learning-more/binding-ws/README new file mode 100644 index 0000000000..18ba62d494 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/README @@ -0,0 +1 @@ +Please look at the README files in the subdirectories of this directory for descriptions of the sample contributions. diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/README b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/README new file mode 100644 index 0000000000..73246be305 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/README @@ -0,0 +1,9 @@ +Calculator Contribution Sample +============================== + +This directory contains code which implements a simple calculator SCA contribution. + +See http://tuscany.apache.org/documentation-2x/20-beta-samples-documentation.html +for more information + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/build.xml b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/build.xml new file mode 100644 index 0000000000..ab27460ea9 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/build.xml @@ -0,0 +1,55 @@ + + + + + + ${tuscany.home} + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/calculator.odg b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/calculator.odg new file mode 100644 index 0000000000..c2646f7d5e Binary files /dev/null and b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/calculator.odg differ diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/calculator.png b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/calculator.png new file mode 100644 index 0000000000..476306e5f0 Binary files /dev/null and b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/calculator.png differ diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/pom.xml b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/pom.xml new file mode 100644 index 0000000000..4153f5f523 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/pom.xml @@ -0,0 +1,53 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + sample-binding-ws-calculator-contribution + Apache Tuscany SCA Sample binding.ws Calculator Contribution + + + + org.apache.tuscany.sca + tuscany-sca-api + 2.0-SNAPSHOT + + + + junit + junit + 4.8.1 + test + + + + + + ${project.artifactId} + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/AddService.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/AddService.java new file mode 100644 index 0000000000..138213b5fc --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/AddService.java @@ -0,0 +1,31 @@ +/* + * 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 calculator; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The Add service interface + */ +@Remotable +public interface AddService { + + double add(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/AddServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/AddServiceImpl.java new file mode 100644 index 0000000000..caf4d358df --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/AddServiceImpl.java @@ -0,0 +1,35 @@ +/* + * 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 calculator; + +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * An implementation of the Add service + */ +public class AddServiceImpl implements AddService { + + public double add(double n1, double n2) { + Logger logger = Logger.getLogger("calculator"); + logger.log(Level.FINEST, "Adding " + n1 + " and " + n2); + return n1 + n2; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/CalculatorService.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/CalculatorService.java new file mode 100644 index 0000000000..ad87375529 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/CalculatorService.java @@ -0,0 +1,35 @@ +/* + * 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 calculator; + + +/** + * The Calculator service interface. + */ +public interface CalculatorService { + + double add(double n1, double n2); + + double subtract(double n1, double n2); + + double multiply(double n1, double n2); + + double divide(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/CalculatorServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/CalculatorServiceImpl.java new file mode 100644 index 0000000000..d3fa7a8f41 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/CalculatorServiceImpl.java @@ -0,0 +1,70 @@ +/* + * 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 calculator; + +import org.oasisopen.sca.annotation.Reference; + + +/** + * An implementation of the Calculator service. + */ +public class CalculatorServiceImpl implements CalculatorService { + + private AddService addService; + private SubtractService subtractService; + private MultiplyService multiplyService; + private DivideService divideService; + + @Reference + public void setAddService(AddService addService) { + this.addService = addService; + } + + @Reference + public void setSubtractService(SubtractService subtractService) { + this.subtractService = subtractService; + } + + @Reference + public void setDivideService(DivideService divideService) { + this.divideService = divideService; + } + + @Reference + public void setMultiplyService(MultiplyService multiplyService) { + this.multiplyService = multiplyService; + } + + public double add(double n1, double n2) { + return addService.add(n1, n2); + } + + public double subtract(double n1, double n2) { + return subtractService.subtract(n1, n2); + } + + public double multiply(double n1, double n2) { + return multiplyService.multiply(n1, n2); + } + + public double divide(double n1, double n2) { + return divideService.divide(n1, n2); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/DivideService.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/DivideService.java new file mode 100644 index 0000000000..ef6a8b375b --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/DivideService.java @@ -0,0 +1,28 @@ +/* + * 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 calculator; + +/** + * The divide service interface + */ +public interface DivideService { + + double divide(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/DivideServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/DivideServiceImpl.java new file mode 100644 index 0000000000..cd91935f08 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/DivideServiceImpl.java @@ -0,0 +1,35 @@ +/* + * 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 calculator; + +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * An implementation of the Divide service. + */ +public class DivideServiceImpl implements DivideService { + + public double divide(double n1, double n2) { + Logger logger = Logger.getLogger("calculator"); + logger.log(Level.FINEST, "Dividing " + n1 + " with " + n2); + return n1 / n2; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/MultiplyService.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/MultiplyService.java new file mode 100644 index 0000000000..db568cc762 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/MultiplyService.java @@ -0,0 +1,28 @@ +/* + * 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 calculator; + +/** + * The interface for the multiply service + */ +public interface MultiplyService { + + double multiply(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/MultiplyServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/MultiplyServiceImpl.java new file mode 100644 index 0000000000..c85357fcd8 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/MultiplyServiceImpl.java @@ -0,0 +1,35 @@ +/* + * 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 calculator; + +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * An implementation of the Multiply service. + */ +public class MultiplyServiceImpl implements MultiplyService { + + public double multiply(double n1, double n2) { + Logger logger = Logger.getLogger("calculator"); + logger.log(Level.FINEST, "Multiplying " + n1 + " with " + n2); + return n1 * n2; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/SubtractService.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/SubtractService.java new file mode 100644 index 0000000000..56ee372fc4 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/SubtractService.java @@ -0,0 +1,28 @@ +/* + * 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 calculator; + +/** + * The interface for the multiply service + */ +public interface SubtractService { + + double subtract(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/SubtractServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/SubtractServiceImpl.java new file mode 100644 index 0000000000..1b669084d9 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/java/calculator/SubtractServiceImpl.java @@ -0,0 +1,35 @@ +/* + * 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 calculator; + +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * An implementation of the subtract service. + */ +public class SubtractServiceImpl implements SubtractService { + + public double subtract(double n1, double n2) { + Logger logger = Logger.getLogger("calculator"); + logger.log(Level.FINEST, "Subtracting " + n1 + " from " + n2); + return n1 - n2; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/resources/Calculator.composite b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/resources/Calculator.composite new file mode 100644 index 0000000000..3688ebcb85 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/resources/Calculator.composite @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..3a7548cd47 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml @@ -0,0 +1,23 @@ + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/test/java/calculator/CalculatorTestCase.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/test/java/calculator/CalculatorTestCase.java new file mode 100644 index 0000000000..1952eb4a6e --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/calculator-contribution/src/test/java/calculator/CalculatorTestCase.java @@ -0,0 +1,50 @@ +/* + * 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 calculator; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +/** + * A unit test of the basic Java implementation classes in this contribution + * without using SCA + */ +public class CalculatorTestCase { + + @Test + public void testCalculator() throws Exception { + AddService add = new AddServiceImpl(); + SubtractService subtract = new SubtractServiceImpl(); + MultiplyService multiply = new MultiplyServiceImpl(); + DivideService divide = new DivideServiceImpl(); + + CalculatorServiceImpl calculator = new CalculatorServiceImpl(); + + calculator.setAddService(add); + calculator.setSubtractService(subtract); + calculator.setMultiplyService(multiply); + calculator.setDivideService(divide); + + assertEquals(calculator.add(3, 2), 5.0, 0); + assertEquals(calculator.subtract(3, 2), 1.0, 0); + assertEquals(calculator.multiply(3, 2), 6.0, 0); + assertEquals(calculator.divide(3, 2), 1.5, 0); + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/README b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/README new file mode 100644 index 0000000000..be947b1923 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/README @@ -0,0 +1,214 @@ +Hello World Web Service References using SDO Sample +=================================================== +This sample demonstrates an SCA reference that uses a web service binding which works with SDO. + +The README in the samples directory (the directory above this) provides +general instructions about building and running samples. Take a look there +first. + +To run this sample +------------------ +This sample is dependent on helloworld-ws-service. Open a command prompt to start +the service. If you are running ant do the following: + +cd helloworld-ws-service +ant run + +if you don't have ant, issue one of the following commands for windows or *nix: + +java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-helloworld-ws-service.jar helloworld.HelloWorldServer + +and on *nix do + +java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-helloworld-ws-service.jar helloworld.HelloWorldServer + +You should see the following output: + +Buildfile: build.xml + +run-server: + [java] log4j:WARN No appenders could be found for logger (org.apache.axiom. +om.util.StAXUtils). + [java] log4j:WARN Please initialize the log4j system properly. + [java] Aug 24, 2007 11:17:33 AM org.apache.catalina.core.StandardEngine sta +rt + [java] INFO: Starting Servlet Engine: Apache Tomcat/6.0.10 + [java] Aug 24, 2007 11:17:34 AM org.apache.catalina.startup.ContextConfig d +efaultWebConfig + [java] INFO: No default web.xml + [java] Aug 24, 2007 11:17:34 AM org.apache.catalina.startup.DigesterFactory + register + [java] WARNING: Could not get url for /javax/servlet/jsp/resources/jsp_2_0. +xsd + [java] Aug 24, 2007 11:17:34 AM org.apache.catalina.startup.DigesterFactory + register + [java] WARNING: Could not get url for /javax/servlet/jsp/resources/web-jspt +aglibrary_1_1.dtd + [java] Aug 24, 2007 11:17:34 AM org.apache.catalina.startup.DigesterFactory + register + [java] WARNING: Could not get url for /javax/servlet/jsp/resources/web-jspt +aglibrary_1_2.dtd + [java] Aug 24, 2007 11:17:34 AM org.apache.catalina.startup.DigesterFactory + register + [java] WARNING: Could not get url for /javax/servlet/jsp/resources/web-jspt +aglibrary_2_0.xsd + [java] Aug 24, 2007 11:17:34 AM org.apache.catalina.startup.DigesterFactory + register + [java] WARNING: Could not get url for /javax/servlet/resources/j2ee_web_ser +vices_1_1.xsd + [java] Aug 24, 2007 11:17:34 AM org.apache.coyote.http11.Http11Protocol ini +t + [java] INFO: Initializing Coyote HTTP/1.1 on http-8085 + [java] Aug 24, 2007 11:17:34 AM org.apache.coyote.http11.Http11Protocol sta +rt + [java] INFO: Starting Coyote HTTP/1.1 on http-8085 + [java] Aug 24, 2007 11:17:34 AM org.apache.tuscany.sca.http.tomcat.TomcatSe +rver addServletMapping + [java] INFO: Added Servlet mapping: http://localhost:8085/HelloWorldService + + [java] HelloWorld server started (press enter to shutdown) + +The server is now ready. + + +Now, open another command window to run the client. + +cd helloworld-ws-sdo +ant run + +OR if you don't have ant, on Windows do + +java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-helloworld-ws-sdo.jar helloworld.HelloWorldClient + +and on *nix do + +java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-helloworld-ws-sdo.jar helloworl.HelloWorldClient + +You should be able to see the following result: + +Buildfile: build.xml + +run: + [java] log4j:WARN No appenders could be found for logger (org.apache.axiom. +om.util.StAXUtils). + [java] log4j:WARN Please initialize the log4j system properly. + [java] Injected helloWorldService + [java] Called getGreetings + [java] Hello David Haney + +BUILD SUCCESSFUL +Total time: 9 seconds + + +Sample Overview +--------------- +The sample provides a single component that is wired to a reference with a +web service binding. The binding refers to WSDL that identifies the service +exposed by the helloworld-ws-service sample. + +helloworld-ws-sdo/ + src/ + main/ + java/ + helloworld/ + HelloWorldService.java - interface description for + HelloWorldServiceComponent + HelloWorldServiceComponent.java - component implementation + HelloWorldClient.java - starts the SCA Runtime and + deploys the helloworldwsclient + .composite. It then calls the + HelloWorldServiceComponent + resources/ + wsdl + helloworld.wsdl - the service description that the + SCA reference uses to bind to service. + + test/ + java/ + helloworld/ + HelloWorldClientTestCase.java - JUnit test case + helloworld-ws-sdo.png - a pictorial representation of the + sample .composite file + build.xml - the Ant build file + pom.xml - the Maven build file + +Building And Running The Sample Using Ant +----------------------------------------- +You can build and run the sample with the binary distribution using Ant. +Make sure that you have started helloworld-ws-service which this sample is dependent on +in a separate command window. You can either follow the instruction at the begining of this +sample file or if you want to build and run the service, follow the README under helloworld-ws-service. + +Now, let's build and run helloworld-ws-sdo sample: + +cd helloworld-ws-sdo +ant +ant run + +You should see the following output from the run target. + +run: + [java] log4j:WARN No appenders could be found for logger (org.apache.axiom. +om.util.StAXUtils). + [java] log4j:WARN Please initialize the log4j system properly. + [java] Injected helloWorldService + [java] Called getGreetings + [java] Hello World + +Building And Running The Sample Using Maven +------------------------------------------- +You can build and run the sample with either the binary or source distributions using Maven. Please note that you do not need to start helloworld-ws-service in this case since Maven does this for you. + +cd helloworld-ws-sdo +mvn + +You should see the following output from the test phase. + +------------------------------------------------------- + T E S T S +------------------------------------------------------- +Running helloworld.HelloWorldClientTestCase +log4j:WARN No appenders could be found for logger (org.apache.axiom.om.util.StAX +Utils). +log4j:WARN Please initialize the log4j system properly. +log4j:WARN No appenders could be found for logger (org.apache.axiom.om.util.StAX +Utils). +log4j:WARN Please initialize the log4j system properly. +Aug 23, 2007 2:27:32 PM org.apache.catalina.core.StandardEngine start +INFO: Starting Servlet Engine: Apache Tomcat/6.0.10 +Aug 23, 2007 2:27:32 PM org.apache.catalina.startup.ContextConfig defaultWebConf +ig +INFO: No default web.xml +Aug 23, 2007 2:27:32 PM org.apache.catalina.startup.DigesterFactory register +WARNING: Could not get url for /javax/servlet/jsp/resources/jsp_2_0.xsd +Aug 23, 2007 2:27:32 PM org.apache.catalina.startup.DigesterFactory register +WARNING: Could not get url for /javax/servlet/jsp/resources/web-jsptaglibrary_1_ +1.dtd +Aug 23, 2007 2:27:32 PM org.apache.catalina.startup.DigesterFactory register +WARNING: Could not get url for /javax/servlet/jsp/resources/web-jsptaglibrary_1_ +2.dtd +Aug 23, 2007 2:27:32 PM org.apache.catalina.startup.DigesterFactory register +WARNING: Could not get url for /javax/servlet/jsp/resources/web-jsptaglibrary_2_ +0.xsd +Aug 23, 2007 2:27:32 PM org.apache.catalina.startup.DigesterFactory register +WARNING: Could not get url for /javax/servlet/resources/j2ee_web_services_1_1.xs +d +Aug 23, 2007 2:27:32 PM org.apache.coyote.http11.Http11Protocol init +INFO: Initializing Coyote HTTP/1.1 on http-8085 +Aug 23, 2007 2:27:32 PM org.apache.coyote.http11.Http11Protocol start +INFO: Starting Coyote HTTP/1.1 on http-8085 +Aug 23, 2007 2:27:32 PM org.apache.tuscany.sca.http.tomcat.TomcatServer addServl +etMapping +INFO: Added Servlet mapping: http://localhost:8085/HelloWorldService +Injected helloWorldService +Called getGreetings +Aug 23, 2007 2:27:34 PM org.apache.coyote.http11.Http11Protocol destroy +INFO: Stopping Coyote HTTP/1.1 on http-8085 +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.502 sec + +Results : + +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 + + +This shows that the Junit test cases have run successfully. diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/build.xml b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/build.xml new file mode 100644 index 0000000000..401315d424 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/build.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/helloworld-ws-sdo.png b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/helloworld-ws-sdo.png new file mode 100644 index 0000000000..bd2bba41db Binary files /dev/null and b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/helloworld-ws-sdo.png differ diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/maven-eclipse.xml b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/maven-eclipse.xml new file mode 100644 index 0000000000..3adfca89f4 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/maven-eclipse.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/pom.xml b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/pom.xml new file mode 100644 index 0000000000..f5c2839067 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/pom.xml @@ -0,0 +1,180 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + sample-binding-ws-helloworld-ws-sdo-contribution + Apache Tuscany SCA Sample binding.ws HelloWorld Web Service SDO Contribution + + + + org.apache.tuscany.sca + tuscany-node-api + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-node-impl + 2.0-SNAPSHOT + runtime + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + + org.apache.tuscany.sca + tuscany-binding-ws-runtime-axis2 + 2.0-SNAPSHOT + runtime + + + + org.apache.tuscany.sdo + tuscany-sdo-lib + 1.1.1 + + + org.apache.tuscany.sdo + tuscany-sdo-impl + 1.1.1 + + + backport-util-concurrent + backport-util-concurrent + + + + + backport-util-concurrent + backport-util-concurrent + 3.1 + + + org.apache.tuscany.sca + tuscany-databinding-sdo + 2.0-SNAPSHOT + compile + + + + org.apache.tuscany.sca + tuscany-host-jetty + 2.0-SNAPSHOT + runtime + + + + junit + junit + 4.5 + test + + + + + + ${project.artifactId} + + + + + + org.apache.tuscany.maven.plugins + maven-tuscany-plugin + 2.0-SNAPSHOT + + + org.apache.tuscany.sca + tuscany-databinding-sdo + 2.0-SNAPSHOT + + + + + + org.codehaus.mojo + build-helper-maven-plugin + 1.0 + + + add-source + generate-sources + + add-test-source + + + + target/sdo-source + + + + + + + org.apache.tuscany.sdo + tuscany-sdo-plugin + 1.1.1 + + + generate-helloworld-sdo + generate-sources + + ${basedir}/src/main/resources/wsdl/helloworld.wsdl + helloworld + Helloworld + true + true + true + + + generate + + + + generate-helloworld-sdo1 + generate-sources + + ${basedir}/src/main/resources/test.xsd + model.sdo + Entity + true + true + true + + + generate + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/helloworld/HelloWorldClient.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/helloworld/HelloWorldClient.java new file mode 100644 index 0000000000..ebc270811f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/helloworld/HelloWorldClient.java @@ -0,0 +1,51 @@ +/* + * 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.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.ContributionLocationHelper; +import org.apache.tuscany.sca.node.Node; +import org.apache.tuscany.sca.node.NodeFactory; + +/** + * This client program shows how to create an SCA runtime, start it, locate the + * HelloWorld service and invoke it. + */ +public class HelloWorldClient { + + public final static void main(String[] args) throws Exception { + + NodeFactory factory = NodeFactory.newInstance(); + String contribution = ContributionLocationHelper.getContributionLocation(HelloWorldClient.class); + Node node = + factory.createNode("helloworldwsclient.composite", new Contribution("helloworld", contribution)).start(); + + HelloWorldService helloWorldService = node.getService(HelloWorldService.class, "HelloWorldServiceComponent"); + + Name name = HelloworldFactory.INSTANCE.createName(); + + name.setFirst("David"); + name.setLast("Haney"); + + String value = helloWorldService.getGreetings(name); + System.out.println(value); + + node.stop(); + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/helloworld/HelloWorldImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/helloworld/HelloWorldImpl.java new file mode 100644 index 0000000000..c42a4d59c3 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/helloworld/HelloWorldImpl.java @@ -0,0 +1,33 @@ +/* + * 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.Service; + +/** + * This class implements the HelloWorld service. + */ +@Service(HelloWorldService.class) +public class HelloWorldImpl implements HelloWorldService { + + public String getGreetings(Name name) { + return "Hello " + name.getFirst() + " " + name.getLast(); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/helloworld/HelloWorldServer.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/helloworld/HelloWorldServer.java new file mode 100644 index 0000000000..ff5cb4ceda --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/helloworld/HelloWorldServer.java @@ -0,0 +1,51 @@ +/* + * 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 org.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.ContributionLocationHelper; +import org.apache.tuscany.sca.node.Node; +import org.apache.tuscany.sca.node.NodeFactory; + +/** + * This server program shows how to create an SCA runtime, and start it which + * activates the helloworld Web service endpoint. + */ +public class HelloWorldServer { + + public static void main(String[] args) { + + NodeFactory factory = NodeFactory.newInstance(); + String contribution = ContributionLocationHelper.getContributionLocation(HelloWorldServer.class); + Node node = factory.createNode("helloworldws.composite", new Contribution("helloworld", contribution)).start(); + + try { + System.out.println("HelloWorld server started (press enter to shutdown)"); + System.in.read(); + } catch (IOException e) { + e.printStackTrace(); + } + + node.stop(); + System.out.println("HelloWorld server stopped"); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/helloworld/HelloWorldService.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/helloworld/HelloWorldService.java new file mode 100644 index 0000000000..fa257a0605 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/helloworld/HelloWorldService.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 helloworld; + +import javax.xml.ws.RequestWrapper; +import javax.xml.ws.ResponseWrapper; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for the helloworld service + */ +@Remotable +public interface HelloWorldService { + @RequestWrapper(className="helloworld.getGreetings") + @ResponseWrapper(className="helloworld.getGreetingsResponse") + public String getGreetings(Name name); +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/helloworld/HelloWorldServiceComponent.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/helloworld/HelloWorldServiceComponent.java new file mode 100644 index 0000000000..711eef63b5 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/helloworld/HelloWorldServiceComponent.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 helloworld; + +/** + * The HelloWorld service implementation + */ +public class HelloWorldServiceComponent implements HelloWorldService { + + HelloWorldService helloWorldService; + + public String getGreetings(Name name) { + System.out.println("Called getGreetings"); + return helloWorldService.getGreetings(name); + } + + public HelloWorldService getHelloWorldService() { + System.out.println("Got Injected helloWorldService"); + return helloWorldService; + } + + public void setHelloWorldService(HelloWorldService helloWorldService) { + System.out.println("Injected helloWorldService"); + this.helloWorldService = helloWorldService; + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/services/bcircle/BioTestCase.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/services/bcircle/BioTestCase.java new file mode 100644 index 0000000000..d222d77b3b --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/services/bcircle/BioTestCase.java @@ -0,0 +1,59 @@ +/* + * 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 services.bcircle; + +import model.sdo.EntityFactory; +import model.sdo.Laboratory; + +import org.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.ContributionLocationHelper; +import org.apache.tuscany.sca.node.Node; +import org.apache.tuscany.sca.node.NodeFactory; + +public class BioTestCase { + + /** + * @param args + */ + public static void main(String[] args) { + BiochemicalCircle biochemicalCircl = new BiochemicalCircleImpl(); + Laboratory lab2 = biochemicalCircl.getLaboratory("Lab2"); //This invocation without use SCA works ok. + + NodeFactory factory = NodeFactory.newInstance(); + String contribution = ContributionLocationHelper.getContributionLocation(BioTestCase.class); + Node node = + factory.createNode("resources/clinicalLaboratory.composite", new Contribution("clinical", contribution)) + .start(); + + BiochemicalCircle biochemicalCircle = node.getService(BiochemicalCircle.class, "BiochemicalCircleComponent"); + + Laboratory lab = EntityFactory.INSTANCE.createLaboratory(); + lab.setName("lab2"); + biochemicalCircle.setLaboratory(lab); // this invocation works ok too + + lab = biochemicalCircle.getLaboratory("Lab2"); // here I have an exception posted below. + + //here I wait a moment before close scaDomain + System.out.println(lab.getName()); + + node.stop(); + + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/services/bcircle/BiochemicalCircle.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/services/bcircle/BiochemicalCircle.java new file mode 100644 index 0000000000..a988a4156c --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/services/bcircle/BiochemicalCircle.java @@ -0,0 +1,29 @@ +/* + * 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 services.bcircle; + +import org.oasisopen.sca.annotation.Remotable; + +@Remotable +public interface BiochemicalCircle { + void setLaboratory(model.sdo.Laboratory lab); + + model.sdo.Laboratory getLaboratory(String name); +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/services/bcircle/BiochemicalCircleImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/services/bcircle/BiochemicalCircleImpl.java new file mode 100644 index 0000000000..b609f58373 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/java/services/bcircle/BiochemicalCircleImpl.java @@ -0,0 +1,40 @@ +/* + * 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 services.bcircle; +import model.sdo.EntityFactory; +import model.sdo.Laboratory; + +import org.oasisopen.sca.annotation.Service; + + +@Service(BiochemicalCircle.class) +public class BiochemicalCircleImpl implements BiochemicalCircle{ + public Laboratory getLaboratory(String name) { + + Laboratory lab = EntityFactory.INSTANCE.createLaboratory(); + lab.setName("Main Laboratory"); + return lab; + } + + public void setLaboratory(Laboratory lab) { + //sad method + System.out.println(lab.getName()); + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..f8b2a60f6a --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/META-INF/sca-contribution.xml @@ -0,0 +1,28 @@ + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/helloworldws.composite b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/helloworldws.composite new file mode 100644 index 0000000000..46c819d08c --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/helloworldws.composite @@ -0,0 +1,31 @@ + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/helloworldwsclient.composite b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/helloworldwsclient.composite new file mode 100644 index 0000000000..65b0e294a8 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/helloworldwsclient.composite @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/logging.properties b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/logging.properties new file mode 100644 index 0000000000..3dca310cdb --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/logging.properties @@ -0,0 +1,30 @@ +# 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. +# +# $Rev$ $Date$ +# + +# Custom logging configuration for Tuscany samples +# By default, only INFO level logging is enabled and ALL messages get sent to the console +# For more messages from the runtime, uncomment specific settings at the end of this file +handlers = java.util.logging.ConsoleHandler +java.util.logging.ConsoleHandler.level = ALL +java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter +.level=INFO + +# Uncomment the next setting to get all Tuscany messages (this will be a lot) +#org.apache.tuscany.level=FINEST diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/resources/clinicalLaboratory.composite b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/resources/clinicalLaboratory.composite new file mode 100644 index 0000000000..0451cee24c --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/resources/clinicalLaboratory.composite @@ -0,0 +1,34 @@ + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/test.xsd b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/test.xsd new file mode 100644 index 0000000000..7fd9aa0013 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/test.xsd @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/wsdl/helloworld.wsdl b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/wsdl/helloworld.wsdl new file mode 100644 index 0000000000..882819110f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/main/resources/wsdl/helloworld.wsdl @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/test/java/helloworld/HelloWorldClientTestCase.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/test/java/helloworld/HelloWorldClientTestCase.java new file mode 100644 index 0000000000..3918f9a4a5 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/test/java/helloworld/HelloWorldClientTestCase.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 junit.framework.Assert; + +import org.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.ContributionLocationHelper; +import org.apache.tuscany.sca.node.Node; +import org.apache.tuscany.sca.node.NodeFactory; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +/** + * Test case for helloworld web service client + */ +public class HelloWorldClientTestCase { + + private HelloWorldService helloWorldService; + private static Node node; + + private TestCaseRunner server; + + @Before + public void startClient() throws Exception { + try { + + NodeFactory factory = NodeFactory.newInstance(); + String contribution = ContributionLocationHelper.getContributionLocation(HelloWorldClient.class); + node = + factory.createNode("helloworldwsclient.composite", new Contribution("helloworld", contribution)) + .start(); + + helloWorldService = node.getService(HelloWorldService.class, "HelloWorldServiceComponent"); + + server = new TestCaseRunner(HelloWorldTestServer.class); + server.before(); + + } catch (Throwable e) { + e.printStackTrace(); + } + } + + @Test + public void testWSClient() throws Exception { + Name name = HelloworldFactory.INSTANCE.createName(); + name.setFirst("John"); + name.setLast("Smith"); + String msg = helloWorldService.getGreetings(name); + Assert.assertEquals("Hello John Smith", msg); + } + + @After + public void stopClient() throws Exception { + server.after(); + node.stop(); + } + + public static void main(String[] args) throws Exception { + HelloWorldClientTestCase test = new HelloWorldClientTestCase(); + test.startClient(); + test.testWSClient(); + + System.in.read(); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/test/java/helloworld/HelloWorldTestServer.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/test/java/helloworld/HelloWorldTestServer.java new file mode 100644 index 0000000000..98487ad88b --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/test/java/helloworld/HelloWorldTestServer.java @@ -0,0 +1,67 @@ +/* + * 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.net.Socket; + +import org.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.ContributionLocationHelper; +import org.apache.tuscany.sca.node.Node; +import org.apache.tuscany.sca.node.NodeFactory; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +/** + * Starts up the SCA runtime which starts listening for service requests + */ +public class HelloWorldTestServer { + + private Node node; + + @Before + public void startServer() throws Exception { + try { + + NodeFactory factory = NodeFactory.newInstance(); + String contribution = ContributionLocationHelper.getContributionLocation(HelloWorldService.class); + node = factory.createNode("helloworldws.composite", new Contribution("helloworld", contribution)).start(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Test + public void testPing() throws IOException { + new Socket("127.0.0.1", 8085); + } + + @After + public void stopServer() throws Exception { + node.stop(); + } + + public static void main(String[] args) throws Exception { + + HelloWorldTestServer test = new HelloWorldTestServer(); + test.startServer(); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/test/java/helloworld/TestCaseRunner.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/test/java/helloworld/TestCaseRunner.java new file mode 100644 index 0000000000..b6b4ed2254 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/helloworld-ws-sdo-contribution/src/test/java/helloworld/TestCaseRunner.java @@ -0,0 +1,329 @@ +/* + * 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.lang.annotation.Annotation; +import java.lang.reflect.Constructor; +import java.lang.reflect.Method; +import java.net.URL; +import java.net.URLClassLoader; +import java.security.AccessController; +import java.security.PrivilegedAction; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** + * A helper class that can be used to run an SCA JUnit test case. The test case will run in an isolated class loader. + * + * @version $Rev$ $Date$ + */ +public class TestCaseRunner { + + private ClassLoader classLoader; + private Class testSuiteClass; + private Object testSuite; + private Class testResultClass; + private Class testCaseClass; + private Object testCase; + + private Class beforeAnnotation; + private Class beforeClassAnnotation; + private Class afterAnnotation; + private Class afterClassAnnotation; + private Class junit4AdapterClass; + private Class junit3TestCaseClass; + + /** + * Constructs a new TestCase runner. + * + * @param testClass + */ + public TestCaseRunner(Class testClass, String... isolatedClasses) { + try { + ClassLoader tccl = setupClassLoader(testClass, isolatedClasses); + + try { + // Thread.currentThread().setContextClassLoader(classLoader); + // Allow privileged access to set class loader. Requires RuntimePermission + // setContextClassLoader in security policy. + final ClassLoader finalClassLoader = classLoader; + AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + Thread.currentThread().setContextClassLoader(finalClassLoader); + return null; + } + }); + + testCaseClass = Class.forName(testClass.getName(), true, classLoader); + testCase = testCaseClass.newInstance(); + ClassLoader testClassLoader = testCaseClass.getClassLoader(); + + junit3TestCaseClass = Class.forName("junit.framework.TestCase", true, testClassLoader); + + testSuiteClass = Class.forName("junit.framework.TestSuite", true, testClassLoader); + Constructor testSuiteConstructor = testSuiteClass.getConstructor(Class.class); + testSuite = testSuiteConstructor.newInstance(testCaseClass); + + testResultClass = Class.forName("junit.framework.TestResult", true, testClassLoader); + + try { + beforeAnnotation = Class.forName("org.junit.Before", true, testClassLoader); + afterAnnotation = Class.forName("org.junit.After", true, testClassLoader); + beforeClassAnnotation = Class.forName("org.junit.BeforeClass", true, testClassLoader); + afterClassAnnotation = Class.forName("org.junit.AfterClass", true, testClassLoader); + junit4AdapterClass = Class.forName("junit.framework.JUnit4TestAdapter", true, testClassLoader); + } catch (Exception e) { + // Unexpected + throw new AssertionError(e); + } + } catch (Throwable e) { + e.printStackTrace(); + } finally { + // Thread.currentThread().setContextClassLoader(tccl); + // Allow privileged access to set class loader. Requires RuntimePermission + // setContextClassLoader in security policy. + final ClassLoader finaltccl = tccl; + AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + Thread.currentThread().setContextClassLoader(finaltccl); + return null; + } + }); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + private ClassLoader setupClassLoader(Class testClass, String... isolatedClasses) { + ClassLoader tccl = Thread.currentThread().getContextClassLoader(); + classLoader = testClass.getClassLoader(); + if (classLoader instanceof URLClassLoader) { + URL[] urls = ((URLClassLoader)classLoader).getURLs(); + classLoader = new ClassLoaderImpl(urls, classLoader, isolatedClasses); + } else if (classLoader == tccl || classLoader.getParent() == tccl) { + classLoader = new URLClassLoader(new URL[0], classLoader); + } else { + classLoader = tccl; + } + return tccl; + } + + /** + * Run the test case + */ + public void run() { + ClassLoader tccl = Thread.currentThread().getContextClassLoader(); + try { + // Thread.currentThread().setContextClassLoader(classLoader); + // Allow privileged access to set class loader. Requires RuntimePermission + // setContextClassLoader in security policy. + final ClassLoader finalClassLoader = classLoader; + AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + Thread.currentThread().setContextClassLoader(finalClassLoader); + return null; + } + }); + + if (junit3TestCaseClass.isAssignableFrom(testCaseClass)) { + Object testResult = testResultClass.newInstance(); + Method runMethod = testSuiteClass.getMethod("run", testResultClass); + runMethod.invoke(testSuite, testResult); + } else { + Object junit4Adapter = junit4AdapterClass.getConstructor(Class.class).newInstance(testCaseClass); + Object testResult = testResultClass.newInstance(); + Method runMethod = junit4AdapterClass.getMethod("run", testResultClass); + runMethod.invoke(junit4Adapter, testResult); + } + } catch (Exception e) { + throw new RuntimeException(e); + } finally { + // Thread.currentThread().setContextClassLoader(tccl); + // Allow privileged access to set class loader. Requires RuntimePermission + // setContextClassLoader in security policy. + final ClassLoader finaltccl = tccl; + AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + Thread.currentThread().setContextClassLoader(finaltccl); + return null; + } + }); + } + } + + /** + * Invoke the setUp method + */ + public void setUp() { + execute("setUp"); + } + + /** + * Invoke the before methods + */ + public void before() { + execute(beforeAnnotation); + } + + /** + * Invoke the beforeClass methods + */ + public void beforeClass() { + execute(beforeClassAnnotation); + } + + /** + * Invoke the tearDown method + */ + public void tearDown() { + execute("tearDown"); + } + + /** + * Invoke the after methods + */ + public void after() { + execute(afterAnnotation); + } + + /** + * Invoke the afterClass methods + */ + public void afterClass() { + execute(afterClassAnnotation); + } + + /** + * Invoke the specified test method. + */ + public void run(String methodName) { + execute(methodName); + } + + /** + * Invoke the methods annotated with the specified annotation. + */ + private void execute(Class annotationClass) { + if (annotationClass == null) { + throw new RuntimeException(new NoSuchMethodException()); + } + ClassLoader tccl = Thread.currentThread().getContextClassLoader(); + try { + // Thread.currentThread().setContextClassLoader(classLoader); + // Allow privileged access to set class loader. Requires RuntimePermission + // setContextClassLoader in security policy. + final ClassLoader finalClassLoader = classLoader; + AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + Thread.currentThread().setContextClassLoader(finalClassLoader); + return null; + } + }); + + for (Method method : testCaseClass.getDeclaredMethods()) { + for (Annotation annotation : method.getAnnotations()) { + if (annotation.annotationType() == annotationClass) { + method.invoke(testCase); + } + } + } + } catch (Exception e) { + throw new RuntimeException(e); + } finally { + // Thread.currentThread().setContextClassLoader(tccl); + // Allow privileged access to set class loader. Requires RuntimePermission + // setContextClassLoader in security policy. + final ClassLoader finaltccl = tccl; + AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + Thread.currentThread().setContextClassLoader(finaltccl); + return null; + } + }); + } + } + + /** + * Invoke the specified method + */ + private void execute(String methodName) { + ClassLoader tccl = Thread.currentThread().getContextClassLoader(); + try { + // Thread.currentThread().setContextClassLoader(classLoader); + // Allow privileged access to set class loader. Requires RuntimePermission + // setContextClassLoader in security policy. + final ClassLoader finalClassLoader = classLoader; + AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + Thread.currentThread().setContextClassLoader(finalClassLoader); + return null; + } + }); + Method setUpMethod = testCaseClass.getDeclaredMethod(methodName); + setUpMethod.setAccessible(true); + setUpMethod.invoke(testCase); + } catch (Exception e) { + throw new RuntimeException(e); + } finally { + // Thread.currentThread().setContextClassLoader(tccl); + // Allow privileged access to set class loader. Requires RuntimePermission + // setContextClassLoader in security policy. + final ClassLoader finaltccl = tccl; + AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + Thread.currentThread().setContextClassLoader(finaltccl); + return null; + } + }); + } + } + + public static class ClassLoaderImpl extends URLClassLoader { + private Set isolatedClasses = new HashSet(); + + /** + * @param urls + * @param parent + */ + public ClassLoaderImpl(URL[] urls, ClassLoader parent, String... sharedClasses) { + super(urls, parent); + this.isolatedClasses.addAll(Arrays.asList(sharedClasses)); + } + + @Override + protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException { + if (!isolatedClasses.contains(name)) { + return super.loadClass(name, resolve); + } else { + Class cls = findLoadedClass(name); + if (cls == null) { + cls = findClass(name); + } + if (resolve) { + resolveClass(cls); + } + return cls; + } + } + + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/pom.xml b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/pom.xml new file mode 100644 index 0000000000..e910931a27 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/pom.xml @@ -0,0 +1,124 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + + jar + sample-holder-ws-service + Apache Tuscany SCA Holder Input/Output Web Service Sample + + + + + org.apache.tuscany.sca + tuscany-assembly + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-sca-api + 2.0-SNAPSHOT + + + org.apache.tuscany.sca + tuscany-node-api + 2.0-SNAPSHOT + + + org.apache.tuscany.sca + tuscany-node-impl + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + + org.apache.tuscany.sca + tuscany-binding-ws + 2.0-SNAPSHOT + runtime + + + + org.apache.tuscany.sca + tuscany-binding-ws-wsdlgen + 2.0-SNAPSHOT + runtime + + + + org.apache.tuscany.sca + tuscany-host-http + 2.0-SNAPSHOT + runtime + + + + org.apache.tuscany.sca + tuscany-host-jetty + 2.0-SNAPSHOT + runtime + + + + org.apache.tuscany.sca + tuscany-policy-security + 2.0-SNAPSHOT + runtime + + + + org.apache.tuscany.sca + tuscany-binding-ws-runtime-axis2 + 2.0-SNAPSHOT + runtime + + + + junit + junit + 4.8.1 + test + + + + + ${project.artifactId} + + + org.apache.tuscany.maven.plugins + maven-tuscany-plugin + 2.0-SNAPSHOT + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/ObjectFactory.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/ObjectFactory.java new file mode 100644 index 0000000000..c812c53eeb --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/ObjectFactory.java @@ -0,0 +1,74 @@ +/* + * 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 org.example.orderservice; + +import javax.xml.bind.annotation.XmlRegistry; + + +/** + * This object contains factory methods for each + * Java content interface and Java element interface + * generated in the org.example.orderservice package. + *

An ObjectFactory allows you to programatically + * construct new instances of the Java representation + * for XML content. The Java representation of XML + * content can consist of schema derived interfaces + * and classes representing the binding of schema + * type definitions, element declarations and model + * groups. Factory methods for each of these are + * provided in this class. + * + */ +@XmlRegistry +public class ObjectFactory { + + + /** + * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: org.example.orderservice + * + */ + public ObjectFactory() { + } + + /** + * Create an instance of {@link ReviewOrderResponse } + * + */ + public ReviewOrderResponse createReviewOrderResponse() { + return new ReviewOrderResponse(); + } + + /** + * Create an instance of {@link Order } + * + */ + public Order createOrder() { + return new Order(); + } + + /** + * Create an instance of {@link ReviewOrder } + * + */ + public ReviewOrder createReviewOrder() { + return new ReviewOrder(); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/Order.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/Order.java new file mode 100644 index 0000000000..2a4bb26858 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/Order.java @@ -0,0 +1,147 @@ +/* + * 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 org.example.orderservice; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for order complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="order">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="customerId" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         <element name="status" type="{http://www.example.org/OrderService/}status" minOccurs="0"/>
+ *         <element name="total" type="{http://www.w3.org/2001/XMLSchema}double"/>
+ *         <element name="orderId" type="{http://www.w3.org/2001/XMLSchema}int"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "order", propOrder = { + "customerId", + "status", + "total", + "orderId" +}) +public class Order { + + protected String customerId; + protected Status status; + protected double total; + protected int orderId; + + /** + * Gets the value of the customerId property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCustomerId() { + return customerId; + } + + /** + * Sets the value of the customerId property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCustomerId(String value) { + this.customerId = value; + } + + /** + * Gets the value of the status property. + * + * @return + * possible object is + * {@link Status } + * + */ + public Status getStatus() { + return status; + } + + /** + * Sets the value of the status property. + * + * @param value + * allowed object is + * {@link Status } + * + */ + public void setStatus(Status value) { + this.status = value; + } + + /** + * Gets the value of the total property. + * + */ + public double getTotal() { + return total; + } + + /** + * Sets the value of the total property. + * + */ + public void setTotal(double value) { + this.total = value; + } + + /** + * Gets the value of the orderId property. + * + */ + public int getOrderId() { + return orderId; + } + + /** + * Sets the value of the orderId property. + * + */ + public void setOrderId(int value) { + this.orderId = value; + } + + // Added manually from wsimport generated class to improve debugging. + public String toString() { + return "Order[customerId=" + customerId + ",orderId=" + orderId + ",total=" + total + ",status=" + status.value() + "]"; + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/OrderService.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/OrderService.java new file mode 100644 index 0000000000..b0990423b8 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/OrderService.java @@ -0,0 +1,55 @@ +/* + * 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 org.example.orderservice; + +import javax.jws.WebMethod; +import javax.jws.WebParam; +import javax.jws.WebService; +import javax.xml.bind.annotation.XmlSeeAlso; +import javax.xml.ws.Holder; +import javax.xml.ws.RequestWrapper; +import javax.xml.ws.ResponseWrapper; + + +/** + * This class was generated by the JAX-WS RI. + * JAX-WS RI 2.1.1 in JDK 6 + * Generated source version: 2.1 + * + */ +@WebService(name = "OrderService", targetNamespace = "http://www.example.org/OrderService/") +@XmlSeeAlso({ + ObjectFactory.class +}) +public interface OrderService { + + + /** + * + * @param myData + */ + @WebMethod(action = "http://www.example.org/OrderService/reviewOrder") + @RequestWrapper(localName = "reviewOrder", targetNamespace = "http://www.example.org/OrderService/", className = "org.example.orderservice.ReviewOrder") + @ResponseWrapper(localName = "reviewOrderResponse", targetNamespace = "http://www.example.org/OrderService/", className = "org.example.orderservice.ReviewOrderResponse") + public void reviewOrder( + @WebParam(name = "myData", targetNamespace = "", mode = WebParam.Mode.INOUT) + Holder myData); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/OrderServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/OrderServiceImpl.java new file mode 100644 index 0000000000..7cb75ae843 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/OrderServiceImpl.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 org.example.orderservice; + +// import org.osoa.sca.annotations.Service; +import java.util.Random; + +import javax.jws.WebMethod; +import javax.jws.WebParam; +import javax.xml.ws.Holder; +import javax.xml.ws.RequestWrapper; +import javax.xml.ws.ResponseWrapper; + +/** + * This class implements the OrderService service. + */ +// @Service(OrderService.class) +public class OrderServiceImpl implements OrderService { + + /** This dummy implementation approves or rejects orders: + * < 100 - always approved. + * 100-1100 - randomly approved. Probability = (1100 - amount)/10 + * >1100 - always rejected. + */ + // public Order reviewOrder(Order order) { + @WebMethod(action = "http://www.example.org/OrderService/reviewOrder") + @RequestWrapper(localName = "reviewOrder", targetNamespace = "http://www.example.org/OrderService/", className = "org.example.orderservice.ReviewOrder") + @ResponseWrapper(localName = "reviewOrderResponse", targetNamespace = "http://www.example.org/OrderService/", className = "org.example.orderservice.ReviewOrderResponse") + public void reviewOrder( + @WebParam(name = "myData", targetNamespace = "", mode = WebParam.Mode.INOUT) + Holder myData) { + Order order = myData.value; + double total = order.getTotal(); + if ( total < 100.0 ) { + order.setStatus( Status.APPROVED ); + } else if ( total > 1100.0 ) { + order.setStatus( Status.REJECTED ); + } else { + int probability = (int) ((-100.0 + total) / 10.0); + Random approver = new Random(); + if ( approver.nextInt( 100 ) < probability ) + order.setStatus( Status.APPROVED ); + else + order.setStatus( Status.REJECTED ); + } + System.out.println( ">>> OrderService.reviewOrder return=" + order ); + // return order; + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/OrderServiceServer.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/OrderServiceServer.java new file mode 100644 index 0000000000..bbcfb3b961 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/OrderServiceServer.java @@ -0,0 +1,112 @@ +/* + * 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 org.example.orderservice; + +import java.io.IOException; + +import javax.xml.ws.Holder; + +import org.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.ContributionLocationHelper; +import org.apache.tuscany.sca.node.Node; +import org.apache.tuscany.sca.node.NodeFactory; + +/** + * Tests that the order server responds. + */ +public class OrderServiceServer { + + private Node node; + + public static void main(String[] args) throws Exception { + OrderServiceServer oss = new OrderServiceServer(); + + oss.startServer(); + oss.testOrderReviewApproved(); + oss.testOrderReviewRejected(); + oss.testOrderReviewRandom(); + oss.stopServer(); + } + + + public void startServer() throws Exception { + try { + + NodeFactory factory = NodeFactory.newInstance(); + String contribution = ContributionLocationHelper.getContributionLocation(OrderService_Service.class); + node = factory.createNode("orderws.composite", new Contribution("order", contribution)).start(); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + public void testOrderReviewApproved() throws IOException { + OrderService orderService = + node.getService(OrderService.class, "OrderServiceComponent/OrderService"); + + Order order = new Order(); + order.setStatus( Status.CREATED ); + order.setCustomerId("cust1234"); + order.setTotal( 50.0 ); + + System.out.println( ">>> Order submitted=" + order ); + Holder holder = new Holder( order ); + orderService.reviewOrder( holder ); + System.out.println( ">>> Order returned=" + holder.value ); + } + + + public void testOrderReviewRejected() throws IOException { + OrderService orderService = + node.getService(OrderService.class, "OrderServiceComponent/OrderService"); + + Order order = new Order(); + order.setStatus( Status.CREATED ); + order.setCustomerId("cust2345"); + order.setTotal( 50000.0 ); + + System.out.println( ">>> Order submitted=" + order ); + Holder holder = new Holder( order ); + orderService.reviewOrder( holder ); + System.out.println( ">>> Order returned=" + holder.value ); + } + + public void testOrderReviewRandom() throws IOException { + OrderService orderService = + node.getService(OrderService.class, "OrderServiceComponent/OrderService"); + + Order order = new Order(); + order.setStatus( Status.CREATED ); + order.setCustomerId("cust3456"); + order.setTotal( 600.0 ); + + System.out.println( ">>> Order submitted=" + order ); + Holder holder = new Holder( order ); + orderService.reviewOrder( holder ); + System.out.println( ">>> Order returned=" + holder.value ); + } + + + public void stopServer() throws Exception { + if (node != null) + node.stop(); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/OrderService_Service.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/OrderService_Service.java new file mode 100644 index 0000000000..fbcdff735d --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/OrderService_Service.java @@ -0,0 +1,84 @@ +/* + * 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 org.example.orderservice; + +import java.net.MalformedURLException; +import java.net.URL; +import javax.xml.namespace.QName; +import javax.xml.ws.Service; +import javax.xml.ws.WebEndpoint; +import javax.xml.ws.WebServiceClient; +import javax.xml.ws.WebServiceFeature; + + +/** + * This class was generated by the JAX-WS RI. + * JAX-WS RI 2.1.1 in JDK 6 + * Generated source version: 2.1 + * + */ +@WebServiceClient(name = "OrderService", targetNamespace = "http://www.example.org/OrderService/", wsdlLocation = "META-INF/sca-deployables/orderservice.wsdl") +public class OrderService_Service + extends Service +{ + + private final static URL ORDERSERVICE_WSDL_LOCATION; + + static { + URL url = null; + try { + url = new URL("META-INF/sca-deployables/orderservice.wsdl"); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + ORDERSERVICE_WSDL_LOCATION = url; + } + + public OrderService_Service(URL wsdlLocation, QName serviceName) { + super(wsdlLocation, serviceName); + } + + public OrderService_Service() { + super(ORDERSERVICE_WSDL_LOCATION, new QName("http://www.example.org/OrderService/", "OrderService")); + } + + /** + * + * @return + * returns OrderService + */ + @WebEndpoint(name = "OrderServiceSOAP") + public OrderService getOrderServiceSOAP() { + return (OrderService)super.getPort(new QName("http://www.example.org/OrderService/", "OrderServiceSOAP"), OrderService.class); + } + + /** + * + * @param features + * A list of {@link javax.xml.ws.WebServiceFeature} to configure on the proxy. Supported features not in the features parameter will have their default values. + * @return + * returns OrderService + */ + @WebEndpoint(name = "OrderServiceSOAP") + public OrderService getOrderServiceSOAP(WebServiceFeature... features) { + return (OrderService)super.getPort(new QName("http://www.example.org/OrderService/", "OrderServiceSOAP"), OrderService.class, features); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/ReviewOrder.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/ReviewOrder.java new file mode 100644 index 0000000000..ea00efb42e --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/ReviewOrder.java @@ -0,0 +1,82 @@ +/* + * 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 org.example.orderservice; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for anonymous complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType>
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="myData" type="{http://www.example.org/OrderService/}order"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "myData" +}) +@XmlRootElement(name = "reviewOrder") +public class ReviewOrder { + + @XmlElement(required = true) + protected Order myData; + + /** + * Gets the value of the myData property. + * + * @return + * possible object is + * {@link Order } + * + */ + public Order getMyData() { + return myData; + } + + /** + * Sets the value of the myData property. + * + * @param value + * allowed object is + * {@link Order } + * + */ + public void setMyData(Order value) { + this.myData = value; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/ReviewOrderResponse.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/ReviewOrderResponse.java new file mode 100644 index 0000000000..7b27c7d4b5 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/ReviewOrderResponse.java @@ -0,0 +1,82 @@ +/* + * 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 org.example.orderservice; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for anonymous complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType>
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="myData" type="{http://www.example.org/OrderService/}order"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "myData" +}) +@XmlRootElement(name = "reviewOrderResponse") +public class ReviewOrderResponse { + + @XmlElement(required = true) + protected Order myData; + + /** + * Gets the value of the myData property. + * + * @return + * possible object is + * {@link Order } + * + */ + public Order getMyData() { + return myData; + } + + /** + * Sets the value of the myData property. + * + * @param value + * allowed object is + * {@link Order } + * + */ + public void setMyData(Order value) { + this.myData = value; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/Status.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/Status.java new file mode 100644 index 0000000000..83b198ab35 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/Status.java @@ -0,0 +1,75 @@ +/* + * 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 org.example.orderservice; + +import javax.xml.bind.annotation.XmlEnum; +import javax.xml.bind.annotation.XmlEnumValue; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for status. + * + *

The following schema fragment specifies the expected content contained within this class. + *

+ *

+ * <simpleType name="status">
+ *   <restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *     <enumeration value="Created"/>
+ *     <enumeration value="Submitted"/>
+ *     <enumeration value="Approved"/>
+ *     <enumeration value="Rejected"/>
+ *   </restriction>
+ * </simpleType>
+ * 
+ * + */ +@XmlType(name = "status") +@XmlEnum +public enum Status { + + @XmlEnumValue("Created") + CREATED("Created"), + @XmlEnumValue("Submitted") + SUBMITTED("Submitted"), + @XmlEnumValue("Approved") + APPROVED("Approved"), + @XmlEnumValue("Rejected") + REJECTED("Rejected"); + private final String value; + + Status(String v) { + value = v; + } + + public String value() { + return value; + } + + public static Status fromValue(String v) { + for (Status c: Status.values()) { + if (c.value.equals(v)) { + return c; + } + } + throw new IllegalArgumentException(v); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/package-info.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/package-info.java new file mode 100644 index 0000000000..4acc5af9b0 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/java/org/example/orderservice/package-info.java @@ -0,0 +1,21 @@ +/* + * 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://www.example.org/OrderService/") +package org.example.orderservice; diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/resources/orderws.composite b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/resources/orderws.composite new file mode 100644 index 0000000000..eeba5ac050 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/resources/orderws.composite @@ -0,0 +1,33 @@ + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/resources/wsdl/orderservice.wsdl b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/resources/wsdl/orderservice.wsdl new file mode 100644 index 0000000000..d016994679 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/main/resources/wsdl/orderservice.wsdl @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/test/java/org/example/orderservice/OrderServiceTestCase.java b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/test/java/org/example/orderservice/OrderServiceTestCase.java new file mode 100644 index 0000000000..bb135adb26 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/holder-ws-service/src/test/java/org/example/orderservice/OrderServiceTestCase.java @@ -0,0 +1,116 @@ +/* + * 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 org.example.orderservice; + +import static junit.framework.Assert.assertNotNull; +import static junit.framework.Assert.assertTrue; + +import java.io.IOException; + +import javax.xml.ws.Holder; + +import org.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.ContributionLocationHelper; +import org.apache.tuscany.sca.node.Node; +import org.apache.tuscany.sca.node.NodeFactory; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +/** + * Tests that the order server responds. + */ +public class OrderServiceTestCase { + + private Node node; + + @Before + public void startServer() throws Exception { + try { + + NodeFactory factory = NodeFactory.newInstance(); + String contribution = ContributionLocationHelper.getContributionLocation(OrderService_Service.class); + node = factory.createNode("orderws.composite", new Contribution("order", contribution)).start(); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + @Test + public void testOrderReviewApproved() throws IOException { + OrderService orderService = + node.getService(OrderService.class, "OrderServiceComponent/OrderService"); + assertNotNull(orderService); + + Order order = new Order(); + order.setStatus( Status.CREATED ); + order.setCustomerId("cust1234"); + order.setTotal( 50.0 ); + + System.out.println( ">>> Order submitted=" + order ); + Holder holder = new Holder( order ); + orderService.reviewOrder( holder ); + System.out.println( ">>> Order returned=" + holder.value ); + assertTrue( holder.value.getStatus() == Status.APPROVED ); + } + + @Test + public void testOrderReviewRejected() throws IOException { + OrderService orderService = + node.getService(OrderService.class, "OrderServiceComponent/OrderService"); + assertNotNull(orderService); + + Order order = new Order(); + order.setStatus( Status.CREATED ); + order.setCustomerId("cust2345"); + order.setTotal( 50000.0 ); + + System.out.println( ">>> Order submitted=" + order ); + Holder holder = new Holder( order ); + orderService.reviewOrder( holder ); + System.out.println( ">>> Order returned=" + holder.value ); + assertTrue( holder.value.getStatus() == Status.REJECTED ); + } + + @Test + public void testOrderReviewRandom() throws IOException { + OrderService orderService = + node.getService(OrderService.class, "OrderServiceComponent/OrderService"); + assertNotNull(orderService); + + Order order = new Order(); + order.setStatus( Status.CREATED ); + order.setCustomerId("cust3456"); + order.setTotal( 600.0 ); + + System.out.println( ">>> Order submitted=" + order ); + Holder holder = new Holder( order ); + orderService.reviewOrder( holder ); + System.out.println( ">>> Order returned=" + holder.value ); + assertTrue( holder.value.getStatus() != Status.CREATED ); + } + + @After + public void stopServer() throws Exception { + if (node != null) + node.stop(); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-ws/pom.xml b/sca-java-2.x/contrib/samples/learning-more/binding-ws/pom.xml new file mode 100644 index 0000000000..5cf72633fe --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-ws/pom.xml @@ -0,0 +1,44 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples-learning-more + 2.0-SNAPSHOT + ../pom.xml + + tuscany-sample-binding-ws + pom + Apache Tuscany SCA Sample binding.ws + + + + default + + true + + + calculator-contribution + + + + + -- cgit v1.2.3