From 1618160f4f2dbb67727df2d341c505f105aa1e2c Mon Sep 17 00:00:00 2001 From: antelder Date: Tue, 26 Oct 2010 11:07:13 +0000 Subject: Delete and redo release branch git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1027464 13f79535-47bb-0310-9956-ffa450edef68 --- .../samples/running-tuscany/command-line/README | 13 ++ .../samples/running-tuscany/eclipse/README | 15 ++ .../samples/running-tuscany/embedded-jse/README | 15 ++ .../samples/running-tuscany/embedded-jse/build.xml | 141 ++++++++++++++ .../samples/running-tuscany/embedded-jse/pom.xml | 92 ++++++++++ .../main/java/calculator/CalculatorService.java | 38 ++++ .../JSELauncherBindingJSONRPCCalculator.java | 59 ++++++ .../launcher/JSELauncherBindingRMICalculator.java | 60 ++++++ .../launcher/JSELauncherBindingSCACalculator.java | 59 ++++++ .../launcher/JSELauncherBindingWSCalculator.java | 59 ++++++ .../JSELauncherImplementationJavaCalculator.java | 46 +++++ ...ELauncherImplementationJavaCalculatorAsync.java | 44 +++++ .../JSELauncherImplementationScriptCalculator.java | 59 ++++++ .../java/launcher/SampleLauncherException.java | 42 +++++ .../src/test/java/launcher/LauncherTestCase.java | 62 +++++++ .../running-tuscany/embedded-osgi-base/README | 24 +++ .../running-tuscany/embedded-osgi-base/build.xml | 94 ++++++++++ .../running-tuscany/embedded-osgi-base/pom.xml | 71 +++++++ .../main/java/calculator/CalculatorService.java | 38 ++++ .../src/main/java/launcher/RuntimeIntegration.java | 61 +++++++ .../src/main/java/launcher/SampleJSELauncher.java | 89 +++++++++ .../java/launcher/SampleLauncherException.java | 42 +++++ .../src/test/java/launcher/LauncherTestCase.java | 39 ++++ .../samples/running-tuscany/embedded-osgi/README | 20 ++ .../running-tuscany/embedded-osgi/build.xml | 98 ++++++++++ .../samples/running-tuscany/embedded-osgi/pom.xml | 75 ++++++++ .../main/java/calculator/CalculatorService.java | 38 ++++ .../src/main/java/launcher/RuntimeIntegration.java | 61 +++++++ .../java/launcher/SampleLauncherException.java | 42 +++++ .../launcher/SampleOSGILauncherBindingSCA.java | 47 +++++ .../java/launcher/SampleOSGILauncherBindingWS.java | 84 +++++++++ .../src/test/java/launcher/LauncherTestCase.java | 41 +++++ .../maven-junit/calculator-contribution/README | 26 +++ .../maven-junit/calculator-contribution/build.xml | 57 ++++++ .../maven-junit/calculator-contribution/pom.xml | 58 ++++++ .../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 | 49 +++++ .../samples/running-tuscany/maven-junit/pom.xml | 43 +++++ .../calculator-osgi/META-INF/MANIFEST.MF | 19 ++ .../maven-osgi-junit/calculator-osgi/README | 99 ++++++++++ .../maven-osgi-junit/calculator-osgi/build.xml | 78 ++++++++ .../calculator-osgi/logging.properties | 25 +++ .../maven-osgi-junit/calculator-osgi/pom.xml | 116 ++++++++++++ .../src/main/java/calculator/AddService.java | 28 +++ .../src/main/java/calculator/AddServiceImpl.java | 35 ++++ .../main/java/calculator/CalculatorActivator.java | 54 ++++++ .../src/main/java/calculator/CalculatorClient.java | 52 ++++++ .../main/java/calculator/CalculatorService.java | 34 ++++ .../java/calculator/CalculatorServiceImpl.java | 69 +++++++ .../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 ++++++ .../test/java/calculator/CalculatorTestCase.java | 54 ++++++ .../calculator-rest-osgi/META-INF/MANIFEST.MF | 19 ++ .../maven-osgi-junit/calculator-rest-osgi/README | 99 ++++++++++ .../maven-osgi-junit/calculator-rest-osgi/pom.xml | 163 +++++++++++++++++ .../src/main/java/calculator/AddService.java | 28 +++ .../src/main/java/calculator/AddServiceImpl.java | 36 ++++ .../main/java/calculator/CalculatorActivator.java | 54 ++++++ .../main/java/calculator/CalculatorService.java | 66 +++++++ .../java/calculator/CalculatorServiceImpl.java | 88 +++++++++ .../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 | 55 ++++++ .../test/java/calculator/CalculatorTestCase.java | 126 +++++++++++++ .../running-tuscany/maven-osgi-junit/pom.xml | 46 +++++ .../2.0-Beta1/samples/running-tuscany/maven/README | 18 ++ .../2.0-Beta1/samples/running-tuscany/osgi/README | 33 ++++ .../2.0-Beta1/samples/running-tuscany/pom.xml | 57 ++++++ .../2.0-Beta1/samples/running-tuscany/shell/README | 34 ++++ .../samples/running-tuscany/shell/pom.xml | 92 ++++++++++ .../2.0-Beta1/samples/running-tuscany/shell/sca | 19 ++ .../samples/running-tuscany/shell/sca.bat | 30 +++ .../running-tuscany/shell/scripts/test-remote.txt | 36 ++++ .../running-tuscany/shell/scripts/test-start.txt | 18 ++ .../running-tuscany/shell/scripts/test-status.txt | 17 ++ .../running-tuscany/shell/scripts/test-stop.txt | 17 ++ .../samples/running-tuscany/shell/scripts/test.txt | 36 ++++ .../shell/src/main/java/sample/Shell.java | 203 +++++++++++++++++++++ .../shell/src/main/java/sample/ShellServlet.java | 48 +++++ .../shell/src/main/webapp/WEB-INF/web.xml | 48 +++++ .../shell/src/main/webapp/index.html | 42 +++++ .../samples/running-tuscany/webapp/README | 59 ++++++ 104 files changed, 5211 insertions(+) create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/command-line/README create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/eclipse/README create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/README create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/build.xml create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/pom.xml create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/calculator/CalculatorService.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherBindingJSONRPCCalculator.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherBindingRMICalculator.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherBindingSCACalculator.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherBindingWSCalculator.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherImplementationJavaCalculator.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherImplementationJavaCalculatorAsync.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherImplementationScriptCalculator.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/SampleLauncherException.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/test/java/launcher/LauncherTestCase.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/README create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/build.xml create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/pom.xml create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/src/main/java/calculator/CalculatorService.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/src/main/java/launcher/RuntimeIntegration.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/src/main/java/launcher/SampleJSELauncher.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/src/main/java/launcher/SampleLauncherException.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/src/test/java/launcher/LauncherTestCase.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/README create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/build.xml create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/pom.xml create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/src/main/java/calculator/CalculatorService.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/src/main/java/launcher/RuntimeIntegration.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/src/main/java/launcher/SampleLauncherException.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/src/main/java/launcher/SampleOSGILauncherBindingSCA.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/src/main/java/launcher/SampleOSGILauncherBindingWS.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/src/test/java/launcher/LauncherTestCase.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/README create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/build.xml create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/pom.xml create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/AddService.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/AddServiceImpl.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/CalculatorClient.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/CalculatorService.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/CalculatorServiceImpl.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/DivideService.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/DivideServiceImpl.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/MultiplyService.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/MultiplyServiceImpl.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/SubtractService.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/SubtractServiceImpl.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/resources/Calculator.composite create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/resources/CalculatorClient.composite create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/test/java/calculator/CalculatorTestCase.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/pom.xml create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/META-INF/MANIFEST.MF create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/README create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/build.xml create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/logging.properties create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/pom.xml create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/AddService.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/AddServiceImpl.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/CalculatorActivator.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/CalculatorClient.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/CalculatorService.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/CalculatorServiceImpl.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/DivideService.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/DivideServiceImpl.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/MultiplyService.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/MultiplyServiceImpl.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/SubtractService.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/SubtractServiceImpl.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/resources/Calculator.composite create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/test/java/calculator/CalculatorTestCase.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/META-INF/MANIFEST.MF create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/README create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/pom.xml create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/AddService.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/AddServiceImpl.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/CalculatorActivator.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/CalculatorService.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/CalculatorServiceImpl.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/DivideService.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/DivideServiceImpl.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/MultiplyService.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/MultiplyServiceImpl.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/SubtractService.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/SubtractServiceImpl.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/resources/Calculator.composite create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/test/java/calculator/CalculatorTestCase.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/pom.xml create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven/README create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/osgi/README create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/pom.xml create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/README create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/pom.xml create mode 100755 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/sca create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/sca.bat create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/scripts/test-remote.txt create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/scripts/test-start.txt create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/scripts/test-status.txt create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/scripts/test-stop.txt create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/scripts/test.txt create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/src/main/java/sample/Shell.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/src/main/java/sample/ShellServlet.java create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/src/main/webapp/WEB-INF/web.xml create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/src/main/webapp/index.html create mode 100644 sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/webapp/README (limited to 'sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany') diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/command-line/README b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/command-line/README new file mode 100644 index 0000000000..bf963ea98e --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/command-line/README @@ -0,0 +1,13 @@ +To execute a sample contribution from the command line + +on Windows, from a command prompt in the samples directory, run the command ... + +..\bin\tuscany.bat "contribution-name" + +for example + +..\bin\tuscany.bat contribution-binding-sca-calculator + +or on *nix platforms, from a shell prompt in the samples directory, run the command ... + +../bin/tuscany.sh contribution-binding-sca-calculator diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/eclipse/README b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/eclipse/README new file mode 100644 index 0000000000..a2460ec294 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/eclipse/README @@ -0,0 +1,15 @@ +To import sample contributions into Eclipse you first need to import the +Tuscany runtime. You then need to import the sample contribution into Eclipse +as a project. Instructions for doing both of these things can be found here + +http://tuscany.apache.org/import-existing-tuscany-sca-projects-into-eclipse.html + +Note. these instructions refer to our 1.x code base but it holds true for +our 2.x code base. + +Once you have a contribution imported into Eclipse and cleanly compiling +against the Tuscany runtime jars you probably want to be able to run and +debug it. The easiest way to do this is with a simple Java launcher. If you +import the running-tuscany/embedded-jse project into Eclipse you'll see a +number of such launcher programs which you can copy to launch the +contribution(s) of your choice. diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/README b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/README new file mode 100644 index 0000000000..b10f588d0d --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/README @@ -0,0 +1,15 @@ +JSE Sample Launchers +==================== + +This directory contains sample java launchers for the +tuscany sample contributions. + +To use this sample JSE launcher with ant execute the command + +ant run- + +where run- is one of the targets in the build.xml file + +To use this sample launcher to run all of the contributions as junit test cases, +execute the command "mvn" in the launcher directory. + diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/build.xml b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/build.xml new file mode 100644 index 0000000000..ae72c3cca2 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/build.xml @@ -0,0 +1,141 @@ + + + + + + Root of Tuscany binary distribution is - ${tuscany.home} + + + + + + + + + + + + + + + + + + + + + + + + + + + Please use 'ant run-name-of-sample-contribution-to-run' for example, try one of + 'ant sample-binding-sca-calculator-contribution' + 'ant sample-binding-ws-calculator-contribution' + 'ant sample-binding-rmi-calculator-contribution' + 'ant sample-implementation-java-calculator-contribution' + 'ant sample-implementation-java-calculator-async-contribution' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/pom.xml b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/pom.xml new file mode 100644 index 0000000000..462c89ffe1 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/pom.xml @@ -0,0 +1,92 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-Beta1-SNAPSHOT + ../pom.xml + + sample-launcher-embedded-jse + Apache Tuscany SCA Sample Launcher Embedded JSE + + + + org.apache.tuscany.sca + tuscany-base-runtime-pom + 2.0-Beta1-SNAPSHOT + pom + + + + org.apache.tuscany.sca + tuscany-osgi-runtime-pom + 2.0-Beta1-SNAPSHOT + pom + + + + org.apache.tuscany.sca + tuscany-binding-rmi-runtime + 2.0-Beta1-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-binding-ws-runtime-axis2 + 2.0-Beta1-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-host-jetty + 2.0-Beta1-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-script-runtime + 2.0-Beta1-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-binding-jsonrpc-runtime + 2.0-Beta1-SNAPSHOT + + + + junit + junit + 4.8.1 + test + + + + + + ${artifactId} + + + + + + diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/calculator/CalculatorService.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/calculator/CalculatorService.java new file mode 100644 index 0000000000..12d80ffd1c --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/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/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherBindingJSONRPCCalculator.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherBindingJSONRPCCalculator.java new file mode 100644 index 0000000000..b4ef6b6ea7 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherBindingJSONRPCCalculator.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 launcher; + +import org.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.Node; +import org.apache.tuscany.sca.node.NodeFactory; + +import calculator.CalculatorService; + +/** + * This client program shows how to create an embedded SCA runtime, load a contribution, + * start it and locate and invoke an SCA component + */ +public class JSELauncherBindingJSONRPCCalculator { + + public static void main(String[] args) throws Exception { + JSELauncherBindingJSONRPCCalculator launcher = new JSELauncherBindingJSONRPCCalculator(); + launcher.launchBindingSCACalculator(); + } + + /* + * Using the Tuscany Node API to load a contribution. + * Using the Tuscany Node API to get a local service proxy + */ + public void launchBindingSCACalculator(){ + Node node = NodeFactory.newInstance().createNode(new Contribution("c1", "../binding-jsonrpc/calculator-contribution/target/sample-binding-jsonrpc-calculator-contribution.jar")); + node.start(); + + CalculatorService calculator = node.getService(CalculatorService.class, "CalculatorServiceComponent"); + + // TODO - could use JUnit assertions but don't want to have to handle JUnit dependency from Ant script + double result = calculator.add(3, 2); + System.out.println("3 + 2 = " + result); + if (result != 5.0){ + throw new SampleLauncherException(); + } + + node.stop(); + } + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherBindingRMICalculator.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherBindingRMICalculator.java new file mode 100644 index 0000000000..b3c99edfa1 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherBindingRMICalculator.java @@ -0,0 +1,60 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package launcher; + +import org.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.Node; +import org.apache.tuscany.sca.node.NodeFactory; + +import calculator.CalculatorService; + +/** + * This client program shows how to create an embedded SCA runtime, load a contribution, + * start it and locate and invoke an SCA component + */ +public class JSELauncherBindingRMICalculator { + + public static void main(String[] args) throws Exception { + JSELauncherBindingRMICalculator launcher = new JSELauncherBindingRMICalculator(); + launcher.launchBindingRMICalculator(); + } + + + public void launchBindingRMICalculator(){ + + Node node1 = NodeFactory.newInstance().createNode(new Contribution("c1", "../../learning-more/binding-rmi/calculator-service-contribution/target/sample-binding-rmi-calculator-service-contribution.jar")); + Node node2 = NodeFactory.newInstance().createNode(new Contribution("c1", "../../learning-more/binding-rmi/calculator-reference-contribution/target/sample-binding-rmi-calculator-reference-contribution.jar")); + + node1.start(); + node2.start(); + + CalculatorService calculator = node2.getService(CalculatorService.class, "CalculatorServiceComponent"); + + double result = calculator.add(3, 2); + System.out.println("3 + 2 = " + result); + if (result != 5.0){ + throw new SampleLauncherException(); + } + + node1.stop(); + node2.stop(); + } + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherBindingSCACalculator.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherBindingSCACalculator.java new file mode 100644 index 0000000000..43de9e646f --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherBindingSCACalculator.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 launcher; + +import org.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.Node; +import org.apache.tuscany.sca.node.NodeFactory; + +import calculator.CalculatorService; + +/** + * This client program shows how to create an embedded SCA runtime, load a contribution, + * start it and locate and invoke an SCA component + */ +public class JSELauncherBindingSCACalculator { + + public static void main(String[] args) throws Exception { + JSELauncherBindingSCACalculator launcher = new JSELauncherBindingSCACalculator(); + launcher.launchBindingSCACalculator(); + } + + /* + * Using the Tuscany Node API to load a contribution. + * Using the Tuscany Node API to get a local service proxy + */ + public void launchBindingSCACalculator(){ + Node node = NodeFactory.newInstance().createNode(new Contribution("c1", "../../learning-more/binding-sca/calculator-contribution/target/sample-binding-sca-calculator-contribution.jar")); + node.start(); + + CalculatorService calculator = node.getService(CalculatorService.class, "CalculatorServiceComponent"); + + // TODO - could use JUnit assertions but don't want to have to handle JUnit dependency from Ant script + double result = calculator.add(3, 2); + System.out.println("3 + 2 = " + result); + if (result != 5.0){ + throw new SampleLauncherException(); + } + + node.stop(); + } + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherBindingWSCalculator.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherBindingWSCalculator.java new file mode 100644 index 0000000000..7c212a75dd --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherBindingWSCalculator.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 launcher; + +import org.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.Node; +import org.apache.tuscany.sca.node.NodeFactory; + +import calculator.CalculatorService; + +/** + * This client program shows how to create an embedded SCA runtime, load a contribution, + * start it and locate and invoke an SCA component + */ +public class JSELauncherBindingWSCalculator { + + public static void main(String[] args) throws Exception { + JSELauncherBindingWSCalculator launcher = new JSELauncherBindingWSCalculator(); + launcher.launchBindingWSCalculator(); + } + + /* + * Using the Tuscany Node API to load a contribution. + * Using the Tuscany Node API to get a local service proxy + */ + public void launchBindingWSCalculator(){ + Node node = NodeFactory.newInstance().createNode(new Contribution("c1", "../../learning-more/binding-ws/calculator-contribution/target/sample-binding-ws-calculator-contribution.jar")); + node.start(); + + CalculatorService calculator = node.getService(CalculatorService.class, "CalculatorServiceComponent"); + + // TODO - could use JUnit assertions but don't want to have to handle JUnit dependency from Ant script + double result = calculator.add(3, 2); + System.out.println("3 + 2 = " + result); + if (result != 5.0){ + throw new SampleLauncherException(); + } + + node.stop(); + } + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherImplementationJavaCalculator.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherImplementationJavaCalculator.java new file mode 100644 index 0000000000..6e865f3822 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherImplementationJavaCalculator.java @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package launcher; + +import org.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.Node; +import org.apache.tuscany.sca.node.NodeFactory; + +import calculator.CalculatorService; + +/** + * This client program shows how to create an embedded SCA runtime, load a contribution, + * start it and locate and invoke an SCA component + */ +public class JSELauncherImplementationJavaCalculator { + + public static void main(String[] args) throws Exception { + JSELauncherImplementationJavaCalculator launcher = new JSELauncherImplementationJavaCalculator(); + launcher.launchImplementationJavaCalculator(); + } + + public void launchImplementationJavaCalculator(){ + Node node = NodeFactory.newInstance().createNode(new Contribution("c1", "../../learning-more/implementation-java/calculator-contribution/target/sample-implementation-java-calculator-contribution.jar")); + node.start(); + + node.stop(); + } + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherImplementationJavaCalculatorAsync.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherImplementationJavaCalculatorAsync.java new file mode 100644 index 0000000000..98cab93b5f --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherImplementationJavaCalculatorAsync.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 launcher; + +import org.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.Node; +import org.apache.tuscany.sca.node.NodeFactory; + +/** + * This client program shows how to create an embedded SCA runtime, load a contribution, + * start it and locate and invoke an SCA component + */ +public class JSELauncherImplementationJavaCalculatorAsync { + + public static void main(String[] args) throws Exception { + JSELauncherImplementationJavaCalculatorAsync launcher = new JSELauncherImplementationJavaCalculatorAsync(); + launcher.launchImplementationJavaCalculator(); + } + + public void launchImplementationJavaCalculator(){ + Node node = NodeFactory.newInstance().createNode(new Contribution("c1", "../../learning-more/async/calculator-contribution/target/sample-implementation-java-calculator-async-contribution.jar")); + node.start(); + + node.stop(); + } + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherImplementationScriptCalculator.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherImplementationScriptCalculator.java new file mode 100644 index 0000000000..4f6e951671 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/JSELauncherImplementationScriptCalculator.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 launcher; + +import org.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.Node; +import org.apache.tuscany.sca.node.NodeFactory; + +import calculator.CalculatorService; + +/** + * This client program shows how to create an embedded SCA runtime, load a contribution, + * start it and locate and invoke an SCA component + */ +public class JSELauncherImplementationScriptCalculator { + + public static void main(String[] args) throws Exception { + JSELauncherImplementationScriptCalculator launcher = new JSELauncherImplementationScriptCalculator(); + launcher.launchImplementationScriptCalculator(); + } + + /* + * Using the Tuscany Node API to load a contribution. + * Using the Tuscany Node API to get a local service proxy + */ + public void launchImplementationScriptCalculator(){ + Node node = NodeFactory.newInstance().createNode(new Contribution("c1", "../../learning-more/implementation-script/calculator-contribution/target/sample-implementation-script-calculator-contribution.jar")); + node.start(); + + CalculatorService calculator = node.getService(CalculatorService.class, "CalculatorServiceComponent"); + + // TODO - could use JUnit assertions but don't want to have to handle JUnit dependency from Ant script + double result = calculator.add(3, 2); + System.out.println("3 + 2 = " + result); + if (result != 5.0){ + throw new SampleLauncherException(); + } + + node.stop(); + } + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/SampleLauncherException.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/SampleLauncherException.java new file mode 100644 index 0000000000..f2ed3d421d --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/main/java/launcher/SampleLauncherException.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 launcher; + +/** + * This exception signals problems in the management of SCA component execution. + */ +public class SampleLauncherException extends RuntimeException { + /** + * Constructs a SampleLauncherException with no detail message. + */ + public SampleLauncherException() { + super(); + } + + /** + * Constructs a SampleLauncherException with the specified detail + * message. + * + * @param message the detail message + */ + public SampleLauncherException(String message) { + super(message); + } + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/test/java/launcher/LauncherTestCase.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/test/java/launcher/LauncherTestCase.java new file mode 100644 index 0000000000..4c6a93f870 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-jse/src/test/java/launcher/LauncherTestCase.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 launcher; + +import org.junit.Test; + +/** + * Test sample contributions. + */ +public class LauncherTestCase { + + @Test + public void testBindingJSONRPCCalculator() throws Exception { + JSELauncherBindingSCACalculator.main(null); + } + + @Test + public void testBindingSCACalculator() throws Exception { + JSELauncherBindingSCACalculator.main(null); + } + + @Test + public void testBindingWSCalculator() throws Exception { + JSELauncherBindingWSCalculator.main(null); + } + + @Test + public void testBindingRMICalculator() throws Exception { + JSELauncherBindingRMICalculator.main(null); + } + + @Test + public void testImplementationJavaCalculator() throws Exception { + JSELauncherImplementationJavaCalculator.main(null); + } + + @Test + public void testImplementationScriptCalculator() throws Exception { + JSELauncherImplementationScriptCalculator.main(null); + } + + @Test + public void testImplementationJavaCalculatorAsync() throws Exception { + JSELauncherImplementationJavaCalculatorAsync.main(null); + } +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/README b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/README new file mode 100644 index 0000000000..362d6032d2 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/README @@ -0,0 +1,24 @@ +OSGI Sample Launcher +=================== + +This directory contains a sample launcher for the running the +tuscany sample contributions in an OSGI environment. + +The difference between this sample and the sample with the name without the +-base suffix is that this one uses the Tuscany aggregated jar to minimize the +jars a user needs to use. + +The README file in the /samples directory provides +general instructions about building and running sample contributions using the +tuscany sample launchers. ( where +distribution-unpack-dir is the directory in which you unpacked the tuscany +binary distribution archive) + +To use this sample OSGI launcher with ant excute the command + +ant run- + +where run- is one of the targets in the build.xml file + +To use this sample launcher to run all of the contributions as junit test cases, +execute the command "mvn" in the launcher directory. diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/build.xml b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/build.xml new file mode 100644 index 0000000000..139ff054f7 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/build.xml @@ -0,0 +1,94 @@ + + + + + + + ${tuscany.home} + + + + + + + + + + + + + + + + + + + + + + + + + Please use 'ant run-name-of-sample-contribution-to-run' for example, try one of + 'ant run-contribution-binding-sca-calculator' + + + + + + + + + + + + + + + and ant run + + + + + diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/pom.xml b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/pom.xml new file mode 100644 index 0000000000..d0d264ce5f --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/pom.xml @@ -0,0 +1,71 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-Beta1-SNAPSHOT + ../pom.xml + + sample-launcher-embedded-osgi-base + Apache Tuscany SCA Sample Launcher Embedded OSGi using base jar + + + + org.apache.tuscany.sca + tuscany-base-runtime-nodep + 2.0-Beta1-SNAPSHOT + + + commons-cli + commons-cli + 1.2 + + + org.eclipse + osgi + 3.5.0-v20090520 + compile + + + org.eclipse.osgi + services + 3.2.0-v20090520-1800 + compile + + + + junit + junit + 4.8.1 + test + + + + + + ${artifactId} + + + + + + diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/src/main/java/calculator/CalculatorService.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/src/main/java/calculator/CalculatorService.java new file mode 100644 index 0000000000..a59a7c3b16 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/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/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/src/main/java/launcher/RuntimeIntegration.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/src/main/java/launcher/RuntimeIntegration.java new file mode 100644 index 0000000000..2c1cdf187a --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/src/main/java/launcher/RuntimeIntegration.java @@ -0,0 +1,61 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package launcher; + +import org.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.Node; +import org.apache.tuscany.sca.node.equinox.launcher.LauncherException; +import org.apache.tuscany.sca.node.equinox.launcher.NodeLauncher; + + +/** + * OSGi launcher function + */ +public class RuntimeIntegration { + + public Node startNode(Contribution... contributions){ + NodeLauncher launcher = NodeLauncher.newInstance(); + + // TODO - why do we have 3 different versions of the Contribution class? + org.apache.tuscany.sca.node.equinox.launcher.Contribution equinoxContributions[] = + new org.apache.tuscany.sca.node.equinox.launcher.Contribution[contributions.length]; + int i = 0; + for (Contribution inContrib : contributions) { + org.apache.tuscany.sca.node.equinox.launcher.Contribution outContrib = + new org.apache.tuscany.sca.node.equinox.launcher.Contribution(inContrib.getURI(), inContrib.getLocation()); + equinoxContributions[i] = outContrib; + i++; + } + Node node = null; + + try { + node = launcher.createNode(null, equinoxContributions); + } catch (LauncherException ex) { + throw new SampleLauncherException(ex.getMessage()); + } + node.start(); + return node; + } + + public void stopNode(Node node){ + node.stop(); + } + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/src/main/java/launcher/SampleJSELauncher.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/src/main/java/launcher/SampleJSELauncher.java new file mode 100644 index 0000000000..4d8ea7f86a --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/src/main/java/launcher/SampleJSELauncher.java @@ -0,0 +1,89 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package launcher; + +import java.net.URI; + +import org.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.Node; +import org.oasisopen.sca.NoSuchDomainException; +import org.oasisopen.sca.NoSuchServiceException; +import org.oasisopen.sca.client.SCAClientFactory; + +import calculator.CalculatorService; + + +/** + * This client program shows how to create an embedded SCA runtime, start it, + * and locate and invoke a SCA component + */ +public class SampleJSELauncher extends RuntimeIntegration { + + public static void main(String[] args) throws Exception { + SampleJSELauncher launcher = new SampleJSELauncher(); + + String contribution = null; + + if (args == null || args.length != 1){ + System.out.println("Please provide the name of the sample contribution to run as a parameter"); + System.out.println("Running binding-sca-calculator by default"); + contribution = "contribution-binding-sca-calculator"; + } else { + contribution = args[0]; + } + + if (contribution.equals("contribution-binding-sca-calculator")){ + launcher.launchBindingSCACalculator(); + } else if (contribution.equals("contribution-binding-ws-calculator")){ + launcher.launchBindingWSCalculator(); + } else { + System.out.println("Sample contribution " + contribution + "not found"); + } + + } + + /** + * The contribution-binding-sca-calculator contribution includes a client component + * that calls the CalculatorServiceComponent from an operation marked by @Init. + */ + public void launchBindingSCACalculator(){ + Node node = startNode(new Contribution("c1", "../../learning-more/binding-sca/calculator-contribution/target/sample-binding-sca-calculator-contribution.jar")); + + stopNode(node); + } + + /* + * Using a Tuscany specific mechanism for getting at local service proxies + */ + public void launchBindingWSCalculator() throws NoSuchDomainException, NoSuchServiceException{ + Node node = startNode(new Contribution("c1", "../../learning-more/binding-ws/calculator-contribution/target/sample-binding-ws-calculator-contribution.jar")); + + CalculatorService calculator = node.getService(CalculatorService.class, "CalculatorServiceComponent"); + + double result = calculator.add(3, 2); + System.out.println("3 + 2 = " + result); + if (result != 5.0){ + throw new SampleLauncherException(); + } + + stopNode(node); + } + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/src/main/java/launcher/SampleLauncherException.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/src/main/java/launcher/SampleLauncherException.java new file mode 100644 index 0000000000..1eacb94b19 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/src/main/java/launcher/SampleLauncherException.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 launcher; + +/** + * This exception signals problems in the management of SCA component execution. + */ +public class SampleLauncherException extends RuntimeException { + /** + * Constructs a SampleLauncherException with no detail message. + */ + public SampleLauncherException() { + super(); + } + + /** + * Constructs a SampleLauncherException with the specified detail + * message. + * + * @param message the detail message + */ + public SampleLauncherException(String message) { + super(message); + } + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/src/test/java/launcher/LauncherTestCase.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/src/test/java/launcher/LauncherTestCase.java new file mode 100644 index 0000000000..9228d33018 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi-base/src/test/java/launcher/LauncherTestCase.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 launcher; + +import org.junit.Test; + + + +/** + * Test the Calculator composition. + */ +public class LauncherTestCase { + + @Test + public void testContributionBindingSCACalculator() throws Exception { + SampleJSELauncher.main(new String[] {"contribution-binding-sca-calculator"}); + } + + @Test + public void testContributionBindingWSCalculator() throws Exception { + SampleJSELauncher.main(new String[] {"contribution-binding-ws-calculator"}); + } +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/README b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/README new file mode 100644 index 0000000000..e0352faf24 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/README @@ -0,0 +1,20 @@ +OSGI Sample Launcher +=================== + +This directory contains a sample launcher for the running the +tuscany sample contributions in an OSGI environment. + +The README file in the /samples directory provides +general instructions about building and running sample contributions using the +tuscany sample launchers. ( where +distribution-unpack-dir is the directory in which you unpacked the tuscany +binary distribution archive) + +To use this sample OSGI launcher with ant excute the command + +ant + +where is one of the targets in the provided build.xml file + +To use this sample launcher to run all of the contributions as junit test cases, +execute the command "mvn" in the launcher directory. diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/build.xml b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/build.xml new file mode 100644 index 0000000000..6b1f5912ef --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/build.xml @@ -0,0 +1,98 @@ + + + + + + ${tuscany.home} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Please use 'ant run-name-of-sample-contribution-to-run' for example, try one of + 'ant sample-binding-sca-calculator-contribution' + + + + + + + + + + + + + + + and ant run + + + + + diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/pom.xml b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/pom.xml new file mode 100644 index 0000000000..b3cd164b24 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/pom.xml @@ -0,0 +1,75 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-Beta1-SNAPSHOT + ../pom.xml + + sample-launcher-embedded-osgi + Apache Tuscany SCA Sample Launcher Embedded OSGi + + + + org.apache.tuscany.sca + tuscany-base-runtime-pom + 2.0-Beta1-SNAPSHOT + pom + + + + org.apache.tuscany.sca + tuscany-osgi-runtime-pom + 2.0-Beta1-SNAPSHOT + pom + + + + org.apache.tuscany.sca + tuscany-binding-ws-runtime-axis2 + 2.0-Beta1-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-host-jetty + 2.0-Beta1-SNAPSHOT + + + + junit + junit + 4.8.1 + test + + + + + + + ${artifactId} + + + + + + diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/src/main/java/calculator/CalculatorService.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/src/main/java/calculator/CalculatorService.java new file mode 100644 index 0000000000..12d80ffd1c --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/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/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/src/main/java/launcher/RuntimeIntegration.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/src/main/java/launcher/RuntimeIntegration.java new file mode 100644 index 0000000000..f4a2f0780c --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/src/main/java/launcher/RuntimeIntegration.java @@ -0,0 +1,61 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package launcher; + +import org.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.Node; +import org.apache.tuscany.sca.node.equinox.launcher.LauncherException; +import org.apache.tuscany.sca.node.equinox.launcher.NodeLauncher; + + +/** + * OSGi launcher function + */ +public class RuntimeIntegration { + + public Node startNode(Contribution... contributions){ + NodeLauncher launcher = NodeLauncher.newInstance(); + + // TODO - why do we have 3 different versions of the Contribution class? + org.apache.tuscany.sca.node.equinox.launcher.Contribution equinoxContributions[] = + new org.apache.tuscany.sca.node.equinox.launcher.Contribution[contributions.length]; + int i = 0; + for (Contribution inContrib : contributions) { + org.apache.tuscany.sca.node.equinox.launcher.Contribution outContrib = + new org.apache.tuscany.sca.node.equinox.launcher.Contribution(inContrib.getURI(), inContrib.getLocation()); + equinoxContributions[i] = outContrib; + i++; + } + Node node = null; + + try { + node = launcher.createNode(null, equinoxContributions); + } catch (LauncherException ex) { + throw new SampleLauncherException(ex.getMessage()); + } + node.start(); + return node; + } + + public void stopNode(Node node){ + node.stop(); + } + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/src/main/java/launcher/SampleLauncherException.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/src/main/java/launcher/SampleLauncherException.java new file mode 100644 index 0000000000..f2ed3d421d --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/src/main/java/launcher/SampleLauncherException.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 launcher; + +/** + * This exception signals problems in the management of SCA component execution. + */ +public class SampleLauncherException extends RuntimeException { + /** + * Constructs a SampleLauncherException with no detail message. + */ + public SampleLauncherException() { + super(); + } + + /** + * Constructs a SampleLauncherException with the specified detail + * message. + * + * @param message the detail message + */ + public SampleLauncherException(String message) { + super(message); + } + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/src/main/java/launcher/SampleOSGILauncherBindingSCA.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/src/main/java/launcher/SampleOSGILauncherBindingSCA.java new file mode 100644 index 0000000000..66830622fe --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/src/main/java/launcher/SampleOSGILauncherBindingSCA.java @@ -0,0 +1,47 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package launcher; + +import java.net.URI; + +import org.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.Node; +import org.oasisopen.sca.NoSuchDomainException; +import org.oasisopen.sca.NoSuchServiceException; +import org.oasisopen.sca.client.SCAClientFactory; + +import calculator.CalculatorService; + + +/** + * This client program shows how to create an embedded SCA runtime, start it, + * and locate and invoke a SCA component + */ +public class SampleOSGILauncherBindingSCA extends RuntimeIntegration { + + public static void main(String[] args) throws Exception { + SampleOSGILauncherBindingSCA launcher = new SampleOSGILauncherBindingSCA(); + + + Node node = launcher.startNode(new Contribution("c1", "../../learning-more/binding-sca/calculator-contribution/target/sample-binding-sca-calculator-contribution.jar")); + launcher.stopNode(node); + } + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/src/main/java/launcher/SampleOSGILauncherBindingWS.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/src/main/java/launcher/SampleOSGILauncherBindingWS.java new file mode 100644 index 0000000000..c9299f79b8 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/src/main/java/launcher/SampleOSGILauncherBindingWS.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 launcher; + +import java.net.URI; + +import org.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.Node; +import org.oasisopen.sca.NoSuchDomainException; +import org.oasisopen.sca.NoSuchServiceException; +import org.oasisopen.sca.client.SCAClientFactory; + +import calculator.CalculatorService; + + +/** + * This client program shows how to create an embedded SCA runtime, start it, + * and locate and invoke a SCA component + */ +public class SampleOSGILauncherBindingWS extends RuntimeIntegration { + + public static void main(String[] args) throws Exception { + SampleOSGILauncherBindingWS launcher = new SampleOSGILauncherBindingWS(); + + // launcher.launchBindingWSCalculator(); + + Node node = launcher.startNode(new Contribution("c1", "../../learning-more/binding-ws/calculator-contribution/target/sample-binding-ws-calculator-contribution.jar")); + + CalculatorService calculator = node.getService(CalculatorService.class, "CalculatorServiceComponent"); + + double result = calculator.add(3, 2); + System.out.println("3 + 2 = " + result); + if (result != 5.0){ + throw new SampleLauncherException(); + } + + launcher.stopNode(node); + } + + /** + * The contribution-binding-sca-calculator contribution includes a client component + * that calls the CalculatorServiceComponent from an operation marked by @Init. + */ + public void launchBindingSCACalculator(){ + Node node = startNode(new Contribution("c1", "../../learning-more/binding-sca/contribution-calculator/target/sample-contribution-binding-sca-calculator.jar")); + + stopNode(node); + } + + /* + * Using a Tuscany specific mechanism for getting at local service proxies + */ + public void launchBindingWSCalculator() throws NoSuchDomainException, NoSuchServiceException{ + Node node = startNode(new Contribution("c1", "../../learning-more/binding-ws/contribution-calculator/target/sample-contribution-binding-ws-calculator.jar")); + + CalculatorService calculator = node.getService(CalculatorService.class, "CalculatorServiceComponent"); + + double result = calculator.add(3, 2); + System.out.println("3 + 2 = " + result); + if (result != 5.0){ + throw new SampleLauncherException(); + } + + stopNode(node); + } + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/src/test/java/launcher/LauncherTestCase.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/src/test/java/launcher/LauncherTestCase.java new file mode 100644 index 0000000000..789484ceec --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/embedded-osgi/src/test/java/launcher/LauncherTestCase.java @@ -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. + */ +package launcher; + +import org.junit.Test; + + + +/** + * Test the Calculator composition. + */ +public class LauncherTestCase { + + + @Test + public void testContributionBindingSCACalculator2() throws Exception { + SampleOSGILauncherBindingSCA.main(null); + } + + + @Test + public void testContributionBindingWSCalculator() throws Exception { + SampleOSGILauncherBindingWS.main(null); + } +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/README b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/README new file mode 100644 index 0000000000..1e5bc9c584 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/README @@ -0,0 +1,26 @@ +Calculator Sample Contribution +============================== + +This sample contribution implements a simple calculator using SCA components. + +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 +--------------- +The sample provides a single calculator service with a default SCA (java) +binding. The CalculatorClient exercises this interface by calling add, +subtract, multiply and divide operations. This results in messages passing to +the appropriate components in the composite across the local wires. + +Amongst the other output created by the launcher/contribution combination, you should see the following output ... + +run: + [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/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/build.xml b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/build.xml new file mode 100644 index 0000000000..bd06210755 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/build.xml @@ -0,0 +1,57 @@ + + + + + + + ${tuscany.home} + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/pom.xml b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/pom.xml new file mode 100644 index 0000000000..313d183b14 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/pom.xml @@ -0,0 +1,58 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-Beta1-SNAPSHOT + ../pom.xml + + sample-maven-junit-calculator-contribution + Apache Tuscany SCA Sample Maven JUnit Calculator Contribution + + + + org.apache.tuscany.sca + tuscany-base-runtime-pom + pom + 2.0-Beta1-SNAPSHOT + + + + junit + junit + 4.8.1 + test + + + + + + ${artifactId} + + + org.apache.tuscany.maven.plugins + maven-tuscany-plugin + 2.0-Beta1-SNAPSHOT + + + + diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/AddService.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/AddService.java new file mode 100644 index 0000000000..5a1e7a638a --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/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/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/AddServiceImpl.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/AddServiceImpl.java new file mode 100644 index 0000000000..b3671cc795 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/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/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/CalculatorClient.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/CalculatorClient.java new file mode 100644 index 0000000000..1df1f31c48 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/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/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/CalculatorService.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/CalculatorService.java new file mode 100644 index 0000000000..78eea39c71 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/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/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/CalculatorServiceImpl.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/CalculatorServiceImpl.java new file mode 100644 index 0000000000..8e4b082d14 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/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/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/DivideService.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/DivideService.java new file mode 100644 index 0000000000..ef6a8b375b --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/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/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/DivideServiceImpl.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/DivideServiceImpl.java new file mode 100644 index 0000000000..ddd7b9cc6e --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/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/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/MultiplyService.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/MultiplyService.java new file mode 100644 index 0000000000..db568cc762 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/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/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/MultiplyServiceImpl.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/MultiplyServiceImpl.java new file mode 100644 index 0000000000..cc0de498d3 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/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/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/SubtractService.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/SubtractService.java new file mode 100644 index 0000000000..56ee372fc4 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/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/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/SubtractServiceImpl.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/java/calculator/SubtractServiceImpl.java new file mode 100644 index 0000000000..22e95f7f54 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/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/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/resources/Calculator.composite b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/resources/Calculator.composite new file mode 100644 index 0000000000..370e1cf315 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/resources/Calculator.composite @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/resources/CalculatorClient.composite b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/resources/CalculatorClient.composite new file mode 100644 index 0000000000..dfd32761be --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/resources/CalculatorClient.composite @@ -0,0 +1,30 @@ + + + + + + + + + + diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..70aab0e051 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/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/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/test/java/calculator/CalculatorTestCase.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/calculator-contribution/src/test/java/calculator/CalculatorTestCase.java new file mode 100644 index 0000000000..ba269182eb --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/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.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.Node; +import org.apache.tuscany.sca.node.NodeFactory; +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 { + + Node node = NodeFactory.newInstance().createNode(new Contribution("c1", "./target/classes")); + node.start(); + + CalculatorService calculator = node.getService(CalculatorService.class, "CalculatorServiceComponent"); + + 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); + + node.stop(); + } +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/pom.xml b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/pom.xml new file mode 100644 index 0000000000..f1bbd6c26b --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-junit/pom.xml @@ -0,0 +1,43 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-Beta1-SNAPSHOT + ../pom.xml + + tuscany-sample-maven-junit + pom + Apache Tuscany SCA Sample Maven Junit + + + + default + + true + + + calculator-contribution + + + + diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/META-INF/MANIFEST.MF b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..1ebd35b30a --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/META-INF/MANIFEST.MF @@ -0,0 +1,19 @@ +Manifest-Version: 1.0 +Private-Package: calculator;version="2.0.0" +Tool: Bnd-0.0.255 +Bundle-Name: Apache Tuscany SCA Calculator OSGi Sample +Created-By: 1.6.0_07 (Sun Microsystems Inc.) +Bundle-Vendor: The Apache Software Foundation +Eclipse-LazyStart: false +Bundle-Version: 2.0.0 +Bnd-LastModified: 1223949424781 +Bundle-Activator: calculator.CalculatorActivator +Bundle-ManifestVersion: 2 +Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt +Bundle-Description: Apache Tuscany SCA Calculator OSGi Sample +Import-Package: org.apache.tuscany.sca.node;version="2.0.0", + org.oasisopen.sca.annotation;version="2.0.0", + org.osgi.framework;version="1.4" +Bundle-SymbolicName: sample-calculator-osgi +Bundle-DocURL: http://www.apache.org/ +Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6 diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/README b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/README new file mode 100644 index 0000000000..c416ad96a0 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/README @@ -0,0 +1,99 @@ +Calculator Sample +================= +This sample implements a simple calculator using SCA components and run it in a OSGi environment. + +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). + +If you just want to run it to see what happens open a command prompt, navigate +to this sample directory and do: + +ant run + +OR if you don't have ant, on Windows do + +java -jar ..\..\features\tuscany-sca-equinox-manifest.jar -composite Calculator.composite -config ..\..\features\configuration\ -ttl 0 target\sample-calculator-osgi.jar + +and on *nix do + +java -jar ../../features/tuscany-sca-equinox-manifest.jar -composite Calculator.composite -config ../../features/configuration/ -ttl 0 target/sample-calculator-osgi.jar + +Sample Overview +--------------- +The sample provides a single calculator service with a default SCA (java) +binding. The CalculatorClient exercises this interface by calling add, +subtract, multiply and divide operations. This results in messages passing to +the appropriate components in the composite across the local wires. + +calculator/ + src/ + main/ + java/ + calculator/ + CalculatorService.java - the first component, calls +-/* as + appropriate + CalculatorServiceImpl.java + AddService.java - adds two numbers + AddServiceImpl.java + SubtractService.java - subtracts one number from another + SubtractServiceImpl.java + MultiplyService.java - multiplies two numbers + MultiplyServiceImpl.java + DivideService.java - divides one number by another + DivideServiceImpl.java + CalculatorClient.java - starts the SCA Runtime and + deploys the Calculator.composite. + It then calls the deployed Calculator + Components services + resources/ + Calculator.composite - the SCA assembly for this sample + test/ + java/ + calculator/ + CalculatorTestCase.java - JUnit test case + calculator.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 +----------------------------------------- +With the binary distribution the sample can be built and run using Ant as +follows + +cd calculator +ant compile +ant run + +You should see the following output from the run target. + +run: + [java] 3 + 2=5.0 + [java] 3 - 2=1.0 + [java] 3 * 2=6.0 + [java] 3 / 2=1.5 + +Building And Running The Sample Using Maven +------------------------------------------- +With either the binary or source distributions the sample can be built and run +using Maven as follows. + +cd calculator +mvn + +You should see the following output from the test phase. + +------------------------------------------------------- + T E S T S +------------------------------------------------------- +Running calculator.CalculatorTestCase +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.272 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/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/build.xml b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/build.xml new file mode 100644 index 0000000000..41a52737cc --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/build.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/logging.properties b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/logging.properties new file mode 100644 index 0000000000..cf452e7812 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/logging.properties @@ -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. +# + +handlers= java.util.logging.ConsoleHandler + +.level = INFO + +java.util.logging.ConsoleHandler.level = FINE +java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter + +org.apache.tuscany.sca.level = INFO diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/pom.xml b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/pom.xml new file mode 100644 index 0000000000..c535600777 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/pom.xml @@ -0,0 +1,116 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-Beta1-SNAPSHOT + ../pom.xml + + sample-maven-osgi-junit-calculator-osgi + Apache Tuscany SCA Sample Maven OSGI JUnit Calculator OSGi + + + + org.apache.tuscany.sca + tuscany-feature-api + 2.0-Beta1-SNAPSHOT + pom + + + + org.apache.tuscany.sca + tuscany-feature-all + 2.0-Beta1-SNAPSHOT + pom + + + + junit + junit + 4.8.1 + test + + + + + ${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 + ${pom.version} + + + + + osgi-test + test + + test + + + + + osgi.configuration.area + ${project.build.directory}/equinox + + + + + + + + + diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/AddService.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/AddService.java new file mode 100644 index 0000000000..188451ebac --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/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/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/AddServiceImpl.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/AddServiceImpl.java new file mode 100644 index 0000000000..7ca8fb04b5 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/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/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/CalculatorActivator.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/CalculatorActivator.java new file mode 100644 index 0000000000..4408568629 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/CalculatorActivator.java @@ -0,0 +1,54 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES 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.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.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; + +/** + * Bundle Activator for Calculator + * + */ +public class CalculatorActivator implements BundleActivator { + private Node node; + + public void start(BundleContext context) throws Exception { + try { + NodeFactory factory = NodeFactory.newInstance(); + String url = ContributionLocationHelper.getContributionLocation(getClass()); + Contribution contrib = new Contribution("c1", url); + node = factory.createNode("Calculator.composite", contrib); + node.start(); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + public void stop(BundleContext context) throws Exception { + if (node != null) { + node.stop(); + node = null; + } + } + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/CalculatorClient.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/CalculatorClient.java new file mode 100644 index 0000000000..afd5ea48fc --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/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/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/CalculatorService.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/CalculatorService.java new file mode 100644 index 0000000000..c89043276e --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/CalculatorService.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 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/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/CalculatorServiceImpl.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/CalculatorServiceImpl.java new file mode 100644 index 0000000000..39f55ca31f --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/CalculatorServiceImpl.java @@ -0,0 +1,69 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES 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/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/DivideService.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/DivideService.java new file mode 100644 index 0000000000..30d248208b --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/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/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/DivideServiceImpl.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/DivideServiceImpl.java new file mode 100644 index 0000000000..1323edf55a --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/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/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/MultiplyService.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/MultiplyService.java new file mode 100644 index 0000000000..5290605938 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/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/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/MultiplyServiceImpl.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/MultiplyServiceImpl.java new file mode 100644 index 0000000000..91b803bc9e --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/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/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/SubtractService.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/SubtractService.java new file mode 100644 index 0000000000..bf0d1882b6 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/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/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/SubtractServiceImpl.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/java/calculator/SubtractServiceImpl.java new file mode 100644 index 0000000000..58cc4a3547 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/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/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/resources/Calculator.composite b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/resources/Calculator.composite new file mode 100644 index 0000000000..c5e636f769 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/main/resources/Calculator.composite @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/test/java/calculator/CalculatorTestCase.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/test/java/calculator/CalculatorTestCase.java new file mode 100644 index 0000000000..d6a3ccb24e --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-osgi/src/test/java/calculator/CalculatorTestCase.java @@ -0,0 +1,54 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES 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.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 composition. + */ +public class CalculatorTestCase { + + private static Node node; + + @BeforeClass + public static void setUpBeforeClass() throws Exception { + String location = ContributionLocationHelper.getContributionLocation(CalculatorClient.class); + node = NodeFactory.newInstance().createNode("Calculator.composite", new Contribution("test", location)); + System.out.println("SCA Node API ClassLoader: " + node.getClass().getClassLoader()); + node.start(); + } + + @AfterClass + public static void tearDownAfterClass() throws Exception { + if (node != null) { + node.stop(); + } + } + + @Test + public void testDummy() throws Exception { + } +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/META-INF/MANIFEST.MF b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..1ebd35b30a --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/META-INF/MANIFEST.MF @@ -0,0 +1,19 @@ +Manifest-Version: 1.0 +Private-Package: calculator;version="2.0.0" +Tool: Bnd-0.0.255 +Bundle-Name: Apache Tuscany SCA Calculator OSGi Sample +Created-By: 1.6.0_07 (Sun Microsystems Inc.) +Bundle-Vendor: The Apache Software Foundation +Eclipse-LazyStart: false +Bundle-Version: 2.0.0 +Bnd-LastModified: 1223949424781 +Bundle-Activator: calculator.CalculatorActivator +Bundle-ManifestVersion: 2 +Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt +Bundle-Description: Apache Tuscany SCA Calculator OSGi Sample +Import-Package: org.apache.tuscany.sca.node;version="2.0.0", + org.oasisopen.sca.annotation;version="2.0.0", + org.osgi.framework;version="1.4" +Bundle-SymbolicName: sample-calculator-osgi +Bundle-DocURL: http://www.apache.org/ +Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6 diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/README b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/README new file mode 100644 index 0000000000..4c67296bd4 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/README @@ -0,0 +1,99 @@ +Calculator Sample +================= +This sample implements a simple calculator using SCA components and run it in a OSGi environment using the REST binding. + +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). + +If you just want to run it to see what happens open a command prompt, navigate +to this sample directory and do: + +ant run + +OR if you don't have ant, on Windows do + +java -jar ..\..\features\tuscany-sca-equinox-manifest.jar -composite Calculator.composite -config ..\..\features\configuration\ -ttl 0 target\sample-calculator-osgi.jar + +and on *nix do + +java -jar ../../features/tuscany-sca-equinox-manifest.jar -composite Calculator.composite -config ../../features/configuration/ -ttl 0 target/sample-calculator-osgi.jar + +Sample Overview +--------------- +The sample provides a single calculator service with a default SCA (java) +binding. The CalculatorClient exercises this interface by calling add, +subtract, multiply and divide operations. This results in messages passing to +the appropriate components in the composite across the local wires. + +calculator/ + src/ + main/ + java/ + calculator/ + CalculatorService.java - the first component, calls +-/* as + appropriate + CalculatorServiceImpl.java + AddService.java - adds two numbers + AddServiceImpl.java + SubtractService.java - subtracts one number from another + SubtractServiceImpl.java + MultiplyService.java - multiplies two numbers + MultiplyServiceImpl.java + DivideService.java - divides one number by another + DivideServiceImpl.java + CalculatorClient.java - starts the SCA Runtime and + deploys the Calculator.composite. + It then calls the deployed Calculator + Components services + resources/ + Calculator.composite - the SCA assembly for this sample + test/ + java/ + calculator/ + CalculatorTestCase.java - JUnit test case + calculator.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 +----------------------------------------- +With the binary distribution the sample can be built and run using Ant as +follows + +cd calculator +ant compile +ant run + +You should see the following output from the run target. + +run: + [java] 3 + 2=5.0 + [java] 3 - 2=1.0 + [java] 3 * 2=6.0 + [java] 3 / 2=1.5 + +Building And Running The Sample Using Maven +------------------------------------------- +With either the binary or source distributions the sample can be built and run +using Maven as follows. + +cd calculator +mvn + +You should see the following output from the test phase. + +------------------------------------------------------- + T E S T S +------------------------------------------------------- +Running calculator.CalculatorTestCase +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.272 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/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/pom.xml b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/pom.xml new file mode 100644 index 0000000000..fac4b8c286 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/pom.xml @@ -0,0 +1,163 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-Beta1-SNAPSHOT + ../pom.xml + + sample-maven-osgi-junit-calculator-rest-osgi + Apache Tuscany SCA Sample Maven OSGi JUnit Calculator REST OSGi + + + + org.apache.tuscany.sca + tuscany-feature-api + 2.0-Beta1-SNAPSHOT + pom + + + + org.apache.tuscany.sca + tuscany-feature-all + 2.0-Beta1-SNAPSHOT + pom + + + + org.apache.tuscany.sca + tuscany-binding-rest-runtime + 2.0-Beta1-SNAPSHOT + + + + javax.servlet + servlet-api + 2.5 + provided + + + + + org.slf4j + slf4j-api + 1.5.11 + test + + + + org.apache.tuscany.sca + tuscany-host-jetty + 2.0-Beta1-SNAPSHOT + test + + + + httpunit + httpunit + 1.6.1 + test + + + + junit + junit + 4.8.1 + test + + + + + ${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.maven.plugins + maven-surefire-plugin + 2.5 + + true + + never + + + + + + org.apache.tuscany.maven.plugins + maven-osgi-junit-plugin + 1.0 + + + org.apache.tuscany.sca + tuscany-node-launcher-equinox + ${pom.version} + + + + + osgi-test + test + + test + + + + + osgi.configuration.area + ${project.build.directory}/equinox + + + + + + + + + + diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/AddService.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/AddService.java new file mode 100644 index 0000000000..188451ebac --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/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/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/AddServiceImpl.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/AddServiceImpl.java new file mode 100644 index 0000000000..193a7d6636 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/AddServiceImpl.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 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/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/CalculatorActivator.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/CalculatorActivator.java new file mode 100644 index 0000000000..4408568629 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/CalculatorActivator.java @@ -0,0 +1,54 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES 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.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.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; + +/** + * Bundle Activator for Calculator + * + */ +public class CalculatorActivator implements BundleActivator { + private Node node; + + public void start(BundleContext context) throws Exception { + try { + NodeFactory factory = NodeFactory.newInstance(); + String url = ContributionLocationHelper.getContributionLocation(getClass()); + Contribution contrib = new Contribution("c1", url); + node = factory.createNode("Calculator.composite", contrib); + node.start(); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + public void stop(BundleContext context) throws Exception { + if (node != null) { + node.stop(); + node = null; + } + } + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/CalculatorService.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/CalculatorService.java new file mode 100644 index 0000000000..2d14bbd49f --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/CalculatorService.java @@ -0,0 +1,66 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES 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.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The Calculator service interface. + */ +@Remotable +public interface CalculatorService { + + @GET + @Path("add/{n1}/{n2}") + @Consumes(MediaType.TEXT_PLAIN) + @Produces(MediaType.TEXT_PLAIN) + String add(@PathParam("n1") String n1, @PathParam("n2") String n2); + + @GET + @Path("subtract/{n1}/{n2}") + @Consumes(MediaType.TEXT_PLAIN) + @Produces(MediaType.TEXT_PLAIN) + String subtract(@PathParam("n1") String n1, @PathParam("n2") String n2); + + @GET + @Path("multiply/{n1}/{n2}") + @Consumes(MediaType.TEXT_PLAIN) + @Produces(MediaType.TEXT_PLAIN) + String multiply(@PathParam("n1") String n1, @PathParam("n2") String n2); + + @GET + @Path("divide/{n1}/{n2}") + @Consumes(MediaType.TEXT_PLAIN) + @Produces(MediaType.TEXT_PLAIN) + String divide(@PathParam("n1") String n1, @PathParam("n2") String n2); + + @GET + @Path("calculate/{formula}") + @Consumes(MediaType.TEXT_PLAIN) + @Produces(MediaType.TEXT_PLAIN) + String calculate(@PathParam("formula") String formula); + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/CalculatorServiceImpl.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/CalculatorServiceImpl.java new file mode 100644 index 0000000000..55aabdb56f --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/CalculatorServiceImpl.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; + +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 String add(String n1, String n2) { + //System.out.println("ADD Operation ==> " + n1 + " + " + n2 + " = " + addService.add(Double.parseDouble(n1), Double.parseDouble(n2))); + return String.valueOf(addService.add(Double.parseDouble(n1), Double.parseDouble(n2))); + } + + public String subtract(String n1, String n2) { + //System.out.println("SUBTRACT Operation ==> " + n1 + " + " + n2 + " = " + subtractService.subtract(Double.parseDouble(n1), Double.parseDouble(n2))); + return String.valueOf(subtractService.subtract(Double.parseDouble(n1), Double.parseDouble(n2))); + } + + public String multiply(String n1, String n2) { + //System.out.println("MULTIPLY Operation ==> " + n1 + " + " + n2 + " = " + multiplyService.multiply(Double.parseDouble(n1), Double.parseDouble(n2))); + return String.valueOf(multiplyService.multiply(Double.parseDouble(n1), Double.parseDouble(n2))); + } + + public String divide(String n1, String n2) { + //System.out.println("DIVIDE Operation ==> " + n1 + " + " + n2 + " = " + divideService.divide(Double.parseDouble(n1), Double.parseDouble(n2))); + return String.valueOf(divideService.divide(Double.parseDouble(n1), Double.parseDouble(n2))); + } + + public String calculate(String formula) { + String[] operands = formula.split("[\\+\\-\\*\\:]"); + if(formula.contains("+")) { + return add( operands[0], operands[1]); + } else if(formula.contains("-")) { + return subtract( operands[0], operands[1]); + } else if(formula.contains("*")) { + return multiply( operands[0], operands[1]); + } else if(formula.contains(":")) { + return divide( operands[0], operands[1]); + } else { + throw new IllegalArgumentException("Invalid formula: " + formula ); + } + } + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/DivideService.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/DivideService.java new file mode 100644 index 0000000000..30d248208b --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/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/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/DivideServiceImpl.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/DivideServiceImpl.java new file mode 100644 index 0000000000..1323edf55a --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/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/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/MultiplyService.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/MultiplyService.java new file mode 100644 index 0000000000..5290605938 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/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/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/MultiplyServiceImpl.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/MultiplyServiceImpl.java new file mode 100644 index 0000000000..91b803bc9e --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/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/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/SubtractService.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/SubtractService.java new file mode 100644 index 0000000000..bf0d1882b6 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/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/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/SubtractServiceImpl.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/SubtractServiceImpl.java new file mode 100644 index 0000000000..58cc4a3547 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/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/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/resources/Calculator.composite b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/resources/Calculator.composite new file mode 100644 index 0000000000..c428ce93d6 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/main/resources/Calculator.composite @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/test/java/calculator/CalculatorTestCase.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/test/java/calculator/CalculatorTestCase.java new file mode 100644 index 0000000000..704101b5c0 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/src/test/java/calculator/CalculatorTestCase.java @@ -0,0 +1,126 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES 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.ws.rs.core.MediaType; + +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.Assert; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +import com.meterware.httpunit.GetMethodWebRequest; +import com.meterware.httpunit.WebConversation; +import com.meterware.httpunit.WebRequest; +import com.meterware.httpunit.WebResponse; + +/** + * This shows how to test the Calculator composition. + */ +public class CalculatorTestCase { + private final static String SERVICE_URL = "http://localhost:8085/calculator/"; + + private static Node node; + + @BeforeClass + public static void setUpBeforeClass() throws Exception { + String location = ContributionLocationHelper.getContributionLocation("Calculator.composite"); + node = NodeFactory.newInstance().createNode("Calculator.composite", new Contribution("calculator", location)); + System.out.println("SCA Node API ClassLoader: " + node.getClass().getClassLoader()); + node.start(); + } + + @AfterClass + public static void tearDownAfterClass() throws Exception { + if (node != null) { + node.stop(); + } + } + + @Test + public void testAdd() throws Exception { + String queryString = "/add/3/2"; + + WebConversation wc = new WebConversation(); + WebRequest request = new GetMethodWebRequest(SERVICE_URL + queryString); + request.setHeaderField("Content-Type", MediaType.TEXT_PLAIN); + WebResponse response = wc.getResource(request); + + Assert.assertEquals(200, response.getResponseCode()); + Assert.assertEquals("5.0", response.getText()); + } + + @Test + public void testSubtract() throws Exception { + String queryString = "/subtract/3/2"; + + WebConversation wc = new WebConversation(); + WebRequest request = new GetMethodWebRequest(SERVICE_URL + queryString); + request.setHeaderField("Content-Type", MediaType.TEXT_PLAIN); + WebResponse response = wc.getResource(request); + + Assert.assertEquals(200, response.getResponseCode()); + Assert.assertEquals("1.0", response.getText()); + } + + @Test + public void testMultiply() throws Exception { + String queryString = "/multiply/3/2"; + + WebConversation wc = new WebConversation(); + WebRequest request = new GetMethodWebRequest(SERVICE_URL + queryString); + request.setHeaderField("Content-Type", MediaType.TEXT_PLAIN); + WebResponse response = wc.getResource(request); + + Assert.assertEquals(200, response.getResponseCode()); + Assert.assertEquals("6.0", response.getText()); + } + + @Test + public void testDivide() throws Exception { + String queryString = "/divide/3/2"; + + WebConversation wc = new WebConversation(); + WebRequest request = new GetMethodWebRequest(SERVICE_URL + queryString); + request.setHeaderField("Content-Type", MediaType.TEXT_PLAIN); + WebResponse response = wc.getResource(request); + + Assert.assertEquals(200, response.getResponseCode()); + Assert.assertEquals("1.5", response.getText()); + } + + @Test + public void testFormula() throws Exception { + String queryString = "/calculate/3+2"; + + WebConversation wc = new WebConversation(); + WebRequest request = new GetMethodWebRequest(SERVICE_URL + queryString); + request.setHeaderField("Content-Type", MediaType.TEXT_PLAIN); + WebResponse response = wc.getResource(request); + + Assert.assertEquals(200, response.getResponseCode()); + Assert.assertEquals("5.0", response.getText()); + } + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/pom.xml b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/pom.xml new file mode 100644 index 0000000000..1836ec23c3 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven-osgi-junit/pom.xml @@ -0,0 +1,46 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-Beta1-SNAPSHOT + ../pom.xml + + sample-maven-osgi-junit + org.apache.tuscany.sca + 2.0-Beta1-SNAPSHOT + pom + Apache Tuscany SCA Maven OSGI Junit plugin Samples + + + + default + + true + + + calculator-osgi + calculator-rest-osgi + + + + diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven/README b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven/README new file mode 100644 index 0000000000..ff976c3515 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/maven/README @@ -0,0 +1,18 @@ +To execute a sample contribution from Maven + +look for contributions that have the following configuration in their pom.xml file: + + + org.apache.tuscany.maven.plugins + maven-tuscany-plugin + 2.0-SNAPSHOT + + +For contributions that have this, for example, binding-sca/contribution-calculator, do the following + +cd samples/binding-sca/contribution-calculator +mvn tuscany:run + +This will launch the contribution in the Tuscany runtime and then wait. At this point you can use +other clients to send messages to services that the running SCA applcation exposes, +for example, try calculator-scaclient. diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/osgi/README b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/osgi/README new file mode 100644 index 0000000000..6df2c1d2f2 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/osgi/README @@ -0,0 +1,33 @@ +The Tuscany runtime can be run in and OSGi container. + +Running in Equinox +------------------ + +On Windows, run +java -jar ..\..\modules\osgi-3.5.0-v20090520.jar -configuration ..\..\features\configuration -clean -console + +On *Unix, run +java -jar ../../modules/osgi-3.5.0-v20090520.jar -configuration ../../features/configuration -clean -console + +You should see the osgi console: + +osgi> + +osgi> Jun 22, 2009 1:32:27 PM org.apache.tuscany.sca.extensibility.equinox.EquinoxServiceDiscoveryActivator start +INFO: Equinox-based service discoverer is now configured. + +You can run "ss" command under the osgi> to see the status of the bundles. +osgi> ss + +Then you can install and start contributions as bundles by doing the following: + +osgi> install file:./path/to/contribution_bundle.jar + +Note that contribution_bundle.jar will need an activator in order to register the bundle as a SCA contribution +see samples/???? +TODO is this still true + +Running on Felix +---------------- + +See http://tuscany.apache.org/documentation-2x/running-tuscany-sca-2x-with-equinox-and-felix.html diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/pom.xml b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/pom.xml new file mode 100644 index 0000000000..889307e4cb --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/pom.xml @@ -0,0 +1,57 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-Beta1-SNAPSHOT + ../pom.xml + + tuscany-samples-running-tuscany + pom + Apache Tuscany SCA Running Tuscany Samples + + + + default + + true + + + + embedded-jse + embedded-osgi + + maven-osgi-junit + maven-junit + shell + + + + diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/README b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/README new file mode 100644 index 0000000000..9745f57ad9 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/README @@ -0,0 +1,34 @@ +Sample Tuscany Shell +==================== + +This directory contains a sample shell program supporting simple commands to +start and stop SCA composites. + +To build the sample shell do this: +mvn install + +To run it: +./sca + +at the prompt: +start myNode ../../applications/store/target/sample-store.jar + +or: +start myNode http://people.apache.org/~jsdelfino/tuscany/java/test/sample-store.jar + +also try: +status +stop myNode +bye + +Starting and stopping composites is pretty fast. To see that, try the following +two scripts, which start/stop the sample store composite 10 times. + +./sca + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-Beta1-SNAPSHOT + ../pom.xml + + sample-launcher-shell + Apache Tuscany SCA Sample Launcher Shell + war + + + + org.apache.tuscany.sca + tuscany-feature-api + pom + 2.0-Beta1-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-feature-core + pom + 2.0-Beta1-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-feature-webservice + pom + 2.0-Beta1-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-feature-web20 + pom + 2.0-Beta1-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-host-webapp + 2.0-Beta1-SNAPSHOT + + + + junit + junit + 4.8.1 + test + + + + + + scashell + + + org.codehaus.mojo + tomcat-maven-plugin + 1.0 + + + tomcat + + /scashell + + + + + diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/sca b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/sca new file mode 100755 index 0000000000..8f6cf268b3 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/sca @@ -0,0 +1,19 @@ +#!/bin/bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations + +java -classpath target/classes:`ls target/scashell/WEB-INF/lib/*.jar | awk '{ printf "%s:", $1}'` sample.Shell + diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/sca.bat b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/sca.bat new file mode 100644 index 0000000000..5110effc25 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/sca.bat @@ -0,0 +1,30 @@ +@echo off +rem Licensed to the Apache Software Foundation (ASF) under one +rem or more contributor license agreements. See the NOTICE file +rem distributed with this work for additional information +rem regarding copyright ownership. The ASF licenses this file +rem to you under the Apache License, Version 2.0 (the +rem "License"); you may not use this file except in compliance +rem with the License. You may obtain a copy of the License at +rem +rem http://www.apache.org/licenses/LICENSE-2.0 +rem +rem Unless required by applicable law or agreed to in writing, +rem software distributed under the License is distributed on an +rem "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +rem KIND, either express or implied. See the License for the +rem specific language governing permissions and limitations + +rem cd to target to reduce the length of the classpath. It blows up cmd.exe without this +cd target +set _CLASSPATH=.\classes +for %%i in (.\scashell\WEB-INF\lib\*.jar) do call:setClasspath %%i +set CLASSPATH=%_CLASSPATH% +@echo on +java sample.Shell +cd .. +goto:eof + +:setClasspath +set _CLASSPATH=%_CLASSPATH%;%1 +goto:eof \ No newline at end of file diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/scripts/test-remote.txt b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/scripts/test-remote.txt new file mode 100644 index 0000000000..dc13e5c401 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/scripts/test-remote.txt @@ -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 + +start testNode http://people.apache.org/~jsdelfino/tuscany/java/test/sample-store.jar +stop testNode +start testNode http://people.apache.org/~jsdelfino/tuscany/java/test/sample-store.jar +stop testNode +start testNode http://people.apache.org/~jsdelfino/tuscany/java/test/sample-store.jar +stop testNode +start testNode http://people.apache.org/~jsdelfino/tuscany/java/test/sample-store.jar +stop testNode +start testNode http://people.apache.org/~jsdelfino/tuscany/java/test/sample-store.jar +stop testNode +start testNode http://people.apache.org/~jsdelfino/tuscany/java/test/sample-store.jar +stop testNode +start testNode http://people.apache.org/~jsdelfino/tuscany/java/test/sample-store.jar +stop testNode +start testNode http://people.apache.org/~jsdelfino/tuscany/java/test/sample-store.jar +stop testNode +start testNode http://people.apache.org/~jsdelfino/tuscany/java/test/sample-store.jar +stop testNode +start testNode http://people.apache.org/~jsdelfino/tuscany/java/test/sample-store.jar +stop testNode diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/scripts/test-start.txt b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/scripts/test-start.txt new file mode 100644 index 0000000000..2514a9058d --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/scripts/test-start.txt @@ -0,0 +1,18 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations + +restart testNode http://people.apache.org/~jsdelfino/tuscany/java/test/sample-store.jar +status diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/scripts/test-status.txt b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/scripts/test-status.txt new file mode 100644 index 0000000000..4df56e85e8 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/scripts/test-status.txt @@ -0,0 +1,17 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations + +status diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/scripts/test-stop.txt b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/scripts/test-stop.txt new file mode 100644 index 0000000000..39eb36aa77 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/scripts/test-stop.txt @@ -0,0 +1,17 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations + +stop testNode diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/scripts/test.txt b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/scripts/test.txt new file mode 100644 index 0000000000..bf489a46a5 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/scripts/test.txt @@ -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 + +start testNode ../../applications/store/target/sample-store.jar +stop testNode +start testNode ../../applications/store/target/sample-store.jar +stop testNode +start testNode ../../applications/store/target/sample-store.jar +stop testNode +start testNode ../../applications/store/target/sample-store.jar +stop testNode +start testNode ../../applications/store/target/sample-store.jar +stop testNode +start testNode ../../applications/store/target/sample-store.jar +stop testNode +start testNode ../../applications/store/target/sample-store.jar +stop testNode +start testNode ../../applications/store/target/sample-store.jar +stop testNode +start testNode ../../applications/store/target/sample-store.jar +stop testNode +start testNode ../../applications/store/target/sample-store.jar +stop testNode diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/src/main/java/sample/Shell.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/src/main/java/sample/Shell.java new file mode 100644 index 0000000000..d0d8fb5dfe --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/src/main/java/sample/Shell.java @@ -0,0 +1,203 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES 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 java.lang.System.in; +import static java.lang.System.out; +import static java.util.Collections.emptyList; +import static java.util.Collections.singletonList; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.Callable; + +import org.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.Node; +import org.apache.tuscany.sca.node.NodeFactory; + +/** + * A little SCA command shell. + */ +public class Shell { + final NodeFactory nf; + + public static class Nodeconf { + final String name; + final String cloc; + final String dcuri; + final Node node; + + Nodeconf(final String name, final String cloc, final String dcuri, final Node node) { + this.name = name; + this.cloc = cloc; + this.dcuri = dcuri; + this.node = node; + } + + public String toString() { + return name + " " + cloc + (dcuri != null? " " + dcuri : ""); + } + } + + final Map nodes = new HashMap(); + final List history = new ArrayList(); + + public Shell(NodeFactory nf) { + this.nf = nf; + } + + List start(final String name, final String cloc, final String dcuri) { + if(nodes.containsKey(name)) + return emptyList(); + final Node node = dcuri != null? nf.createNode(dcuri, new Contribution(cloc, cloc)) : nf.createNode(new Contribution(cloc, cloc)); + nodes.put(name, new Nodeconf(name, cloc, dcuri, node)); + node.start(); + return emptyList(); + } + + List stop(final String name) { + final Nodeconf ninfo = nodes.get(name); + if(ninfo == null) + return emptyList(); + ninfo.node.stop(); + nodes.remove(name); + return emptyList(); + } + + List stop() { + for(Nodeconf ninfo: nodes.values()) + ninfo.node.stop(); + nodes.clear(); + return emptyList(); + } + + List restart(final String name, final String cloc, final String dcuri) { + final Nodeconf ninfo = nodes.get(name); + if(ninfo == null) + return start(name, cloc, dcuri); + ninfo.node.stop(); + nodes.remove(name); + if (cloc == null) + return start(ninfo.name, ninfo.cloc, ninfo.dcuri); + return start(name, cloc, dcuri); + } + + List status() { + return new ArrayList(nodes.values()); + } + + List history() { + return history; + } + + List bye() { + return null; + } + + List read(final BufferedReader r) throws IOException { + final String l = r.readLine(); + history.add(l); + return l != null ? Arrays.asList(l.split(" ")) : singletonList("bye"); + } + + Callable> eval(final List toks) { + final String op = toks.get(0); + if(op.equals("start")) + return new Callable>() { + public List call() { + return start(toks.get(1), toks.get(2), toks.size() >= 4? toks.get(3) : null); + } + }; + if(op.equals("stop")) + return new Callable>() { + public List call() { + if(toks.size() == 1) + return stop(); + return stop(toks.get(1)); + } + }; + if(op.equals("restart")) + return new Callable>() { + public List call() { + return restart(toks.get(1), toks.size() >= 3? toks.get(2) : null, toks.size() >= 4? toks.get(3) : null); + } + }; + if(op.equals("status")) + return new Callable>() { + public List call() { + return status(); + } + }; + if(op.equals("history")) + return new Callable>() { + public List call() { + return history(); + } + }; + if(op.equals("bye")) + return new Callable>() { + public List call() { + return bye(); + } + }; + return new Callable>() { + public List call() { + return emptyList(); + } + }; + } + + List apply(final Callable> func) { + try { + return func.call(); + } catch(Exception e) { + StringWriter sw = new StringWriter(); + e.printStackTrace(new PrintWriter(sw)); + return singletonList(sw); + } + } + + boolean print(final List l, PrintWriter w) { + if(l == null) + return false; + for(Object o: l) + w.println(o); + return true; + } + + public Map run(final BufferedReader r, final PrintWriter w) throws IOException { + while(print(apply(eval(read(r))), w)) + ; + r.close(); + return nodes; + } + + public static void main(final String[] args) throws Exception { + new Shell(NodeFactory.newInstance()).run(new BufferedReader(new InputStreamReader(in)), new PrintWriter(out, true)); + } +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/src/main/java/sample/ShellServlet.java b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/src/main/java/sample/ShellServlet.java new file mode 100644 index 0000000000..55aadbd09b --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/src/main/java/sample/ShellServlet.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 java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.URL; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.tuscany.sca.host.webapp.WebAppHelper; + +public class ShellServlet extends HttpServlet { + static final long serialVersionUID = 1L; + + Shell shell; + + public void init() { + shell = new Shell(WebAppHelper.getNodeFactory()); + } + + public void destroy() { + shell.stop(); + } + + protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws IOException { + shell.run(new BufferedReader(new InputStreamReader(new URL(req.getParameter("conf")).openStream())), resp.getWriter()); + } +} diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/src/main/webapp/WEB-INF/web.xml b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..ac1ad1cc8e --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,48 @@ + + + + scashell + + org.apache.tuscany.sca.host.webapp.TuscanyContextListener + + + tuscany + org.apache.tuscany.sca.host.webapp.TuscanyServletFilter + + + + tuscany + /* + + + + ShellServlet + sample.ShellServlet + + + + ShellServlet + /run + + + + index.html + + diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/src/main/webapp/index.html b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/src/main/webapp/index.html new file mode 100644 index 0000000000..7d8a8568e8 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/shell/src/main/webapp/index.html @@ -0,0 +1,42 @@ + + + +Sample Runtime Shell + + +

It works

+ +

This Web app runs a sample Tuscany runtime shell similar to samples/launcher-shell.
+To see how it works and what configuration commands are supported, just read the Shell program's source code.

+ +

Configuration commands can be provided through a text document served from a Web location, for example:
+http://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/samples/running-tuscany/launcher-shell/scripts/test-start.txt

+ +

To run that particular configuration script just point your Web browser to:
+http://localhost:8080/scashell/run?conf=http://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/samples/running-tuscany/launcher-shell/scripts/test-start.txt
+To run the script again and refresh the runtime shell, just refresh that page in your Web browser. +

+ +

This script starts the Tuscany sample store application. Click here to use that application after you've started it.

+ +

Sample configuration script samples are available in the Tuscany Subversion repository there. + + + diff --git a/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/webapp/README b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/webapp/README new file mode 100644 index 0000000000..2d80e36a79 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/samples/running-tuscany/webapp/README @@ -0,0 +1,59 @@ +The Tuscany SCA Java runtime can run inside a webapp (a WAR) and expose +services when the webapp is started. In order for this to work +a number of things have to be in place in the webapp: + +1. The Tuscany runtime jars have to be packaed in the webapp WEB-INF/lib + directory +2. The Tuscany HTTP filter servlet has to be configured in the + WEB-INF/web.xml file using something like: + + + tuscany + org.apache.tuscany.sca.host.webapp.TuscanyServletFilter + + + + tuscany + /* + + +3. The composite application has to packaged in the WAR file. When the + TuscanyServletFilter started it effectvely reads its own WAR file as + the contribution. As an alternative you can package complete + contribution archives in the WEB-INF/sca-contributions directory. + +In the getting-started/helloworl-webapp sample we provided a Maven +build script that perform these WAR packaging steps. + +To execute a webapp based contributions (sample contributions that have webapp +at the end of their name) you can build the contribution using maven and then +copy the resulting war file to your web container of choice + +For example, for learning-more/binding-jsonrpc/contribution-calculator-webapp, +do the following + +cd learning-more/binding-jsonrpc/contribution-calculator-webapp +mvn +cp target/sample-contribution-binding-jsonrpc-calculator-webapp.war your_container_deployment-dir + + +As an alternative sample webapp based contributions can be run within Jetty directly from Maven, look for +webapp contributions that have the following configuration in their pom.xml file: + + + org.mortbay.jetty + maven-jetty-plugin + 6.1.18 + + +For contributions that have this, for example, +learning-more/binding-jsonrpc/contribution-calculator-webapp, do the following + +cd learning-more/binding-jsonrpc/contribution-calculator-webapp +mvn jetty:run + +This will launch the contribution in the Jetty runtime and then wait. At this point you can use +HTTP clients to send messages to services that the running SCA applcation exposes. For this +example try pointing your browser at: + +http://localhost:8080/sample-contribution-binding-jsonrpc-calculator-webapp/ -- cgit v1.2.3