From 0ffe9883931020d9695e8a63dec9effcdb5a325c Mon Sep 17 00:00:00 2001 From: kelvingoodson Date: Thu, 16 Sep 2010 15:45:22 +0000 Subject: TUSCANY-3677 more samples reorg - move calc-rest-osgi to maven-osgi-junit category git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@997798 13f79535-47bb-0310-9956-ffa450edef68 --- .../calculator-rest-osgi/META-INF/MANIFEST.MF | 19 --- .../trunk/samples/calculator-rest-osgi/README | 99 ------------- .../trunk/samples/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 ---------------- .../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 ++++++++++++++++ 32 files changed, 923 insertions(+), 923 deletions(-) delete mode 100644 sca-java-2.x/trunk/samples/calculator-rest-osgi/META-INF/MANIFEST.MF delete mode 100644 sca-java-2.x/trunk/samples/calculator-rest-osgi/README delete mode 100644 sca-java-2.x/trunk/samples/calculator-rest-osgi/pom.xml delete mode 100644 sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/AddService.java delete mode 100644 sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/AddServiceImpl.java delete mode 100644 sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/CalculatorActivator.java delete mode 100644 sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/CalculatorService.java delete mode 100644 sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/CalculatorServiceImpl.java delete mode 100644 sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/DivideService.java delete mode 100644 sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/DivideServiceImpl.java delete mode 100644 sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/MultiplyService.java delete mode 100644 sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/MultiplyServiceImpl.java delete mode 100644 sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/SubtractService.java delete mode 100644 sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/SubtractServiceImpl.java delete mode 100644 sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/resources/Calculator.composite delete mode 100644 sca-java-2.x/trunk/samples/calculator-rest-osgi/src/test/java/calculator/CalculatorTestCase.java create mode 100644 sca-java-2.x/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/META-INF/MANIFEST.MF create mode 100644 sca-java-2.x/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/README create mode 100644 sca-java-2.x/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/pom.xml create mode 100644 sca-java-2.x/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/AddService.java create mode 100644 sca-java-2.x/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/AddServiceImpl.java create mode 100644 sca-java-2.x/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/CalculatorActivator.java create mode 100644 sca-java-2.x/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/CalculatorService.java create mode 100644 sca-java-2.x/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/CalculatorServiceImpl.java create mode 100644 sca-java-2.x/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/DivideService.java create mode 100644 sca-java-2.x/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/DivideServiceImpl.java create mode 100644 sca-java-2.x/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/MultiplyService.java create mode 100644 sca-java-2.x/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/MultiplyServiceImpl.java create mode 100644 sca-java-2.x/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/SubtractService.java create mode 100644 sca-java-2.x/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/SubtractServiceImpl.java create mode 100644 sca-java-2.x/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/resources/Calculator.composite create mode 100644 sca-java-2.x/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/test/java/calculator/CalculatorTestCase.java (limited to 'sca-java-2.x/trunk/samples') diff --git a/sca-java-2.x/trunk/samples/calculator-rest-osgi/META-INF/MANIFEST.MF b/sca-java-2.x/trunk/samples/calculator-rest-osgi/META-INF/MANIFEST.MF deleted file mode 100644 index 1ebd35b30a..0000000000 --- a/sca-java-2.x/trunk/samples/calculator-rest-osgi/META-INF/MANIFEST.MF +++ /dev/null @@ -1,19 +0,0 @@ -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/trunk/samples/calculator-rest-osgi/README b/sca-java-2.x/trunk/samples/calculator-rest-osgi/README deleted file mode 100644 index 4c67296bd4..0000000000 --- a/sca-java-2.x/trunk/samples/calculator-rest-osgi/README +++ /dev/null @@ -1,99 +0,0 @@ -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/trunk/samples/calculator-rest-osgi/pom.xml b/sca-java-2.x/trunk/samples/calculator-rest-osgi/pom.xml deleted file mode 100644 index 5412ab75f7..0000000000 --- a/sca-java-2.x/trunk/samples/calculator-rest-osgi/pom.xml +++ /dev/null @@ -1,163 +0,0 @@ - - - - 4.0.0 - - org.apache.tuscany.sca - tuscany-samples - 2.0-SNAPSHOT - ../pom.xml - - sample-calculator-rest-osgi - Apache Tuscany SCA Sample Calculator REST OSGi - - - - org.apache.tuscany.sca - tuscany-feature-api - 2.0-SNAPSHOT - pom - - - - org.apache.tuscany.sca - tuscany-feature-core - 2.0-SNAPSHOT - pom - - - - org.apache.tuscany.sca - tuscany-binding-rest-runtime - 2.0-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-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/trunk/samples/calculator-rest-osgi/src/main/java/calculator/AddService.java b/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/AddService.java deleted file mode 100644 index 188451ebac..0000000000 --- a/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/AddService.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES 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/trunk/samples/calculator-rest-osgi/src/main/java/calculator/AddServiceImpl.java b/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/AddServiceImpl.java deleted file mode 100644 index 193a7d6636..0000000000 --- a/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/AddServiceImpl.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES 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/trunk/samples/calculator-rest-osgi/src/main/java/calculator/CalculatorActivator.java b/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/CalculatorActivator.java deleted file mode 100644 index 4408568629..0000000000 --- a/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/CalculatorActivator.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES 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/trunk/samples/calculator-rest-osgi/src/main/java/calculator/CalculatorService.java b/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/CalculatorService.java deleted file mode 100644 index 2d14bbd49f..0000000000 --- a/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/CalculatorService.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES 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/trunk/samples/calculator-rest-osgi/src/main/java/calculator/CalculatorServiceImpl.java b/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/CalculatorServiceImpl.java deleted file mode 100644 index 55aabdb56f..0000000000 --- a/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/CalculatorServiceImpl.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES 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/trunk/samples/calculator-rest-osgi/src/main/java/calculator/DivideService.java b/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/DivideService.java deleted file mode 100644 index 30d248208b..0000000000 --- a/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/DivideService.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES 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/trunk/samples/calculator-rest-osgi/src/main/java/calculator/DivideServiceImpl.java b/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/DivideServiceImpl.java deleted file mode 100644 index 1323edf55a..0000000000 --- a/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/DivideServiceImpl.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES 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/trunk/samples/calculator-rest-osgi/src/main/java/calculator/MultiplyService.java b/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/MultiplyService.java deleted file mode 100644 index 5290605938..0000000000 --- a/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/MultiplyService.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES 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/trunk/samples/calculator-rest-osgi/src/main/java/calculator/MultiplyServiceImpl.java b/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/MultiplyServiceImpl.java deleted file mode 100644 index 91b803bc9e..0000000000 --- a/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/MultiplyServiceImpl.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES 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/trunk/samples/calculator-rest-osgi/src/main/java/calculator/SubtractService.java b/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/SubtractService.java deleted file mode 100644 index bf0d1882b6..0000000000 --- a/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/SubtractService.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES 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/trunk/samples/calculator-rest-osgi/src/main/java/calculator/SubtractServiceImpl.java b/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/SubtractServiceImpl.java deleted file mode 100644 index 58cc4a3547..0000000000 --- a/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/java/calculator/SubtractServiceImpl.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES 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/trunk/samples/calculator-rest-osgi/src/main/resources/Calculator.composite b/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/resources/Calculator.composite deleted file mode 100644 index c428ce93d6..0000000000 --- a/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/main/resources/Calculator.composite +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/test/java/calculator/CalculatorTestCase.java b/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/test/java/calculator/CalculatorTestCase.java deleted file mode 100644 index 704101b5c0..0000000000 --- a/sca-java-2.x/trunk/samples/calculator-rest-osgi/src/test/java/calculator/CalculatorTestCase.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES 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/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/META-INF/MANIFEST.MF b/sca-java-2.x/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..1ebd35b30a --- /dev/null +++ b/sca-java-2.x/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/README b/sca-java-2.x/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/README new file mode 100644 index 0000000000..4c67296bd4 --- /dev/null +++ b/sca-java-2.x/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/pom.xml b/sca-java-2.x/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/pom.xml new file mode 100644 index 0000000000..5412ab75f7 --- /dev/null +++ b/sca-java-2.x/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/pom.xml @@ -0,0 +1,163 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-samples + 2.0-SNAPSHOT + ../pom.xml + + sample-calculator-rest-osgi + Apache Tuscany SCA Sample Calculator REST OSGi + + + + org.apache.tuscany.sca + tuscany-feature-api + 2.0-SNAPSHOT + pom + + + + org.apache.tuscany.sca + tuscany-feature-core + 2.0-SNAPSHOT + pom + + + + org.apache.tuscany.sca + tuscany-binding-rest-runtime + 2.0-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-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/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/AddService.java b/sca-java-2.x/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/AddServiceImpl.java b/sca-java-2.x/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/CalculatorActivator.java b/sca-java-2.x/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/CalculatorService.java b/sca-java-2.x/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/CalculatorServiceImpl.java b/sca-java-2.x/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/DivideService.java b/sca-java-2.x/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/DivideServiceImpl.java b/sca-java-2.x/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/MultiplyService.java b/sca-java-2.x/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/MultiplyServiceImpl.java b/sca-java-2.x/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/SubtractService.java b/sca-java-2.x/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/java/calculator/SubtractServiceImpl.java b/sca-java-2.x/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/resources/Calculator.composite b/sca-java-2.x/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/main/resources/Calculator.composite @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/trunk/samples/tuscany-features/maven-osgi-junit/calculator-rest-osgi/src/test/java/calculator/CalculatorTestCase.java b/sca-java-2.x/trunk/samples/tuscany-features/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/trunk/samples/tuscany-features/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()); + } + +} -- cgit v1.2.3