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 --- .../async/calculator-contribution/README | 7 + .../async/calculator-contribution/build.xml | 57 ++++ .../async/calculator-contribution/pom.xml | 57 ++++ .../java/calculator/CalculateReferenceAsync.java | 57 ++++ .../java/calculator/CalculatorAsyncHandler.java | 36 +++ .../src/main/java/calculator/CalculatorClient.java | 52 ++++ .../calculator/CalculatorPrintAsyncHandler.java | 36 +++ .../java/calculator/CalculatorServiceAsync.java | 36 +++ .../calculator/CalculatorServiceAsyncImpl.java | 44 +++ .../calculator/CalculatorServiceProxyImpl.java | 132 +++++++++ .../java/calculator/CalculatorServiceSync.java | 31 ++ .../java/calculator/CalculatorServiceSyncImpl.java | 38 +++ .../src/main/resources/Calculator.composite | 43 +++ .../src/main/resources/CalculatorClient.composite | 30 ++ .../main/resources/META-INF/sca-contribution.xml | 24 ++ .../contrib/samples/learning-more/async/pom.xml | 43 +++ .../samples/learning-more/binding-comet/pom.xml | 43 +++ .../binding-comet/weather-webapp/deploy.sh | 20 ++ .../binding-comet/weather-webapp/pom.xml | 55 ++++ .../apache/tuscany/sca/sample/comet/Helper.java | 34 +++ .../tuscany/sca/sample/comet/HumidityService.java | 31 ++ .../sca/sample/comet/PrecipitationService.java | 31 ++ .../sca/sample/comet/PrecipitationServiceImpl.java | 39 +++ .../comet/TemperatureHumidityServiceImpl.java | 48 +++ .../sca/sample/comet/TemperatureService.java | 34 +++ .../tuscany/sca/sample/comet/model/Location.java | 43 +++ .../tuscany/sca/sample/comet/model/Response.java | 45 +++ .../src/main/webapp/META-INF/MANIFEST.MF | 2 + .../src/main/webapp/WEB-INF/appengine-web.xml | 24 ++ .../src/main/webapp/WEB-INF/web.composite | 45 +++ .../weather-webapp/src/main/webapp/WEB-INF/web.xml | 34 +++ .../weather-webapp/src/main/webapp/index.html | 157 ++++++++++ .../binding-jms/helloworld-webapp/README | 131 ++++++++ .../binding-jms/helloworld-webapp/pom.xml | 96 ++++++ .../src/main/java/sample/HelloWorldClient.java | 37 +++ .../src/main/java/sample/HelloWorldService.java | 29 ++ .../main/java/sample/HelloWorldServiceImpl.java | 31 ++ .../src/main/webapp/META-INF/context.xml | 34 +++ .../src/main/webapp/WEB-INF/jetty-env.xml | 48 +++ .../src/main/webapp/WEB-INF/web.composite | 44 +++ .../src/main/webapp/WEB-INF/web.xml | 66 +++++ .../helloworld-webapp/src/main/webapp/hello.jsp | 41 +++ .../samples/learning-more/binding-jms/pom.xml | 43 +++ .../samples/learning-more/binding-jsonrpc/README | 1 + .../binding-jsonrpc/calculator-contribution/README | 8 + .../calculator-contribution/build.xml | 57 ++++ .../calculator-contribution/pom.xml | 57 ++++ .../src/main/java/calculator/AddBean.java | 88 ++++++ .../src/main/java/calculator/AddService.java | 32 ++ .../src/main/java/calculator/AddServiceImpl.java | 43 +++ .../src/main/java/calculator/CalculatorClient.java | 52 ++++ .../main/java/calculator/CalculatorService.java | 37 +++ .../java/calculator/CalculatorServiceImpl.java | 86 ++++++ .../src/main/java/calculator/DivideService.java | 28 ++ .../main/java/calculator/DivideServiceImpl.java | 38 +++ .../src/main/java/calculator/MultiplyService.java | 28 ++ .../main/java/calculator/MultiplyServiceImpl.java | 38 +++ .../src/main/java/calculator/SubtractService.java | 28 ++ .../main/java/calculator/SubtractServiceImpl.java | 38 +++ .../src/main/resources/Calculator.composite | 53 ++++ .../src/main/resources/CalculatorClient.composite | 30 ++ .../main/resources/META-INF/sca-contribution.xml | 24 ++ .../test/java/calculator/CalculatorTestCase.java | 50 ++++ .../binding-jsonrpc/calculator-webapp/README | 8 + .../binding-jsonrpc/calculator-webapp/pom.xml | 75 +++++ .../src/main/java/calculator/AddBean.java | 90 ++++++ .../src/main/java/calculator/AddService.java | 32 ++ .../src/main/java/calculator/AddServiceImpl.java | 44 +++ .../main/java/calculator/CalculatorService.java | 37 +++ .../java/calculator/CalculatorServiceImpl.java | 86 ++++++ .../src/main/java/calculator/DivideService.java | 28 ++ .../main/java/calculator/DivideServiceImpl.java | 38 +++ .../src/main/java/calculator/MultiplyService.java | 28 ++ .../main/java/calculator/MultiplyServiceImpl.java | 38 +++ .../src/main/java/calculator/SubtractService.java | 28 ++ .../main/java/calculator/SubtractServiceImpl.java | 38 +++ .../src/main/webapp/WEB-INF/web.composite | 53 ++++ .../src/main/webapp/WEB-INF/web.xml | 41 +++ .../src/main/webapp/calculate.html | 62 ++++ .../test/java/calculator/CalculatorTestCase.java | 50 ++++ .../samples/learning-more/binding-jsonrpc/pom.xml | 44 +++ .../samples/learning-more/binding-rmi/README | 1 + .../calculator-reference-contribution/README | 11 + .../calculator-reference-contribution/build.xml | 59 ++++ .../calculator-reference-contribution/pom.xml | 74 +++++ .../src/main/java/calculator/AddService.java | 28 ++ .../main/java/calculator/CalculatorService.java | 39 +++ .../java/calculator/CalculatorServiceImpl.java | 68 +++++ .../src/main/java/calculator/DivideService.java | 28 ++ .../src/main/java/calculator/MultiplyService.java | 28 ++ .../src/main/java/calculator/SubtractService.java | 28 ++ .../resources/CalculatorRMIReference.composite | 42 +++ .../calculator/CalculatorRMIReferenceTestCase.java | 70 +++++ .../java/calculator/CalculatorRMIServiceImpl.java | 52 ++++ .../calculator-service-contribution/README | 28 ++ .../calculator-service-contribution/build.xml | 59 ++++ .../calculator-service-contribution/pom.xml | 74 +++++ .../src/main/java/calculator/AddService.java | 28 ++ .../src/main/java/calculator/AddServiceImpl.java | 30 ++ .../src/main/java/calculator/CalculatorClient.java | 40 +++ .../main/java/calculator/CalculatorService.java | 36 +++ .../java/calculator/CalculatorServiceImpl.java | 68 +++++ .../src/main/java/calculator/DivideService.java | 28 ++ .../main/java/calculator/DivideServiceImpl.java | 30 ++ .../src/main/java/calculator/MultiplyService.java | 28 ++ .../main/java/calculator/MultiplyServiceImpl.java | 30 ++ .../src/main/java/calculator/SubtractService.java | 28 ++ .../main/java/calculator/SubtractServiceImpl.java | 30 ++ .../main/resources/CalculatorRMIServer.composite | 53 ++++ .../main/resources/META-INF/sca-contribution.xml | 23 ++ .../calculator/CalculatorRMIServerTestCase.java | 63 ++++ .../samples/learning-more/binding-rmi/pom.xml | 44 +++ .../samples/learning-more/binding-sca/README | 1 + .../binding-sca/calculator-contribution/README | 8 + .../binding-sca/calculator-contribution/build.xml | 57 ++++ .../binding-sca/calculator-contribution/pom.xml | 57 ++++ .../src/main/java/calculator/AddService.java | 28 ++ .../src/main/java/calculator/AddServiceImpl.java | 38 +++ .../src/main/java/calculator/CalculatorClient.java | 52 ++++ .../main/java/calculator/CalculatorService.java | 37 +++ .../java/calculator/CalculatorServiceImpl.java | 72 +++++ .../src/main/java/calculator/DivideService.java | 28 ++ .../main/java/calculator/DivideServiceImpl.java | 38 +++ .../src/main/java/calculator/MultiplyService.java | 28 ++ .../main/java/calculator/MultiplyServiceImpl.java | 38 +++ .../src/main/java/calculator/SubtractService.java | 28 ++ .../main/java/calculator/SubtractServiceImpl.java | 38 +++ .../src/main/resources/Calculator.composite | 49 +++ .../src/main/resources/CalculatorClient.composite | 30 ++ .../main/resources/META-INF/sca-contribution.xml | 24 ++ .../test/java/calculator/CalculatorTestCase.java | 50 ++++ .../samples/learning-more/binding-sca/pom.xml | 43 +++ .../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 +++ .../dosgi-dynamic-calculator-operations/LICENSE | 205 +++++++++++++ .../META-INF/MANIFEST.MF | 23 ++ .../dosgi-dynamic-calculator-operations/NOTICE | 6 + .../OSGI-INF/add-component.xml | 25 ++ .../OSGI-INF/blueprint/operations-module.xml | 40 +++ .../OSGI-INF/divide-component.xml | 25 ++ .../OSGI-INF/multiply-component.xml | 25 ++ .../OSGI-INF/sca-config/operations-config.xml | 29 ++ .../OSGI-INF/subtract-component.xml | 25 ++ .../dosgi-dynamic-calculator-operations/README | 6 + .../dosgi-dynamic-calculator-operations/pom.xml | 159 ++++++++++ .../calculator/dosgi/operations/AddService.java | 31 ++ .../calculator/dosgi/operations/DivideService.java | 31 ++ .../dosgi/operations/MultiplyService.java | 31 ++ .../dosgi/operations/SubtractService.java | 31 ++ .../dosgi/operations/impl/AddServiceImpl.java | 37 +++ .../dosgi/operations/impl/DivideServiceImpl.java | 37 +++ .../dosgi/operations/impl/MultiplyServiceImpl.java | 37 +++ .../dosgi/operations/impl/OperationsActivator.java | 94 ++++++ .../dosgi/operations/impl/SubtractServiceImpl.java | 37 +++ .../dosgi/operations/test/OSGiTestUtils.java | 105 +++++++ .../dosgi/operations/test/OperationsNode.java | 43 +++ .../test/OperationsOSGiNodeTestCase.java | 104 +++++++ .../dosgi-dynamic-calculator/LICENSE | 205 +++++++++++++ .../dosgi-dynamic-calculator/META-INF/MANIFEST.MF | 23 ++ .../dosgi-dynamic-calculator/NOTICE | 6 + .../OSGI-INF/blueprint/calculator-module.xml | 43 +++ .../OSGI-INF/calculator-component.xml | 36 +++ .../calculator-service-descriptions.xml | 73 +++++ .../OSGI-INF/sca-config/calculator-config.xml | 32 ++ .../dosgi-dynamic-calculator/README | 6 + .../dosgi-dynamic-calculator/dosgi-calculator.png | Bin 0 -> 85103 bytes .../dosgi-dynamic-calculator/pom.xml | 153 ++++++++++ .../java/calculator/dosgi/CalculatorService.java | 36 +++ .../calculator/dosgi/impl/CalculatorActivator.java | 78 +++++ .../dosgi/impl/CalculatorServiceDSImpl.java | 114 +++++++ .../dosgi/impl/CalculatorServiceImpl.java | 99 +++++++ .../calculator/dosgi/operations/AddService.java | 31 ++ .../calculator/dosgi/operations/DivideService.java | 31 ++ .../dosgi/operations/MultiplyService.java | 31 ++ .../dosgi/operations/SubtractService.java | 31 ++ .../java/calculator/rmi/OperationsRMIServer.java | 93 ++++++ .../calculator/rmi/OperationsRMIServer_Stub.java | 132 +++++++++ .../main/java/calculator/rmi/OperationsRemote.java | 37 +++ .../java/calculator/dosgi/test/CalculatorNode.java | 43 +++ .../dosgi/test/CalculatorOSGiNodeTestCase.java | 144 +++++++++ .../java/calculator/dosgi/test/OSGiTestUtils.java | 105 +++++++ .../samples/learning-more/distributed-osgi/pom.xml | 44 +++ .../helloworld-bpel-contribution/README | 31 ++ .../helloworld-bpel-contribution/build.xml | 95 ++++++ .../helloworld-bpel.png | Bin 0 -> 8897 bytes .../helloworld-bpel.svg | 179 +++++++++++ .../helloworld-bpel-contribution/pom.xml | 76 +++++ .../src/main/java/helloworld/Hello.java | 29 ++ .../main/resources/META-INF/sca-contribution.xml | 23 ++ .../src/main/resources/helloworld.bpel | 80 +++++ .../src/main/resources/helloworld.composite | 29 ++ .../src/main/resources/helloworld.wsdl | 94 ++++++ .../src/main/resources/log4j.properties | 35 +++ .../helloworld-bpel-webapp/README | 6 + .../helloworld-bpel-webapp/pom.xml | 153 ++++++++++ .../src/main/java/sample/HelloworldService.java | 28 ++ .../src/main/resources/helloworld.bpel | 66 +++++ .../src/main/resources/helloworld.wsdl | 82 +++++ .../src/main/webapp/WEB-INF/web.composite | 37 +++ .../src/main/webapp/WEB-INF/web.xml | 41 +++ .../src/main/webapp/hello.jsp | 36 +++ .../learning-more/implementation-bpel/pom.xml | 44 +++ .../helloworld-recursive-ws/README | 7 + .../helloworld-recursive-ws/pom.xml | 82 +++++ .../main/resources/META-INF/sca-contribution.xml | 28 ++ .../src/main/resources/helloworld-ws.composite | 33 +++ .../helloworld-recursive/README | 6 + .../helloworld-recursive/pom.xml | 76 +++++ .../main/resources/META-INF/sca-contribution.xml | 26 ++ .../main/resources/helloworld-recursive.composite | 30 ++ .../learning-more/implementation-composite/pom.xml | 44 +++ .../learning-more/implementation-java/README | 1 + .../calculator-contribution/README | 8 + .../calculator-contribution/build.xml | 56 ++++ .../calculator-contribution/pom.xml | 57 ++++ .../src/main/java/calculator/AddService.java | 28 ++ .../src/main/java/calculator/AddServiceImpl.java | 35 +++ .../src/main/java/calculator/CalculatorClient.java | 62 ++++ .../main/java/calculator/CalculatorService.java | 37 +++ .../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 | 49 +++ .../src/main/resources/CalculatorClient.composite | 30 ++ .../main/resources/META-INF/sca-contribution.xml | 24 ++ .../test/java/calculator/CalculatorTestCase.java | 49 +++ .../learning-more/implementation-java/pom.xml | 43 +++ .../dosgi-calculator-operations/LICENSE | 205 +++++++++++++ .../META-INF/MANIFEST.MF | 22 ++ .../dosgi-calculator-operations/NOTICE | 6 + .../OSGI-INF/add-component.xml | 25 ++ .../OSGI-INF/blueprint/operations-module.xml | 40 +++ .../OSGI-INF/divide-component.xml | 25 ++ .../OSGI-INF/multiply-component.xml | 25 ++ .../OSGI-INF/sca/bundle.componentType | 54 ++++ .../OSGI-INF/sca/bundle.composite | 43 +++ .../OSGI-INF/subtract-component.xml | 25 ++ .../dosgi-calculator-operations/README | 6 + .../dosgi-calculator-operations/pom.xml | 161 ++++++++++ .../calculator/dosgi/operations/AddService.java | 31 ++ .../calculator/dosgi/operations/DivideService.java | 31 ++ .../dosgi/operations/MultiplyService.java | 31 ++ .../dosgi/operations/SubtractService.java | 31 ++ .../dosgi/operations/impl/AddServiceImpl.java | 37 +++ .../dosgi/operations/impl/DivideServiceImpl.java | 37 +++ .../dosgi/operations/impl/MultiplyServiceImpl.java | 37 +++ .../dosgi/operations/impl/OperationsActivator.java | 88 ++++++ .../dosgi/operations/impl/SubtractServiceImpl.java | 37 +++ .../main/resources/META-INF/sca-contribution.xml | 23 ++ .../dosgi/operations/test/OSGiTestUtils.java | 105 +++++++ .../dosgi/operations/test/OperationsNode.java | 43 +++ .../test/OperationsOSGiNodeTestCase.java | 105 +++++++ .../implementation-osgi/dosgi-calculator/LICENSE | 205 +++++++++++++ .../dosgi-calculator/META-INF/MANIFEST.MF | 20 ++ .../implementation-osgi/dosgi-calculator/NOTICE | 6 + .../OSGI-INF/blueprint/calculator-module.xml | 43 +++ .../OSGI-INF/calculator-component.xml | 36 +++ .../OSGI-INF/sca/bundle.componentType | 64 ++++ .../dosgi-calculator/OSGI-INF/sca/bundle.composite | 45 +++ .../implementation-osgi/dosgi-calculator/README | 6 + .../dosgi-calculator/dosgi-calculator.png | Bin 0 -> 85103 bytes .../implementation-osgi/dosgi-calculator/pom.xml | 153 ++++++++++ .../java/calculator/dosgi/CalculatorService.java | 36 +++ .../calculator/dosgi/impl/CalculatorActivator.java | 76 +++++ .../dosgi/impl/CalculatorServiceDSImpl.java | 114 +++++++ .../dosgi/impl/CalculatorServiceImpl.java | 105 +++++++ .../calculator/dosgi/operations/AddService.java | 31 ++ .../calculator/dosgi/operations/DivideService.java | 31 ++ .../dosgi/operations/MultiplyService.java | 31 ++ .../dosgi/operations/SubtractService.java | 31 ++ .../java/calculator/rmi/OperationsRMIServer.java | 93 ++++++ .../calculator/rmi/OperationsRMIServer_Stub.java | 132 +++++++++ .../main/java/calculator/rmi/OperationsRemote.java | 37 +++ .../main/resources/META-INF/sca-contribution.xml | 24 ++ .../java/calculator/dosgi/test/CalculatorNode.java | 43 +++ .../dosgi/test/CalculatorOSGiNodeTestCase.java | 152 ++++++++++ .../java/calculator/dosgi/test/OSGiTestUtils.java | 105 +++++++ .../learning-more/implementation-osgi/pom.xml | 44 +++ .../learning-more/implementation-script/README | 1 + .../calculator-contribution/README | 8 + .../calculator-contribution/build.xml | 57 ++++ .../calculator-contribution/pom.xml | 57 ++++ .../src/main/java/calculator/AddService.java | 28 ++ .../src/main/java/calculator/CalculatorClient.java | 52 ++++ .../main/java/calculator/CalculatorService.java | 37 +++ .../java/calculator/CalculatorServiceImpl.java | 72 +++++ .../src/main/java/calculator/DivideService.java | 28 ++ .../src/main/java/calculator/MultiplyService.java | 28 ++ .../src/main/java/calculator/SubtractService.java | 28 ++ .../src/main/resources/Calculator.composite | 50 ++++ .../src/main/resources/CalculatorClient.composite | 30 ++ .../main/resources/META-INF/sca-contribution.xml | 24 ++ .../calculator/AddServiceImpl.componentType | 30 ++ .../main/resources/calculator/AddServiceImpl.js | 22 ++ .../calculator/DivideServiceImpl.componentType | 30 ++ .../resources/calculator/DivideServiceImpl.groovy | 22 ++ .../calculator/MultiplyServiceImpl.componentType | 30 ++ .../resources/calculator/MultiplyServiceImpl.py | 20 ++ .../calculator/SubtractServiceImpl.componentType | 30 ++ .../resources/calculator/SubtractServiceImpl.rb | 21 ++ .../learning-more/implementation-script/pom.xml | 43 +++ .../helloworld-spring-contribution/README | 8 + .../helloworld-spring-contribution/pom.xml | 67 +++++ .../src/main/java/sample/DateService.java | 29 ++ .../src/main/java/sample/DateServiceImpl.java | 37 +++ .../src/main/java/sample/Helloworld.java | 28 ++ .../src/main/java/sample/HelloworldClientImpl.java | 48 +++ .../src/main/java/sample/HelloworldImpl.java | 34 +++ .../main/resources/META-INF/sca-contribution.xml | 23 ++ .../main/resources/helloworld-client-context.xml | 37 +++ .../src/main/resources/helloworld-context.xml | 30 ++ .../src/main/resources/helloworld.composite | 36 +++ .../src/test/java/sample/HelloworldTestCase.java | 33 +++ .../helloworld-spring-webapp/README | 9 + .../helloworld-spring-webapp/pom.xml | 185 ++++++++++++ .../src/main/webapp/WEB-INF/web.xml | 51 ++++ .../test/java/sample/HelloworldClientTestCase.java | 58 ++++ .../src/test/resources/test-web.xml | 25 ++ .../learning-more/implementation-spring/pom.xml | 44 +++ .../implementation-web/helloworld-jaxrs/README | 8 + .../implementation-web/helloworld-jaxrs/pom.xml | 131 ++++++++ .../src/main/java/sample/HelloWorldResource.java | 68 +++++ .../src/main/java/sample/HelloworldService.java | 25 ++ .../main/java/sample/HelloworldServiceImpl.java | 28 ++ .../src/main/webapp/WEB-INF/application | 14 + .../src/main/webapp/WEB-INF/web.composite | 34 +++ .../src/main/webapp/WEB-INF/web.xml | 49 +++ .../src/test/java/itest/HelloworldTestCase.java | 43 +++ .../implementation-web/helloworld-js-client/README | 8 + .../helloworld-js-client/pom.xml | 104 +++++++ .../src/main/java/sample/HelloworldService.java | 25 ++ .../main/java/sample/HelloworldServiceImpl.java | 28 ++ .../src/main/webapp/WEB-INF/web.composite | 36 +++ .../src/main/webapp/WEB-INF/web.xml | 41 +++ .../src/main/webapp/hello.html | 51 ++++ .../src/test/java/itest/HelloworldTestCase.java | 77 +++++ .../implementation-web/helloworld-jsf/README | 8 + .../implementation-web/helloworld-jsf/pom.xml | 99 +++++++ .../src/main/java/sample/HelloWorldController.java | 56 ++++ .../src/main/java/sample/HelloworldService.java | 25 ++ .../main/java/sample/HelloworldServiceImpl.java | 27 ++ .../src/main/webapp/WEB-INF/faces-config.xml | 51 ++++ .../src/main/webapp/WEB-INF/web.composite | 34 +++ .../helloworld-jsf/src/main/webapp/WEB-INF/web.xml | 191 ++++++++++++ .../helloworld-jsf/src/main/webapp/helloWorld.jsp | 40 +++ .../helloworld-jsf/src/main/webapp/index.jsp | 23 ++ .../helloworld-jsf/src/main/webapp/page2.jsp | 38 +++ .../implementation-web/helloworld-jsp/README | 7 + .../implementation-web/helloworld-jsp/pom.xml | 98 ++++++ .../src/main/java/sample/HelloworldService.java | 25 ++ .../main/java/sample/HelloworldServiceImpl.java | 28 ++ .../src/main/webapp/WEB-INF/web.composite | 34 +++ .../helloworld-jsp/src/main/webapp/WEB-INF/web.xml | 41 +++ .../helloworld-jsp/src/main/webapp/hello.jsp | 37 +++ .../src/test/java/itest/HelloworldTestCase.java | 53 ++++ .../implementation-web/helloworld-servlet/README | 8 + .../implementation-web/helloworld-servlet/pom.xml | 105 +++++++ .../src/main/java/sample/HelloworldService.java | 25 ++ .../main/java/sample/HelloworldServiceImpl.java | 27 ++ .../src/main/java/sample/HelloworldServlet.java | 64 ++++ .../src/main/webapp/WEB-INF/web.composite | 34 +++ .../src/main/webapp/WEB-INF/web.xml | 44 +++ .../helloworld-servlet/src/main/webapp/hello.html | 46 +++ .../src/test/java/itest/HelloworldTestCase.java | 55 ++++ .../implementation-web/helloworld-stripes/README | 8 + .../implementation-web/helloworld-stripes/pom.xml | 118 ++++++++ .../main/java/mystripes/action/BaseActionBean.java | 33 +++ .../main/java/mystripes/action/HomeActionBean.java | 45 +++ .../src/main/java/sample/HelloworldService.java | 25 ++ .../main/java/sample/HelloworldServiceImpl.java | 28 ++ .../src/main/resources/StripesResources.properties | 73 +++++ .../src/main/resources/log4j.properties | 48 +++ .../src/main/webapp/WEB-INF/jsp/home.jsp | 26 ++ .../src/main/webapp/WEB-INF/jsp/layout.jsp | 39 +++ .../src/main/webapp/WEB-INF/jsp/taglibs.jsp | 29 ++ .../src/main/webapp/WEB-INF/web.composite | 34 +++ .../src/main/webapp/WEB-INF/web.xml | 61 ++++ .../helloworld-stripes/src/main/webapp/index.html | 24 ++ .../helloworld-stripes/src/test/java/README | 7 + .../src/test/java/itest/HelloworldTestCase.java | 53 ++++ .../learning-more/implementation-web/pom.xml | 50 ++++ sca-java-2.x/contrib/samples/learning-more/pom.xml | 60 ++++ .../sca-client/calculator-scaclient/README | 19 ++ .../sca-client/calculator-scaclient/pom.xml | 69 +++++ .../main/java/calculator/CalculatorService.java | 38 +++ .../src/main/java/sample/CalculatorSCAClient.java | 53 ++++ .../sca-client/helloworld-scaclient/README | 19 ++ .../sca-client/helloworld-scaclient/pom.xml | 69 +++++ .../src/main/java/sample/Helloworld.java | 28 ++ .../src/main/java/sample/HelloworldSCAClient.java | 51 ++++ .../src/test/java/sample/HelloworldTestCase.java | 33 +++ .../samples/learning-more/sca-client/pom.xml | 46 +++ 451 files changed, 21838 insertions(+) create mode 100644 sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/build.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculateReferenceAsync.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorAsyncHandler.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorClient.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorPrintAsyncHandler.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorServiceAsync.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorServiceAsyncImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorServiceProxyImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorServiceSync.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorServiceSyncImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/resources/Calculator.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/resources/CalculatorClient.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/async/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-comet/pom.xml create mode 100755 sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/deploy.sh create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/Helper.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/HumidityService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureHumidityServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/model/Location.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/model/Response.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/META-INF/MANIFEST.MF create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/WEB-INF/appengine-web.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/WEB-INF/web.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/WEB-INF/web.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/index.html create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/java/sample/HelloWorldClient.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/java/sample/HelloWorldService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/java/sample/HelloWorldServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/webapp/META-INF/context.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/webapp/WEB-INF/jetty-env.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/webapp/WEB-INF/web.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/webapp/WEB-INF/web.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/webapp/hello.jsp create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jms/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/build.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/AddBean.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/AddService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/AddServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/CalculatorClient.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/CalculatorService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/CalculatorServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/DivideService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/DivideServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/MultiplyService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/MultiplyServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/SubtractService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/SubtractServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/resources/Calculator.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/resources/CalculatorClient.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/test/java/calculator/CalculatorTestCase.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/AddBean.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/AddService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/AddServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/CalculatorService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/CalculatorServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/DivideService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/DivideServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/MultiplyService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/MultiplyServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/SubtractService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/SubtractServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/webapp/WEB-INF/web.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/webapp/WEB-INF/web.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/webapp/calculate.html create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/test/java/calculator/CalculatorTestCase.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/build.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/main/java/calculator/AddService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/main/java/calculator/CalculatorService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/main/java/calculator/CalculatorServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/main/java/calculator/DivideService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/main/java/calculator/MultiplyService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/main/java/calculator/SubtractService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/main/resources/CalculatorRMIReference.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/test/java/calculator/CalculatorRMIReferenceTestCase.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/test/java/calculator/CalculatorRMIServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/build.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/AddService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/AddServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/CalculatorClient.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/CalculatorService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/CalculatorServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/DivideService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/DivideServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/MultiplyService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/MultiplyServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/SubtractService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/SubtractServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/resources/CalculatorRMIServer.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/resources/META-INF/sca-contribution.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/test/java/calculator/CalculatorRMIServerTestCase.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-rmi/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-sca/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/build.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/AddService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/AddServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/CalculatorClient.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/CalculatorService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/CalculatorServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/DivideService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/DivideServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/MultiplyService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/MultiplyServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/SubtractService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/SubtractServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/resources/Calculator.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/resources/CalculatorClient.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/test/java/calculator/CalculatorTestCase.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/binding-sca/pom.xml 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 create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/LICENSE create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/META-INF/MANIFEST.MF create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/NOTICE create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/add-component.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/blueprint/operations-module.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/divide-component.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/multiply-component.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/sca-config/operations-config.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/subtract-component.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/AddService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/DivideService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/MultiplyService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/SubtractService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/impl/AddServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/impl/DivideServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/impl/MultiplyServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/impl/OperationsActivator.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/impl/SubtractServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/test/java/calculator/dosgi/operations/test/OSGiTestUtils.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/test/java/calculator/dosgi/operations/test/OperationsNode.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/test/java/calculator/dosgi/operations/test/OperationsOSGiNodeTestCase.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/LICENSE create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/META-INF/MANIFEST.MF create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/NOTICE create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/OSGI-INF/blueprint/calculator-module.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/OSGI-INF/calculator-component.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/OSGI-INF/remote-service/calculator-service-descriptions.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/OSGI-INF/sca-config/calculator-config.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/dosgi-calculator.png create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/CalculatorService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/impl/CalculatorActivator.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/impl/CalculatorServiceDSImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/impl/CalculatorServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/operations/AddService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/operations/DivideService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/operations/MultiplyService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/operations/SubtractService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/rmi/OperationsRMIServer.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/rmi/OperationsRMIServer_Stub.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/rmi/OperationsRemote.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/test/java/calculator/dosgi/test/CalculatorNode.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/test/java/calculator/dosgi/test/CalculatorOSGiNodeTestCase.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/test/java/calculator/dosgi/test/OSGiTestUtils.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/distributed-osgi/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/build.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/helloworld-bpel.png create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/helloworld-bpel.svg create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/src/main/java/helloworld/Hello.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/src/main/resources/META-INF/sca-contribution.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/src/main/resources/helloworld.bpel create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/src/main/resources/helloworld.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/src/main/resources/helloworld.wsdl create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/src/main/resources/log4j.properties create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/java/sample/HelloworldService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/resources/helloworld.bpel create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/resources/helloworld.wsdl create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/webapp/WEB-INF/web.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/webapp/WEB-INF/web.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/webapp/hello.jsp create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-bpel/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive-ws/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive-ws/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive-ws/src/main/resources/META-INF/sca-contribution.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive-ws/src/main/resources/helloworld-ws.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive/src/main/resources/META-INF/sca-contribution.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive/src/main/resources/helloworld-recursive.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-composite/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-java/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/build.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/java/calculator/AddService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/java/calculator/AddServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/java/calculator/CalculatorClient.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/java/calculator/CalculatorService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/java/calculator/CalculatorServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/java/calculator/DivideService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/java/calculator/DivideServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/java/calculator/MultiplyService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/java/calculator/MultiplyServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/java/calculator/SubtractService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/java/calculator/SubtractServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/resources/Calculator.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/resources/CalculatorClient.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/test/java/calculator/CalculatorTestCase.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-java/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/LICENSE create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/META-INF/MANIFEST.MF create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/NOTICE create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/add-component.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/blueprint/operations-module.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/divide-component.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/multiply-component.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/sca/bundle.componentType create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/sca/bundle.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/subtract-component.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/AddService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/DivideService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/MultiplyService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/SubtractService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/impl/AddServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/impl/DivideServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/impl/MultiplyServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/impl/OperationsActivator.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/impl/SubtractServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/resources/META-INF/sca-contribution.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/test/java/calculator/dosgi/operations/test/OSGiTestUtils.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/test/java/calculator/dosgi/operations/test/OperationsNode.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/test/java/calculator/dosgi/operations/test/OperationsOSGiNodeTestCase.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/LICENSE create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/META-INF/MANIFEST.MF create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/NOTICE create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/OSGI-INF/blueprint/calculator-module.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/OSGI-INF/calculator-component.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/OSGI-INF/sca/bundle.componentType create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/OSGI-INF/sca/bundle.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/dosgi-calculator.png create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/CalculatorService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/impl/CalculatorActivator.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/impl/CalculatorServiceDSImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/impl/CalculatorServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/operations/AddService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/operations/DivideService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/operations/MultiplyService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/operations/SubtractService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/rmi/OperationsRMIServer.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/rmi/OperationsRMIServer_Stub.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/rmi/OperationsRemote.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/resources/META-INF/sca-contribution.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/test/java/calculator/dosgi/test/CalculatorNode.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/test/java/calculator/dosgi/test/CalculatorOSGiNodeTestCase.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/test/java/calculator/dosgi/test/OSGiTestUtils.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-osgi/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-script/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/build.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/java/calculator/AddService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/java/calculator/CalculatorClient.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/java/calculator/CalculatorService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/java/calculator/CalculatorServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/java/calculator/DivideService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/java/calculator/MultiplyService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/java/calculator/SubtractService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/Calculator.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/CalculatorClient.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/AddServiceImpl.componentType create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/AddServiceImpl.js create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/DivideServiceImpl.componentType create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/DivideServiceImpl.groovy create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/MultiplyServiceImpl.componentType create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/MultiplyServiceImpl.py create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/SubtractServiceImpl.componentType create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/SubtractServiceImpl.rb create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-script/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/java/sample/DateService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/java/sample/DateServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/java/sample/Helloworld.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/java/sample/HelloworldClientImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/java/sample/HelloworldImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/resources/META-INF/sca-contribution.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/resources/helloworld-client-context.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/resources/helloworld-context.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/resources/helloworld.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/test/java/sample/HelloworldTestCase.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-webapp/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-webapp/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-webapp/src/main/webapp/WEB-INF/web.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-webapp/src/test/java/sample/HelloworldClientTestCase.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-webapp/src/test/resources/test-web.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-spring/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/java/sample/HelloWorldResource.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/java/sample/HelloworldService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/java/sample/HelloworldServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/webapp/WEB-INF/application create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/webapp/WEB-INF/web.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/webapp/WEB-INF/web.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/test/java/itest/HelloworldTestCase.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/main/java/sample/HelloworldService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/main/java/sample/HelloworldServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/main/webapp/WEB-INF/web.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/main/webapp/WEB-INF/web.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/main/webapp/hello.html create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/test/java/itest/HelloworldTestCase.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/java/sample/HelloWorldController.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/java/sample/HelloworldService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/java/sample/HelloworldServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/WEB-INF/faces-config.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/WEB-INF/web.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/WEB-INF/web.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/helloWorld.jsp create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/index.jsp create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/page2.jsp create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/main/java/sample/HelloworldService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/main/java/sample/HelloworldServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/main/webapp/WEB-INF/web.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/main/webapp/WEB-INF/web.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/main/webapp/hello.jsp create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/test/java/itest/HelloworldTestCase.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/java/sample/HelloworldService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/java/sample/HelloworldServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/java/sample/HelloworldServlet.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/webapp/WEB-INF/web.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/webapp/WEB-INF/web.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/webapp/hello.html create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/test/java/itest/HelloworldTestCase.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/mystripes/action/BaseActionBean.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/mystripes/action/HomeActionBean.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/sample/HelloworldService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/sample/HelloworldServiceImpl.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/resources/StripesResources.properties create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/resources/log4j.properties create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/home.jsp create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/layout.jsp create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/taglibs.jsp create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/web.composite create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/web.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/index.html create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/test/java/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/test/java/itest/HelloworldTestCase.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/implementation-web/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/sca-client/calculator-scaclient/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/sca-client/calculator-scaclient/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/sca-client/calculator-scaclient/src/main/java/calculator/CalculatorService.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/sca-client/calculator-scaclient/src/main/java/sample/CalculatorSCAClient.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/sca-client/helloworld-scaclient/README create mode 100644 sca-java-2.x/contrib/samples/learning-more/sca-client/helloworld-scaclient/pom.xml create mode 100644 sca-java-2.x/contrib/samples/learning-more/sca-client/helloworld-scaclient/src/main/java/sample/Helloworld.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/sca-client/helloworld-scaclient/src/main/java/sample/HelloworldSCAClient.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/sca-client/helloworld-scaclient/src/test/java/sample/HelloworldTestCase.java create mode 100644 sca-java-2.x/contrib/samples/learning-more/sca-client/pom.xml (limited to 'sca-java-2.x/contrib/samples/learning-more') diff --git a/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/README b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/README new file mode 100644 index 0000000000..7f1192d44a --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/README @@ -0,0 +1,7 @@ +Sample async implemenation.java +=============================== +This sample demonstrates the SCA Java asynchronous programming model + +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/async/calculator-contribution/build.xml b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/build.xml new file mode 100644 index 0000000000..5cea87e4c3 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/build.xml @@ -0,0 +1,57 @@ + + + + + + + ${tuscany.home} + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/pom.xml b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/pom.xml new file mode 100644 index 0000000000..20c04e9e70 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/pom.xml @@ -0,0 +1,57 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + sample-implementation-java-calculator-async-contribution + Apache Tuscany SCA Sample implementation.java Calculator Async Contribution + + + + org.apache.tuscany.sca + tuscany-sca-api + 2.0-SNAPSHOT + + + + 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/async/calculator-contribution/src/main/java/calculator/CalculateReferenceAsync.java b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculateReferenceAsync.java new file mode 100644 index 0000000000..a8a323ba04 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculateReferenceAsync.java @@ -0,0 +1,57 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package calculator; + +import java.util.concurrent.Future; + +import javax.xml.ws.AsyncHandler; +import javax.xml.ws.Response; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Async client version of the CalculatorService interface + * + */ + +@Remotable +public interface CalculateReferenceAsync { + + // Sync + public String calculate(Integer i1); + + // Aysnc Poll + public Response calculateAsync(Integer i1); + + // Async Callback + public Future calculateAsync(Integer i1, AsyncHandler handler); + +/* TUSCANY-3757 + // Sync + public void print(Integer i1); + + // Aysnc Poll + public Response printAsync(Integer i1); + + // Async Callback + public Future printAsync(Integer i1, AsyncHandler handler); +*/ +} + diff --git a/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorAsyncHandler.java b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorAsyncHandler.java new file mode 100644 index 0000000000..abaeef8062 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorAsyncHandler.java @@ -0,0 +1,36 @@ +/* + * 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 javax.xml.ws.AsyncHandler; +import javax.xml.ws.Response; + +/** + * Handles callbacks to the async client + */ + +public class CalculatorAsyncHandler implements AsyncHandler { + public void handleResponse(Response res) { + try { + System.out.println("Async client callback patern: result in handler = " + res.get()); + } catch(Exception ex){ + System.out.println("Async client callback patern: exception in handler = " + ex.getMessage()); + } + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorClient.java b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorClient.java new file mode 100644 index 0000000000..6f4ffc0ca7 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorClient.java @@ -0,0 +1,52 @@ +/* + * 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.EagerInit; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; + +/** + * This client program shows how to create an SCA runtime, start it, + * and locate and invoke a SCA component + */ +@Scope("COMPOSITE") @EagerInit +public class CalculatorClient { + + private CalculatorServiceSync calculatorService; + + + @Reference + public void setCalculatorService(CalculatorServiceSync calculatorService) { + this.calculatorService = calculatorService; + } + + @Init + public void calculate() { + System.out.println("calculation=" + calculatorService.calculate(20)); + System.out.println("print"); + /* TUSCANY-3757 + calculatorService.print(27); + */ + } + + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorPrintAsyncHandler.java b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorPrintAsyncHandler.java new file mode 100644 index 0000000000..8faf390974 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorPrintAsyncHandler.java @@ -0,0 +1,36 @@ +/* + * 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 javax.xml.ws.AsyncHandler; +import javax.xml.ws.Response; + +/** + * Handles callbacks to the async client + */ + +public class CalculatorPrintAsyncHandler implements AsyncHandler { + public void handleResponse(Response res) { + try { + System.out.println("Async client callback patern: result in print handler = " + res.get()); + } catch(Exception ex){ + System.out.println("Async client callback patern: exception in print handler = " + ex.getMessage()); + } + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorServiceAsync.java b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorServiceAsync.java new file mode 100644 index 0000000000..bcb931e418 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorServiceAsync.java @@ -0,0 +1,36 @@ +/* + * 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.ResponseDispatch; +import org.oasisopen.sca.annotation.AsyncInvocation; +import org.oasisopen.sca.annotation.Remotable; + +/** + * The async Calculator service interface. + */ + +@Remotable +@AsyncInvocation +public interface CalculatorServiceAsync { + void calculateAsync(Integer n1, ResponseDispatch response); + /* TUSCANY-3757 + void printAsync(Integer n1, ResponseDispatch response); + */ +} diff --git a/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorServiceAsyncImpl.java b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorServiceAsyncImpl.java new file mode 100644 index 0000000000..d865bcf454 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorServiceAsyncImpl.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package calculator; + +import org.oasisopen.sca.ResponseDispatch; + +public class CalculatorServiceAsyncImpl implements CalculatorServiceAsync { + + @Override + public void calculateAsync(Integer n1, ResponseDispatch response) { + int result = n1 + n1; + String retval = "async service invoked: " + n1 + " + " + n1 + " = " + result; + + response.sendResponse(retval); + } + +/* TUSCANY-3757 + @Override + + public void printAsync(Integer n1, ResponseDispatch response) { + int result = n1 + n1; + String retval = "async service invoked: " + n1 + " + " + n1 + " = " + result; + System.out.println(retval); + } +*/ + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorServiceProxyImpl.java b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorServiceProxyImpl.java new file mode 100644 index 0000000000..45e23b8e93 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorServiceProxyImpl.java @@ -0,0 +1,132 @@ +/* + * 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.concurrent.ExecutionException; +import java.util.concurrent.Future; + +import javax.xml.ws.Response; + +import org.oasisopen.sca.annotation.Reference; + +/** + * An implementation of the Calculator service which just proxies + * to sync and asyn versions of the calculator service. This proxy + * exercises the various async interface alternatives + */ +public class CalculatorServiceProxyImpl implements CalculatorServiceSync { + + @Reference + protected CalculateReferenceAsync calculatorServiceRefSync; + + @Reference + protected CalculateReferenceAsync calculatorServiceRefAsync; + + @Override + public String calculate(Integer n1) { + String result = null; + + // calculate using a sync service + System.out.println("Calling sync service for calculate"); + result = calculate(calculatorServiceRefSync, n1); + + // calculate using an aycn service + System.out.println("Calling async service for calculate"); + result += calculate(calculatorServiceRefAsync, n1); + + return result; + } + + // exercise sync and async versions of a service interface method + private String calculate(CalculateReferenceAsync calculatorRef, Integer n1) { + + // sync + String result = calculatorRef.calculate(1); + System.out.println("Sync client patern: result = " + result); + + // async poll + Response response = calculatorRef.calculateAsync(20); + + while (!response.isDone()){ + System.out.println("Waiting for poll"); + try { + Thread.sleep(500); + } catch (Exception ex) { + // do nothing + } + } + + try { + result = response.get(); + System.out.println("Async client poll patern: result = " + result); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ExecutionException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + // async callback + CalculatorAsyncHandler handler = new CalculatorAsyncHandler(); + Future future = calculatorRef.calculateAsync(3, handler); + + while (!future.isDone()){ + System.out.println("Waiting for callback"); + try { + Thread.sleep(500); + } catch (Exception ex) { + // do nothing + } + } + + return result; + } + +/* TUSCANY-3757 + @Override +*/ + public void print(Integer n1) { + + // calculate using a sync service + System.out.println("Calling sync service for print"); + //print(calculatorServiceRefSync, n1); + + // calculate using an asycn service + System.out.println("Calling async service for print"); + //print(calculatorServiceRefAsync, n1); + } + +/* TUSCANY-3757 + // exercise sync and async versions of a service interface method + private void print(CalculateReferenceAsync calculatorRef, Integer n1) { + + // sync + calculatorRef.print(1); + + // async poll + Response response = calculatorRef.printAsync(20); + + // async callback + CalculatorPrintAsyncHandler handler = new CalculatorPrintAsyncHandler(); + Future future = calculatorRef.printAsync(3, handler); + + } +*/ +} diff --git a/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorServiceSync.java b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorServiceSync.java new file mode 100644 index 0000000000..cded310a15 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorServiceSync.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 sync Calculator service interface. + */ + +@Remotable +public interface CalculatorServiceSync { + String calculate(Integer n1); + void print(Integer n1); +} diff --git a/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorServiceSyncImpl.java b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorServiceSyncImpl.java new file mode 100644 index 0000000000..01e0d9f414 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/java/calculator/CalculatorServiceSyncImpl.java @@ -0,0 +1,38 @@ +/* + * 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; + +public class CalculatorServiceSyncImpl implements CalculatorServiceSync { + + @Override + public String calculate(Integer n1) { + int result = n1 + n1; + String retval = "sync service invoked: " + n1 + " + " + n1 + " = " + result; + return retval; + } + + @Override + public void print(Integer n1) { + int result = n1 + n1; + String retval = "sync service invoked: " + n1 + " + " + n1 + " = " + result; + System.out.println(retval); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/resources/Calculator.composite b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/resources/Calculator.composite new file mode 100644 index 0000000000..6117d436db --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/resources/Calculator.composite @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/resources/CalculatorClient.composite b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/resources/CalculatorClient.composite new file mode 100644 index 0000000000..374ef27e2b --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/resources/CalculatorClient.composite @@ -0,0 +1,30 @@ + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..3e64787ce4 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/async/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml @@ -0,0 +1,24 @@ + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/async/pom.xml b/sca-java-2.x/contrib/samples/learning-more/async/pom.xml new file mode 100644 index 0000000000..265b9fea8c --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/async/pom.xml @@ -0,0 +1,43 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples-learning-more + 2.0-SNAPSHOT + ../pom.xml + + sample-tuscany-async + pom + Apache Tuscany SCA Samples for Synchronous/Asynchronous invocation + + + + default + + true + + + calculator-contribution + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/pom.xml b/sca-java-2.x/contrib/samples/learning-more/binding-comet/pom.xml new file mode 100644 index 0000000000..fefce3bdd2 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/pom.xml @@ -0,0 +1,43 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples-learning-more + 2.0-SNAPSHOT + ../pom.xml + + tuscany-samples-binding-comet + pom + Apache Tuscany SCA Sample binding.comet + + + + default + + true + + + weather-webapp + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/deploy.sh b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/deploy.sh new file mode 100755 index 0000000000..eb53bd5c76 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/deploy.sh @@ -0,0 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations + +#!/bin/bash + +mvn clean install +appcfg.sh update target/comet-webapp \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/pom.xml b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/pom.xml new file mode 100644 index 0000000000..cb538d02a0 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/pom.xml @@ -0,0 +1,55 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + + org.apache.tuscany.sca + sample-binding-comet-weather-webapp + war + 1.0 + Apache Tuscany SCA Sample binding.comet Weather Webapp + + + + org.apache.tuscany.sca + tuscany-base-runtime + 2.0-SNAPSHOT + + + org.apache.tuscany.sca + tuscany-binding-comet-runtime + 2.0-SNAPSHOT + + + javax + javaee-web-api + 6.0 + provided + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/Helper.java b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/Helper.java new file mode 100644 index 0000000000..eecc6044ea --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/Helper.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 org.apache.tuscany.sca.sample.comet; + +import java.util.Date; +import java.util.Random; + +public final class Helper { + + public static int randomInt(final int max) { + return (new Random(new Date().getTime()).nextInt(100)); + } + + private Helper() { + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/HumidityService.java b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/HumidityService.java new file mode 100644 index 0000000000..00cbe73e82 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/HumidityService.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 org.apache.tuscany.sca.sample.comet; + +import org.apache.tuscany.sca.sample.comet.model.Location; +import org.apache.tuscany.sca.sample.comet.model.Response; +import org.oasisopen.sca.annotation.Remotable; + +@Remotable +public interface HumidityService { + + Response getHumidity(Location location); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationService.java b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationService.java new file mode 100644 index 0000000000..afbdcbc8d7 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationService.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 org.apache.tuscany.sca.sample.comet; + +import org.apache.tuscany.sca.sample.comet.model.Location; +import org.apache.tuscany.sca.sample.comet.model.Response; +import org.oasisopen.sca.annotation.Remotable; + +@Remotable +public interface PrecipitationService { + + Response getPrecipitation(Location location); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationServiceImpl.java new file mode 100644 index 0000000000..4278ef975b --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationServiceImpl.java @@ -0,0 +1,39 @@ +/* + * 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.apache.tuscany.sca.sample.comet; + +import java.util.Date; + +import org.apache.tuscany.sca.sample.comet.model.Location; +import org.apache.tuscany.sca.sample.comet.model.Response; +import org.oasisopen.sca.annotation.Service; + +@Service(PrecipitationService.class) +public class PrecipitationServiceImpl implements PrecipitationService { + + @Override + public Response getPrecipitation(final Location location) { + final Response response = new Response(); + response.setDate(new Date()); + response.setData(Helper.randomInt(100) + "%"); + return response; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureHumidityServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureHumidityServiceImpl.java new file mode 100644 index 0000000000..55f935fa9f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureHumidityServiceImpl.java @@ -0,0 +1,48 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.sample.comet; + +import java.util.Date; + +import org.apache.tuscany.sca.sample.comet.model.Location; +import org.apache.tuscany.sca.sample.comet.model.Response; +import org.oasisopen.sca.annotation.Service; + +@Service({TemperatureService.class, HumidityService.class}) +public class TemperatureHumidityServiceImpl implements TemperatureService, HumidityService { + + @Override + public Response getHumidity(final Location location) { + final Response response = new Response(); + response.setDate(new Date()); + response.setData(Helper.randomInt(90) + "%"); + return response; + } + + @Override + public Response getTemperature(final Location location, final int scale) { + final Response response = new Response(); + response.setDate(new Date()); + final String data = "" + Helper.randomInt(scale == TemperatureService.CELSIUS ? 40 : 150); + response.setData(data); + return response; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureService.java b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureService.java new file mode 100644 index 0000000000..092988213b --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureService.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 org.apache.tuscany.sca.sample.comet; + +import org.apache.tuscany.sca.sample.comet.model.Location; +import org.apache.tuscany.sca.sample.comet.model.Response; +import org.oasisopen.sca.annotation.Remotable; + +@Remotable +public interface TemperatureService { + + public static final int CELSIUS = 1; + public static final int FAHRENHEIT = 2; + + Response getTemperature(Location location, int scale); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/model/Location.java b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/model/Location.java new file mode 100644 index 0000000000..ff2da3a360 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/model/Location.java @@ -0,0 +1,43 @@ +/* + * 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.apache.tuscany.sca.sample.comet.model; + +public class Location { + + private String city; + private String country; + + public String getCity() { + return this.city; + } + + public void setCity(final String city) { + this.city = city; + } + + public String getCountry() { + return this.country; + } + + public void setCountry(final String country) { + this.country = country; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/model/Response.java b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/model/Response.java new file mode 100644 index 0000000000..aaa23f0b8a --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/model/Response.java @@ -0,0 +1,45 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.sample.comet.model; + +import java.util.Date; + +public class Response { + + private Date date; + private String data; + + public Date getDate() { + return this.date; + } + + public void setDate(final Date date) { + this.date = date; + } + + public String getData() { + return this.data; + } + + public void setData(final String data) { + this.data = data; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/META-INF/MANIFEST.MF b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..58630c02ef --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/META-INF/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/WEB-INF/appengine-web.xml b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/WEB-INF/appengine-web.xml new file mode 100644 index 0000000000..8696f76c50 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/WEB-INF/appengine-web.xml @@ -0,0 +1,24 @@ + + + + tuscany-comet + 1 + true + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/WEB-INF/web.composite b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/WEB-INF/web.composite new file mode 100644 index 0000000000..05b2ddd0d7 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/WEB-INF/web.composite @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/WEB-INF/web.xml b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..25b06c457a --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,34 @@ + + + + Apache Tuscany Stock Comet Sample + + tuscany + org.apache.tuscany.sca.host.webapp.TuscanyServletFilter + true + + + tuscany + /* + + + index.html + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/index.html b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/index.html new file mode 100644 index 0000000000..0387e67adb --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/index.html @@ -0,0 +1,157 @@ + + + + Apache Tuscany Comet Sample + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/README b/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/README new file mode 100644 index 0000000000..580d5e79c7 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/README @@ -0,0 +1,131 @@ +JMS HelloWorld Sample +===================== +This sample demonstrates a simple webapp containing a hello world style client +and service using the JMS binding for request-response style messaging. + +The README in the samples directory (the directory three directories above this) provides +general instructions about building and running samples. Take a look there +first. + +As this sample provides a web app there is a manual step where the WAR file +that contains the sample is copied to your web app container. If you just want +to give this sample a go deploy the WAR file (target/helloworld-jms.war ) +to you web application server. Alternatevly, the sample pom.xml is configured +with the Jetty plugin so you can run the it with Jetty by simply doing "mvn jetty:run". + +Once the web app is deployed use your browser to visit the following URL; + +http://localhost:8080/helloworld-jms + +The port and hostname will of course vary depending on your local installation. + +Configuring the JMS resources +----------------------------- + +The sample requires JMS resources be manually configured in the server environment, these are: + +- a JMS connection factory named "ConnectionFactory" +- a JMS queue named "HelloWorldService" + +See the following for how to define these resources depending on the application server being used: + +Tuscany with embedded ActiveMQ broker +------------------------------------- + + +Apache Tomcat +------------- + +No configuration is necessary for Tomcat as the sample WAR includes everything pre-configured to run +an ActiveMQ embedded JMS broker and to configure the JMS resources in JNDI. + +The JNDI resources are configured in the META-INF/comtext.xml file, for more information on running +ActiveMQ in Tomcat see: http://activemq.apache.org/tomcat.html + + +Apache Geronimo +--------------- + +For Apache Geronimo 2.0.1 (2.0.2 fails to define JMS resources for me) + +Logon to the Geronimo Server Console (http://localhost:8080/console, uid system, pswd manager) + +In the Console Navigation on the left under Services click JMS Resources + +At the bottom of the JMS Resources panel click under Create a new JMS Resource Group click For ActiveMQ + +In Resource Group Name enter "MyRGN" and click next + +At JMS Resource Group click Add Connection Factory + +For JMS Factory Type choose javax.jms.ConnectionFactory and click Next + +In Connection Factory Name enter "ConnectionFactory" and click Next + +Click Add destination + +For JMS Destination Type choose javax.jms.Queue and click Next + +Enter "HelloWorldService" for both Message Destination Name and PhysicalName and click Next + +Click Deploy Now + +Thats it, you're done. + + +WebSphere +--------- + +To define the JMS resources in a new WebSphere Application Server 6.1 installation: + +1) First define a Service integration bus: + +Logon to the WebSphere Integrated Solutions Console (http://localhost:9060/ibm/console) + +On the Left hand menu expand Service integration, and click on Buses. + +In the Buses panel click on New + +Enter a name for the bus, eg MyBus, and click Next, and then click Finish and Save the changes. + +In the Buses panel click on MyBus + +Find the Topology secion and click on Bus members + +Click on Add, leave the defaults and click Next, Next, Next, Finish, and Save the changes. + +Restart WebSphere and when back up logon back on to the Integrated Solutions Console + +2) Now define the JMS rescources + +On the Left hand menu expand Resources, and JMS and click on Connection Facotories. + +In the Connection factories panel click New. + +Leave the Default messaging provider and click OK + +Enter "ConnectionFactory" in the Name and JNDI name and in the Bus name in the Connection pane choose MyBus and click OK + +On the Left hand menu in JMS click on Queues + +In the Queues panel click New, accept the defaults and click OK + +Enter "HelloWorldService" for the Name and JNDI name and in the Bus name in the Connection pane choose MyBus, +and then in the Queue name drop down list choose "Create SIB destination" + +In the Set queue attributes panel enter "HelloWorldService" for the Identifier and click Next, Next, and Finish + +That should take you back to the Queues panel where you can click OK to create the new JMS queue. + +Save the changes + +Restart WebSphere and you're done. + + + +Others... +--------- + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/pom.xml b/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/pom.xml new file mode 100644 index 0000000000..751fffc4c9 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/pom.xml @@ -0,0 +1,96 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + + sample-binding-jms-helloworld-webapp + war + Apache Tuscany SCA Sample binding.jms HelloWorld WebApp + + + + + org.apache.tuscany.sca + tuscany-base-runtime + 2.0-SNAPSHOT + + + org.apache.tuscany.sca + tuscany-binding-jms-runtime + 2.0-SNAPSHOT + + + + org.apache.activemq + activemq-all + 5.3.0 + runtime + + + + + + helloworld-jms + + + org.mortbay.jetty + maven-jetty-plugin + 6.1.18 + + helloworld-jms + foo + 9999 + + + + start-jetty + process-test-classes + + run + + + 0 + true + + + 8085 + + + + + + stop-jetty + prepare-package + + stop + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/java/sample/HelloWorldClient.java b/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/java/sample/HelloWorldClient.java new file mode 100644 index 0000000000..f209f11605 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/java/sample/HelloWorldClient.java @@ -0,0 +1,37 @@ +/* + * 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 sample; + +/** + * The HelloWorld client implementation + */ +public class HelloWorldClient implements HelloWorldService { + + HelloWorldService helloWorldRef; + + public String sayHello(String name) { + System.out.println("HelloWorldClient.sayHello " + name); + return helloWorldRef.sayHello(name); + } + + public void setHelloWorldRef(HelloWorldService helloWorldRef) { + System.out.println("HelloWorldClient.setHelloWorldService " + helloWorldRef); + this.helloWorldRef = helloWorldRef; + } +} \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/java/sample/HelloWorldService.java b/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/java/sample/HelloWorldService.java new file mode 100644 index 0000000000..df2a852161 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/java/sample/HelloWorldService.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 sample; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for the helloworld service + */ +@Remotable +public interface HelloWorldService { + public String sayHello(String name); +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/java/sample/HelloWorldServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/java/sample/HelloWorldServiceImpl.java new file mode 100644 index 0000000000..c09af51e23 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/java/sample/HelloWorldServiceImpl.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 sample; + +/** + * This class implements the HelloWorld service. + */ +public class HelloWorldServiceImpl implements HelloWorldService { + + public String sayHello(String name) { + System.out.println("HelloWorldServiceImpl.sayHello " + name); + return "Hello " + name; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/webapp/META-INF/context.xml b/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/webapp/META-INF/context.xml new file mode 100644 index 0000000000..7575edfc29 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/webapp/META-INF/context.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/webapp/WEB-INF/jetty-env.xml b/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/webapp/WEB-INF/jetty-env.xml new file mode 100644 index 0000000000..a8cd27f6c6 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/webapp/WEB-INF/jetty-env.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + ConnectionFactory + + + vm://localhost?broker.persistent=false + + + + + + HelloWorldService + + + DEMO + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/webapp/WEB-INF/web.composite b/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/webapp/WEB-INF/web.composite new file mode 100644 index 0000000000..b5d8c70d14 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/webapp/WEB-INF/web.composite @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/webapp/WEB-INF/web.xml b/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..86710435ae --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,66 @@ + + + + + + + Apache Tuscany JMS Web Service Sample + + + tuscany + org.apache.tuscany.sca.host.webapp.TuscanyServletFilter + + + + tuscany + /* + + + + hello.jsp + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/webapp/hello.jsp b/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/webapp/hello.jsp new file mode 100644 index 0000000000..9ae037f2c2 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jms/helloworld-webapp/src/main/webapp/hello.jsp @@ -0,0 +1,41 @@ +<%-- + * 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. +--%> + +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@ taglib uri="http://www.osoa.org/sca/sca_jsp.tld" prefix="sca" %> + + + + +HelloWorld JMS sample + + + +If this sample is working correctly you should see "Hello World" on the next line... +

+<%= service.sayHello("world") %> +

+If you do not see "Hello World" on the line above then there has been a problem. +

+The sample requires JMS resources be manually configured in the server environment, these are: +a JMS connection factory named "ConnectionFactory", and a destination queues named "HelloWorldService". +See the sample README file for more information. + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jms/pom.xml b/sca-java-2.x/contrib/samples/learning-more/binding-jms/pom.xml new file mode 100644 index 0000000000..760f74b2fc --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jms/pom.xml @@ -0,0 +1,43 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples-learning-more + 2.0-SNAPSHOT + ../pom.xml + + tuscany-sample-binding-jms + pom + Apache Tuscany SCA Sample binding.jms + + + + default + + true + + + helloworld-webapp + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/README b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/README new file mode 100644 index 0000000000..18ba62d494 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/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-jsonrpc/calculator-contribution/README b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/README new file mode 100644 index 0000000000..fe9aac7f3c --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/README @@ -0,0 +1,8 @@ +Calculator Sample Contribution +============================== + +This sample contribution implements a simple calculator using SCA components. + +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-jsonrpc/calculator-contribution/build.xml b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/build.xml new file mode 100644 index 0000000000..00abb659d6 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/build.xml @@ -0,0 +1,57 @@ + + + + + + + ${tuscany.home} + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/pom.xml b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/pom.xml new file mode 100644 index 0000000000..8f0a042f21 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/pom.xml @@ -0,0 +1,57 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + sample-binding-jsonrpc-calculator-contribution + Apache Tuscany SCA Sample binding.jsonrpc Calculator Contribution + + + + org.apache.tuscany.sca + tuscany-sca-api + 2.0-SNAPSHOT + + + + 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-jsonrpc/calculator-contribution/src/main/java/calculator/AddBean.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/AddBean.java new file mode 100644 index 0000000000..bb39e961b4 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/AddBean.java @@ -0,0 +1,88 @@ +/* + * 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; + +public class AddBean { + + protected double n1; + protected double n2; + protected double n3; + + protected Boolean b; + protected String s; + protected int x; + protected Integer y; + + public double getN1() { + return n1; + } + + public void setN1(double n1) { + this.n1 = n1; + } + + public double getN2() { + return n2; + } + + public void setN2(double n2) { + this.n2 = n2; + } + + public double getN3() { + return n3; + } + + public void setN3(double n3) { + this.n3 = n3; + } + + public Boolean getB() { + return b; + } + + public void setB(Boolean b) { + this.b = b; + } + + public String getS() { + return s; + } + + public void setS(String s) { + this.s = s; + } + + public int getX() { + return x; + } + + public void setX(int x) { + this.x = x; + } + + public Integer getY() { + return y; + } + + public void setY(Integer y) { + this.y = y; + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/AddService.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/AddService.java new file mode 100644 index 0000000000..03e844d09c --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/AddService.java @@ -0,0 +1,32 @@ +/* + * 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); + AddBean addComplexParam(AddBean aBean); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/AddServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/AddServiceImpl.java new file mode 100644 index 0000000000..8eabfa6773 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/AddServiceImpl.java @@ -0,0 +1,43 @@ +/* + * 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; + +import org.oasisopen.sca.annotation.Service; + +/** + * An implementation of the Add service + */ +@Service(AddService.class) +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; + } + + public AddBean addComplexParam(AddBean aBean) { + aBean.setN3(aBean.getN1() + aBean.getN2()); + return aBean; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/CalculatorClient.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/CalculatorClient.java new file mode 100644 index 0000000000..1df1f31c48 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/CalculatorClient.java @@ -0,0 +1,52 @@ +/* + * 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.EagerInit; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; + +/** + * This client program shows how to create an SCA runtime, start it, + * and locate and invoke a SCA component + */ +@Scope("COMPOSITE") +@EagerInit +public class CalculatorClient { + + private CalculatorService calculatorService; + + @Reference + public void setCalculatorService(CalculatorService calculatorService) { + this.calculatorService = calculatorService; + } + + @Init + public void calculate() { + // Calculate + System.out.println("SCA API ClassLoader: " + Reference.class.getClassLoader()); + System.out.println("3 + 2=" + calculatorService.add(3, 2)); + System.out.println("3 - 2=" + calculatorService.subtract(3, 2)); + System.out.println("3 * 2=" + calculatorService.multiply(3, 2)); + System.out.println("3 / 2=" + calculatorService.divide(3, 2)); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/CalculatorService.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/CalculatorService.java new file mode 100644 index 0000000000..78eea39c71 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/CalculatorService.java @@ -0,0 +1,37 @@ +/* + * 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 Calculator service interface. + */ +@Remotable +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-jsonrpc/calculator-contribution/src/main/java/calculator/CalculatorServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/CalculatorServiceImpl.java new file mode 100644 index 0000000000..d32cc73815 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/CalculatorServiceImpl.java @@ -0,0 +1,86 @@ +/* + * 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; +import org.oasisopen.sca.annotation.Service; + + +/** + * An implementation of the Calculator service. + */ +@Service(CalculatorService.class) +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) { + AddBean aBean = new AddBean(); + // So data to test different types + aBean.setB(true); + aBean.setS("Fred"); + aBean.setX(27); + aBean.setY(58); + + // the numbers to be added + aBean.setN1(n1); + aBean.setN2(n2); + + aBean = addService.addComplexParam(aBean); + + return aBean.getN3(); + //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-jsonrpc/calculator-contribution/src/main/java/calculator/DivideService.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/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-jsonrpc/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-jsonrpc/calculator-contribution/src/main/java/calculator/DivideServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/DivideServiceImpl.java new file mode 100644 index 0000000000..ddd7b9cc6e --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/DivideServiceImpl.java @@ -0,0 +1,38 @@ +/* + * 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; + +import org.oasisopen.sca.annotation.Service; + +/** + * An implementation of the Divide service. + */ +@Service(DivideService.class) +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-jsonrpc/calculator-contribution/src/main/java/calculator/MultiplyService.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/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-jsonrpc/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-jsonrpc/calculator-contribution/src/main/java/calculator/MultiplyServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/MultiplyServiceImpl.java new file mode 100644 index 0000000000..cc0de498d3 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/MultiplyServiceImpl.java @@ -0,0 +1,38 @@ +/* + * 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; + +import org.oasisopen.sca.annotation.Service; + +/** + * An implementation of the Multiply service. + */ +@Service(MultiplyService.class) +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-jsonrpc/calculator-contribution/src/main/java/calculator/SubtractService.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/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-jsonrpc/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-jsonrpc/calculator-contribution/src/main/java/calculator/SubtractServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/SubtractServiceImpl.java new file mode 100644 index 0000000000..22e95f7f54 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/java/calculator/SubtractServiceImpl.java @@ -0,0 +1,38 @@ +/* + * 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; + +import org.oasisopen.sca.annotation.Service; + +/** + * An implementation of the subtract service. + */ +@Service(SubtractService.class) +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-jsonrpc/calculator-contribution/src/main/resources/Calculator.composite b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/resources/Calculator.composite new file mode 100644 index 0000000000..5f1add2431 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/resources/Calculator.composite @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/resources/CalculatorClient.composite b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/resources/CalculatorClient.composite new file mode 100644 index 0000000000..dfd32761be --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/resources/CalculatorClient.composite @@ -0,0 +1,30 @@ + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..70aab0e051 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml @@ -0,0 +1,24 @@ + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-contribution/src/test/java/calculator/CalculatorTestCase.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/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-jsonrpc/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-jsonrpc/calculator-webapp/README b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/README new file mode 100644 index 0000000000..fe9aac7f3c --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/README @@ -0,0 +1,8 @@ +Calculator Sample Contribution +============================== + +This sample contribution implements a simple calculator using SCA components. + +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-jsonrpc/calculator-webapp/pom.xml b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/pom.xml new file mode 100644 index 0000000000..92a4e61f63 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/pom.xml @@ -0,0 +1,75 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + sample-binding-jsonrpc-calculator-webapp + Apache Tuscany SCA Sample binding.jsonrpc Calculator WebApp + war + + + + org.apache.tuscany.sca + tuscany-base-runtime + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-binding-jsonrpc-runtime + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-web-javascript-dojo + 2.0-SNAPSHOT + + + + junit + junit + 4.8.1 + test + + + + + + ${project.artifactId} + + + org.apache.tuscany.maven.plugins + maven-tuscany-plugin + 2.0-SNAPSHOT + + + org.mortbay.jetty + maven-jetty-plugin + 6.1.18 + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/AddBean.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/AddBean.java new file mode 100644 index 0000000000..71724ee7ae --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/AddBean.java @@ -0,0 +1,90 @@ +/* + * 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; + +public class AddBean { + private static final String DEFAULT_S = "default string"; + private static final Boolean DEFAULT_B = false; + + protected double n1; + protected double n2; + protected double n3; + + protected Boolean b; + protected String s; + protected int x; + protected Integer y; + + public double getN1() { + return n1; + } + + public void setN1(double n1) { + this.n1 = n1; + } + + public double getN2() { + return n2; + } + + public void setN2(double n2) { + this.n2 = n2; + } + + public double getN3() { + return n3; + } + + public void setN3(double n3) { + this.n3 = n3; + } + + public Boolean getB() { + return b; + } + + public void setB(Boolean b) { + this.b = b; + } + + public String getS() { + return s; + } + + public void setS(String s) { + this.s = s; + } + + public int getX() { + return x; + } + + public void setX(int x) { + this.x = x; + } + + public Integer getY() { + return y; + } + + public void setY(Integer y) { + this.y = y; + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/AddService.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/AddService.java new file mode 100644 index 0000000000..03e844d09c --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/AddService.java @@ -0,0 +1,32 @@ +/* + * 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); + AddBean addComplexParam(AddBean aBean); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/AddServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/AddServiceImpl.java new file mode 100644 index 0000000000..e16b352021 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/AddServiceImpl.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package calculator; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.oasisopen.sca.annotation.Service; + +/** + * An implementation of the Add service + */ +@Service(AddService.class) +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; + } + + public AddBean addComplexParam(AddBean aBean) { + aBean.setN3(aBean.getN1() + aBean.getN2()); + System.out.println("Adding " + aBean.getN1() + " to " + aBean.getN1() + " gives " + aBean.getN3()); + return aBean; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/CalculatorService.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/CalculatorService.java new file mode 100644 index 0000000000..78eea39c71 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/CalculatorService.java @@ -0,0 +1,37 @@ +/* + * 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 Calculator service interface. + */ +@Remotable +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-jsonrpc/calculator-webapp/src/main/java/calculator/CalculatorServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/CalculatorServiceImpl.java new file mode 100644 index 0000000000..d32cc73815 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/CalculatorServiceImpl.java @@ -0,0 +1,86 @@ +/* + * 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; +import org.oasisopen.sca.annotation.Service; + + +/** + * An implementation of the Calculator service. + */ +@Service(CalculatorService.class) +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) { + AddBean aBean = new AddBean(); + // So data to test different types + aBean.setB(true); + aBean.setS("Fred"); + aBean.setX(27); + aBean.setY(58); + + // the numbers to be added + aBean.setN1(n1); + aBean.setN2(n2); + + aBean = addService.addComplexParam(aBean); + + return aBean.getN3(); + //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-jsonrpc/calculator-webapp/src/main/java/calculator/DivideService.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/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-jsonrpc/calculator-webapp/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-jsonrpc/calculator-webapp/src/main/java/calculator/DivideServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/DivideServiceImpl.java new file mode 100644 index 0000000000..ddd7b9cc6e --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/DivideServiceImpl.java @@ -0,0 +1,38 @@ +/* + * 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; + +import org.oasisopen.sca.annotation.Service; + +/** + * An implementation of the Divide service. + */ +@Service(DivideService.class) +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-jsonrpc/calculator-webapp/src/main/java/calculator/MultiplyService.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/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-jsonrpc/calculator-webapp/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-jsonrpc/calculator-webapp/src/main/java/calculator/MultiplyServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/MultiplyServiceImpl.java new file mode 100644 index 0000000000..cc0de498d3 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/MultiplyServiceImpl.java @@ -0,0 +1,38 @@ +/* + * 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; + +import org.oasisopen.sca.annotation.Service; + +/** + * An implementation of the Multiply service. + */ +@Service(MultiplyService.class) +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-jsonrpc/calculator-webapp/src/main/java/calculator/SubtractService.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/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-jsonrpc/calculator-webapp/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-jsonrpc/calculator-webapp/src/main/java/calculator/SubtractServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/SubtractServiceImpl.java new file mode 100644 index 0000000000..22e95f7f54 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/java/calculator/SubtractServiceImpl.java @@ -0,0 +1,38 @@ +/* + * 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; + +import org.oasisopen.sca.annotation.Service; + +/** + * An implementation of the subtract service. + */ +@Service(SubtractService.class) +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-jsonrpc/calculator-webapp/src/main/webapp/WEB-INF/web.composite b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/webapp/WEB-INF/web.composite new file mode 100644 index 0000000000..dc0df8756c --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/webapp/WEB-INF/web.composite @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/webapp/WEB-INF/web.xml b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..b7e216baf7 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,41 @@ + + + + + Apache Tuscany Contribution binding-jsonrpc Calculator WebApp Sample + + + tuscany + org.apache.tuscany.sca.host.webapp.TuscanyServletFilter + + + + tuscany + /* + + + + calculate.html + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/webapp/calculate.html b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/webapp/calculate.html new file mode 100644 index 0000000000..6d22806e8f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/main/webapp/calculate.html @@ -0,0 +1,62 @@ + + + + + Apache Tuscany binding-jsonrpc Calculator WebApp with DOJO Sample + + + + + + + + + +

Apache Tuscany binding-jsonrpc Calculator WebApp with DOJO Sample

+ + 1 + 1 = + + +
+ + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/src/test/java/calculator/CalculatorTestCase.java b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/calculator-webapp/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-jsonrpc/calculator-webapp/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-jsonrpc/pom.xml b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/pom.xml new file mode 100644 index 0000000000..7426d1ee31 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-jsonrpc/pom.xml @@ -0,0 +1,44 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples-learning-more + 2.0-SNAPSHOT + ../pom.xml + + tuscany-samples-binding-jsonrpc + pom + Apache Tuscany SCA Sample binding.jsonrpc + + + + default + + true + + + calculator-contribution + calculator-webapp + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-rmi/README b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/README new file mode 100644 index 0000000000..18ba62d494 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/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-rmi/calculator-reference-contribution/README b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/README new file mode 100644 index 0000000000..f647ef1c50 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/README @@ -0,0 +1,11 @@ +Calculator RMI Reference Sample Contribution +============================================ + +This sample illustrates the use of Tuscany RMI Binding to call reference +services that are hosted as Java RMI services. + +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-rmi/calculator-reference-contribution/build.xml b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/build.xml new file mode 100644 index 0000000000..06f6ba8730 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/build.xml @@ -0,0 +1,59 @@ + + + + + + + + ${tuscany.home} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/pom.xml b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/pom.xml new file mode 100644 index 0000000000..87ac79b0d0 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/pom.xml @@ -0,0 +1,74 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + sample-binding-rmi-calculator-reference-contribution + Apache Tuscany SCA Sample binding.rmi Calculator Reference Contribution + + + + org.apache.tuscany.sca + tuscany-node-api + 2.0-SNAPSHOT + + + org.apache.tuscany.sca + tuscany-node-impl + 2.0-SNAPSHOT + test + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + org.apache.tuscany.sca + tuscany-binding-rmi-runtime + 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-rmi/calculator-reference-contribution/src/main/java/calculator/AddService.java b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/main/java/calculator/AddService.java new file mode 100644 index 0000000000..a235e648c7 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/main/java/calculator/AddService.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 add service + */ +public interface AddService { + + double add(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/main/java/calculator/CalculatorService.java b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/main/java/calculator/CalculatorService.java new file mode 100644 index 0000000000..0f7dec116f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/main/java/calculator/CalculatorService.java @@ -0,0 +1,39 @@ +/* + * 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.rmi.Remote; +import java.rmi.RemoteException; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The Calculator service interface. + */ +@Remotable +public interface CalculatorService extends Remote { + + double add(double n1, double n2) throws RemoteException; + + double subtract(double n1, double n2) throws RemoteException; + + double multiply(double n1, double n2) throws RemoteException; + + double divide(double n1, double n2) throws RemoteException; +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/main/java/calculator/CalculatorServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/main/java/calculator/CalculatorServiceImpl.java new file mode 100644 index 0000000000..bcfd8871b6 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/main/java/calculator/CalculatorServiceImpl.java @@ -0,0 +1,68 @@ +/* + * 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-rmi/calculator-reference-contribution/src/main/java/calculator/DivideService.java b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/main/java/calculator/DivideService.java new file mode 100644 index 0000000000..497dafd4fd --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-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 interface for the divide service + */ +public interface DivideService { + + double divide(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/main/java/calculator/MultiplyService.java b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/main/java/calculator/MultiplyService.java new file mode 100644 index 0000000000..5290605938 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-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-rmi/calculator-reference-contribution/src/main/java/calculator/SubtractService.java b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/main/java/calculator/SubtractService.java new file mode 100644 index 0000000000..376b3e5bb9 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-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 subtract service + */ +public interface SubtractService { + + double subtract(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/main/resources/CalculatorRMIReference.composite b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/main/resources/CalculatorRMIReference.composite new file mode 100644 index 0000000000..7455dc7d38 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/main/resources/CalculatorRMIReference.composite @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/test/java/calculator/CalculatorRMIReferenceTestCase.java b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/test/java/calculator/CalculatorRMIReferenceTestCase.java new file mode 100644 index 0000000000..39d4b2fd28 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/test/java/calculator/CalculatorRMIReferenceTestCase.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 static org.junit.Assert.assertEquals; + +import java.rmi.registry.LocateRegistry; +import java.rmi.registry.Registry; + +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.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + + +/** + * This shows how to test the Calculator service component. + */ +public class CalculatorRMIReferenceTestCase { + + private static Node node; + private static CalculatorService calculatorService; + + @BeforeClass + public static void setUp() throws Exception { + CalculatorRMIServiceImpl rmiCalculatorImpl = new CalculatorRMIServiceImpl(); + Registry rmiRegistry = LocateRegistry.createRegistry(8099); + rmiRegistry.bind("CalculatorRMIService", rmiCalculatorImpl); + + String uri = ContributionLocationHelper.getContributionLocation(CalculatorService.class); + Contribution contribution = new Contribution("c1", uri); + node = NodeFactory.newInstance().createNode("CalculatorRMIReference.composite", contribution); + node.start(); + calculatorService = node.getService(CalculatorService.class, "CalculatorServiceComponent"); + } + + @AfterClass + public static void tearDown() throws Exception { + node.stop(); + LocateRegistry.getRegistry(8099).unbind("CalculatorRMIService"); + } + + @Test + public void testCalculator() throws Exception { + // Calculate + assertEquals(calculatorService.add(3, 2), 5.0, 0.0); + assertEquals(calculatorService.subtract(3, 2), 1.0, 0.0); + assertEquals(calculatorService.multiply(3, 2), 6.0, 0.0); + assertEquals(calculatorService.divide(3, 2), 1.5, 0.0); + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/test/java/calculator/CalculatorRMIServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/test/java/calculator/CalculatorRMIServiceImpl.java new file mode 100644 index 0000000000..d8ded42cb2 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-reference-contribution/src/test/java/calculator/CalculatorRMIServiceImpl.java @@ -0,0 +1,52 @@ +/* + * 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.rmi.RemoteException; +import java.rmi.server.UnicastRemoteObject; + + + +/** + * An implementation of the Calculator service. + */ +public class CalculatorRMIServiceImpl extends UnicastRemoteObject implements CalculatorService { + + private static final long serialVersionUID = -1543948944662001428L; + + public CalculatorRMIServiceImpl() throws RemoteException { + super(); + } + + public double add(double n1, double n2) throws RemoteException { + return n1 + n2; + } + + public double subtract(double n1, double n2) { + return n1 - n2; + } + + public double multiply(double n1, double n2) { + return n1 * n2; + } + + public double divide(double n1, double n2) { + return n1 / n2; + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/README b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/README new file mode 100644 index 0000000000..cb25027f14 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/README @@ -0,0 +1,28 @@ +Calculator RMI Service Sample Contribution +========================================== + +This sample illustrates the use of Tuscany RMI Binding to expose component +services as Java RMI Services. It also demonstrates how a simple Java RMI +Client application invokes the SCA Application's services exposed as RMI +Services. + +The README in the /samples directory provides +general instructions about building and running samples. ( where +distribution-unpack-dir is the directory in which you unpacked the tuscany +binary distribution archive) Take a look there for instructions on how to launch +this sample contribution. + + +Sample Overview +--------------- +This sample extends the calculator sample by replacing the local service +binding with an RMI binding. SO a java client can call the service exposed +by the SCA application using an RMI client. + +Amongst the other output created by the launcher/contribution combination, you should see the following output ... + + + [java] 3 + 2=5.0 + [java] 3 - 2=1.0 + [java] 3 * 2=6.0 + [java] 3 / 2=1.5 diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/build.xml b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/build.xml new file mode 100644 index 0000000000..79ec168c8a --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/build.xml @@ -0,0 +1,59 @@ + + + + + + + + ${tuscany.home} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/pom.xml b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/pom.xml new file mode 100644 index 0000000000..cb92cfe8a1 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/pom.xml @@ -0,0 +1,74 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + sample-binding-rmi-calculator-service-contribution + Apache Tuscany SCA Sample binding.rmi Calculator Service Contribution + + + + org.apache.tuscany.sca + tuscany-node-api + 2.0-SNAPSHOT + + + org.apache.tuscany.sca + tuscany-node-impl + 2.0-SNAPSHOT + test + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + org.apache.tuscany.sca + tuscany-binding-rmi-runtime + 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-rmi/calculator-service-contribution/src/main/java/calculator/AddService.java b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/AddService.java new file mode 100644 index 0000000000..a235e648c7 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/AddService.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 add service + */ +public interface AddService { + + double add(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/AddServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/AddServiceImpl.java new file mode 100644 index 0000000000..8b6fe066a6 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/AddServiceImpl.java @@ -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. + */ +package calculator; + +/** + * An implementation of the Add service + */ +public class AddServiceImpl implements AddService { + + public double add(double n1, double n2) { + return n1 + n2; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/CalculatorClient.java b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/CalculatorClient.java new file mode 100644 index 0000000000..2b99485b68 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/CalculatorClient.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 calculator; + +import java.rmi.Naming; + +/** + * This client program shows how to create an SCA runtime, start it, + * and locate and invoke a SCA component + */ +public class CalculatorClient { + public static void main(String[] args) throws Exception { + CalculatorService calculatorService = (CalculatorService)Naming.lookup("//localhost:8099/CalculatorRMIService"); + + // Calculate + System.out.println("3 + 2=" + calculatorService.add(3, 2)); + System.out.println("3 - 2=" + calculatorService.subtract(3, 2)); + System.out.println("3 * 2=" + calculatorService.multiply(3, 2)); + System.out.println("3 / 2=" + calculatorService.divide(3, 2)); + + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/CalculatorService.java b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/CalculatorService.java new file mode 100644 index 0000000000..3c0375924f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/CalculatorService.java @@ -0,0 +1,36 @@ +/* + * 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 Calculator service interface. + */ +@Remotable +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-rmi/calculator-service-contribution/src/main/java/calculator/CalculatorServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/CalculatorServiceImpl.java new file mode 100644 index 0000000000..bcfd8871b6 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/CalculatorServiceImpl.java @@ -0,0 +1,68 @@ +/* + * 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-rmi/calculator-service-contribution/src/main/java/calculator/DivideService.java b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/DivideService.java new file mode 100644 index 0000000000..497dafd4fd --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-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 interface for the divide service + */ +public interface DivideService { + + double divide(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/DivideServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/DivideServiceImpl.java new file mode 100644 index 0000000000..f7ac0b7287 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/DivideServiceImpl.java @@ -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. + */ +package calculator; + +/** + * An implementation of the Divide service. + */ +public class DivideServiceImpl implements DivideService { + + public double divide(double n1, double n2) { + return n1 / n2; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/MultiplyService.java b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/MultiplyService.java new file mode 100644 index 0000000000..5290605938 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-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-rmi/calculator-service-contribution/src/main/java/calculator/MultiplyServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/MultiplyServiceImpl.java new file mode 100644 index 0000000000..b7dca792b2 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/MultiplyServiceImpl.java @@ -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. + */ +package calculator; + +/** + * An implementation of the Multiply service. + */ +public class MultiplyServiceImpl implements MultiplyService { + + public double multiply(double n1, double n2) { + return n1 * n2; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/SubtractService.java b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/SubtractService.java new file mode 100644 index 0000000000..376b3e5bb9 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-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 subtract service + */ +public interface SubtractService { + + double subtract(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/SubtractServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/SubtractServiceImpl.java new file mode 100644 index 0000000000..77b128ab8d --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/java/calculator/SubtractServiceImpl.java @@ -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. + */ +package calculator; + +/** + * An implementation of the subtract service. + */ +public class SubtractServiceImpl implements SubtractService { + + public double subtract(double n1, double n2) { + return n1 - n2; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/resources/CalculatorRMIServer.composite b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/resources/CalculatorRMIServer.composite new file mode 100644 index 0000000000..8b37d407f0 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/resources/CalculatorRMIServer.composite @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..8d6012e5c4 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-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-rmi/calculator-service-contribution/src/test/java/calculator/CalculatorRMIServerTestCase.java b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/test/java/calculator/CalculatorRMIServerTestCase.java new file mode 100644 index 0000000000..0e352db9bb --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/calculator-service-contribution/src/test/java/calculator/CalculatorRMIServerTestCase.java @@ -0,0 +1,63 @@ +/* + * 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 java.rmi.Naming; + +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.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * This shows how to test the Calculator service component. + */ +public class CalculatorRMIServerTestCase { + + private static Node node; + private static CalculatorService calculatorService; + + @BeforeClass + public static void setUp() throws Exception { + String uri = ContributionLocationHelper.getContributionLocation(CalculatorService.class); + Contribution contribution = new Contribution("c1", uri); + node = NodeFactory.newInstance().createNode("CalculatorRMIServer.composite", contribution); + node.start(); + } + + @AfterClass + public static void tearDown() throws Exception { + node.stop(); + } + + @Test + public void testCalculator() throws Exception { + // Calculate + calculatorService = (CalculatorService)Naming.lookup("//localhost:8099/CalculatorRMIService"); + assertEquals(calculatorService.add(3, 2), 5.0, 0.0); + assertEquals(calculatorService.subtract(3, 2), 1.0, 0.0); + assertEquals(calculatorService.multiply(3, 2), 6.0, 0.0); + assertEquals(calculatorService.divide(3, 2), 1.5, 0.0); + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-rmi/pom.xml b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/pom.xml new file mode 100644 index 0000000000..81a309ed9f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-rmi/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-rmi + pom + Apache Tuscany SCA Sample binding.rmi + + + + default + + true + + + calculator-reference-contribution + calculator-service-contribution + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-sca/README b/sca-java-2.x/contrib/samples/learning-more/binding-sca/README new file mode 100644 index 0000000000..18ba62d494 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-sca/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-sca/calculator-contribution/README b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/README new file mode 100644 index 0000000000..4102b81e28 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/README @@ -0,0 +1,8 @@ +Calculator Sample Contribution +============================== + +This sample contribution implements a simple calculator using SCA components. + +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-sca/calculator-contribution/build.xml b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/build.xml new file mode 100644 index 0000000000..8fef755c8b --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/build.xml @@ -0,0 +1,57 @@ + + + + + + + ${tuscany.home} + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/pom.xml b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/pom.xml new file mode 100644 index 0000000000..134a9be456 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/pom.xml @@ -0,0 +1,57 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + sample-binding-sca-calculator-contribution + Apache Tuscany SCA Sample binding.sca Calculator Contribution + + + + org.apache.tuscany.sca + tuscany-sca-api + 2.0-SNAPSHOT + + + + 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-sca/calculator-contribution/src/main/java/calculator/AddService.java b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/AddService.java new file mode 100644 index 0000000000..188451ebac --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/AddService.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 Add service interface + */ +public interface AddService { + + double add(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/AddServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/AddServiceImpl.java new file mode 100644 index 0000000000..bb75bb2337 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/AddServiceImpl.java @@ -0,0 +1,38 @@ +/* + * 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; + +import org.oasisopen.sca.annotation.Service; + +/** + * An implementation of the Add service + */ +@Service(AddService.class) +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-sca/calculator-contribution/src/main/java/calculator/CalculatorClient.java b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/CalculatorClient.java new file mode 100644 index 0000000000..afd5ea48fc --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/CalculatorClient.java @@ -0,0 +1,52 @@ +/* + * 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.EagerInit; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; + +/** + * This client program shows how to create an SCA runtime, start it, + * and locate and invoke a SCA component + */ +@Scope("COMPOSITE") +@EagerInit +public class CalculatorClient { + + private CalculatorService calculatorService; + + @Reference + public void setCalculatorService(CalculatorService calculatorService) { + this.calculatorService = calculatorService; + } + + @Init + public void calculate() { + // Calculate + System.out.println("SCA API ClassLoader: " + Reference.class.getClassLoader()); + System.out.println("3 + 2=" + calculatorService.add(3, 2)); + System.out.println("3 - 2=" + calculatorService.subtract(3, 2)); + System.out.println("3 * 2=" + calculatorService.multiply(3, 2)); + System.out.println("3 / 2=" + calculatorService.divide(3, 2)); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/CalculatorService.java b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/CalculatorService.java new file mode 100644 index 0000000000..ce1cdaae5a --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/CalculatorService.java @@ -0,0 +1,37 @@ +/* + * 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 Calculator service interface. + */ +@Remotable +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-sca/calculator-contribution/src/main/java/calculator/CalculatorServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/CalculatorServiceImpl.java new file mode 100644 index 0000000000..fc53393d23 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/CalculatorServiceImpl.java @@ -0,0 +1,72 @@ +/* + * 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; +import org.oasisopen.sca.annotation.Service; + + +/** + * An implementation of the Calculator service. + */ +@Service(CalculatorService.class) +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-sca/calculator-contribution/src/main/java/calculator/DivideService.java b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/DivideService.java new file mode 100644 index 0000000000..30d248208b --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-sca/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-sca/calculator-contribution/src/main/java/calculator/DivideServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/DivideServiceImpl.java new file mode 100644 index 0000000000..b1250ed9f2 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/DivideServiceImpl.java @@ -0,0 +1,38 @@ +/* + * 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; + +import org.oasisopen.sca.annotation.Service; + +/** + * An implementation of the Divide service. + */ +@Service(DivideService.class) +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-sca/calculator-contribution/src/main/java/calculator/MultiplyService.java b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/MultiplyService.java new file mode 100644 index 0000000000..5290605938 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-sca/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-sca/calculator-contribution/src/main/java/calculator/MultiplyServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/MultiplyServiceImpl.java new file mode 100644 index 0000000000..11f68c66e3 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/MultiplyServiceImpl.java @@ -0,0 +1,38 @@ +/* + * 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; + +import org.oasisopen.sca.annotation.Service; + +/** + * An implementation of the Multiply service. + */ +@Service(MultiplyService.class) +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-sca/calculator-contribution/src/main/java/calculator/SubtractService.java b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/SubtractService.java new file mode 100644 index 0000000000..bf0d1882b6 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-sca/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-sca/calculator-contribution/src/main/java/calculator/SubtractServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/SubtractServiceImpl.java new file mode 100644 index 0000000000..30e59bf668 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/java/calculator/SubtractServiceImpl.java @@ -0,0 +1,38 @@ +/* + * 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; + +import org.oasisopen.sca.annotation.Service; + +/** + * An implementation of the subtract service. + */ +@Service(SubtractService.class) +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-sca/calculator-contribution/src/main/resources/Calculator.composite b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/resources/Calculator.composite new file mode 100644 index 0000000000..05bea57944 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/resources/Calculator.composite @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/resources/CalculatorClient.composite b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/resources/CalculatorClient.composite new file mode 100644 index 0000000000..dfd32761be --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/resources/CalculatorClient.composite @@ -0,0 +1,30 @@ + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..3e64787ce4 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml @@ -0,0 +1,24 @@ + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/test/java/calculator/CalculatorTestCase.java b/sca-java-2.x/contrib/samples/learning-more/binding-sca/calculator-contribution/src/test/java/calculator/CalculatorTestCase.java new file mode 100644 index 0000000000..9d3024f451 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-sca/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-sca/pom.xml b/sca-java-2.x/contrib/samples/learning-more/binding-sca/pom.xml new file mode 100644 index 0000000000..6b90dd713f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/binding-sca/pom.xml @@ -0,0 +1,43 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples-learning-more + 2.0-SNAPSHOT + ../pom.xml + + tuscany-sample-binding-sca + pom + Apache Tuscany SCA Sample binding.sca + + + + default + + true + + + calculator-contribution + + + + 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 + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/LICENSE b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/LICENSE new file mode 100644 index 0000000000..6e529a25c4 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/LICENSE @@ -0,0 +1,205 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/META-INF/MANIFEST.MF b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..cea4e2ff79 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/META-INF/MANIFEST.MF @@ -0,0 +1,23 @@ +Manifest-Version: 1.0 +Export-Package: calculator.dosgi.operations;version="1.0.1" +Bundle-Version: 1.0.0 +Bundle-Name: calculator.dosgi.dynamic.operations +Bundle-Activator: calculator.dosgi.operations.impl.OperationsActivator +Bundle-ManifestVersion: 2 +Import-Package: calculator.dosgi.operations;version="[1.0.1,1.0.1]", + org.oasisopen.sca.annotation;version="2.0.0", + org.osgi.framework, + org.osgi.service.component;resolution:=optional, + org.osgi.service.packageadmin +Bundle-SymbolicName: calculator.dosgi.dynamic.operations +Bundle-Vendor: The Apache Software Foundation +Bundle-ActivationPolicy: lazy +Eclipse-LazyStart: true +Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt +Bundle-DocURL: http://www.apache.org/ +Service-Component-Disabled: OSGI-INF/add-component.xml, + OSGI-INF/subtract-component.xml, + OSGI-INF/multiply-component.xml, + OSGI-INF/divide-component.xml +Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6 +SCA-Configuration: OSGI-INF/sca-config/*.xml diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/NOTICE b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/NOTICE new file mode 100644 index 0000000000..f6ce2542c3 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/NOTICE @@ -0,0 +1,6 @@ +${pom.name} +Copyright (c) 2005 - 2011 The Apache Software Foundation + +This product includes software developed by +The Apache Software Foundation (http://www.apache.org/). + diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/add-component.xml b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/add-component.xml new file mode 100644 index 0000000000..99845257ff --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/add-component.xml @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/blueprint/operations-module.xml b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/blueprint/operations-module.xml new file mode 100644 index 0000000000..f6b5f4690e --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/blueprint/operations-module.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/divide-component.xml b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/divide-component.xml new file mode 100644 index 0000000000..322d4daf2f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/divide-component.xml @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/multiply-component.xml b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/multiply-component.xml new file mode 100644 index 0000000000..b9ca777bd8 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/multiply-component.xml @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/sca-config/operations-config.xml b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/sca-config/operations-config.xml new file mode 100644 index 0000000000..1965b571a9 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/sca-config/operations-config.xml @@ -0,0 +1,29 @@ + + + + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/subtract-component.xml b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/subtract-component.xml new file mode 100644 index 0000000000..1472f5a976 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/OSGI-INF/subtract-component.xml @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/README b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/README new file mode 100644 index 0000000000..52afa44559 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/README @@ -0,0 +1,6 @@ +Distributed OSGi Calculator Sample +================================== +This sample implements a distributed calculator using Distributed OSGi (RFC 119) over SCA. + +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/distributed-osgi/dosgi-dynamic-calculator-operations/pom.xml b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/pom.xml new file mode 100644 index 0000000000..6f5918b8d1 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/pom.xml @@ -0,0 +1,159 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + + sample-dosgi-dynamic-calculator-operations + Apache Tuscany SCA Sample OSGi Remote Services Dynamic Calculator Operations + + + + org.apache.tuscany.sca + tuscany-base-runtime-pom + 2.0-SNAPSHOT + pom + + + org.apache.tuscany.sca + tuscany-osgi-runtime-pom + 2.0-SNAPSHOT + pom + + + org.apache.tuscany.sca + tuscany-binding-rmi-runtime + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-node-launcher-equinox + 2.0-SNAPSHOT + test + + + + org.apache.tuscany.sca + tuscany-node-impl-osgi + 2.0-SNAPSHOT + runtime + + + + org.eclipse.osgi + services + 3.2.0-v20090520-1800 + test + + + + + org.eclipse.equinox + ds + 1.1.0-v20090601 + test + + + + org.eclipse.equinox + util + 1.0.100-v20090520-1800 + test + + + + junit + junit + 4.8.1 + test + + + + + + ${project.artifactId} + + + maven-eclipse-plugin + 2.5.1 + + + org.eclipse.pde.ManifestBuilder + org.eclipse.jdt.core.javabuilder + + + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + + org.eclipse.jdt.launching.JRE_CONTAINER + + + + + + + maven-jar-plugin + + + ${basedir}/META-INF/MANIFEST.MF + + + + + + org.apache.tuscany.maven.plugins + maven-osgi-junit-plugin + 1.0 + + + org.apache.tuscany.sca + tuscany-node-launcher-equinox + ${project.version} + + + + + osgi-test + test + + test + + + + + osgi.configuration.area + ${project.build.directory}/equinox + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/AddService.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/AddService.java new file mode 100644 index 0000000000..971500782f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/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.dosgi.operations; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for the add service + */ +@Remotable +public interface AddService { + + double add(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/DivideService.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/DivideService.java new file mode 100644 index 0000000000..49b8a1c0bf --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/DivideService.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.dosgi.operations; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for the divide service + */ +@Remotable +public interface DivideService { + + double divide(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/MultiplyService.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/MultiplyService.java new file mode 100644 index 0000000000..f4e59d12ea --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/MultiplyService.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.dosgi.operations; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for the multiply service + */ +@Remotable +public interface MultiplyService { + + double multiply(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/SubtractService.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/SubtractService.java new file mode 100644 index 0000000000..bfb9b820f7 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/SubtractService.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.dosgi.operations; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for the subtract service + */ +@Remotable +public interface SubtractService { + + double subtract(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/impl/AddServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/impl/AddServiceImpl.java new file mode 100644 index 0000000000..66b2977241 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/impl/AddServiceImpl.java @@ -0,0 +1,37 @@ +/* + * 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.dosgi.operations.impl; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import calculator.dosgi.operations.AddService; + +/** + * 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.INFO, "Adding " + n1 + " and " + n2); + return n1 + n2; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/impl/DivideServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/impl/DivideServiceImpl.java new file mode 100644 index 0000000000..a3c21b2b96 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/impl/DivideServiceImpl.java @@ -0,0 +1,37 @@ +/* + * 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.dosgi.operations.impl; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import calculator.dosgi.operations.DivideService; + +/** + * 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.INFO, "Dividing " + n1 + " with " + n2); + return n1 / n2; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/impl/MultiplyServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/impl/MultiplyServiceImpl.java new file mode 100644 index 0000000000..7922d2d392 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/impl/MultiplyServiceImpl.java @@ -0,0 +1,37 @@ +/* + * 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.dosgi.operations.impl; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import calculator.dosgi.operations.MultiplyService; + +/** + * 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.INFO, "Multiplying " + n1 + " with " + n2); + return n1 * n2; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/impl/OperationsActivator.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/impl/OperationsActivator.java new file mode 100644 index 0000000000..f75cc6444e --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/impl/OperationsActivator.java @@ -0,0 +1,94 @@ +/* + * 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.dosgi.operations.impl; + +import java.util.Dictionary; +import java.util.Hashtable; +import java.util.logging.Logger; + +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceReference; +import org.osgi.service.packageadmin.PackageAdmin; + +import calculator.dosgi.operations.AddService; +import calculator.dosgi.operations.DivideService; +import calculator.dosgi.operations.MultiplyService; +import calculator.dosgi.operations.SubtractService; + +/** + * + */ +public class OperationsActivator implements BundleActivator { + private Logger logger = Logger.getLogger(OperationsActivator.class.getName()); + + public void start(BundleContext context) throws Exception { + logger.info("Starting " + context.getBundle()); + + Dictionary props = new Hashtable(); + props.put("service.exported.configs", new String[] {"org.osgi.sca"}); + props.put("service.exported.interfaces", new String[] {"*"}); + + logger.info("Registering " + AddService.class.getName()); + props.put("sca.service", "AddComponent#service-name(Add)"); + props.put("org.osgi.sca.bindings", new String[] {"{http://sample}Add"}); + context.registerService(AddService.class.getName(), new AddServiceImpl(), props); + + logger.info("Registering " + SubtractService.class.getName()); + props.put("sca.service", "SubtractComponent#service-name(Subtract)"); + props.put("org.osgi.sca.bindings", new String[] {"{http://sample}Subtract"}); + context.registerService(SubtractService.class.getName(), new SubtractServiceImpl(), props); + + logger.info("Registering " + MultiplyService.class.getName()); + props.put("sca.service", "MultiplyComponent#service-name(Multiply)"); + props.put("org.osgi.sca.bindings", new String[] {"{http://sample}Multiply"}); + context.registerService(MultiplyService.class.getName(), new MultiplyServiceImpl(), props); + + logger.info("Registering " + DivideService.class.getName()); + props.put("sca.service", "DivideComponent#service-name(Divide)"); + props.put("org.osgi.sca.bindings", new String[] {"{http://sample}Divide"}); + context.registerService(DivideService.class.getName(), new DivideServiceImpl(), props); + + getBundle(context, AddService.class); + } + + public void stop(BundleContext context) throws Exception { + logger.info("Stopping " + context.getBundle()); + // Registered services will be automatically unregistered + } + + private Bundle getBundle(BundleContext bundleContext, Class cls) { + PackageAdmin packageAdmin = null; + // PackageAdmin is used to resolve bundles + ServiceReference ref = bundleContext.getServiceReference("org.osgi.service.packageadmin.PackageAdmin"); + if (ref != null) { + packageAdmin = (PackageAdmin)bundleContext.getService(ref); + Bundle bundle = packageAdmin.getBundle(cls); + if (bundle != null) { + logger.info(cls.getName() + " is loaded by bundle: " + bundle.getSymbolicName()); + } + bundleContext.ungetService(ref); + return bundle; + } + return null; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/impl/SubtractServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/impl/SubtractServiceImpl.java new file mode 100644 index 0000000000..4bbe83b14f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/main/java/calculator/dosgi/operations/impl/SubtractServiceImpl.java @@ -0,0 +1,37 @@ +/* + * 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.dosgi.operations.impl; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import calculator.dosgi.operations.SubtractService; + +/** + * 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.INFO, "Subtracting " + n1 + " from " + n2); + return n1 - n2; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/test/java/calculator/dosgi/operations/test/OSGiTestUtils.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/test/java/calculator/dosgi/operations/test/OSGiTestUtils.java new file mode 100644 index 0000000000..cd92989da1 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/test/java/calculator/dosgi/operations/test/OSGiTestUtils.java @@ -0,0 +1,105 @@ +/* + * 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.dosgi.operations.test; + +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; + +import org.osgi.framework.Bundle; + +/** + * + * Utility class to create OSGi bundles + * + * @version $Rev$ $Date$ + */ +public class OSGiTestUtils { + private static class InvocationHandlerImpl implements InvocationHandler { + private Object instance; + + public InvocationHandlerImpl(Object instance) { + super(); + this.instance = instance; + } + + public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { + Method m = instance.getClass().getMethod(method.getName(), method.getParameterTypes()); + return m.invoke(instance, args); + } + + } + + /** + * Returns a string representation of the given bundle. + * + * @param b + * @param verbose + * @return + */ + public static String bundleStatus(Bundle bundle, boolean verbose) { + StringBuffer sb = new StringBuffer(); + sb.append(bundle.getBundleId()).append(" ").append(bundle.getSymbolicName()); + int s = bundle.getState(); + if ((s & Bundle.UNINSTALLED) != 0) { + sb.append(" UNINSTALLED"); + } + if ((s & Bundle.INSTALLED) != 0) { + sb.append(" INSTALLED"); + } + if ((s & Bundle.RESOLVED) != 0) { + sb.append(" RESOLVED"); + } + if ((s & Bundle.STARTING) != 0) { + sb.append(" STARTING"); + } + if ((s & Bundle.STOPPING) != 0) { + sb.append(" STOPPING"); + } + if ((s & Bundle.ACTIVE) != 0) { + sb.append(" ACTIVE"); + } + + if (verbose) { + sb.append(" ").append(bundle.getLocation()); + sb.append(" ").append(bundle.getHeaders()); + } + return sb.toString(); + } + + /** + * A utility to cast the object to the given interface. If the class for the object + * is loaded by a different classloader, a proxy will be created. + * + * @param + * @param obj + * @param cls + * @return + */ + public static T cast(Object obj, Class cls) { + if (cls.isInstance(obj)) { + return cls.cast(obj); + } else { + return cls.cast(Proxy.newProxyInstance(cls.getClassLoader(), + new Class[] {cls}, + new InvocationHandlerImpl(obj))); + } + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/test/java/calculator/dosgi/operations/test/OperationsNode.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/test/java/calculator/dosgi/operations/test/OperationsNode.java new file mode 100644 index 0000000000..02007c385c --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/test/java/calculator/dosgi/operations/test/OperationsNode.java @@ -0,0 +1,43 @@ +/* + * 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.dosgi.operations.test; + +import org.apache.tuscany.sca.node.equinox.launcher.NodeLauncher; + +/** + * + */ +public class OperationsNode { + + /** + * @param args + */ + public static void main(String[] args) { + if (args.length == 0) { + args = new String[] {"-bundles"}; + } + try { + NodeLauncher.main(args); + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/test/java/calculator/dosgi/operations/test/OperationsOSGiNodeTestCase.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/test/java/calculator/dosgi/operations/test/OperationsOSGiNodeTestCase.java new file mode 100644 index 0000000000..eee64bf86f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator-operations/src/test/java/calculator/dosgi/operations/test/OperationsOSGiNodeTestCase.java @@ -0,0 +1,104 @@ +/* + * 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.dosgi.operations.test; + +import static calculator.dosgi.operations.test.OSGiTestUtils.bundleStatus; + +import java.rmi.registry.LocateRegistry; +import java.rmi.registry.Registry; + +import org.apache.tuscany.sca.node.equinox.launcher.EquinoxHost; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleContext; +import org.osgi.framework.Constants; + +import calculator.dosgi.operations.AddService; + +/** + * + */ +public class OperationsOSGiNodeTestCase { + private static EquinoxHost host; + private static BundleContext context; + private static Bundle operationsBundle; + + /** + * @throws java.lang.Exception + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + try { + host = new EquinoxHost(); + context = host.start(); + + for (Bundle b : context.getBundles()) { + if (b.getSymbolicName().equals("org.eclipse.equinox.ds") || b.getSymbolicName() + .startsWith("org.apache.tuscany.sca.")) { + try { + if (b.getHeaders().get(Constants.FRAGMENT_HOST) == null) { + // Start the non-fragment bundle + b.start(); + } + } catch (Exception e) { + e.printStackTrace(); + } + System.out.println(bundleStatus(b, false)); + } + if ("calculator.dosgi.dynamic.operations".equals(b.getSymbolicName())) { + operationsBundle = b; + } + } + + if (operationsBundle != null) { + operationsBundle.start(); + System.out.println(bundleStatus(operationsBundle, false)); + } + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testOSGi() throws Exception { + Registry registry = LocateRegistry.getRegistry(8085); + Object add = registry.lookup("AddService"); + AddService addService = OSGiTestUtils.cast(add, AddService.class); + double sum = addService.add(1.0, 2.0); + Assert.assertEquals(3.0, sum, 0.0); + } + + /** + * @throws java.lang.Exception + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + if (host != null) { + host.stop(); + context = null; + } + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/LICENSE b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/LICENSE new file mode 100644 index 0000000000..6e529a25c4 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/LICENSE @@ -0,0 +1,205 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/META-INF/MANIFEST.MF b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..6ce24a4a32 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/META-INF/MANIFEST.MF @@ -0,0 +1,23 @@ +Manifest-Version: 1.0 +Export-Package: calculator.dosgi;version="1.0.1", + calculator.dosgi.operations;version="1.0.1" +Bundle-Version: 1.0.0 +Bundle-Name: calculator.dosgi.dynamic +Bundle-Activator: calculator.dosgi.impl.CalculatorActivator +Bundle-ManifestVersion: 2 +Import-Package: org.oasisopen.sca.annotation;version="2.0.0", + org.osgi.framework, + org.osgi.service.component;resolution:=optional, + org.osgi.service.packageadmin, + org.osgi.util.tracker +Bundle-SymbolicName: calculator.dosgi.dynamic +Bundle-Vendor: The Apache Software Foundation +Bundle-ActivationPolicy: lazy +Eclipse-LazyStart: true +Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt +Bundle-DocURL: http://www.apache.org/ +Service-Component-Disabled: OSGI-INF/calculator-component.xml +Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6 +SCA-Configuration: OSGI-INF/sca-config/calculator-config.xml +Remote-Service: OSGI-INF/remote-service/*.xml + diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/NOTICE b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/NOTICE new file mode 100644 index 0000000000..f6ce2542c3 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/NOTICE @@ -0,0 +1,6 @@ +${pom.name} +Copyright (c) 2005 - 2011 The Apache Software Foundation + +This product includes software developed by +The Apache Software Foundation (http://www.apache.org/). + diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/OSGI-INF/blueprint/calculator-module.xml b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/OSGI-INF/blueprint/calculator-module.xml new file mode 100644 index 0000000000..fd834e12ef --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/OSGI-INF/blueprint/calculator-module.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/OSGI-INF/calculator-component.xml b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/OSGI-INF/calculator-component.xml new file mode 100644 index 0000000000..5daaa59aae --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/OSGI-INF/calculator-component.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/OSGI-INF/remote-service/calculator-service-descriptions.xml b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/OSGI-INF/remote-service/calculator-service-descriptions.xml new file mode 100644 index 0000000000..195fa9e4e9 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/OSGI-INF/remote-service/calculator-service-descriptions.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + {http://sample}Add + + + + + + + + + + + + + + {http://sample}Subtract + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/OSGI-INF/sca-config/calculator-config.xml b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/OSGI-INF/sca-config/calculator-config.xml new file mode 100644 index 0000000000..f10b577e87 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/OSGI-INF/sca-config/calculator-config.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/README b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/README new file mode 100644 index 0000000000..52afa44559 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/README @@ -0,0 +1,6 @@ +Distributed OSGi Calculator Sample +================================== +This sample implements a distributed calculator using Distributed OSGi (RFC 119) over SCA. + +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/distributed-osgi/dosgi-dynamic-calculator/dosgi-calculator.png b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/dosgi-calculator.png new file mode 100644 index 0000000000..805baa54d2 Binary files /dev/null and b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/dosgi-calculator.png differ diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/pom.xml b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/pom.xml new file mode 100644 index 0000000000..9b79a97b07 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/pom.xml @@ -0,0 +1,153 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + + sample-dosgi-dynamic-calculator + Apache Tuscany SCA Sample OSGi Remote Services Dynamic Calculator + + + + org.apache.tuscany.sca + tuscany-feature-ejava + 2.0-SNAPSHOT + pom + + + org.apache.tuscany.sca + tuscany-feature-webservice + 2.0-SNAPSHOT + pom + runtime + + + org.apache.tuscany.sca + tuscany-node-launcher-equinox + 2.0-SNAPSHOT + test + + + + org.apache.tuscany.sca + tuscany-node-impl-osgi + 2.0-SNAPSHOT + runtime + + + + org.eclipse.osgi + services + 3.2.0-v20090520-1800 + + + + junit + junit + 4.8.1 + test + + + + + org.eclipse.equinox + ds + 1.1.0-v20090601 + test + + + + org.eclipse.equinox + util + 1.0.100-v20090520-1800 + test + + + + + + ${project.artifactId} + + + maven-eclipse-plugin + 2.5.1 + + + org.eclipse.pde.ManifestBuilder + org.eclipse.jdt.core.javabuilder + + + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + + org.eclipse.jdt.launching.JRE_CONTAINER + + + + + + + maven-jar-plugin + + + ${basedir}/META-INF/MANIFEST.MF + + + + + + org.apache.tuscany.maven.plugins + maven-osgi-junit-plugin + 1.0 + + + org.apache.tuscany.sca + tuscany-node-launcher-equinox + ${project.version} + + + + + osgi-test + test + + test + + + + + osgi.configuration.area + ${project.build.directory}/equinox + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/CalculatorService.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/CalculatorService.java new file mode 100644 index 0000000000..cc562b7c2f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/CalculatorService.java @@ -0,0 +1,36 @@ +/* + * 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.dosgi; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The Calculator service interface. + */ +@Remotable +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/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/impl/CalculatorActivator.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/impl/CalculatorActivator.java new file mode 100644 index 0000000000..6228afcd53 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/impl/CalculatorActivator.java @@ -0,0 +1,78 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package calculator.dosgi.impl; + +import java.util.Dictionary; +import java.util.Hashtable; +import java.util.logging.Logger; + +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceReference; +import org.osgi.service.packageadmin.PackageAdmin; + +import calculator.dosgi.CalculatorService; +import calculator.dosgi.operations.AddService; + +/** + * + */ +public class CalculatorActivator implements BundleActivator { + private Logger logger = Logger.getLogger(CalculatorActivator.class.getName()); + + private Bundle getBundle(BundleContext bundleContext, Class cls) { + PackageAdmin packageAdmin = null; + // PackageAdmin is used to resolve bundles + ServiceReference ref = bundleContext.getServiceReference("org.osgi.service.packageadmin.PackageAdmin"); + if (ref != null) { + packageAdmin = (PackageAdmin)bundleContext.getService(ref); + Bundle bundle = packageAdmin.getBundle(cls); + if (bundle != null) { + logger.info(cls.getName() + " is loaded by bundle: " + bundle.getSymbolicName()); + } + bundleContext.ungetService(ref); + return bundle; + } + return null; + } + + public void start(BundleContext context) throws Exception { + logger.info("Starting " + context.getBundle()); + Dictionary props = new Hashtable(); + props.put("sca.service", "CalculatorComponent#service-name(Calculator)"); + props.put("calculator", "Calculator"); + props.put("service.exported.configs", new String[] {"org.osgi.sca"}); + props.put("org.osgi.sca.bindings", new String[] {"{http://sample}Calculator"}); + props.put("service.exported.interfaces", new String[] {"*"}); + logger.info("Registering " + CalculatorService.class.getName()); + CalculatorService calculator = new CalculatorServiceImpl(context); + context.registerService(CalculatorService.class.getName(), calculator, props); + + getBundle(context, AddService.class); + + } + + public void stop(BundleContext context) throws Exception { + logger.info("Stopping " + context.getBundle()); + // Registered services will be automatically unregistered + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/impl/CalculatorServiceDSImpl.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/impl/CalculatorServiceDSImpl.java new file mode 100644 index 0000000000..5f9db16ca9 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/impl/CalculatorServiceDSImpl.java @@ -0,0 +1,114 @@ +/* + * 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.dosgi.impl; + +import org.osgi.service.component.ComponentContext; + +import calculator.dosgi.CalculatorService; +import calculator.dosgi.operations.AddService; +import calculator.dosgi.operations.DivideService; +import calculator.dosgi.operations.MultiplyService; +import calculator.dosgi.operations.SubtractService; + +/** + * An implementation of the Calculator service. + */ +public class CalculatorServiceDSImpl implements CalculatorService { + private AddService addService; + private SubtractService subtractService; + private MultiplyService multiplyService; + private DivideService divideService; + + public CalculatorServiceDSImpl() { + super(); + System.out.println("CalculatorServiceDSImpl()"); + } + + protected void activate(ComponentContext context) { + System.out.println("Activating " + context); + } + + protected void deactivate(ComponentContext context) { + System.out.println("Deactivating " + context); + } + + /* + * The following setters can be used for DS injection + */ + public void setAddService(AddService addService) { + System.out.println("setAddService()"); + this.addService = addService; + } + + public void setSubtractService(SubtractService subtractService) { + this.subtractService = subtractService; + } + + public void setDivideService(DivideService divideService) { + this.divideService = divideService; + } + + public void setMultiplyService(MultiplyService multiplyService) { + this.multiplyService = multiplyService; + } + + /* + * The following setters can be used for DS injection + */ + public void unsetAddService(AddService addService) { + System.out.println("unsetAddService()"); + this.addService = null; + } + + public void unsetSubtractService(SubtractService subtractService) { + this.subtractService = null; + } + + public void unsetDivideService(DivideService divideService) { + this.divideService = null; + } + + public void unsetMultiplyService(MultiplyService multiplyService) { + this.multiplyService = null; + } + private T getService(Class cls) { + for (Object s : new Object[] {addService, subtractService, multiplyService, divideService}) { + if (cls.isInstance(s)) { + return cls.cast(s); + } + } + throw new IllegalStateException(cls.getSimpleName() + " is not available"); + } + + public double add(double n1, double n2) { + return getService(AddService.class).add(n1, n2); + } + + public double subtract(double n1, double n2) { + return getService(SubtractService.class).subtract(n1, n2); + } + + public double multiply(double n1, double n2) { + return getService(MultiplyService.class).multiply(n1, n2); + } + + public double divide(double n1, double n2) { + return getService(DivideService.class).divide(n1, n2); + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/impl/CalculatorServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/impl/CalculatorServiceImpl.java new file mode 100644 index 0000000000..aa09b27139 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/impl/CalculatorServiceImpl.java @@ -0,0 +1,99 @@ +/* + * 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.dosgi.impl; + +import static org.osgi.framework.Constants.OBJECTCLASS; + +import java.util.HashMap; +import java.util.Map; + +import org.osgi.framework.BundleContext; +import org.osgi.framework.Filter; +import org.osgi.framework.InvalidSyntaxException; +import org.osgi.util.tracker.ServiceTracker; + +import calculator.dosgi.CalculatorService; +import calculator.dosgi.operations.AddService; +import calculator.dosgi.operations.DivideService; +import calculator.dosgi.operations.MultiplyService; +import calculator.dosgi.operations.SubtractService; + +/** + * An implementation of the Calculator service. + */ +public class CalculatorServiceImpl implements CalculatorService { + private Map, ServiceTracker> remoteServices = new HashMap, ServiceTracker>(); + + public CalculatorServiceImpl() { + super(); + } + + public CalculatorServiceImpl(BundleContext context) { + super(); + for (Class cls : new Class[] {AddService.class, SubtractService.class, MultiplyService.class, + DivideService.class}) { + Filter remoteFilter = null; + try { + remoteFilter = + context.createFilter("(&(" + OBJECTCLASS + "=" + cls.getName() + ") (service.imported=*))"); + } catch (InvalidSyntaxException e) { + e.printStackTrace(); + } + ServiceTracker tracker = new ServiceTracker(context, remoteFilter, null); + this.remoteServices.put(cls, tracker); + tracker.open(); + } + } + + private T getService(Class cls) { + ServiceTracker tracker = remoteServices.get(cls); + try { + // Wait for 10 seconds until the remote services are imported + tracker.waitForService(10000); + } catch (InterruptedException e) { + throw new IllegalStateException(cls.getSimpleName() + " is not available"); + } + Object[] remoteObjects = tracker.getServices(); + if (remoteObjects != null) { + for (Object s : remoteObjects) { + if (cls.isInstance(s)) { + System.out.println("Remote service: " + s); + return cls.cast(s); + } + } + } + throw new IllegalStateException(cls.getSimpleName() + " is not available"); + } + + public double add(double n1, double n2) { + return getService(AddService.class).add(n1, n2); + } + + public double subtract(double n1, double n2) { + return getService(SubtractService.class).subtract(n1, n2); + } + + public double multiply(double n1, double n2) { + return getService(MultiplyService.class).multiply(n1, n2); + } + + public double divide(double n1, double n2) { + return getService(DivideService.class).divide(n1, n2); + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/operations/AddService.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/operations/AddService.java new file mode 100644 index 0000000000..971500782f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/operations/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.dosgi.operations; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for the add service + */ +@Remotable +public interface AddService { + + double add(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/operations/DivideService.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/operations/DivideService.java new file mode 100644 index 0000000000..49b8a1c0bf --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/operations/DivideService.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.dosgi.operations; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for the divide service + */ +@Remotable +public interface DivideService { + + double divide(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/operations/MultiplyService.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/operations/MultiplyService.java new file mode 100644 index 0000000000..f4e59d12ea --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/operations/MultiplyService.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.dosgi.operations; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for the multiply service + */ +@Remotable +public interface MultiplyService { + + double multiply(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/operations/SubtractService.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/operations/SubtractService.java new file mode 100644 index 0000000000..bfb9b820f7 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/dosgi/operations/SubtractService.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.dosgi.operations; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for the subtract service + */ +@Remotable +public interface SubtractService { + + double subtract(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/rmi/OperationsRMIServer.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/rmi/OperationsRMIServer.java new file mode 100644 index 0000000000..a4fc52694e --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/rmi/OperationsRMIServer.java @@ -0,0 +1,93 @@ +/* + * 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.rmi; + +import java.io.Serializable; +import java.rmi.Remote; +import java.rmi.RemoteException; +import java.rmi.registry.LocateRegistry; +import java.rmi.registry.Registry; +import java.rmi.server.UnicastRemoteObject; + +/** + * + */ +public class OperationsRMIServer implements OperationsRemote, Serializable { + + private static final long serialVersionUID = 6081008315263103012L; + private transient Registry registry; + + public OperationsRMIServer() throws RemoteException { + super(); + } + + public double add(double n1, double n2) { + return n1 + n2; + } + + public double subtract(double n1, double n2) { + return n1 - n2; + } + + public double divide(double n1, double n2) { + return n1 / n2; + } + + public double multiply(double n1, double n2) { + return n1 * n2; + } + + public void start() throws RemoteException { + Thread thread = new Thread() { + public void run() { + try { + System.out.println("Starting the RMI server for calculator operations..."); + Remote stub = UnicastRemoteObject.exportObject(OperationsRMIServer.this); + registry = LocateRegistry.createRegistry(8085); + registry.bind("AddService", stub); + registry.bind("SubtractService", stub); + registry.bind("MultiplyService", stub); + registry.bind("DivideService", stub); + System.out.println("RMI server for calculator operations is now started."); + } catch (Exception e) { + e.printStackTrace(); + } + } + }; + thread.start(); + } + + public void stop() { + if (registry != null) { + try { + registry.unbind("AddService"); + registry.unbind("SubtractService"); + registry.unbind("MultiplyService"); + registry.unbind("DivideService"); + UnicastRemoteObject.unexportObject(this, false); + UnicastRemoteObject.unexportObject(registry, false); + registry = null; + } catch (Exception e) { + e.printStackTrace(); + } + } + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/rmi/OperationsRMIServer_Stub.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/rmi/OperationsRMIServer_Stub.java new file mode 100644 index 0000000000..a813dfb6f3 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/rmi/OperationsRMIServer_Stub.java @@ -0,0 +1,132 @@ +/* + * 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. + */ + +// Stub class generated by rmic, do not edit. +// Contents subject to change without notice. +package calculator.rmi; + +public final class OperationsRMIServer_Stub extends java.rmi.server.RemoteStub implements calculator.rmi.OperationsRemote { + private static final long serialVersionUID = 2; + + private static java.lang.reflect.Method $method_add_0; + private static java.lang.reflect.Method $method_divide_1; + private static java.lang.reflect.Method $method_multiply_2; + private static java.lang.reflect.Method $method_subtract_3; + + static { + try { + $method_add_0 = + calculator.rmi.OperationsRemote.class.getMethod("add", new java.lang.Class[] {double.class, double.class}); + $method_divide_1 = + calculator.rmi.OperationsRemote.class.getMethod("divide", + new java.lang.Class[] {double.class, double.class}); + $method_multiply_2 = + calculator.rmi.OperationsRemote.class.getMethod("multiply", new java.lang.Class[] {double.class, + double.class}); + $method_subtract_3 = + calculator.rmi.OperationsRemote.class.getMethod("subtract", new java.lang.Class[] {double.class, + double.class}); + } catch (java.lang.NoSuchMethodException e) { + throw new java.lang.NoSuchMethodError("stub class initialization failed"); + } + } + + // constructors + public OperationsRMIServer_Stub(java.rmi.server.RemoteRef ref) { + super(ref); + } + + // methods from remote interfaces + + // implementation of add(double, double) + public double add(double $param_double_1, double $param_double_2) throws java.rmi.RemoteException { + try { + Object $result = + ref.invoke(this, + $method_add_0, + new java.lang.Object[] {new java.lang.Double($param_double_1), + new java.lang.Double($param_double_2)}, + 864055858262779977L); + return ((java.lang.Double)$result).doubleValue(); + } catch (java.lang.RuntimeException e) { + throw e; + } catch (java.rmi.RemoteException e) { + throw e; + } catch (java.lang.Exception e) { + throw new java.rmi.UnexpectedException("undeclared checked exception", e); + } + } + + // implementation of divide(double, double) + public double divide(double $param_double_1, double $param_double_2) throws java.rmi.RemoteException { + try { + Object $result = + ref.invoke(this, + $method_divide_1, + new java.lang.Object[] {new java.lang.Double($param_double_1), + new java.lang.Double($param_double_2)}, + 8097593626497421928L); + return ((java.lang.Double)$result).doubleValue(); + } catch (java.lang.RuntimeException e) { + throw e; + } catch (java.rmi.RemoteException e) { + throw e; + } catch (java.lang.Exception e) { + throw new java.rmi.UnexpectedException("undeclared checked exception", e); + } + } + + // implementation of multiply(double, double) + public double multiply(double $param_double_1, double $param_double_2) throws java.rmi.RemoteException { + try { + Object $result = + ref.invoke(this, + $method_multiply_2, + new java.lang.Object[] {new java.lang.Double($param_double_1), + new java.lang.Double($param_double_2)}, + -346155016949350695L); + return ((java.lang.Double)$result).doubleValue(); + } catch (java.lang.RuntimeException e) { + throw e; + } catch (java.rmi.RemoteException e) { + throw e; + } catch (java.lang.Exception e) { + throw new java.rmi.UnexpectedException("undeclared checked exception", e); + } + } + + // implementation of subtract(double, double) + public double subtract(double $param_double_1, double $param_double_2) throws java.rmi.RemoteException { + try { + Object $result = + ref.invoke(this, + $method_subtract_3, + new java.lang.Object[] {new java.lang.Double($param_double_1), + new java.lang.Double($param_double_2)}, + -610707357620578750L); + return ((java.lang.Double)$result).doubleValue(); + } catch (java.lang.RuntimeException e) { + throw e; + } catch (java.rmi.RemoteException e) { + throw e; + } catch (java.lang.Exception e) { + throw new java.rmi.UnexpectedException("undeclared checked exception", e); + } + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/rmi/OperationsRemote.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/rmi/OperationsRemote.java new file mode 100644 index 0000000000..955e386ad8 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/main/java/calculator/rmi/OperationsRemote.java @@ -0,0 +1,37 @@ +/* + * 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.rmi; + +import java.rmi.Remote; +import java.rmi.RemoteException; + +/** + * RMI Remote interface + */ +public interface OperationsRemote extends Remote { + double add(double n1, double n2) throws RemoteException; + + double subtract(double n1, double n2) throws RemoteException; + + double multiply(double n1, double n2) throws RemoteException; + + double divide(double n1, double n2) throws RemoteException; + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/test/java/calculator/dosgi/test/CalculatorNode.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/test/java/calculator/dosgi/test/CalculatorNode.java new file mode 100644 index 0000000000..565a314d85 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/test/java/calculator/dosgi/test/CalculatorNode.java @@ -0,0 +1,43 @@ +/* + * 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.dosgi.test; + +import org.apache.tuscany.sca.node.equinox.launcher.NodeLauncher; + +/** + * + */ +public class CalculatorNode { + + /** + * @param args + */ + public static void main(String[] args) { + if (args.length == 0) { + args = new String[] {"-bundles"}; + } + try { + NodeLauncher.main(args); + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/test/java/calculator/dosgi/test/CalculatorOSGiNodeTestCase.java b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/test/java/calculator/dosgi/test/CalculatorOSGiNodeTestCase.java new file mode 100644 index 0000000000..4015c7bbc2 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/dosgi-dynamic-calculator/src/test/java/calculator/dosgi/test/CalculatorOSGiNodeTestCase.java @@ -0,0 +1,144 @@ +/* + * 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.dosgi.test; + +import static calculator.dosgi.test.OSGiTestUtils.bundleStatus; + +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.net.URL; + +import org.apache.tuscany.sca.node.equinox.launcher.EquinoxHost; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleContext; +import org.osgi.framework.Constants; +import org.osgi.framework.ServiceReference; + +import calculator.dosgi.CalculatorService; +import calculator.rmi.OperationsRMIServer; + +/** + * + */ +public class CalculatorOSGiNodeTestCase { + private static EquinoxHost host; + private static BundleContext context; + private static Bundle calculatorBundle; + private static OperationsRMIServer rmiServer; + + /** + * @throws java.lang.Exception + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + try { + rmiServer = new OperationsRMIServer(); + rmiServer.start(); + + host = new EquinoxHost(); + context = host.start(); + + for (Bundle b : context.getBundles()) { + System.out.println(b); + if (b.getSymbolicName().equals("org.eclipse.equinox.ds") || b.getSymbolicName() + .startsWith("org.apache.tuscany.sca.")) { + try { + if (b.getHeaders().get(Constants.FRAGMENT_HOST) == null) { + // Start the non-fragment bundle + b.start(); + } + } catch (Exception e) { + e.printStackTrace(); + } + System.out.println(bundleStatus(b, false)); + } + if ("calculator.dosgi.dynamic".equals(b.getSymbolicName())) { + calculatorBundle = b; + } + } + + if (calculatorBundle != null) { + calculatorBundle.start(); + System.out.println(bundleStatus(calculatorBundle, false)); + } + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testOSGi() { + ServiceReference ref = + calculatorBundle.getBundleContext().getServiceReference(CalculatorService.class.getName()); + Assert.assertNotNull(ref); + Object service = context.getService(ref); + Assert.assertNotNull(service); + CalculatorService calculator = OSGiTestUtils.cast(service, CalculatorService.class); + System.out.println("2.0 + 1.0 = " + calculator.add(2.0, 1.0)); + System.out.println("2.0 - 1.0 = " + calculator.subtract(2.0, 1.0)); + System.out.println("2.0 * 1.0 = " + calculator.multiply(2.0, 1.0)); + System.out.println("2.0 / 1.0 = " + calculator.divide(2.0, 1.0)); + } + + @Test + /** + * Test the Web service exposed by the Calculator + */ + public void testWS() throws Exception { + URL url = new URL("http://localhost:8086/CalculatorService?wsdl"); + InputStream is = url.openStream(); + Reader reader = new InputStreamReader(is); + char[] content = new char[10240]; // 10k + int len = 0; + while (true) { + int size = reader.read(content, len, content.length - len); + if (size < 0) { + break; + } + len += size; + } + Assert.assertTrue(len > 0); + String str = new String(content, 0, len); + System.out.println(str); + Assert.assertTrue(str.indexOf(" + * @param obj + * @param cls + * @return + */ + public static T cast(Object obj, Class cls) { + if (cls.isInstance(obj)) { + return cls.cast(obj); + } else { + return cls.cast(Proxy.newProxyInstance(cls.getClassLoader(), + new Class[] {cls}, + new InvocationHandlerImpl(obj))); + } + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/pom.xml b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/pom.xml new file mode 100644 index 0000000000..a68ee3fbed --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/distributed-osgi/pom.xml @@ -0,0 +1,44 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples-learning-more + 2.0-SNAPSHOT + ../pom.xml + + tuscany-samples-distributed-osgi + pom + Apache Tuscany SCA Distributed OSGI Samples + + + + default + + true + + + dosgi-dynamic-calculator + dosgi-dynamic-calculator-operations + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/README b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/README new file mode 100644 index 0000000000..c84dba22f4 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/README @@ -0,0 +1,31 @@ +Hello World BPEL Sample +====================================== +This sample demonstrates an SCA service implemented by a BPEL process. + +See http://tuscany.apache.org/documentation-2x/20-beta-samples-documentation.html +for more information + +=============== OLD INFO ====================== + +mkdir target\classes +mkdir target\wsdl2java-source +java -cp ..\..\lib\tuscany-sca-manifest.jar org.apache.tuscany.sdo.generate.XSD2JavaGenerator -targetDirectory target/wsdl2java-source -prefix HelloWorld -noContainment -noUnsettable src/main/resources/helloworld.wsdl +java -cp ..\..\lib\tuscany-sca-manifest.jar org.apache.tuscany.tools.wsdl2java.generate.WSDL2JavaGenerator -targetDirectory target/wsdl2java-source src/main/resources/helloworld.wsdl +unzip ..\..\lib\ode-dao-jpa-ojpa-derby-1.1.zip -d target\database +javac -d target\classes -cp target\classes;..\..\lib\tuscany-sca-manifest.jar -sourcepath src\main\java;target\wsdl2java-source -target 1.5 -g -source 1.5 src\main\java\helloworld\BPELClient.java +copy src\main\resources\* target\classes +java -cp ..\..\lib\tuscany-sca-manifest.jar;target\classes;target\database helloworld.BPELClient + +and on *nix do + +mkdir target/classes +mkdir target/wsdl2java-source +java -cp ../../lib/tuscany-sca-manifest.jar org.apache.tuscany.sdo.generate.XSD2JavaGenerator -targetDirectory target/wsdl2java-source -prefix HelloWorld -noContainment -noUnsettable src/main/resources/helloworld.wsdl +java -cp ../../lib/tuscany-sca-manifest.jar org.apache.tuscany.tools.wsdl2java.generate.WSDL2JavaGenerator -targetDirectory target/wsdl2java-source src/main/resources/helloworld.wsdl +unzip ../../lib/ode-dao-jpa-ojpa-derby-1.1.zip -d target/database +javac -d target/classes -cp target/classes;../../lib/tuscany-sca-manifest.jar -sourcepath src/main/java;target/wsdl2java-source -target 1.5 -g -source 1.5 src/main/java/helloworld/BPELClient.java +cp src/main/resources/* target/classes +java -cp ../../lib/tuscany-sca-manifest.jar:target/classes:target/database helloworld.BPELClient + +The sample will start an embedded BPEL engine, deploy a process and invoke it. + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/build.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/build.xml new file mode 100644 index 0000000000..d94388f466 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/build.xml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/helloworld-bpel.png b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/helloworld-bpel.png new file mode 100644 index 0000000000..5f53a3c5d1 Binary files /dev/null and b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/helloworld-bpel.png differ diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/helloworld-bpel.svg b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/helloworld-bpel.svg new file mode 100644 index 0000000000..5a98f1a07c --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/helloworld-bpel.svg @@ -0,0 +1,179 @@ + + + + + + + + + + image/svg+xml + + + + + + + + helloworldws + + HelloWorldServiceComponent + + HelloWorldWebService + + implementation.bpel helloworld.bpel + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/pom.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/pom.xml new file mode 100644 index 0000000000..59d74cb5ae --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/pom.xml @@ -0,0 +1,76 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + + zip + sample-implementation-bpel-helloworld-contribution + Apache Tuscany SCA Sample implementation.bpel HelloWorld Contribution + + + + org.apache.tuscany.sca + tuscany-sca-api + 2.0-SNAPSHOT + provided + + + junit + junit + 4.8.1 + test + + + + + ${project.artifactId} + + + + + org.apache.tuscany.maven.plugins + maven-zip-plugin + alpha2 + true + + + + + org.apache.tuscany.maven.plugins + maven-tuscany-plugin + 2.0-SNAPSHOT + + + org.apache.tuscany.sca + tuscany-implementation-bpel-runtime + 2.0-SNAPSHOT + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/src/main/java/helloworld/Hello.java b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/src/main/java/helloworld/Hello.java new file mode 100644 index 0000000000..dbd3854d7c --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/src/main/java/helloworld/Hello.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 helloworld; + +import org.oasisopen.sca.annotation.Remotable; + +@Remotable +public interface Hello { + + String hello(String name); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..4a56523adb --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-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/implementation-bpel/helloworld-bpel-contribution/src/main/resources/helloworld.bpel b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/src/main/resources/helloworld.bpel new file mode 100644 index 0000000000..d58768adfa --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/src/main/resources/helloworld.bpel @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + concat($helloMessage.TestPart/test:arg0/text(), ' World') + + + + + + + + + Dummy + + + + + + + + $helloMessageResponse.TestResponse/test:messageResponse + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/src/main/resources/helloworld.composite b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/src/main/resources/helloworld.composite new file mode 100644 index 0000000000..08350e8417 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/src/main/resources/helloworld.composite @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/src/main/resources/helloworld.wsdl b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/src/main/resources/helloworld.wsdl new file mode 100644 index 0000000000..cf966264ef --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/src/main/resources/helloworld.wsdl @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/src/main/resources/log4j.properties b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/src/main/resources/log4j.properties new file mode 100644 index 0000000000..8649a71550 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-contribution/src/main/resources/log4j.properties @@ -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. +# + +# Set root logger level to WARN and its only appender to CONSOLE +log4j.rootLogger=OFF, CONSOLE + +# log4j properties to work with commandline tools. +log4j.category.org.mortbay=OFF +log4j.category.org.hibernate.type=OFF +log4j.category.org.objectweb=OFF +log4j.category.org.apache.ode.sql=OFF +log4j.category.org.apache.ode.axis2=OFF +log4j.category.org.apache.ode.bpel.engine=OFF +log4j.category.org.apache.ode.daohib.bpel.CorrelatorDaoImpl=OFF +log4j.category.org.apache.ode.bpel.epr=OFF +log4j.category.org.apache.openjpa.kernel=OFF + +# Console appender +log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender +log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout +log4j.appender.CONSOLE.layout.ConversionPattern=%p - %C{1}.%M(%L) | %m%n \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/README b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/README new file mode 100644 index 0000000000..2576b0ff13 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/README @@ -0,0 +1,6 @@ +Hello World BPEL WebApp Sample +====================================== +This sample demonstrates an SCA service implemented by a BPEL process. + +See http://tuscany.apache.org/documentation-2x/20-beta-samples-documentation.html +for more information \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/pom.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/pom.xml new file mode 100644 index 0000000000..8417ee478f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/pom.xml @@ -0,0 +1,153 @@ + + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + + sample-implementation-bpel-helloworld-webapp + war + Apache Tuscany SCA Sample implementation.bpel Helloworld WebApp + + + 2.0-SNAPSHOT + 6.1.18 + + + + + + org.apache.tuscany.sca + tuscany-base-runtime + ${tuscany.version} + + + + org.apache.tuscany.sca + tuscany-implementation-bpel-runtime + ${tuscany.version} + runtime + + + + + junit + junit + 4.8.1 + test + + + + + org.mortbay.jetty + jetty + ${jetty.version} + provided + + + org.mortbay.jetty + jetty-util + ${jetty.version} + provided + + + org.mortbay.jetty + jetty-management + ${jetty.version} + provided + + + + + helloworld-bpel + + + + org.apache.maven.plugins + maven-dependency-plugin + + + unpack + compile + + unpack + + + + + org.apache.ode + ode-dao-jpa-ojpa-derby + 1.1.1 + zip + false + ${project.build.directory}/classes + **/* + + + + + + + + + org.mortbay.jetty + maven-jetty-plugin + 6.1.18 + + helloworld-bpel + foo + 9999 + + + + start-jetty + process-test-classes + + run + + + 0 + true + + + 8085 + + + + + + stop-jetty + prepare-package + + stop + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/java/sample/HelloworldService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/java/sample/HelloworldService.java new file mode 100644 index 0000000000..c1a50d9be5 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/java/sample/HelloworldService.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 sample; + +import org.oasisopen.sca.annotation.Remotable; + +@Remotable +public interface HelloworldService { + + String hello(String name); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/resources/helloworld.bpel b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/resources/helloworld.bpel new file mode 100644 index 0000000000..f1e8895f76 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/resources/helloworld.bpel @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + concat('Hello ', $myVar.TestPart/test:message/text()) + + + + $tmpVar + $myVar.TestPart/test:message + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/resources/helloworld.wsdl b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/resources/helloworld.wsdl new file mode 100644 index 0000000000..46cf381577 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/resources/helloworld.wsdl @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/webapp/WEB-INF/web.composite b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/webapp/WEB-INF/web.composite new file mode 100644 index 0000000000..3d36adadeb --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/webapp/WEB-INF/web.composite @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/webapp/WEB-INF/web.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..bf01a7b759 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,41 @@ + + + + + helloworld-bpel + + + tuscany.helloworld-bpel + org.apache.tuscany.sca.host.webapp.TuscanyServletFilter + + + + tuscany.helloworld-bpel + /* + + + + hello.jsp + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/webapp/hello.jsp b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/webapp/hello.jsp new file mode 100644 index 0000000000..c52d7b1cb2 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/helloworld-bpel-webapp/src/main/webapp/hello.jsp @@ -0,0 +1,36 @@ +<%-- + * 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. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@ taglib uri="http://www.osoa.org/sca/sca_jsp.tld" prefix="sca" %> + + + + + + +

helloworld-bpel

+ + Calling HelloworldService sayHello("world") returns: + +

+ + <%= service.hello("world") %> + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/pom.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/pom.xml new file mode 100644 index 0000000000..e5945d2f52 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-bpel/pom.xml @@ -0,0 +1,44 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples-learning-more + 2.0-SNAPSHOT + ../pom.xml + + tuscany-sample-implementation-bpel + pom + Apache Tuscany SCA Implementation BPEL Samples + + + + default + + true + + + helloworld-bpel-contribution + helloworld-bpel-webapp + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive-ws/README b/sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive-ws/README new file mode 100644 index 0000000000..58422d84cf --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive-ws/README @@ -0,0 +1,7 @@ +Hello implementation.composite helloworld-ws-contribution Sample +============================================================= +This sample demonstrates nested composition using implementation.composite and +binding.ws + +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/implementation-composite/helloworld-recursive-ws/pom.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive-ws/pom.xml new file mode 100644 index 0000000000..5b59323ee9 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive-ws/pom.xml @@ -0,0 +1,82 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + + zip + sample-implementation-composite-helloworld-ws-contribution + Apache Tuscany SCA Sample implemenation.composite Helloworld WS Contribution + + + + org.apache.tuscany.sca + tuscany-sca-api + 2.0-SNAPSHOT + provided + + + org.apache.tuscany.sca + sample-helloworld-contribution + 2.0-SNAPSHOT + provided + + + junit + junit + 4.8.1 + test + + + + + ${project.artifactId} + + + + + org.apache.tuscany.maven.plugins + maven-zip-plugin + alpha2 + true + + + + + org.apache.tuscany.maven.plugins + maven-tuscany-plugin + 2.0-SNAPSHOT + + + + ../helloworld-recursive/target/sample-implementation-composite-helloworld-contribution.zip + ../../../getting-started/helloworld-contribution/target/helloworld-contribution.jar + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive-ws/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive-ws/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..ffc35bb553 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive-ws/src/main/resources/META-INF/sca-contribution.xml @@ -0,0 +1,28 @@ + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive-ws/src/main/resources/helloworld-ws.composite b/sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive-ws/src/main/resources/helloworld-ws.composite new file mode 100644 index 0000000000..719754224d --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive-ws/src/main/resources/helloworld-ws.composite @@ -0,0 +1,33 @@ + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive/README b/sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive/README new file mode 100644 index 0000000000..1ad09620f3 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive/README @@ -0,0 +1,6 @@ +Hello implementation.composite helloworld-contribution Sample +============================================================= +This sample demonstrates nested composition using implementation.composite + +See http://tuscany.apache.org/documentation-2x/20-beta-samples-documentation.html +for more information \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive/pom.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive/pom.xml new file mode 100644 index 0000000000..164d31f300 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive/pom.xml @@ -0,0 +1,76 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + + zip + sample-implementation-composite-helloworld-contribution + Apache Tuscany SCA Sample implementation.composite Helloworld Contribution + + + + org.apache.tuscany.sca + tuscany-sca-api + 2.0-SNAPSHOT + provided + + + junit + junit + 4.8.1 + test + + + + + ${project.artifactId} + + + + + + org.apache.tuscany.maven.plugins + maven-zip-plugin + alpha2 + true + + + + + org.apache.tuscany.maven.plugins + maven-tuscany-plugin + 2.0-SNAPSHOT + + + + ../../../getting-started/helloworld-contribution/target/helloworld-contribution.jar + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..15d9304d05 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive/src/main/resources/META-INF/sca-contribution.xml @@ -0,0 +1,26 @@ + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive/src/main/resources/helloworld-recursive.composite b/sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive/src/main/resources/helloworld-recursive.composite new file mode 100644 index 0000000000..1094fea85e --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-composite/helloworld-recursive/src/main/resources/helloworld-recursive.composite @@ -0,0 +1,30 @@ + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-composite/pom.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-composite/pom.xml new file mode 100644 index 0000000000..baad81945e --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-composite/pom.xml @@ -0,0 +1,44 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples-learning-more + 2.0-SNAPSHOT + ../pom.xml + + tuscany-samples-implementation-composite + pom + Apache Tuscany SCA Implementation Composite Samples + + + + default + + true + + + helloworld-recursive + helloworld-recursive-ws + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-java/README b/sca-java-2.x/contrib/samples/learning-more/implementation-java/README new file mode 100644 index 0000000000..18ba62d494 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-java/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/implementation-java/calculator-contribution/README b/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/README new file mode 100644 index 0000000000..45c339d370 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/README @@ -0,0 +1,8 @@ +Calculator Sample Contribution +============================== + +This sample implements a simple calculator using SCA components. + +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/implementation-java/calculator-contribution/build.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/build.xml new file mode 100644 index 0000000000..21dd4db482 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/build.xml @@ -0,0 +1,56 @@ + + + + + + + + ${tuscany.home} + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/pom.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/pom.xml new file mode 100644 index 0000000000..f10a4b486e --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/pom.xml @@ -0,0 +1,57 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + sample-implementation-java-calculator-contribution + Apache Tuscany SCA Sample implementation.java Calculator Contribution + + + + org.apache.tuscany.sca + tuscany-sca-api + 2.0-SNAPSHOT + + + + 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/implementation-java/calculator-contribution/src/main/java/calculator/AddService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/java/calculator/AddService.java new file mode 100644 index 0000000000..5a1e7a638a --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/java/calculator/AddService.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 Add service interface + */ +public interface AddService { + + double add(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/java/calculator/AddServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/implementation-java/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/implementation-java/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/implementation-java/calculator-contribution/src/main/java/calculator/CalculatorClient.java b/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/java/calculator/CalculatorClient.java new file mode 100644 index 0000000000..2b791a8e1f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/java/calculator/CalculatorClient.java @@ -0,0 +1,62 @@ +/* + * 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.EagerInit; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; + +/** + * This client program shows how to create an SCA runtime, start it, + * and locate and invoke a SCA component + */ +@Scope("COMPOSITE") @EagerInit +public class CalculatorClient { + + private CalculatorService calculatorService; + + @Reference + public void setCalculatorService(CalculatorService calculatorService) { + this.calculatorService = calculatorService; + } + + @Init + public void calculate() { + + // Calculate + System.out.println("SCA API ClassLoader: " + print(Reference.class.getClassLoader())); + System.out.println("3 + 2=" + calculatorService.add(3, 2)); + System.out.println("3 - 2=" + calculatorService.subtract(3, 2)); + System.out.println("3 * 2=" + calculatorService.multiply(3, 2)); + System.out.println("3 / 2=" + calculatorService.divide(3, 2)); + } + + private static String print(ClassLoader cl) { + StringBuffer buf = new StringBuffer(); + for (; cl != null;) { + buf.append(cl.toString()); + buf.append(' '); + cl = cl.getParent(); + } + return buf.toString(); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/java/calculator/CalculatorService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/java/calculator/CalculatorService.java new file mode 100644 index 0000000000..78eea39c71 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/java/calculator/CalculatorService.java @@ -0,0 +1,37 @@ +/* + * 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 Calculator service interface. + */ +@Remotable +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/implementation-java/calculator-contribution/src/main/java/calculator/CalculatorServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/implementation-java/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/implementation-java/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/implementation-java/calculator-contribution/src/main/java/calculator/DivideService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-java/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/implementation-java/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/implementation-java/calculator-contribution/src/main/java/calculator/DivideServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/implementation-java/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/implementation-java/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/implementation-java/calculator-contribution/src/main/java/calculator/MultiplyService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-java/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/implementation-java/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/implementation-java/calculator-contribution/src/main/java/calculator/MultiplyServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/implementation-java/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/implementation-java/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/implementation-java/calculator-contribution/src/main/java/calculator/SubtractService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-java/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/implementation-java/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/implementation-java/calculator-contribution/src/main/java/calculator/SubtractServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/implementation-java/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/implementation-java/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/implementation-java/calculator-contribution/src/main/resources/Calculator.composite b/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/resources/Calculator.composite new file mode 100644 index 0000000000..370e1cf315 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/resources/Calculator.composite @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/resources/CalculatorClient.composite b/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/resources/CalculatorClient.composite new file mode 100644 index 0000000000..dfd32761be --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/resources/CalculatorClient.composite @@ -0,0 +1,30 @@ + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..70aab0e051 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml @@ -0,0 +1,24 @@ + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/test/java/calculator/CalculatorTestCase.java b/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/test/java/calculator/CalculatorTestCase.java new file mode 100644 index 0000000000..c1cd131f40 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-java/calculator-contribution/src/test/java/calculator/CalculatorTestCase.java @@ -0,0 +1,49 @@ +/* + * 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; + +/** + * This shows how to test the Calculator composition. + */ +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/implementation-java/pom.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-java/pom.xml new file mode 100644 index 0000000000..65fe334e33 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-java/pom.xml @@ -0,0 +1,43 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples-learning-more + 2.0-SNAPSHOT + ../pom.xml + + tuscany-sample-implementation-java + pom + Apache Tuscany SCA Sample implementation.java + + + + default + + true + + + calculator-contribution + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/LICENSE b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/LICENSE new file mode 100644 index 0000000000..6e529a25c4 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/LICENSE @@ -0,0 +1,205 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/META-INF/MANIFEST.MF b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..82a803e3a6 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/META-INF/MANIFEST.MF @@ -0,0 +1,22 @@ +Manifest-Version: 1.0 +Export-Package: calculator.dosgi.operations;version="1.0.0" +Bundle-Version: 1.0.0 +Bundle-Name: calculator.dosgi.operations +Bundle-Activator: calculator.dosgi.operations.impl.OperationsActivator +Bundle-ManifestVersion: 2 +Import-Package: calculator.dosgi.operations;version="[1.0.0,1.0.0]", + org.oasisopen.sca.annotation;version="2.0.0", + org.osgi.framework, + org.osgi.service.component;resolution:=optional, + org.osgi.service.packageadmin +Bundle-SymbolicName: calculator.dosgi.operations +Bundle-Vendor: The Apache Software Foundation +Bundle-ActivationPolicy: lazy +Eclipse-LazyStart: true +Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt +Bundle-DocURL: http://www.apache.org/ +Service-Component-Disabled: OSGI-INF/add-component.xml, + OSGI-INF/subtract-component.xml, + OSGI-INF/multiply-component.xml, + OSGI-INF/divide-component.xml +Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6 diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/NOTICE b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/NOTICE new file mode 100644 index 0000000000..f6ce2542c3 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/NOTICE @@ -0,0 +1,6 @@ +${pom.name} +Copyright (c) 2005 - 2011 The Apache Software Foundation + +This product includes software developed by +The Apache Software Foundation (http://www.apache.org/). + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/add-component.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/add-component.xml new file mode 100644 index 0000000000..99845257ff --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/add-component.xml @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/blueprint/operations-module.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/blueprint/operations-module.xml new file mode 100644 index 0000000000..f6b5f4690e --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/blueprint/operations-module.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/divide-component.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/divide-component.xml new file mode 100644 index 0000000000..322d4daf2f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/divide-component.xml @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/multiply-component.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/multiply-component.xml new file mode 100644 index 0000000000..b9ca777bd8 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/multiply-component.xml @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/sca/bundle.componentType b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/sca/bundle.componentType new file mode 100644 index 0000000000..fced5b7840 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/sca/bundle.componentType @@ -0,0 +1,54 @@ + + + + + + + + + + 1 + ABC + + + + + + 1 + ABC + + + + + + 1 + ABC + + + + + + 1 + ABC + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/sca/bundle.composite b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/sca/bundle.composite new file mode 100644 index 0000000000..c7250912b0 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/sca/bundle.composite @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/subtract-component.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/subtract-component.xml new file mode 100644 index 0000000000..1472f5a976 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/OSGI-INF/subtract-component.xml @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/README b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/README new file mode 100644 index 0000000000..52afa44559 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/README @@ -0,0 +1,6 @@ +Distributed OSGi Calculator Sample +================================== +This sample implements a distributed calculator using Distributed OSGi (RFC 119) over SCA. + +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/implementation-osgi/dosgi-calculator-operations/pom.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/pom.xml new file mode 100644 index 0000000000..612bf0b634 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/pom.xml @@ -0,0 +1,161 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + + sample-dosgi-calculator-operations + Apache Tuscany SCA Sample OSGi Remote Services Calculator Operations + + + + org.apache.tuscany.sca + tuscany-base-runtime-pom + 2.0-SNAPSHOT + pom + + + org.apache.tuscany.sca + tuscany-osgi-runtime-pom + 2.0-SNAPSHOT + pom + + + org.apache.tuscany.sca + tuscany-binding-rmi-runtime + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-node-launcher-equinox + 2.0-SNAPSHOT + test + + + + org.apache.tuscany.sca + tuscany-node-impl-osgi + 2.0-SNAPSHOT + runtime + + + + org.eclipse.osgi + services + 3.2.0-v20090520-1800 + test + + + + + org.eclipse.equinox + ds + 1.1.0-v20090601 + test + + + + org.eclipse.equinox + util + 1.0.100-v20090520-1800 + test + + + + junit + junit + 4.8.1 + test + + + + + + ${project.artifactId} + + + maven-eclipse-plugin + 2.5.1 + + + org.eclipse.pde.ManifestBuilder + org.eclipse.jdt.core.javabuilder + + + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + + org.eclipse.jdt.launching.JRE_CONTAINER + + + + + + + maven-jar-plugin + + + ${basedir}/META-INF/MANIFEST.MF + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/AddService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/AddService.java new file mode 100644 index 0000000000..971500782f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/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.dosgi.operations; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for the add service + */ +@Remotable +public interface AddService { + + double add(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/DivideService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/DivideService.java new file mode 100644 index 0000000000..49b8a1c0bf --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/DivideService.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.dosgi.operations; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for the divide service + */ +@Remotable +public interface DivideService { + + double divide(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/MultiplyService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/MultiplyService.java new file mode 100644 index 0000000000..f4e59d12ea --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/MultiplyService.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.dosgi.operations; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for the multiply service + */ +@Remotable +public interface MultiplyService { + + double multiply(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/SubtractService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/SubtractService.java new file mode 100644 index 0000000000..bfb9b820f7 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/SubtractService.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.dosgi.operations; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for the subtract service + */ +@Remotable +public interface SubtractService { + + double subtract(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/impl/AddServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/impl/AddServiceImpl.java new file mode 100644 index 0000000000..66b2977241 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/impl/AddServiceImpl.java @@ -0,0 +1,37 @@ +/* + * 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.dosgi.operations.impl; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import calculator.dosgi.operations.AddService; + +/** + * 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.INFO, "Adding " + n1 + " and " + n2); + return n1 + n2; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/impl/DivideServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/impl/DivideServiceImpl.java new file mode 100644 index 0000000000..a3c21b2b96 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/impl/DivideServiceImpl.java @@ -0,0 +1,37 @@ +/* + * 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.dosgi.operations.impl; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import calculator.dosgi.operations.DivideService; + +/** + * 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.INFO, "Dividing " + n1 + " with " + n2); + return n1 / n2; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/impl/MultiplyServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/impl/MultiplyServiceImpl.java new file mode 100644 index 0000000000..7922d2d392 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/impl/MultiplyServiceImpl.java @@ -0,0 +1,37 @@ +/* + * 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.dosgi.operations.impl; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import calculator.dosgi.operations.MultiplyService; + +/** + * 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.INFO, "Multiplying " + n1 + " with " + n2); + return n1 * n2; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/impl/OperationsActivator.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/impl/OperationsActivator.java new file mode 100644 index 0000000000..da2ce9063a --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/impl/OperationsActivator.java @@ -0,0 +1,88 @@ +/* + * 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.dosgi.operations.impl; + +import java.util.Dictionary; +import java.util.Hashtable; +import java.util.logging.Logger; + +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceReference; +import org.osgi.service.packageadmin.PackageAdmin; + +import calculator.dosgi.operations.AddService; +import calculator.dosgi.operations.DivideService; +import calculator.dosgi.operations.MultiplyService; +import calculator.dosgi.operations.SubtractService; + +/** + * + */ +public class OperationsActivator implements BundleActivator { + private Logger logger = Logger.getLogger(OperationsActivator.class.getName()); + + public void start(BundleContext context) throws Exception { + logger.info("Starting " + context.getBundle()); + + Dictionary props = new Hashtable(); + + logger.info("Registering " + AddService.class.getName()); + props.put("sca.service", "AddComponent#service-name(Add)"); + context.registerService(AddService.class.getName(), new AddServiceImpl(), props); + + logger.info("Registering " + SubtractService.class.getName()); + props.put("sca.service", "SubtractComponent#service-name(Subtract)"); + context.registerService(SubtractService.class.getName(), new SubtractServiceImpl(), props); + + logger.info("Registering " + MultiplyService.class.getName()); + props.put("sca.service", "MultiplyComponent#service-name(Multiply)"); + context.registerService(MultiplyService.class.getName(), new MultiplyServiceImpl(), props); + + logger.info("Registering " + DivideService.class.getName()); + props.put("sca.service", "DivideComponent#service-name(Divide)"); + context.registerService(DivideService.class.getName(), new DivideServiceImpl(), props); + + getBundle(context, AddService.class); + } + + public void stop(BundleContext context) throws Exception { + logger.info("Stopping " + context.getBundle()); + // Registered services will be automatically unregistered + } + + private Bundle getBundle(BundleContext bundleContext, Class cls) { + PackageAdmin packageAdmin = null; + // PackageAdmin is used to resolve bundles + ServiceReference ref = bundleContext.getServiceReference("org.osgi.service.packageadmin.PackageAdmin"); + if (ref != null) { + packageAdmin = (PackageAdmin)bundleContext.getService(ref); + Bundle bundle = packageAdmin.getBundle(cls); + if (bundle != null) { + logger.info(cls.getName() + " is loaded by bundle: " + bundle.getSymbolicName()); + } + bundleContext.ungetService(ref); + return bundle; + } + return null; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/impl/SubtractServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/impl/SubtractServiceImpl.java new file mode 100644 index 0000000000..4bbe83b14f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/java/calculator/dosgi/operations/impl/SubtractServiceImpl.java @@ -0,0 +1,37 @@ +/* + * 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.dosgi.operations.impl; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import calculator.dosgi.operations.SubtractService; + +/** + * 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.INFO, "Subtracting " + n1 + " from " + n2); + return n1 - n2; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..d24999ab3e --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/main/resources/META-INF/sca-contribution.xml @@ -0,0 +1,23 @@ + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/test/java/calculator/dosgi/operations/test/OSGiTestUtils.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/test/java/calculator/dosgi/operations/test/OSGiTestUtils.java new file mode 100644 index 0000000000..cd92989da1 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/test/java/calculator/dosgi/operations/test/OSGiTestUtils.java @@ -0,0 +1,105 @@ +/* + * 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.dosgi.operations.test; + +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; + +import org.osgi.framework.Bundle; + +/** + * + * Utility class to create OSGi bundles + * + * @version $Rev$ $Date$ + */ +public class OSGiTestUtils { + private static class InvocationHandlerImpl implements InvocationHandler { + private Object instance; + + public InvocationHandlerImpl(Object instance) { + super(); + this.instance = instance; + } + + public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { + Method m = instance.getClass().getMethod(method.getName(), method.getParameterTypes()); + return m.invoke(instance, args); + } + + } + + /** + * Returns a string representation of the given bundle. + * + * @param b + * @param verbose + * @return + */ + public static String bundleStatus(Bundle bundle, boolean verbose) { + StringBuffer sb = new StringBuffer(); + sb.append(bundle.getBundleId()).append(" ").append(bundle.getSymbolicName()); + int s = bundle.getState(); + if ((s & Bundle.UNINSTALLED) != 0) { + sb.append(" UNINSTALLED"); + } + if ((s & Bundle.INSTALLED) != 0) { + sb.append(" INSTALLED"); + } + if ((s & Bundle.RESOLVED) != 0) { + sb.append(" RESOLVED"); + } + if ((s & Bundle.STARTING) != 0) { + sb.append(" STARTING"); + } + if ((s & Bundle.STOPPING) != 0) { + sb.append(" STOPPING"); + } + if ((s & Bundle.ACTIVE) != 0) { + sb.append(" ACTIVE"); + } + + if (verbose) { + sb.append(" ").append(bundle.getLocation()); + sb.append(" ").append(bundle.getHeaders()); + } + return sb.toString(); + } + + /** + * A utility to cast the object to the given interface. If the class for the object + * is loaded by a different classloader, a proxy will be created. + * + * @param + * @param obj + * @param cls + * @return + */ + public static T cast(Object obj, Class cls) { + if (cls.isInstance(obj)) { + return cls.cast(obj); + } else { + return cls.cast(Proxy.newProxyInstance(cls.getClassLoader(), + new Class[] {cls}, + new InvocationHandlerImpl(obj))); + } + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/test/java/calculator/dosgi/operations/test/OperationsNode.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/test/java/calculator/dosgi/operations/test/OperationsNode.java new file mode 100644 index 0000000000..02007c385c --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/test/java/calculator/dosgi/operations/test/OperationsNode.java @@ -0,0 +1,43 @@ +/* + * 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.dosgi.operations.test; + +import org.apache.tuscany.sca.node.equinox.launcher.NodeLauncher; + +/** + * + */ +public class OperationsNode { + + /** + * @param args + */ + public static void main(String[] args) { + if (args.length == 0) { + args = new String[] {"-bundles"}; + } + try { + NodeLauncher.main(args); + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/test/java/calculator/dosgi/operations/test/OperationsOSGiNodeTestCase.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/test/java/calculator/dosgi/operations/test/OperationsOSGiNodeTestCase.java new file mode 100644 index 0000000000..07f6aad01a --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator-operations/src/test/java/calculator/dosgi/operations/test/OperationsOSGiNodeTestCase.java @@ -0,0 +1,105 @@ +/* + * 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.dosgi.operations.test; + +import static calculator.dosgi.operations.test.OSGiTestUtils.bundleStatus; + +import java.rmi.registry.LocateRegistry; +import java.rmi.registry.Registry; + +import org.apache.tuscany.sca.node.equinox.launcher.EquinoxHost; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleContext; +import org.osgi.framework.Constants; + +import calculator.dosgi.operations.AddService; + +/** + * + */ +public class OperationsOSGiNodeTestCase { + private static EquinoxHost host; + private static BundleContext context; + private static Bundle operationsBundle; + + /** + * @throws java.lang.Exception + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + try { + host = new EquinoxHost(); + context = host.start(); + + for (Bundle b : context.getBundles()) { + if (b.getSymbolicName().equals("org.eclipse.equinox.ds") || b.getSymbolicName() + .startsWith("org.apache.tuscany.sca.")) { + try { + if (b.getHeaders().get(Constants.FRAGMENT_HOST) == null) { + // Start the non-fragment bundle + b.start(); + } + } catch (Exception e) { + System.out.println("Error for bundle: " + b.getSymbolicName()); + e.printStackTrace(); + } + System.out.println(bundleStatus(b, false)); + } + if ("calculator.dosgi.operations".equals(b.getSymbolicName())) { + operationsBundle = b; + } + } + + if (operationsBundle != null) { + operationsBundle.start(); + System.out.println(bundleStatus(operationsBundle, false)); + } + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testOSGi() throws Exception { + Registry registry = LocateRegistry.getRegistry(8085); + Object add = registry.lookup("AddService"); + AddService addService = OSGiTestUtils.cast(add, AddService.class); + double sum = addService.add(1.0, 2.0); + Assert.assertEquals(3.0, sum, 0.0); + } + + /** + * @throws java.lang.Exception + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + if (host != null) { + host.stop(); + context = null; + } + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/LICENSE b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/LICENSE new file mode 100644 index 0000000000..6e529a25c4 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/LICENSE @@ -0,0 +1,205 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/META-INF/MANIFEST.MF b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..542b53b085 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/META-INF/MANIFEST.MF @@ -0,0 +1,20 @@ +Manifest-Version: 1.0 +Export-Package: calculator.dosgi;version="1.0.0", + calculator.dosgi.operations;version="1.0.0" +Bundle-Version: 1.0.0 +Bundle-Name: calculator.dosgi +Bundle-Activator: calculator.dosgi.impl.CalculatorActivator +Bundle-ManifestVersion: 2 +Import-Package: org.oasisopen.sca.annotation;version="2.0.0", + org.osgi.framework, + org.osgi.service.component;resolution:=optional, + org.osgi.service.packageadmin, + org.osgi.util.tracker +Bundle-SymbolicName: calculator.dosgi +Bundle-Vendor: The Apache Software Foundation +Bundle-ActivationPolicy: lazy +Eclipse-LazyStart: true +Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt +Bundle-DocURL: http://www.apache.org/ +Service-Component-Disabled: OSGI-INF/calculator-component.xml +Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6 diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/NOTICE b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/NOTICE new file mode 100644 index 0000000000..f6ce2542c3 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/NOTICE @@ -0,0 +1,6 @@ +${pom.name} +Copyright (c) 2005 - 2011 The Apache Software Foundation + +This product includes software developed by +The Apache Software Foundation (http://www.apache.org/). + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/OSGI-INF/blueprint/calculator-module.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/OSGI-INF/blueprint/calculator-module.xml new file mode 100644 index 0000000000..fd834e12ef --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/OSGI-INF/blueprint/calculator-module.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/OSGI-INF/calculator-component.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/OSGI-INF/calculator-component.xml new file mode 100644 index 0000000000..5daaa59aae --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/OSGI-INF/calculator-component.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/OSGI-INF/sca/bundle.componentType b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/OSGI-INF/sca/bundle.componentType new file mode 100644 index 0000000000..1dff21ab6b --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/OSGI-INF/sca/bundle.componentType @@ -0,0 +1,64 @@ + + + + + + + + + + 1 + ABC + + + + + + + + 1 + ABC + + + + + + 1 + ABC + + + + + + 1 + ABC + + + + + + 1 + ABC + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/OSGI-INF/sca/bundle.composite b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/OSGI-INF/sca/bundle.composite new file mode 100644 index 0000000000..c64e999fc6 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/OSGI-INF/sca/bundle.composite @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/README b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/README new file mode 100644 index 0000000000..52afa44559 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/README @@ -0,0 +1,6 @@ +Distributed OSGi Calculator Sample +================================== +This sample implements a distributed calculator using Distributed OSGi (RFC 119) over SCA. + +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/implementation-osgi/dosgi-calculator/dosgi-calculator.png b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/dosgi-calculator.png new file mode 100644 index 0000000000..805baa54d2 Binary files /dev/null and b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/dosgi-calculator.png differ diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/pom.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/pom.xml new file mode 100644 index 0000000000..94a9d46db2 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/pom.xml @@ -0,0 +1,153 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + + sample-dosgi-calculator + Apache Tuscany SCA Sample OSGi Remote Services Calculator + + + + org.apache.tuscany.sca + tuscany-feature-ejava + 2.0-SNAPSHOT + pom + + + org.apache.tuscany.sca + tuscany-feature-webservice + 2.0-SNAPSHOT + pom + runtime + + + org.apache.tuscany.sca + tuscany-node-launcher-equinox + 2.0-SNAPSHOT + test + + + + org.apache.tuscany.sca + tuscany-node-impl-osgi + 2.0-SNAPSHOT + runtime + + + + org.eclipse.osgi + services + 3.2.0-v20090520-1800 + + + + junit + junit + 4.8.1 + test + + + + + org.eclipse.equinox + ds + 1.1.0-v20090601 + test + + + + org.eclipse.equinox + util + 1.0.100-v20090520-1800 + test + + + + + + ${project.artifactId} + + + maven-eclipse-plugin + 2.5.1 + + + org.eclipse.pde.ManifestBuilder + org.eclipse.jdt.core.javabuilder + + + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + + org.eclipse.jdt.launching.JRE_CONTAINER + + + + + + + maven-jar-plugin + + + ${basedir}/META-INF/MANIFEST.MF + + + + + + org.apache.tuscany.maven.plugins + maven-osgi-junit-plugin + 1.0 + + + org.apache.tuscany.sca + tuscany-node-launcher-equinox + ${project.version} + + + + + osgi-test + test + + test + + + + + osgi.configuration.area + ${project.build.directory}/equinox + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/CalculatorService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/CalculatorService.java new file mode 100644 index 0000000000..cc562b7c2f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/CalculatorService.java @@ -0,0 +1,36 @@ +/* + * 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.dosgi; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The Calculator service interface. + */ +@Remotable +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/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/impl/CalculatorActivator.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/impl/CalculatorActivator.java new file mode 100644 index 0000000000..6b42645f69 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/impl/CalculatorActivator.java @@ -0,0 +1,76 @@ +/* + * 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.dosgi.impl; + +import java.util.Dictionary; +import java.util.Hashtable; +import java.util.logging.Logger; + +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceReference; +import org.osgi.service.packageadmin.PackageAdmin; + +import calculator.dosgi.CalculatorService; +import calculator.dosgi.operations.AddService; + +/** + * + */ +public class CalculatorActivator implements BundleActivator { + private Logger logger = Logger.getLogger(CalculatorActivator.class.getName()); + + private Bundle getBundle(BundleContext bundleContext, Class cls) { + PackageAdmin packageAdmin = null; + // PackageAdmin is used to resolve bundles + ServiceReference ref = bundleContext.getServiceReference("org.osgi.service.packageadmin.PackageAdmin"); + if (ref != null) { + packageAdmin = (PackageAdmin)bundleContext.getService(ref); + Bundle bundle = packageAdmin.getBundle(cls); + if (bundle != null) { + logger.info(cls.getName() + " is loaded by bundle: " + bundle.getSymbolicName()); + } + bundleContext.ungetService(ref); + return bundle; + } + return null; + } + + public void start(BundleContext context) throws Exception { + logger.info("Starting " + context.getBundle()); + Dictionary props = new Hashtable(); + props.put("sca.service", "CalculatorComponent#service-name(Calculator)"); + props.put("calculator", "Calculator"); + + logger.info("Registering " + CalculatorService.class.getName()); + CalculatorService calculator = new CalculatorServiceImpl(context); + context.registerService(CalculatorService.class.getName(), calculator, props); + + getBundle(context, AddService.class); + + } + + public void stop(BundleContext context) throws Exception { + logger.info("Stopping " + context.getBundle()); + // Registered services will be automatically unregistered + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/impl/CalculatorServiceDSImpl.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/impl/CalculatorServiceDSImpl.java new file mode 100644 index 0000000000..5f9db16ca9 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/impl/CalculatorServiceDSImpl.java @@ -0,0 +1,114 @@ +/* + * 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.dosgi.impl; + +import org.osgi.service.component.ComponentContext; + +import calculator.dosgi.CalculatorService; +import calculator.dosgi.operations.AddService; +import calculator.dosgi.operations.DivideService; +import calculator.dosgi.operations.MultiplyService; +import calculator.dosgi.operations.SubtractService; + +/** + * An implementation of the Calculator service. + */ +public class CalculatorServiceDSImpl implements CalculatorService { + private AddService addService; + private SubtractService subtractService; + private MultiplyService multiplyService; + private DivideService divideService; + + public CalculatorServiceDSImpl() { + super(); + System.out.println("CalculatorServiceDSImpl()"); + } + + protected void activate(ComponentContext context) { + System.out.println("Activating " + context); + } + + protected void deactivate(ComponentContext context) { + System.out.println("Deactivating " + context); + } + + /* + * The following setters can be used for DS injection + */ + public void setAddService(AddService addService) { + System.out.println("setAddService()"); + this.addService = addService; + } + + public void setSubtractService(SubtractService subtractService) { + this.subtractService = subtractService; + } + + public void setDivideService(DivideService divideService) { + this.divideService = divideService; + } + + public void setMultiplyService(MultiplyService multiplyService) { + this.multiplyService = multiplyService; + } + + /* + * The following setters can be used for DS injection + */ + public void unsetAddService(AddService addService) { + System.out.println("unsetAddService()"); + this.addService = null; + } + + public void unsetSubtractService(SubtractService subtractService) { + this.subtractService = null; + } + + public void unsetDivideService(DivideService divideService) { + this.divideService = null; + } + + public void unsetMultiplyService(MultiplyService multiplyService) { + this.multiplyService = null; + } + private T getService(Class cls) { + for (Object s : new Object[] {addService, subtractService, multiplyService, divideService}) { + if (cls.isInstance(s)) { + return cls.cast(s); + } + } + throw new IllegalStateException(cls.getSimpleName() + " is not available"); + } + + public double add(double n1, double n2) { + return getService(AddService.class).add(n1, n2); + } + + public double subtract(double n1, double n2) { + return getService(SubtractService.class).subtract(n1, n2); + } + + public double multiply(double n1, double n2) { + return getService(MultiplyService.class).multiply(n1, n2); + } + + public double divide(double n1, double n2) { + return getService(DivideService.class).divide(n1, n2); + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/impl/CalculatorServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/impl/CalculatorServiceImpl.java new file mode 100644 index 0000000000..a9ea37585a --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/impl/CalculatorServiceImpl.java @@ -0,0 +1,105 @@ +/* + * 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.dosgi.impl; + +import static org.osgi.framework.Constants.OBJECTCLASS; + +import org.osgi.framework.BundleContext; +import org.osgi.framework.Filter; +import org.osgi.framework.InvalidSyntaxException; +import org.osgi.util.tracker.ServiceTracker; + +import calculator.dosgi.CalculatorService; +import calculator.dosgi.operations.AddService; +import calculator.dosgi.operations.DivideService; +import calculator.dosgi.operations.MultiplyService; +import calculator.dosgi.operations.SubtractService; + +/** + * An implementation of the Calculator service. + */ +public class CalculatorServiceImpl implements CalculatorService { + private ServiceTracker remoteServices; + private ServiceTracker localServices; + + public CalculatorServiceImpl() { + super(); + } + + public CalculatorServiceImpl(BundleContext context) { + super(); + Filter remoteFilter = null, localFilter = null; + try { + remoteFilter = + context.createFilter("(&(" + OBJECTCLASS + "=calculator.dosgi.operations.*) (service.imported=*))"); + localFilter = + context.createFilter("(&(" + OBJECTCLASS + "=calculator.dosgi.operations.*) (!(service.imported=*)))"); + } catch (InvalidSyntaxException e) { + e.printStackTrace(); + } + this.remoteServices = new ServiceTracker(context, remoteFilter, null); + remoteServices.open(); + this.localServices = new ServiceTracker(context, localFilter, null); + localServices.open(); + } + + private T getService(Class cls) { + try { + // Wait for 10 seconds until the remote services are imported + remoteServices.waitForService(10000); + } catch (InterruptedException e) { + throw new IllegalStateException(cls.getSimpleName() + " is not available"); + } + Object[] remoteObjects = remoteServices.getServices(); + if (remoteObjects != null) { + for (Object s : remoteObjects) { + if (cls.isInstance(s)) { + System.out.println("Remote service: " + s); + return cls.cast(s); + } + } + } + Object[] localObjects = localServices.getServices(); + if (localObjects != null) { + for (Object s : localObjects) { + if (cls.isInstance(s)) { + System.out.println("Local service: " + s); + return cls.cast(s); + } + } + } + throw new IllegalStateException(cls.getSimpleName() + " is not available"); + } + + public double add(double n1, double n2) { + return getService(AddService.class).add(n1, n2); + } + + public double subtract(double n1, double n2) { + return getService(SubtractService.class).subtract(n1, n2); + } + + public double multiply(double n1, double n2) { + return getService(MultiplyService.class).multiply(n1, n2); + } + + public double divide(double n1, double n2) { + return getService(DivideService.class).divide(n1, n2); + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/operations/AddService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/operations/AddService.java new file mode 100644 index 0000000000..971500782f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/operations/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.dosgi.operations; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for the add service + */ +@Remotable +public interface AddService { + + double add(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/operations/DivideService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/operations/DivideService.java new file mode 100644 index 0000000000..49b8a1c0bf --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/operations/DivideService.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.dosgi.operations; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for the divide service + */ +@Remotable +public interface DivideService { + + double divide(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/operations/MultiplyService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/operations/MultiplyService.java new file mode 100644 index 0000000000..f4e59d12ea --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/operations/MultiplyService.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.dosgi.operations; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for the multiply service + */ +@Remotable +public interface MultiplyService { + + double multiply(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/operations/SubtractService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/operations/SubtractService.java new file mode 100644 index 0000000000..bfb9b820f7 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/dosgi/operations/SubtractService.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.dosgi.operations; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for the subtract service + */ +@Remotable +public interface SubtractService { + + double subtract(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/rmi/OperationsRMIServer.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/rmi/OperationsRMIServer.java new file mode 100644 index 0000000000..a4fc52694e --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/rmi/OperationsRMIServer.java @@ -0,0 +1,93 @@ +/* + * 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.rmi; + +import java.io.Serializable; +import java.rmi.Remote; +import java.rmi.RemoteException; +import java.rmi.registry.LocateRegistry; +import java.rmi.registry.Registry; +import java.rmi.server.UnicastRemoteObject; + +/** + * + */ +public class OperationsRMIServer implements OperationsRemote, Serializable { + + private static final long serialVersionUID = 6081008315263103012L; + private transient Registry registry; + + public OperationsRMIServer() throws RemoteException { + super(); + } + + public double add(double n1, double n2) { + return n1 + n2; + } + + public double subtract(double n1, double n2) { + return n1 - n2; + } + + public double divide(double n1, double n2) { + return n1 / n2; + } + + public double multiply(double n1, double n2) { + return n1 * n2; + } + + public void start() throws RemoteException { + Thread thread = new Thread() { + public void run() { + try { + System.out.println("Starting the RMI server for calculator operations..."); + Remote stub = UnicastRemoteObject.exportObject(OperationsRMIServer.this); + registry = LocateRegistry.createRegistry(8085); + registry.bind("AddService", stub); + registry.bind("SubtractService", stub); + registry.bind("MultiplyService", stub); + registry.bind("DivideService", stub); + System.out.println("RMI server for calculator operations is now started."); + } catch (Exception e) { + e.printStackTrace(); + } + } + }; + thread.start(); + } + + public void stop() { + if (registry != null) { + try { + registry.unbind("AddService"); + registry.unbind("SubtractService"); + registry.unbind("MultiplyService"); + registry.unbind("DivideService"); + UnicastRemoteObject.unexportObject(this, false); + UnicastRemoteObject.unexportObject(registry, false); + registry = null; + } catch (Exception e) { + e.printStackTrace(); + } + } + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/rmi/OperationsRMIServer_Stub.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/rmi/OperationsRMIServer_Stub.java new file mode 100644 index 0000000000..a813dfb6f3 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/rmi/OperationsRMIServer_Stub.java @@ -0,0 +1,132 @@ +/* + * 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. + */ + +// Stub class generated by rmic, do not edit. +// Contents subject to change without notice. +package calculator.rmi; + +public final class OperationsRMIServer_Stub extends java.rmi.server.RemoteStub implements calculator.rmi.OperationsRemote { + private static final long serialVersionUID = 2; + + private static java.lang.reflect.Method $method_add_0; + private static java.lang.reflect.Method $method_divide_1; + private static java.lang.reflect.Method $method_multiply_2; + private static java.lang.reflect.Method $method_subtract_3; + + static { + try { + $method_add_0 = + calculator.rmi.OperationsRemote.class.getMethod("add", new java.lang.Class[] {double.class, double.class}); + $method_divide_1 = + calculator.rmi.OperationsRemote.class.getMethod("divide", + new java.lang.Class[] {double.class, double.class}); + $method_multiply_2 = + calculator.rmi.OperationsRemote.class.getMethod("multiply", new java.lang.Class[] {double.class, + double.class}); + $method_subtract_3 = + calculator.rmi.OperationsRemote.class.getMethod("subtract", new java.lang.Class[] {double.class, + double.class}); + } catch (java.lang.NoSuchMethodException e) { + throw new java.lang.NoSuchMethodError("stub class initialization failed"); + } + } + + // constructors + public OperationsRMIServer_Stub(java.rmi.server.RemoteRef ref) { + super(ref); + } + + // methods from remote interfaces + + // implementation of add(double, double) + public double add(double $param_double_1, double $param_double_2) throws java.rmi.RemoteException { + try { + Object $result = + ref.invoke(this, + $method_add_0, + new java.lang.Object[] {new java.lang.Double($param_double_1), + new java.lang.Double($param_double_2)}, + 864055858262779977L); + return ((java.lang.Double)$result).doubleValue(); + } catch (java.lang.RuntimeException e) { + throw e; + } catch (java.rmi.RemoteException e) { + throw e; + } catch (java.lang.Exception e) { + throw new java.rmi.UnexpectedException("undeclared checked exception", e); + } + } + + // implementation of divide(double, double) + public double divide(double $param_double_1, double $param_double_2) throws java.rmi.RemoteException { + try { + Object $result = + ref.invoke(this, + $method_divide_1, + new java.lang.Object[] {new java.lang.Double($param_double_1), + new java.lang.Double($param_double_2)}, + 8097593626497421928L); + return ((java.lang.Double)$result).doubleValue(); + } catch (java.lang.RuntimeException e) { + throw e; + } catch (java.rmi.RemoteException e) { + throw e; + } catch (java.lang.Exception e) { + throw new java.rmi.UnexpectedException("undeclared checked exception", e); + } + } + + // implementation of multiply(double, double) + public double multiply(double $param_double_1, double $param_double_2) throws java.rmi.RemoteException { + try { + Object $result = + ref.invoke(this, + $method_multiply_2, + new java.lang.Object[] {new java.lang.Double($param_double_1), + new java.lang.Double($param_double_2)}, + -346155016949350695L); + return ((java.lang.Double)$result).doubleValue(); + } catch (java.lang.RuntimeException e) { + throw e; + } catch (java.rmi.RemoteException e) { + throw e; + } catch (java.lang.Exception e) { + throw new java.rmi.UnexpectedException("undeclared checked exception", e); + } + } + + // implementation of subtract(double, double) + public double subtract(double $param_double_1, double $param_double_2) throws java.rmi.RemoteException { + try { + Object $result = + ref.invoke(this, + $method_subtract_3, + new java.lang.Object[] {new java.lang.Double($param_double_1), + new java.lang.Double($param_double_2)}, + -610707357620578750L); + return ((java.lang.Double)$result).doubleValue(); + } catch (java.lang.RuntimeException e) { + throw e; + } catch (java.rmi.RemoteException e) { + throw e; + } catch (java.lang.Exception e) { + throw new java.rmi.UnexpectedException("undeclared checked exception", e); + } + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/rmi/OperationsRemote.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/rmi/OperationsRemote.java new file mode 100644 index 0000000000..955e386ad8 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/java/calculator/rmi/OperationsRemote.java @@ -0,0 +1,37 @@ +/* + * 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.rmi; + +import java.rmi.Remote; +import java.rmi.RemoteException; + +/** + * RMI Remote interface + */ +public interface OperationsRemote extends Remote { + double add(double n1, double n2) throws RemoteException; + + double subtract(double n1, double n2) throws RemoteException; + + double multiply(double n1, double n2) throws RemoteException; + + double divide(double n1, double n2) throws RemoteException; + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..b48c048000 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/main/resources/META-INF/sca-contribution.xml @@ -0,0 +1,24 @@ + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/test/java/calculator/dosgi/test/CalculatorNode.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/test/java/calculator/dosgi/test/CalculatorNode.java new file mode 100644 index 0000000000..565a314d85 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/test/java/calculator/dosgi/test/CalculatorNode.java @@ -0,0 +1,43 @@ +/* + * 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.dosgi.test; + +import org.apache.tuscany.sca.node.equinox.launcher.NodeLauncher; + +/** + * + */ +public class CalculatorNode { + + /** + * @param args + */ + public static void main(String[] args) { + if (args.length == 0) { + args = new String[] {"-bundles"}; + } + try { + NodeLauncher.main(args); + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/test/java/calculator/dosgi/test/CalculatorOSGiNodeTestCase.java b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/test/java/calculator/dosgi/test/CalculatorOSGiNodeTestCase.java new file mode 100644 index 0000000000..2f37da0707 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/dosgi-calculator/src/test/java/calculator/dosgi/test/CalculatorOSGiNodeTestCase.java @@ -0,0 +1,152 @@ +/* + * 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.dosgi.test; + +import static calculator.dosgi.test.OSGiTestUtils.bundleStatus; + +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.net.URL; + +import org.apache.tuscany.sca.node.equinox.launcher.EquinoxHost; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleContext; +import org.osgi.framework.Constants; +import org.osgi.framework.ServiceReference; + +import calculator.dosgi.CalculatorService; +import calculator.rmi.OperationsRMIServer; + +/** + * + */ +public class CalculatorOSGiNodeTestCase { + private static EquinoxHost host; + private static BundleContext context; + private static Bundle calculatorBundle; + private static OperationsRMIServer rmiServer; + + /** + * @throws java.lang.Exception + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + try { + rmiServer = new OperationsRMIServer(); + rmiServer.start(); + + host = new EquinoxHost(); + context = host.start(); + + for (Bundle b : context.getBundles()) { + System.out.println(b); + // debug to print out exported packages + // handy if you want to find aplit packages + //Object exports = b.getHeaders().get(Constants.EXPORT_PACKAGE); + //if (exports != null){ + // System.out.println(exports.toString()); + //} + if (b.getSymbolicName().equals("org.eclipse.equinox.ds") || b.getSymbolicName() + .startsWith("org.apache.tuscany.sca.")) { + try { + if (b.getHeaders().get(Constants.FRAGMENT_HOST) == null) { + // Start the non-fragment bundle + b.start(); + } + } catch (Exception e) { + e.printStackTrace(); + } + System.out.println(bundleStatus(b, false)); + } else { + System.out.println(bundleStatus(b, false)); + } + if ("calculator.dosgi".equals(b.getSymbolicName())) { + calculatorBundle = b; + } + } + + if (calculatorBundle != null) { + calculatorBundle.start(); + System.out.println(bundleStatus(calculatorBundle, false)); + } + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testOSGi() { + ServiceReference ref = + calculatorBundle.getBundleContext().getServiceReference(CalculatorService.class.getName()); + Assert.assertNotNull(ref); + Object service = context.getService(ref); + Assert.assertNotNull(service); + CalculatorService calculator = OSGiTestUtils.cast(service, CalculatorService.class); + System.out.println("2.0 + 1.0 = " + calculator.add(2.0, 1.0)); + System.out.println("2.0 - 1.0 = " + calculator.subtract(2.0, 1.0)); + System.out.println("2.0 * 1.0 = " + calculator.multiply(2.0, 1.0)); + System.out.println("2.0 / 1.0 = " + calculator.divide(2.0, 1.0)); + } + + @Test + /** + * Test the Web service exposed by the Calculator + */ + public void testWS() throws Exception { + URL url = new URL("http://localhost:8086/CalculatorService?wsdl"); + InputStream is = url.openStream(); + Reader reader = new InputStreamReader(is); + char[] content = new char[10240]; // 10k + int len = 0; + while (true) { + int size = reader.read(content, len, content.length - len); + if (size < 0) { + break; + } + len += size; + } + Assert.assertTrue(len > 0); + String str = new String(content, 0, len); + System.out.println(str); + Assert.assertTrue(str.indexOf(" + * @param obj + * @param cls + * @return + */ + public static T cast(Object obj, Class cls) { + if (cls.isInstance(obj)) { + return cls.cast(obj); + } else { + return cls.cast(Proxy.newProxyInstance(cls.getClassLoader(), + new Class[] {cls}, + new InvocationHandlerImpl(obj))); + } + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/pom.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/pom.xml new file mode 100644 index 0000000000..ad5421c32a --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-osgi/pom.xml @@ -0,0 +1,44 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples-learning-more + 2.0-SNAPSHOT + ../pom.xml + + tuscany-samples-distributed-osgi-static + pom + Apache Tuscany SCA Distributed OSGI Statically Configured Samples + + + + default + + true + + + dosgi-calculator + dosgi-calculator-operations + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-script/README b/sca-java-2.x/contrib/samples/learning-more/implementation-script/README new file mode 100644 index 0000000000..18ba62d494 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-script/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/implementation-script/calculator-contribution/README b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/README new file mode 100644 index 0000000000..fe9aac7f3c --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/README @@ -0,0 +1,8 @@ +Calculator Sample Contribution +============================== + +This sample contribution implements a simple calculator using SCA components. + +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/implementation-script/calculator-contribution/build.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/build.xml new file mode 100644 index 0000000000..cfb163955e --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/build.xml @@ -0,0 +1,57 @@ + + + + + + + ${tuscany.home} + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/pom.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/pom.xml new file mode 100644 index 0000000000..2444855b17 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/pom.xml @@ -0,0 +1,57 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + sample-implementation-script-calculator-contribution + Apache Tuscany SCA Sample implementation.script Calculator Contribution + + + + org.apache.tuscany.sca + tuscany-sca-api + 2.0-SNAPSHOT + + + + 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/implementation-script/calculator-contribution/src/main/java/calculator/AddService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/java/calculator/AddService.java new file mode 100644 index 0000000000..5a1e7a638a --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/java/calculator/AddService.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 Add service interface + */ +public interface AddService { + + double add(double n1, double n2); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/java/calculator/CalculatorClient.java b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/java/calculator/CalculatorClient.java new file mode 100644 index 0000000000..1df1f31c48 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/java/calculator/CalculatorClient.java @@ -0,0 +1,52 @@ +/* + * 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.EagerInit; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; + +/** + * This client program shows how to create an SCA runtime, start it, + * and locate and invoke a SCA component + */ +@Scope("COMPOSITE") +@EagerInit +public class CalculatorClient { + + private CalculatorService calculatorService; + + @Reference + public void setCalculatorService(CalculatorService calculatorService) { + this.calculatorService = calculatorService; + } + + @Init + public void calculate() { + // Calculate + System.out.println("SCA API ClassLoader: " + Reference.class.getClassLoader()); + System.out.println("3 + 2=" + calculatorService.add(3, 2)); + System.out.println("3 - 2=" + calculatorService.subtract(3, 2)); + System.out.println("3 * 2=" + calculatorService.multiply(3, 2)); + System.out.println("3 / 2=" + calculatorService.divide(3, 2)); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/java/calculator/CalculatorService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/java/calculator/CalculatorService.java new file mode 100644 index 0000000000..78eea39c71 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/java/calculator/CalculatorService.java @@ -0,0 +1,37 @@ +/* + * 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 Calculator service interface. + */ +@Remotable +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/implementation-script/calculator-contribution/src/main/java/calculator/CalculatorServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/java/calculator/CalculatorServiceImpl.java new file mode 100644 index 0000000000..8e4b082d14 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/java/calculator/CalculatorServiceImpl.java @@ -0,0 +1,72 @@ +/* + * 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; +import org.oasisopen.sca.annotation.Service; + + +/** + * An implementation of the Calculator service. + */ +@Service(CalculatorService.class) +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/implementation-script/calculator-contribution/src/main/java/calculator/DivideService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-script/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/implementation-script/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/implementation-script/calculator-contribution/src/main/java/calculator/MultiplyService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-script/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/implementation-script/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/implementation-script/calculator-contribution/src/main/java/calculator/SubtractService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-script/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/implementation-script/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/implementation-script/calculator-contribution/src/main/resources/Calculator.composite b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/Calculator.composite new file mode 100644 index 0000000000..d441aa0aea --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/Calculator.composite @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/CalculatorClient.composite b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/CalculatorClient.composite new file mode 100644 index 0000000000..dfd32761be --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/CalculatorClient.composite @@ -0,0 +1,30 @@ + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..70aab0e051 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml @@ -0,0 +1,24 @@ + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/AddServiceImpl.componentType b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/AddServiceImpl.componentType new file mode 100644 index 0000000000..5f6d88454c --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/AddServiceImpl.componentType @@ -0,0 +1,30 @@ + + + + + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/AddServiceImpl.js b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/AddServiceImpl.js new file mode 100644 index 0000000000..6f11106ddd --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/AddServiceImpl.js @@ -0,0 +1,22 @@ +/* + * 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. + */ + +function add(n1, n2) { + return n1 + n2; +} \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/DivideServiceImpl.componentType b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/DivideServiceImpl.componentType new file mode 100644 index 0000000000..f4bb4e3471 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/DivideServiceImpl.componentType @@ -0,0 +1,30 @@ + + + + + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/DivideServiceImpl.groovy b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/DivideServiceImpl.groovy new file mode 100644 index 0000000000..c31c1e8fd6 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/DivideServiceImpl.groovy @@ -0,0 +1,22 @@ +/* + * 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. + */ + +def divide(n1, n2) { + return n1 / n2 +} \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/MultiplyServiceImpl.componentType b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/MultiplyServiceImpl.componentType new file mode 100644 index 0000000000..35dc5721b2 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/MultiplyServiceImpl.componentType @@ -0,0 +1,30 @@ + + + + + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/MultiplyServiceImpl.py b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/MultiplyServiceImpl.py new file mode 100644 index 0000000000..cce0b5b3ec --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/MultiplyServiceImpl.py @@ -0,0 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +def multiply(n1, n2): + return n1 * n2 \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/SubtractServiceImpl.componentType b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/SubtractServiceImpl.componentType new file mode 100644 index 0000000000..ee768f73f2 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/SubtractServiceImpl.componentType @@ -0,0 +1,30 @@ + + + + + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/SubtractServiceImpl.rb b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/SubtractServiceImpl.rb new file mode 100644 index 0000000000..132a1d13b0 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-script/calculator-contribution/src/main/resources/calculator/SubtractServiceImpl.rb @@ -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. +# + +def subtract(n1, n2) + return n1 - n2 +end \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-script/pom.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-script/pom.xml new file mode 100644 index 0000000000..6dcf2bb71f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-script/pom.xml @@ -0,0 +1,43 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples-learning-more + 2.0-SNAPSHOT + ../pom.xml + + tuscany-sample-implementation-script + pom + Apache Tuscany SCA Sample implementation.script + + + + default + + true + + + calculator-contribution + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/README b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/README new file mode 100644 index 0000000000..50e3b874ba --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/README @@ -0,0 +1,8 @@ +Sample implementation.spring Contribution +========================================== + +This sample contribution shows SCA components implemented using Spring. + +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/implementation-spring/helloworld-spring-contribution/pom.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/pom.xml new file mode 100644 index 0000000000..5b7b366056 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/pom.xml @@ -0,0 +1,67 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + + sample-implementation-spring-helloworld-contribution + Apache Tuscany SCA Sample implemenation.spring HelloWorld Contribution + + + + org.apache.tuscany.sca + tuscany-sca-api + 2.0-SNAPSHOT + provided + + + junit + junit + 4.8.1 + test + + + + + ${project.artifactId} + + + + + org.apache.tuscany.maven.plugins + maven-tuscany-plugin + 2.0-SNAPSHOT + + + org.apache.tuscany.sca + tuscany-implementation-spring-runtime + 2.0-SNAPSHOT + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/java/sample/DateService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/java/sample/DateService.java new file mode 100644 index 0000000000..7c50d66a9c --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/java/sample/DateService.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 sample; + +import java.util.Date; + +/** + * + */ +public interface DateService { + Date getDate(); +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/java/sample/DateServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/java/sample/DateServiceImpl.java new file mode 100644 index 0000000000..64bdd86f7c --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/java/sample/DateServiceImpl.java @@ -0,0 +1,37 @@ +/* + * 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 sample; + +import java.util.Date; + +import org.oasisopen.sca.annotation.Service; + +/** + * + */ +@Service(DateService.class) +public class DateServiceImpl implements DateService { + + public Date getDate() { + System.out.println("DateServiceImpl.getDate()"); + return new Date(); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/java/sample/Helloworld.java b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/java/sample/Helloworld.java new file mode 100644 index 0000000000..f4e8c50448 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/java/sample/Helloworld.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 sample; + +import org.oasisopen.sca.annotation.Remotable; + +@Remotable +public interface Helloworld { + + String sayHello(String name); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/java/sample/HelloworldClientImpl.java b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/java/sample/HelloworldClientImpl.java new file mode 100644 index 0000000000..ddcb1d9bc3 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/java/sample/HelloworldClientImpl.java @@ -0,0 +1,48 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package sample; + +import org.oasisopen.sca.annotation.Reference; + +public class HelloworldClientImpl implements Helloworld { + private Helloworld helloworld; + + // SCA reference + @Reference(required = false) + private DateService dateService; + + public HelloworldClientImpl() { + System.out.println("HelloworldClientImpl()"); + } + + public String sayHello(String name) { + System.out.println("HelloworldClientImpl.sayHello(" + name + ")"); + if (dateService == null) { + return "Hello " + name; + } + return "[" + dateService.getDate() + "] " + helloworld.sayHello(name); + } + + // Setter for spring injection + public void setHelloworld(Helloworld helloworld) { + System.out.println("Injected with " + helloworld); + this.helloworld = helloworld; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/java/sample/HelloworldImpl.java b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/java/sample/HelloworldImpl.java new file mode 100644 index 0000000000..125c333ddc --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/java/sample/HelloworldImpl.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 sample; + + +public class HelloworldImpl implements Helloworld { + + public HelloworldImpl() { + super(); + System.out.println("HelloworldImpl()"); + } + + public String sayHello(String name) { + System.out.println("HelloworldImpl.sayHello(" + name + ")"); + return "Hello " + name; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..552d100638 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-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/implementation-spring/helloworld-spring-contribution/src/main/resources/helloworld-client-context.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/resources/helloworld-client-context.xml new file mode 100644 index 0000000000..15e9647bb0 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/resources/helloworld-client-context.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/resources/helloworld-context.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/resources/helloworld-context.xml new file mode 100644 index 0000000000..9ecd09974e --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/resources/helloworld-context.xml @@ -0,0 +1,30 @@ + + + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/resources/helloworld.composite b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/resources/helloworld.composite new file mode 100644 index 0000000000..6d356758ae --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/main/resources/helloworld.composite @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/test/java/sample/HelloworldTestCase.java b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/test/java/sample/HelloworldTestCase.java new file mode 100644 index 0000000000..7e679ec0e9 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-contribution/src/test/java/sample/HelloworldTestCase.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 sample; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +public class HelloworldTestCase { + + @Test + public void testSayHello() { + HelloworldImpl helloworld = new HelloworldImpl(); + assertEquals("Hello Petra", helloworld.sayHello("Petra")); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-webapp/README b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-webapp/README new file mode 100644 index 0000000000..c3e2ceed03 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-webapp/README @@ -0,0 +1,9 @@ +Sample implementation.spring WebApp +========================================== + +This sample contribution shows SCA components implemented using Spring and +wrapped in a webapp + +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/implementation-spring/helloworld-spring-webapp/pom.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-webapp/pom.xml new file mode 100644 index 0000000000..25a78c2a54 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-webapp/pom.xml @@ -0,0 +1,185 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + + sample-implementation-spring-helloworld-webapp + Apache Tuscany SCA Sample implementation.spring Helloworld WebApp + war + + + + org.apache.tuscany.sca + tuscany-base-runtime + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-spring-webapp + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-spring-runtime + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-binding-jsonrpc-runtime + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + sample-implementation-spring-helloworld-contribution + 2.0-SNAPSHOT + provided + + + + junit + junit + 4.8.1 + test + + + httpunit + httpunit + 1.6.1 + test + + + + + helloworld-spring + + + + org.apache.maven.plugins + maven-surefire-plugin + + + true + + + + + integration-test + + test + + + + true + false + + + + + + + org.apache.maven.plugins + maven-war-plugin + + + + org.apache.tuscany.sca + sample-implementation-spring-helloworld-contribution + jar + WEB-INF/classes + + META-INF/**/* + + + + + org.apache.tuscany.sca + sample-implementation-spring-helloworld-contribution + jar + + META-INF/**/* + + + + + org.apache.tuscany.sca + tuscany-implementation-spring-webapp + jar + WEB-INF/classes + + org/apache/tuscany/sca/implementation/spring/webapp/spring-webapp-context.xml + + + + + + + + org.mortbay.jetty + maven-jetty-plugin + 6.1.18 + + helloworld + foo + 9999 + + + + start-jetty + pre-integration-test + + run + + + src/test/resources/test-web.xml + ${project.build.directory}/${project.build.finalName} + ${project.build.directory}/${project.build.finalName}/WEB-INF/web.xml + ${project.build.directory}/${project.build.finalName}/WEB-INF/classes + 0 + true + + + 8085 + + + + + + stop-jetty + post-integration-test + + stop + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-webapp/src/main/webapp/WEB-INF/web.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-webapp/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..49590e00a2 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-webapp/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,51 @@ + + + + + Apache Tuscany Helloworld Spring Sample + + + contextConfigLocation + + /WEB-INF/classes/helloworld-context.xml + /WEB-INF/classes/org/apache/tuscany/sca/implementation/spring/webapp/spring-webapp-context.xml + + + + + org.springframework.web.context.ContextLoaderListener + + + + org.apache.tuscany.sca.host.webapp.TuscanyContextListener + + + + tuscany + org.apache.tuscany.sca.host.webapp.TuscanyServletFilter + + + + tuscany + /* + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-webapp/src/test/java/sample/HelloworldClientTestCase.java b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-webapp/src/test/java/sample/HelloworldClientTestCase.java new file mode 100644 index 0000000000..fa77f08ee2 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-webapp/src/test/java/sample/HelloworldClientTestCase.java @@ -0,0 +1,58 @@ +/* + * 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 sample; + +import java.io.ByteArrayInputStream; + +import junit.framework.Assert; + +import org.json.JSONObject; +import org.junit.Test; + +import com.meterware.httpunit.PostMethodWebRequest; +import com.meterware.httpunit.WebConversation; +import com.meterware.httpunit.WebRequest; +import com.meterware.httpunit.WebResponse; + + +/** + * + */ +public class HelloworldClientTestCase { + private static final String SERVICE_URL = + "http://localhost:8085/helloworld/HelloworldClientComponent/HelloworldClientBean"; + + @Test + public void testJSONRPCBinding() throws Exception { + JSONObject jsonRequest = new JSONObject("{ \"method\": \"sayHello\", \"params\": [\"Ray\"], \"id\": 1}"); + + WebConversation wc = new WebConversation(); + WebRequest request = + new PostMethodWebRequest(SERVICE_URL, new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")), + "application/json"); + WebResponse response = wc.getResource(request); + + Assert.assertEquals(200, response.getResponseCode()); + + JSONObject jsonResp = new JSONObject(response.getText()); + String text = jsonResp.getString("result"); + Assert.assertTrue(text.endsWith("Hello Ray")); + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-webapp/src/test/resources/test-web.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-webapp/src/test/resources/test-web.xml new file mode 100644 index 0000000000..0ad2ed49c1 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/helloworld-spring-webapp/src/test/resources/test-web.xml @@ -0,0 +1,25 @@ + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-spring/pom.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/pom.xml new file mode 100644 index 0000000000..89acc85399 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-spring/pom.xml @@ -0,0 +1,44 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples-learning-more + 2.0-SNAPSHOT + ../pom.xml + + tuscany-samples-implementation-spring + pom + Apache Tuscany SCA Implementation Spring Samples + + + + default + + true + + + helloworld-spring-contribution + helloworld-spring-webapp + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/README b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/README new file mode 100644 index 0000000000..82c3349c85 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/README @@ -0,0 +1,8 @@ +Sample implementation.web JAXRS WebApp +========================================== + +This sample contribution shows SCA components implemented in a webapp and +accessed using JAXRS. + +See http://tuscany.apache.org/documentation-2x/20-beta-samples-documentation.html +for more information \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/pom.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/pom.xml new file mode 100644 index 0000000000..9b874a5215 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/pom.xml @@ -0,0 +1,131 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + + sample-implementation-web-helloworld-jaxrs-webapp + war + Apache Tuscany SCA Sample implemenation.web Helloworld JAX-RS WebApp + + + + + + org.apache.tuscany.sca + tuscany-base-runtime + 2.0-SNAPSHOT + + + + + org.apache.wink + wink-common + 1.1.2-incubating + + + org.apache.wink + wink-server + 1.1.2-incubating + + + javax.xml.bind + jaxb-api + + + com.sun.xml.bind + jaxb-impl + + + org.slf4j + slf4j-api + + + + + + org.slf4j + slf4j-api + 1.6.0 + + + + junit + junit + 4.8.1 + test + + + + net.sourceforge.htmlunit + htmlunit + 2.6 + test + + + + + + helloworld-jaxrs + + + org.mortbay.jetty + maven-jetty-plugin + 6.1.18 + + helloworld-jaxrs + foo + 9999 + + + + start-jetty + process-test-classes + + run + + + 0 + true + + + 8085 + + + + + + stop-jetty + prepare-package + + stop + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/java/sample/HelloWorldResource.java b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/java/sample/HelloWorldResource.java new file mode 100644 index 0000000000..42625b8a78 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/java/sample/HelloWorldResource.java @@ -0,0 +1,68 @@ +/******************************************************************************* + * 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 sample; + +import java.util.Date; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; + +import org.oasisopen.sca.annotation.Reference; + +/** + * Simple example - Hello World! + *

+ * The SDK dispatches HTTP requests for URI + * http://[host]:[port]/helloworld-jaxrs/rest/world, where + * helloworld-jaxrs is the context root, to this class. A simple + * plain text entry is returned in HTTP response. + *

+ * The service document is available at URI + * http://[host]:[port]/helloworld-jaxrs/rest but it is empty because + * this simple demo doesn't contain any collection of resources. + *

+ * This resource must be registered within a JAX-RS application, this example + * uses the default usage of application /WEB-INF/application + */ +@Path("/world") +public class HelloWorldResource { + + @Reference + protected HelloworldService service; + + + /** + * This method is called by the SDK for HTTP GET method requests where the + * Accept header allows the Atom media type application/atom+xml. A + * SyndEntry is created with basic information. Serialization of the + * SyndEntry to Atom entry is performed by the SDK automatically. The + * default status code of 200 (OK) is returned in the response. + * + * @return SyndEntry of the requested resource + */ + @GET + @Produces("text/plain") + public String getClichedMessage() { + return service == null ? "SCA reference not injected" : service.sayHello("World"); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/java/sample/HelloworldService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/java/sample/HelloworldService.java new file mode 100644 index 0000000000..123774b936 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/java/sample/HelloworldService.java @@ -0,0 +1,25 @@ +/* + * 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 sample; + +public interface HelloworldService { + + String sayHello(String name); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/java/sample/HelloworldServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/java/sample/HelloworldServiceImpl.java new file mode 100644 index 0000000000..66cef71a25 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/java/sample/HelloworldServiceImpl.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 sample; + + +public class HelloworldServiceImpl implements HelloworldService { + + public String sayHello(String name) { + return "Hello " + name; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/webapp/WEB-INF/application b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/webapp/WEB-INF/application new file mode 100644 index 0000000000..8ce781d6c8 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/webapp/WEB-INF/application @@ -0,0 +1,14 @@ +# 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. +sample.HelloWorldResource \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/webapp/WEB-INF/web.composite b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/webapp/WEB-INF/web.composite new file mode 100644 index 0000000000..7ff71519e9 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/webapp/WEB-INF/web.composite @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/webapp/WEB-INF/web.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..3c5726a818 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,49 @@ + + + + + Apache Tuscany Helloworld JAX-RS Sample + + + org.apache.tuscany.sca.host.webapp.TuscanyContextListener + + + + restSdkService + org.apache.wink.server.internal.servlet.RestServlet + + applicationConfigLocation + /WEB-INF/application + + + + deploymentConfiguration + org.apache.tuscany.sca.wink.TuscanyDeploymentConfiguration + + + + restSdkService + /rest/* + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/test/java/itest/HelloworldTestCase.java b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/test/java/itest/HelloworldTestCase.java new file mode 100644 index 0000000000..50197cdfcb --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jaxrs/src/test/java/itest/HelloworldTestCase.java @@ -0,0 +1,43 @@ +/* + * 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 itest; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.net.MalformedURLException; + +import org.junit.Test; + +import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException; +import com.gargoylesoftware.htmlunit.TextPage; +import com.gargoylesoftware.htmlunit.WebClient; + +/** + */ +public class HelloworldTestCase { + + @Test + public void testA() throws FailingHttpStatusCodeException, MalformedURLException, IOException { + TextPage page = (TextPage)new WebClient().getPage("http://localhost:8085/helloworld-jaxrs/rest/world"); + assertEquals("Hello World", page.getContent()); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/README b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/README new file mode 100644 index 0000000000..455a56b815 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/README @@ -0,0 +1,8 @@ +Sample implementation.web JS WebApp +========================================== + +This sample contribution shows SCA components implemented in a webapp and +accessed using Javascript. + +See http://tuscany.apache.org/documentation-2x/20-beta-samples-documentation.html +for more information \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/pom.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/pom.xml new file mode 100644 index 0000000000..bdd9c5085b --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/pom.xml @@ -0,0 +1,104 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + + sample-implementation-web-helloworld-js-client-webapp + war + Apache Tuscany SCA Sample implemenation.web Helloworld Javascript Client WebApp + + + + + org.apache.tuscany.sca + tuscany-base-runtime + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-databinding-json + 2.0-SNAPSHOT + + + + junit + junit + 4.8.1 + test + + + + net.sourceforge.htmlunit + htmlunit + 2.6 + test + + + + + + helloworld-js-client + + + org.mortbay.jetty + maven-jetty-plugin + 6.1.18 + + helloworld-js-client + foo + 9999 + + + + start-jetty + process-test-classes + + run + + + 0 + true + + + 8085 + + + + + + stop-jetty + prepare-package + + stop + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/main/java/sample/HelloworldService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/main/java/sample/HelloworldService.java new file mode 100644 index 0000000000..123774b936 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/main/java/sample/HelloworldService.java @@ -0,0 +1,25 @@ +/* + * 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 sample; + +public interface HelloworldService { + + String sayHello(String name); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/main/java/sample/HelloworldServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/main/java/sample/HelloworldServiceImpl.java new file mode 100644 index 0000000000..66cef71a25 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/main/java/sample/HelloworldServiceImpl.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 sample; + + +public class HelloworldServiceImpl implements HelloworldService { + + public String sayHello(String name) { + return "Hello " + name; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/main/webapp/WEB-INF/web.composite b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/main/webapp/WEB-INF/web.composite new file mode 100644 index 0000000000..d41a8535e2 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/main/webapp/WEB-INF/web.composite @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/main/webapp/WEB-INF/web.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..babeb7b203 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,41 @@ + + + + + Apache Tuscany Helloworld JSP Sample + + + tuscany + org.apache.tuscany.sca.host.webapp.TuscanyServletFilter + + + + tuscany + /* + + + + hello.html + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/main/webapp/hello.html b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/main/webapp/hello.html new file mode 100644 index 0000000000..12024cc4d3 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/main/webapp/hello.html @@ -0,0 +1,51 @@ + + + + + Apache Tuscany Helloworld Javascript Client Sample + + + + + + + + + +

Apache Tuscany Helloworld Javascript Client Sample

+ + + + + +
+ + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/test/java/itest/HelloworldTestCase.java b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/test/java/itest/HelloworldTestCase.java new file mode 100644 index 0000000000..de41997a59 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-js-client/src/test/java/itest/HelloworldTestCase.java @@ -0,0 +1,77 @@ +/* + * 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 itest; + +import static org.junit.Assert.assertTrue; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.net.URLEncoder; + +import org.junit.Ignore; +import org.junit.Test; + +/** + * Verfiy the serverside code is working, not sure how to easily itest the browser javascript code + */ +@Ignore("TUSCANY-3688") +public class HelloworldTestCase { + + @Test + public void testA() throws MalformedURLException, IOException { + + URL url = new URL("http://localhost:8085/helloworld-js-client/org.oasisopen.sca.componentContext.js/foo/call/plaincall/service.sayHello.dwr"); + URLConnection conn = url.openConnection(); + conn.setDoOutput(true); + OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); + + // to find this run the sample through TCPMON to capture the messages + + String data = URLEncoder.encode("callCount", "UTF-8") + "=" + URLEncoder.encode("1", "UTF-8"); + data += "&" + URLEncoder.encode("page", "UTF-8") + "=" + URLEncoder.encode("/helloworld-js-client/", "UTF-8"); + data += "&" + URLEncoder.encode("httpSessionId", "UTF-8") + "=" + URLEncoder.encode("", "UTF-8"); + data += "&" + URLEncoder.encode("scriptSessionId", "UTF-8") + "=" + URLEncoder.encode("A023DA664E56F075491BE1B87B37B02671", "UTF-8"); + data += "&" + URLEncoder.encode("c0-scriptName", "UTF-8") + "=" + URLEncoder.encode("service", "UTF-8"); + data += "&" + URLEncoder.encode("c0-methodName", "UTF-8") + "=" + URLEncoder.encode("sayHello", "UTF-8"); + data += "&" + URLEncoder.encode("c0-id", "UTF-8") + "=" + URLEncoder.encode("0", "UTF-8"); + data += "&" + URLEncoder.encode("c0-param0", "UTF-8") + "=" + URLEncoder.encode("string:petra", "UTF-8"); + data += "&" + URLEncoder.encode("batchId", "UTF-8") + "=" + URLEncoder.encode("0", "UTF-8"); + + wr.write(data); + wr.flush(); + + BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); + rd.readLine(); // throw 'allowScriptTagRemoting is false.'; + rd.readLine(); //#DWR-INSERT + rd.readLine(); //#DWR-REPLY + String line = rd.readLine(); // dwr.engine._remoteHandleCallback('0','0',"Hello petra"); + wr.close(); + rd.close(); + + assertTrue(line.endsWith("\"Hello petra\");")); + + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/README b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/README new file mode 100644 index 0000000000..c845341743 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/README @@ -0,0 +1,8 @@ +Sample implementation.web JSF WebApp +========================================== + +This sample contribution shows SCA components implemented in a webapp and +accessed using Java Server Faces. + +See http://tuscany.apache.org/documentation-2x/20-beta-samples-documentation.html +for more information \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/pom.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/pom.xml new file mode 100644 index 0000000000..36fe0c93c8 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/pom.xml @@ -0,0 +1,99 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + + sample-implementation-web-helloworld-jsf-webapp + Apache Tuscany SCA Sample implemenation.web Helloworld JSF WebApp + war + + + + + org.apache.tuscany.sca + tuscany-sca-api + 2.0-SNAPSHOT + compile + + + + org.apache.tuscany.sca + tuscany-base-runtime + 2.0-SNAPSHOT + runtime + + + + org.apache.tuscany.sca + tuscany-myfaces + 2.0-SNAPSHOT + runtime + + + + + + helloworld-jsf + + + org.mortbay.jetty + maven-jetty-plugin + 6.1.18 + + helloworld-jsf + foo + 9999 + + + + start-jetty + process-test-classes + + run + + + 0 + true + + + 8085 + + + + + + stop-jetty + prepare-package + + stop + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/java/sample/HelloWorldController.java b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/java/sample/HelloWorldController.java new file mode 100644 index 0000000000..9c9f541997 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/java/sample/HelloWorldController.java @@ -0,0 +1,56 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package sample; + +import org.oasisopen.sca.annotation.Reference; + +/** + * + */ +public class HelloWorldController { + + @Reference + protected HelloworldService service; + + private String name; + + public HelloWorldController() { + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + /** + * Method that is backed to a submit button of a form. + */ + public String send() { + if (service == null) { + name = "reference not injected!"; + } else { + name = service.sayHello(name); + } + return "success"; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/java/sample/HelloworldService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/java/sample/HelloworldService.java new file mode 100644 index 0000000000..53ff7a5ca1 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/java/sample/HelloworldService.java @@ -0,0 +1,25 @@ +/* + * 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 sample; + +public interface HelloworldService { + + String sayHello(String name); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/java/sample/HelloworldServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/java/sample/HelloworldServiceImpl.java new file mode 100644 index 0000000000..23925d6c69 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/java/sample/HelloworldServiceImpl.java @@ -0,0 +1,27 @@ +/* + * 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 sample; + +public class HelloworldServiceImpl implements HelloworldService { + + public String sayHello(String name) { + return "Hello " + name; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/WEB-INF/faces-config.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/WEB-INF/faces-config.xml new file mode 100644 index 0000000000..99cee9faeb --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/WEB-INF/faces-config.xml @@ -0,0 +1,51 @@ + + + + + + + helloWorld + sample.HelloWorldController + request + + + + + /helloWorld.jsp + + success + /page2.jsp + + + + + + /page2.jsp + + back + /helloWorld.jsp + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/WEB-INF/web.composite b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/WEB-INF/web.composite new file mode 100644 index 0000000000..8976adde3c --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/WEB-INF/web.composite @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/WEB-INF/web.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..fecbd7c79b --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,191 @@ + + + + + MyProject web.xml + + + + org.apache.tuscany.sca.host.webapp.TuscanyContextListener + + + org.apache.myfaces.config.annotation.LifecycleProvider + org.apache.tuscany.sca.myfaces.TuscanyAnnotationLifecycleProvider + + + + + State saving method: "client" or "server" (= default) + See JSF Specification 2.5.3 + javax.faces.STATE_SAVING_METHOD + client + + + Only applicable if state saving method is "server" (= default). + Defines the amount (default = 20) of the latest views are stored in session. + org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION + 20 + + + Only applicable if state saving method is "server" (= default). + If true (default) the state will be serialized to a byte stream before it + is written to the session. + If false the state will not be serialized to a byte stream. + org.apache.myfaces.SERIALIZE_STATE_IN_SESSION + true + + + Only applicable if state saving method is "server" (= default) and if + org.apache.myfaces.SERIALIZE_STATE_IN_SESSION is true (= default) + If true (default) the serialized state will be compressed before it + is written to the session. If false the state will not be compressed. + org.apache.myfaces.COMPRESS_STATE_IN_SESSION + true + + + This parameter tells MyFaces if javascript code should be allowed in the + rendered HTML output. + If javascript is allowed, command_link anchors will have javascript code + that submits the corresponding form. + If javascript is not allowed, the state saving info and nested parameters + will be added as url parameters. + Default: "true" + org.apache.myfaces.ALLOW_JAVASCRIPT + true + + + org.apache.myfaces.DETECT_JAVASCRIPT + false + + + If true, rendered HTML code will be formatted, so that it is "human readable". + i.e. additional line separators and whitespace will be written, that do not + influence the HTML code. + Default: "true" + org.apache.myfaces.PRETTY_HTML + true + + + If true, a javascript function will be rendered that is able to restore the + former vertical scroll on every request. Convenient feature if you have pages + with long lists and you do not want the browser page to always jump to the top + if you trigger a link or button action that stays on the same page. + Default: "false" + org.apache.myfaces.AUTO_SCROLL + true + + + + Used for encrypting view state. Only relevant for client side + state saving. See MyFaces wiki/web site documentation for instructions + on how to configure an application for diffenent encryption strengths. + + org.apache.myfaces.SECRET + NzY1NDMyMTA= + + + + + Validate managed beans, navigation rules and ensure that forms are not nested. + + org.apache.myfaces.VALIDATE + true + + + + + Treat readonly same as if disabled attribute was set for select elements. + + org.apache.myfaces.READONLY_AS_DISABLED_FOR_SELECTS + true + + + + + Use the defined class as the class which will be called when a resource is added to the + ExtensionFilter handling. Using StreamingAddResource here helps with performance. If you want to add + custom components and want to use the ExtensionFilter, you need to provide your custom implementation here. + + org.apache.myfaces.ADD_RESOURCE_CLASS + org.apache.myfaces.renderkit.html.util.DefaultAddResource + + + + + Virtual path in the URL which triggers loading of resources for the MyFaces extended components + in the ExtensionFilter. + + org.apache.myfaces.RESOURCE_VIRTUAL_PATH + /faces/myFacesExtensionResource + + + + + Check if the extensions-filter has been properly configured. + + org.apache.myfaces.CHECK_EXTENSIONS_FILTER + true + + + + + Define partial state saving as true/false. + + javax.faces.PARTIAL_STATE_SAVING_METHOD + false + + + + + org.apache.myfaces.webapp.StartupServletContextListener + + + + + Faces Servlet + javax.faces.webapp.FacesServlet + 1 + + + + + Faces Servlet + *.jsf + + + + + index.jsp + index.html + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/helloWorld.jsp b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/helloWorld.jsp new file mode 100644 index 0000000000..189c142c99 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/helloWorld.jsp @@ -0,0 +1,40 @@ + + +<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> +<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%> + + + + Apache Tuscany Helloworld JSF sample + + +

Apache Tuscany Helloworld JSF sample

+ + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/index.jsp b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/index.jsp new file mode 100644 index 0000000000..5ca296e115 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/index.jsp @@ -0,0 +1,23 @@ + + +<%@ page session="false"%> +<% +response.sendRedirect("helloWorld.jsf"); +%> diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/page2.jsp b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/page2.jsp new file mode 100644 index 0000000000..89259021c7 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsf/src/main/webapp/page2.jsp @@ -0,0 +1,38 @@ + + +<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> +<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%> + + + Apache Tuscany Helloworld JSF sample + + +

Apache Tuscany Helloworld JSF sample

+ + + +
+ + + +
+
+ + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/README b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/README new file mode 100644 index 0000000000..828aadb0f1 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/README @@ -0,0 +1,7 @@ +The README in the /samples directory provides +general instructions about building and running samples. (where +distribution-unpack-dir is the directory in which you unpacked the tuscany +binary distribution archive). Take a look there first (noting at you read it that this sample +is not a new style sample). + +TODO - finish \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/pom.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/pom.xml new file mode 100644 index 0000000000..fb1f93bcc1 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/pom.xml @@ -0,0 +1,98 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + + sample-implementation-web-helloworld-jsp-webapp + war + Apache Tuscany SCA Sample implemenation-web Helloworld JSP WebApp + + + + + org.apache.tuscany.sca + tuscany-base-runtime + 2.0-SNAPSHOT + + + + junit + junit + 4.8.1 + test + + + + net.sourceforge.htmlunit + htmlunit + 2.6 + test + + + + + + helloworld-jsp + + + org.mortbay.jetty + maven-jetty-plugin + 6.1.18 + + helloworld-jsp + foo + 9999 + + + + start-jetty + process-test-classes + + run + + + 0 + true + + + 8085 + + + + + + stop-jetty + prepare-package + + stop + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/main/java/sample/HelloworldService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/main/java/sample/HelloworldService.java new file mode 100644 index 0000000000..53ff7a5ca1 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/main/java/sample/HelloworldService.java @@ -0,0 +1,25 @@ +/* + * 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 sample; + +public interface HelloworldService { + + String sayHello(String name); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/main/java/sample/HelloworldServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/main/java/sample/HelloworldServiceImpl.java new file mode 100644 index 0000000000..a22c095f29 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/main/java/sample/HelloworldServiceImpl.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 sample; + + +public class HelloworldServiceImpl implements HelloworldService { + + public String sayHello(String name) { + return "Hello " + name; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/main/webapp/WEB-INF/web.composite b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/main/webapp/WEB-INF/web.composite new file mode 100644 index 0000000000..8976adde3c --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/main/webapp/WEB-INF/web.composite @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/main/webapp/WEB-INF/web.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..fa1f7ad7b9 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,41 @@ + + + + + Apache Tuscany Helloworld JSP Sample + + + tuscany + org.apache.tuscany.sca.host.webapp.TuscanyServletFilter + + + + tuscany + /* + + + + hello.jsp + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/main/webapp/hello.jsp b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/main/webapp/hello.jsp new file mode 100644 index 0000000000..ffd01cca73 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/main/webapp/hello.jsp @@ -0,0 +1,37 @@ + + +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@ taglib uri="http://www.osoa.org/sca/sca_jsp.tld" prefix="sca" %> + + + + + + +

Apache Tuscany Helloworld JSP Sample

+ + Calling HelloworldService sayHello("world") returns: + +

+ + <%= service.sayHello("world") %> + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/test/java/itest/HelloworldTestCase.java b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/test/java/itest/HelloworldTestCase.java new file mode 100644 index 0000000000..665957b0eb --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-jsp/src/test/java/itest/HelloworldTestCase.java @@ -0,0 +1,53 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package itest; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.net.MalformedURLException; +import java.util.Iterator; + +import org.junit.Test; + +import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException; +import com.gargoylesoftware.htmlunit.WebClient; +import com.gargoylesoftware.htmlunit.html.HtmlElement; +import com.gargoylesoftware.htmlunit.html.HtmlPage; +import com.gargoylesoftware.htmlunit.html.HtmlParagraph; + +/** + */ +public class HelloworldTestCase { + + @Test + public void testA() throws FailingHttpStatusCodeException, MalformedURLException, IOException { + HtmlPage page = (HtmlPage)new WebClient().getPage("http://localhost:8085/helloworld-jsp"); + Iterator ss = page.getAllHtmlChildElements().iterator(); + while(ss.hasNext()) { + HtmlElement htmlElement = (HtmlElement) ss.next(); + if( htmlElement instanceof HtmlParagraph) { + assertEquals("Hello world", htmlElement.asText()); + break; + } + } + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/README b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/README new file mode 100644 index 0000000000..6874bcaddc --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/README @@ -0,0 +1,8 @@ +Sample implementation.web Servlet WebApp +========================================== + +This sample contribution shows SCA components implemented in a webapp and +accessed using a Servlet. + +See http://tuscany.apache.org/documentation-2x/20-beta-samples-documentation.html +for more information \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/pom.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/pom.xml new file mode 100644 index 0000000000..5a07843e58 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/pom.xml @@ -0,0 +1,105 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + + sample-implementation-web-helloworld-servlet-webapp + war + Apache Tuscany SCA Sample implementation.web Helloworld Servlet WebApp + + + + + org.apache.tuscany.sca + tuscany-base-runtime + 2.0-SNAPSHOT + + + + javax.servlet + servlet-api + 2.5 + provided + + + + junit + junit + 4.8.1 + test + + + + net.sourceforge.htmlunit + htmlunit + 2.6 + test + + + + + + helloworld-servlet + + + org.mortbay.jetty + maven-jetty-plugin + 6.1.18 + + helloworld-servlet + foo + 9999 + + + + start-jetty + process-test-classes + + run + + + 0 + true + + + 8085 + + + + + + stop-jetty + prepare-package + + stop + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/java/sample/HelloworldService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/java/sample/HelloworldService.java new file mode 100644 index 0000000000..2e43e09897 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/java/sample/HelloworldService.java @@ -0,0 +1,25 @@ +/* + * 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 sample; + +public interface HelloworldService { + + String sayHello(String name); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/java/sample/HelloworldServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/java/sample/HelloworldServiceImpl.java new file mode 100644 index 0000000000..9e79276704 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/java/sample/HelloworldServiceImpl.java @@ -0,0 +1,27 @@ +/* + * 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 sample; + +public class HelloworldServiceImpl implements HelloworldService { + + public String sayHello(String name) { + return "Hello " + name; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/java/sample/HelloworldServlet.java b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/java/sample/HelloworldServlet.java new file mode 100644 index 0000000000..bb72c50f6a --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/java/sample/HelloworldServlet.java @@ -0,0 +1,64 @@ +/* + * 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 sample; + +import java.io.IOException; +import java.io.Writer; + +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.oasisopen.sca.ComponentContext; +import org.oasisopen.sca.annotation.Reference; + +/** + */ +public class HelloworldServlet extends HttpServlet { + private static final long serialVersionUID = 1L; + + @Reference + protected HelloworldService service; + + @Override + public void init(ServletConfig servletConfig) throws ServletException { + if (service == null) { + System.out.println("HelloworldServlet reference injection failed, using ComponentContext"); + ComponentContext cc = (ComponentContext)servletConfig.getServletContext().getAttribute("org.oasisopen.sca.ComponentContext"); + service = cc.getService(HelloworldService.class, "service"); + } + } + + @Override + protected void service(HttpServletRequest request, HttpServletResponse response) throws IOException { + + String name = request.getParameter("name"); + String greeting = service.sayHello(name); + + Writer out = response.getWriter(); + out.write("Apache Tuscany Helloworld Servlet Sample"); + out.write("

Apache Tuscany Helloworld Servlet Sample

"); + out.write("
Result: " + greeting); + out.write(""); + out.flush(); + out.close(); + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/webapp/WEB-INF/web.composite b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/webapp/WEB-INF/web.composite new file mode 100644 index 0000000000..8976adde3c --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/webapp/WEB-INF/web.composite @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/webapp/WEB-INF/web.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..a91b3fc96b --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,44 @@ + + + + + Apache Tuscany Helloworld Servlet Sample + + org.apache.tuscany.sca.host.webapp.TuscanyContextListener + + + HelloworldServlet + sample.HelloworldServlet + + + + HelloworldServlet + /HelloworldServlet + + + + hello.html + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/webapp/hello.html b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/webapp/hello.html new file mode 100644 index 0000000000..c4484916aa --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/main/webapp/hello.html @@ -0,0 +1,46 @@ + + + + +Apache Tuscany Helloworld Servlet Sample + + + + +

Apache Tuscany Helloworld Servlet Sample

+ +
+ + + + + + + + +
Enter your name: + +
+ +
+
+ + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/test/java/itest/HelloworldTestCase.java b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/test/java/itest/HelloworldTestCase.java new file mode 100644 index 0000000000..61d722da1f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-servlet/src/test/java/itest/HelloworldTestCase.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 itest; +import static org.junit.Assert.assertTrue; + +import java.io.IOException; +import java.net.MalformedURLException; + +import org.junit.Test; + +import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException; +import com.gargoylesoftware.htmlunit.WebClient; +import com.gargoylesoftware.htmlunit.html.HtmlButton; +import com.gargoylesoftware.htmlunit.html.HtmlForm; +import com.gargoylesoftware.htmlunit.html.HtmlInput; +import com.gargoylesoftware.htmlunit.html.HtmlPage; + +/** + */ +public class HelloworldTestCase { + + @Test + public void testA() throws FailingHttpStatusCodeException, MalformedURLException, IOException { + HtmlPage page = (HtmlPage)new WebClient().getPage("http://localhost:8085/helloworld-servlet"); + + HtmlForm form = (HtmlForm) page.getForms().get(0); + + HtmlInput textField = form.getInputByName("name"); + textField.setValueAttribute("petra"); + + HtmlButton button = (HtmlButton) form.getButtonsByName("submit").get(0); + + HtmlPage pageResponse = (HtmlPage) button.click(); + + assertTrue(pageResponse.getWebResponse().getContentAsString().endsWith("Hello petra")); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/README b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/README new file mode 100644 index 0000000000..f331fb036c --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/README @@ -0,0 +1,8 @@ +Sample implementation.web Stripes WebApp +========================================== + +This sample contribution shows SCA components implemented in a webapp and +accessed using a Stripes. + +See http://tuscany.apache.org/documentation-2x/20-beta-samples-documentation.html +for more information \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/pom.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/pom.xml new file mode 100644 index 0000000000..7e092f548b --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/pom.xml @@ -0,0 +1,118 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + + sample-implementation-web-helloworld-stripes-webapp + war + Apache Tuscany SCA Sample implementation.web Helloworld Stripes WebApp + + + + + + org.apache.tuscany.sca + tuscany-base-runtime + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-stripes + 2.0-SNAPSHOT + + + + + net.sourceforge.stripes + stripes + 1.5.2 + + + + taglibs + standard + 1.1.2 + + + + junit + junit + 4.8.1 + test + + + + net.sourceforge.htmlunit + htmlunit + 2.6 + test + + + + + + helloworld-stripes + + + org.mortbay.jetty + maven-jetty-plugin + 6.1.18 + + helloworld-stripes + foo + 9999 + + + + start-jetty + process-test-classes + + run + + + 0 + true + + + 8085 + + + + + + stop-jetty + prepare-package + + stop + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/mystripes/action/BaseActionBean.java b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/mystripes/action/BaseActionBean.java new file mode 100644 index 0000000000..0ab02682ac --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/mystripes/action/BaseActionBean.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 mystripes.action; + +import net.sourceforge.stripes.action.ActionBean; +import net.sourceforge.stripes.action.ActionBeanContext; + +public class BaseActionBean implements ActionBean { + private ActionBeanContext context; + + public ActionBeanContext getContext() { + return context; + } + public void setContext(ActionBeanContext context) { + this.context = context; + } +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/mystripes/action/HomeActionBean.java b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/mystripes/action/HomeActionBean.java new file mode 100644 index 0000000000..0385c92369 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/mystripes/action/HomeActionBean.java @@ -0,0 +1,45 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package mystripes.action; + +import net.sourceforge.stripes.action.DefaultHandler; +import net.sourceforge.stripes.action.ForwardResolution; +import net.sourceforge.stripes.action.Resolution; +import net.sourceforge.stripes.action.UrlBinding; + +import org.oasisopen.sca.annotation.Reference; + +import sample.HelloworldService; + +@UrlBinding("/Home.htm") +public class HomeActionBean extends BaseActionBean { + + @Reference + HelloworldService service; + + @DefaultHandler + public Resolution view() { + return new ForwardResolution("/WEB-INF/jsp/home.jsp"); + } + + public String getHello() { + return service.sayHello("world"); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/sample/HelloworldService.java b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/sample/HelloworldService.java new file mode 100644 index 0000000000..53ff7a5ca1 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/sample/HelloworldService.java @@ -0,0 +1,25 @@ +/* + * 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 sample; + +public interface HelloworldService { + + String sayHello(String name); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/sample/HelloworldServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/sample/HelloworldServiceImpl.java new file mode 100644 index 0000000000..a22c095f29 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/sample/HelloworldServiceImpl.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 sample; + + +public class HelloworldServiceImpl implements HelloworldService { + + public String sayHello(String name) { + return "Hello " + name; + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/resources/StripesResources.properties b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/resources/StripesResources.properties new file mode 100644 index 0000000000..902842a19e --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/resources/StripesResources.properties @@ -0,0 +1,73 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Resource strings used by the tag when there are no nested tags +stripes.errors.header=
Please fix the following errors:
    +stripes.errors.beforeError=
  1. +stripes.errors.afterError=
  2. +stripes.errors.footer=
+ +# Resource strings used by the tag when displaying errors for a +# specific field (e.g. ). If not supplied the +# values above will be used instead. +stripes.fieldErrors.header= +stripes.fieldErrors.beforeError= +stripes.fieldErrors.afterError=
+stripes.fieldErrors.footer= + +# Resource strings used by the stripes:messages tag +stripes.messages.header=
    +stripes.messages.beforeMessage=
  • +stripes.messages.afterMessage=
  • +stripes.messages.footer=
+ +# Validation error messages produced by Stripes' built-in converter classes. These +# are default error messages and can be overridden on per-field and per-form levels. +# Using the 'invalidNumber' error for a field 'age' of a form posting to +# '/user/Profile.action', the keys looked for (in order) would be: +# 1: /user/Profile.action.age.invalidNumber +# 2: /user/Profile.action.age.errorMessage +# 3: age.errorMessage +# 4: /user/Profile.action.invalidNumber +# 5: converter.number.invalidNumber +converter.number.invalidNumber=The value ({1}) entered in field {0} must be a valid number +converter.byte.outOfRange=The value ({1}) entered in field {0} was out of the range {2} to {3} +converter.short.outOfRange=The value ({1}) entered in field {0} was out of the range {2} to {3} +converter.integer.outOfRange=The value ({1}) entered in field {0} was out of the range {2} to {3} +converter.float.outOfRange=The value ({1}) entered in field {0} was out of the range {2} to {3} +converter.enum.notAnEnumeratedValue=The value "{1}" is not a valid value for field {0} +converter.date.invalidDate=The value ({1}) entered in field {0} must be a valid date +converter.email.invalidEmail=The value ({1}) entered is not a valid email address +converter.creditCard.invalidCreditCard=The value ({1}) entered is not a valid credit card number + +# Validation error messages produced by Stripes' annotation based validations. These +# are default error messages and can be overridden on per-field and per-form levels. +# Using the 'valueNotPresent' required field error for a field 'username' of a form +# posting to '/user/Register.action', the keys looked for (in order) would be: +# 1: /user/Register.action.username.valueNotPresent +# 2: /user/Register.action.username.errorMessage +# 3: username.errorMessage +# 4: /user/Register.action.valueNotPresent +# 5: validation.required.valueNotPresent +validation.required.valueNotPresent={0} is a required field +validation.minlength.valueTooShort={0} must be at least {2} characters long +validation.maxlength.valueTooLong={0} must be no more than {2} characters long +validation.minvalue.valueBelowMinimum=The minimum allowed value for {0} is {2} +validation.maxvalue.valueAboveMaximum=The maximum allowed value for {0} is {2} +validation.mask.valueDoesNotMatch={1} is not a valid {0} +validation.expression.valueFailedExpression=The value supplied ({1}) for field {0} is invalid +validation.file.postBodyTooBig=Total upload size of {3} KB exceeds the maximum size of {2} KB diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/resources/log4j.properties b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/resources/log4j.properties new file mode 100644 index 0000000000..2741999098 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/resources/log4j.properties @@ -0,0 +1,48 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# log4j.properties + +# Set up a logger to the console +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=[%d{HH:mm:ss}] %-5p %c %x - %m%n + +# Use this to only see log messages beyond a certain threshold in the console +#log4j.appender.stdout.Threshold=WARN + +# Set up a logger to a log file +log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender +log4j.appender.logfile.layout=org.apache.log4j.PatternLayout +log4j.appender.logfile.layout.ConversionPattern=[%d{HH:mm:ss}] %-5p %c %x - %m%n +log4j.appender.logfile.File=${user.home}/stripesquick.log +log4j.appender.logfile.DatePattern='.'yyyy-MM-dd + +# Use this to only see log messages beyond a certain threshold in the log file +#log4j.appender.logfile.Threshold=WARN + +# Logger settings +log4j.rootLogger=INFO, stdout, logfile + +# Valid levels are TRACE, DEBUG, INFO, WARN, ERROR, FATAL +# Change to TRACE or DEBUG to see more log messages +log4j.logger.net.sourceforge.stripes=WARN +log4j.logger.org.stripesbook.quickstart=INFO +log4j.logger.org.mortbay.log=INFO +log4j.logger.org=WARN +log4j.logger.com=WARN +log4j.logger.net=WARN diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/home.jsp b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/home.jsp new file mode 100644 index 0000000000..0681c1f2bf --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/home.jsp @@ -0,0 +1,26 @@ + +<%@ include file="/WEB-INF/jsp/taglibs.jsp" %> + + + +

sayHello returns: ${actionBean.hello}

+

Congratulations, you've set up a Stripes SCA project!

+
+
diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/layout.jsp b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/layout.jsp new file mode 100644 index 0000000000..d0fb716b80 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/layout.jsp @@ -0,0 +1,39 @@ + +<%@ include file="/WEB-INF/jsp/taglibs.jsp" %> + + + + + + + ${title} + + + + + +
+ + +
+ + + +
\ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/taglibs.jsp b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/taglibs.jsp new file mode 100644 index 0000000000..f85602fcfa --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/taglibs.jsp @@ -0,0 +1,29 @@ + +<%-- Stripes TLD --%> +<%@ taglib prefix="s" uri="http://stripes.sourceforge.net/stripes.tld" %> +<%@ taglib prefix="sdyn" uri="http://stripes.sourceforge.net/stripes-dynattr.tld" %> + +<%-- JSTL TLDs --%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> + +<%-- This is so that you can conveniently refer to the context path with ${contextPath} --%> + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/web.composite b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/web.composite new file mode 100644 index 0000000000..8976adde3c --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/web.composite @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/web.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..f01584cc2f --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,61 @@ + + + + + Apache Tuscany Helloworld Stripes Sample + + + org.apache.tuscany.sca.host.webapp.TuscanyContextListener + + + + StripesFilter + net.sourceforge.stripes.controller.StripesFilter + + ActionResolver.Packages + mystripes.action + + + Extension.Packages + org.apache.tuscany.sca.stripes + + + + + DispatcherServlet + net.sourceforge.stripes.controller.DispatcherServlet + 1 + + + + StripesFilter + DispatcherServlet + REQUEST + FORWARD + + + + DispatcherServlet + *.htm + + + + index.html + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/index.html b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/index.html new file mode 100644 index 0000000000..c79d29e6a5 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/index.html @@ -0,0 +1,24 @@ + + + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/test/java/README b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/test/java/README new file mode 100644 index 0000000000..828aadb0f1 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/test/java/README @@ -0,0 +1,7 @@ +The README in the /samples directory provides +general instructions about building and running samples. (where +distribution-unpack-dir is the directory in which you unpacked the tuscany +binary distribution archive). Take a look there first (noting at you read it that this sample +is not a new style sample). + +TODO - finish \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/test/java/itest/HelloworldTestCase.java b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/test/java/itest/HelloworldTestCase.java new file mode 100644 index 0000000000..7f4359fa43 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/helloworld-stripes/src/test/java/itest/HelloworldTestCase.java @@ -0,0 +1,53 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package itest; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.net.MalformedURLException; +import java.util.Iterator; + +import org.junit.Test; + +import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException; +import com.gargoylesoftware.htmlunit.WebClient; +import com.gargoylesoftware.htmlunit.html.HtmlElement; +import com.gargoylesoftware.htmlunit.html.HtmlPage; +import com.gargoylesoftware.htmlunit.html.HtmlParagraph; + +/** + */ +public class HelloworldTestCase { + + @Test + public void testA() throws FailingHttpStatusCodeException, MalformedURLException, IOException { + HtmlPage page = (HtmlPage)new WebClient().getPage("http://localhost:8085/helloworld-stripes"); + Iterator ss = page.getAllHtmlChildElements().iterator(); + while(ss.hasNext()) { + HtmlElement htmlElement = (HtmlElement) ss.next(); + if( htmlElement instanceof HtmlParagraph) { + assertEquals("sayHello returns: Hello world", htmlElement.asText()); + break; + } + } + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/implementation-web/pom.xml b/sca-java-2.x/contrib/samples/learning-more/implementation-web/pom.xml new file mode 100644 index 0000000000..94b39e5561 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/implementation-web/pom.xml @@ -0,0 +1,50 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples-learning-more + 2.0-SNAPSHOT + ../pom.xml + + tuscany-samples-implementation-webapp + pom + Apache Tuscany SCA Sample Web Applications + + + + default + + true + + + helloworld-jaxrs + helloworld-js-client + helloworld-jsf + + helloworld-servlet + helloworld-stripes + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/pom.xml b/sca-java-2.x/contrib/samples/learning-more/pom.xml new file mode 100644 index 0000000000..1b11cf0e30 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/pom.xml @@ -0,0 +1,60 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../pom.xml + + org.apache.tuscany.sca + tuscany-samples-learning-more + 2.0-SNAPSHOT + pom + Apache Tuscany SCA Learning More Sample Contributions + + + + default + + true + + + binding-jms + binding-rmi + binding-sca + binding-ws + + binding-jsonrpc + implementation-bpel + implementation-composite + implementation-java + implementation-script + implementation-spring + implementation-osgi + implementation-web + distributed-osgi + sca-client + async + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/sca-client/calculator-scaclient/README b/sca-java-2.x/contrib/samples/learning-more/sca-client/calculator-scaclient/README new file mode 100644 index 0000000000..59dd5f1759 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/sca-client/calculator-scaclient/README @@ -0,0 +1,19 @@ +Calculator SCA Client +===================== + +To run an application that uses the SCA client API to send messages to the +Calculator service running in the domain do the following + +First start one of the Calculator based contributions. For example, + +cd samples/learning-more/binding-sca/contribution-calculator +follow the instructions in the README there + +Then run the the SCA client by doing the following: + +cd samples/learning-more/scaclient-calculator +mvn exec:java + +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/sca-client/calculator-scaclient/pom.xml b/sca-java-2.x/contrib/samples/learning-more/sca-client/calculator-scaclient/pom.xml new file mode 100644 index 0000000000..d63a90c359 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/sca-client/calculator-scaclient/pom.xml @@ -0,0 +1,69 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + + sample-sca-client-calculator + Apache Tuscany SCA Sample SCA Client Calculator + + + + + org.apache.tuscany.sca + tuscany-base-runtime + 2.0-SNAPSHOT + + + + junit + junit + 4.8.1 + test + + + + + + ${project.artifactId} + + + org.codehaus.mojo + exec-maven-plugin + 1.1.1 + + + + java + + + + + sample.CalculatorSCAClient + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/sca-client/calculator-scaclient/src/main/java/calculator/CalculatorService.java b/sca-java-2.x/contrib/samples/learning-more/sca-client/calculator-scaclient/src/main/java/calculator/CalculatorService.java new file mode 100644 index 0000000000..12d80ffd1c --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/sca-client/calculator-scaclient/src/main/java/calculator/CalculatorService.java @@ -0,0 +1,38 @@ +/* + * 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 Calculator service interface. + */ +@Remotable +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/sca-client/calculator-scaclient/src/main/java/sample/CalculatorSCAClient.java b/sca-java-2.x/contrib/samples/learning-more/sca-client/calculator-scaclient/src/main/java/sample/CalculatorSCAClient.java new file mode 100644 index 0000000000..edbf528517 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/sca-client/calculator-scaclient/src/main/java/sample/CalculatorSCAClient.java @@ -0,0 +1,53 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package sample; + +import java.net.URI; + +import org.oasisopen.sca.NoSuchDomainException; +import org.oasisopen.sca.NoSuchServiceException; +import org.oasisopen.sca.client.SCAClientFactory; + +import calculator.CalculatorService; + +public class CalculatorSCAClient { + + public static void main(String[] args) throws NoSuchDomainException, NoSuchServiceException { + + String domainURI = "default"; + String name = "world"; + + if (args.length == 2) { + domainURI= args[0]; + name = args[1]; + } else if (args.length == 1) { + domainURI= args[0]; + } + + System.out.println("using domain uri: " + domainURI); + System.out.println("using name: " + name); + + SCAClientFactory factory = SCAClientFactory.newInstance(URI.create(domainURI)); + CalculatorService calculator = factory.getService(CalculatorService.class, "CalculatorServiceComponent"); + + System.out.println("Calling CalculatorService.add(2, 3)"); + System.out.println(calculator.add(3, 2)); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/sca-client/helloworld-scaclient/README b/sca-java-2.x/contrib/samples/learning-more/sca-client/helloworld-scaclient/README new file mode 100644 index 0000000000..895716cd98 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/sca-client/helloworld-scaclient/README @@ -0,0 +1,19 @@ +Helloworld SCA Client +===================== + +To run an application that uses the SCA client API to send messages to the +Helloworld service running in the domain do the following + +First start one of the Helloworld based contributions. For example, + +cd samples/getting-started/helloworld-contribution +follow the instructions in the README there + +Then run the the SCA client by doing the following: + +cd samples/learning-more/scaclient-helloworld +mvn exec:java + +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/sca-client/helloworld-scaclient/pom.xml b/sca-java-2.x/contrib/samples/learning-more/sca-client/helloworld-scaclient/pom.xml new file mode 100644 index 0000000000..f891ee3e45 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/sca-client/helloworld-scaclient/pom.xml @@ -0,0 +1,69 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../../../pom.xml + + + sample-sca-client-helloworld + Apache Tuscany SCA Sample SCA Client Helloworld + + + + + org.apache.tuscany.sca + tuscany-base-runtime + 2.0-SNAPSHOT + + + + junit + junit + 4.8.1 + test + + + + + + ${project.artifactId} + + + org.codehaus.mojo + exec-maven-plugin + 1.1.1 + + + + java + + + + + sample.HelloworldSCAClient + + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/sca-client/helloworld-scaclient/src/main/java/sample/Helloworld.java b/sca-java-2.x/contrib/samples/learning-more/sca-client/helloworld-scaclient/src/main/java/sample/Helloworld.java new file mode 100644 index 0000000000..f4e8c50448 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/sca-client/helloworld-scaclient/src/main/java/sample/Helloworld.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 sample; + +import org.oasisopen.sca.annotation.Remotable; + +@Remotable +public interface Helloworld { + + String sayHello(String name); + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/sca-client/helloworld-scaclient/src/main/java/sample/HelloworldSCAClient.java b/sca-java-2.x/contrib/samples/learning-more/sca-client/helloworld-scaclient/src/main/java/sample/HelloworldSCAClient.java new file mode 100644 index 0000000000..c2c9c4e44e --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/sca-client/helloworld-scaclient/src/main/java/sample/HelloworldSCAClient.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 sample; + +import java.net.URI; + +import org.oasisopen.sca.NoSuchDomainException; +import org.oasisopen.sca.NoSuchServiceException; +import org.oasisopen.sca.client.SCAClientFactory; + +public class HelloworldSCAClient { + + public static void main(String[] args) throws NoSuchDomainException, NoSuchServiceException { + + String domainURI = "default"; + String name = "world"; + + if (args.length == 2) { + domainURI= args[0]; + name = args[1]; + } else if (args.length == 1) { + domainURI= args[0]; + } + + System.out.println("using domain uri: " + domainURI); + System.out.println("using name: " + name); + + SCAClientFactory factory = SCAClientFactory.newInstance(URI.create(domainURI)); + Helloworld service = factory.getService(Helloworld.class, "HelloworldComponent"); + + System.out.println("Calling HelloworldComponent.sayHello(\"" + name + "\")"); + System.out.println(service.sayHello(name)); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/sca-client/helloworld-scaclient/src/test/java/sample/HelloworldTestCase.java b/sca-java-2.x/contrib/samples/learning-more/sca-client/helloworld-scaclient/src/test/java/sample/HelloworldTestCase.java new file mode 100644 index 0000000000..13e08de692 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/sca-client/helloworld-scaclient/src/test/java/sample/HelloworldTestCase.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 sample; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +public class HelloworldTestCase { + + @Test + public void testSayHello() { + HelloworldSCAClient helloworld = new HelloworldSCAClient(); +// assertEquals("Hello Petra", helloworld.sayHello("Petra")); + } + +} diff --git a/sca-java-2.x/contrib/samples/learning-more/sca-client/pom.xml b/sca-java-2.x/contrib/samples/learning-more/sca-client/pom.xml new file mode 100644 index 0000000000..5c125bead3 --- /dev/null +++ b/sca-java-2.x/contrib/samples/learning-more/sca-client/pom.xml @@ -0,0 +1,46 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples-learning-more + 2.0-SNAPSHOT + ../pom.xml + + org.apache.tuscany.sca + 2.0-SNAPSHOT + tuscany-samples-sca-client + pom + Apache Tuscany SCA SCAClient Samples + + + + default + + true + + + helloworld-scaclient + calculator-scaclient + + + + -- cgit v1.2.3