You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sl...@apache.org on 2010/05/14 16:50:42 UTC
svn commit: r944299 - in
/tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator: ./
src/main/java/calculator/ src/main/resources/ src/main/resources/META-INF/
src/test/java/calculator/
Author: slaws
Date: Fri May 14 14:50:41 2010
New Revision: 944299
URL: http://svn.apache.org/viewvc?rev=944299&view=rev
Log:
Add a contribution for a binding-sca based calculator app. This is a copy of the existing calculator module but modified to include a "client" component so we can launch it from JSE, mvn, OSGi etc without having to worry about how to get a calculator proxy.
Added:
tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/
- copied from r944244, tuscany/sca-java-2.x/trunk/samples/calculator/
tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/src/main/resources/CalculatorClient.composite
Removed:
tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/calculator.png
tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/calculator.svg
Modified:
tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/pom.xml
tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/src/main/java/calculator/CalculatorClient.java
tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/src/main/resources/META-INF/sca-contribution.xml
tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/src/test/java/calculator/CalculatorTestCase.java
Modified: tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/pom.xml?rev=944299&r1=944244&r2=944299&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/pom.xml (original)
+++ tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/pom.xml Fri May 14 14:50:41 2010
@@ -25,29 +25,16 @@
<version>2.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
- <artifactId>sample-calculator</artifactId>
- <name>Apache Tuscany SCA Sample Calculator</name>
+ <artifactId>sample-contribution-binding-sca-calculator</artifactId>
+ <name>Apache Tuscany SCA Sample binding-sca Calculator Contribution</name>
<dependencies>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-node-api</artifactId>
+ <artifactId>tuscany-feature-api</artifactId>
+ <type>pom</type>
<version>2.0-SNAPSHOT</version>
- </dependency>
-
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-node-impl</artifactId>
- <version>2.0-SNAPSHOT</version>
- <scope>runtime</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-implementation-java-runtime</artifactId>
- <version>2.0-SNAPSHOT</version>
- <scope>runtime</scope>
- </dependency>
+ </dependency>
<dependency>
<groupId>junit</groupId>
@@ -66,18 +53,6 @@
<artifactId>maven-tuscany-plugin</artifactId>
<version>2.0-SNAPSHOT</version>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <version>2.2</version>
- <configuration>
- <archive>
- <manifest>
- <mainClass>calculator.CalculatorClient</mainClass>
- </manifest>
- </archive>
- </configuration>
- </plugin>
</plugins>
</build>
</project>
Modified: tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/src/main/java/calculator/CalculatorClient.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/src/main/java/calculator/CalculatorClient.java?rev=944299&r1=944244&r2=944299&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/src/main/java/calculator/CalculatorClient.java (original)
+++ tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/src/main/java/calculator/CalculatorClient.java Fri May 14 14:50:41 2010
@@ -19,28 +19,34 @@
package calculator;
-import org.apache.tuscany.sca.node.Node;
-import org.apache.tuscany.sca.node.NodeFactory;
+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 {
- public static void main(String[] args) throws Exception {
- Node node = NodeFactory.newInstance().createNode((String)null, new String[] {"target/classes"}).start();
-
- System.out.println("Retrieving Calculator Service From Node");
- CalculatorService calculatorService = node.getService(CalculatorService.class, "CalculatorServiceComponent");
- System.out.println("Calling Calculator Operations");
+ 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));
-
- node.stop();
}
}
Added: tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/src/main/resources/CalculatorClient.composite
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/src/main/resources/CalculatorClient.composite?rev=944299&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/src/main/resources/CalculatorClient.composite (added)
+++ tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/src/main/resources/CalculatorClient.composite Fri May 14 14:50:41 2010
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ targetNamespace="http://sample"
+ xmlns:sample="http://sample"
+ name="CalculatorClient">
+
+ <component name="CalculatorClient">
+ <implementation.java class="calculator.CalculatorClient"/>
+ <reference name="calculatorService" target="CalculatorServiceComponent" />
+ </component>
+
+</composite>
Modified: tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/src/main/resources/META-INF/sca-contribution.xml
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/src/main/resources/META-INF/sca-contribution.xml?rev=944299&r1=944244&r2=944299&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/src/main/resources/META-INF/sca-contribution.xml (original)
+++ tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/src/main/resources/META-INF/sca-contribution.xml Fri May 14 14:50:41 2010
@@ -20,4 +20,5 @@
<contribution xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
xmlns:sample="http://sample">
<deployable composite="sample:Calculator"/>
+ <deployable composite="sample:CalculatorClient"/>
</contribution>
\ No newline at end of file
Modified: tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/src/test/java/calculator/CalculatorTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/src/test/java/calculator/CalculatorTestCase.java?rev=944299&r1=944244&r2=944299&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/src/test/java/calculator/CalculatorTestCase.java (original)
+++ tuscany/sca-java-2.x/trunk/samples/contribution-binding-sca-calculator/src/test/java/calculator/CalculatorTestCase.java Fri May 14 14:50:41 2010
@@ -6,52 +6,45 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
- * under the License.
+ * under the License.
*/
package calculator;
import static org.junit.Assert.assertEquals;
-import org.apache.tuscany.sca.node.Node;
-import org.apache.tuscany.sca.node.NodeFactory;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
import org.junit.Test;
/**
- * This shows how to test the Calculator service component.
+ * A unit test of the basic Java implementation classes in this contribution
+ * without using SCA
*/
-public class CalculatorTestCase{
- private static Node node;
- private static CalculatorService calculatorService;
-
-
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- // ideally it would be: node = NodeFactory.newInstance().createNode("target/classes").start();
- node = NodeFactory.newInstance().createNode((String)null, new String[] {"target/classes"}).start();
- calculatorService = node.getService(CalculatorService.class, "CalculatorServiceComponent");
- }
-
- @AfterClass
- public static void tearDownAfterClass() throws Exception {
- node.stop();
- }
+public class CalculatorTestCase {
@Test
public void testCalculator() throws Exception {
- // Calculate
- assertEquals(calculatorService.add(3, 2), 5.0, 0);
- assertEquals(calculatorService.subtract(3, 2), 1.0, 0);
- assertEquals(calculatorService.multiply(3, 2), 6.0, 0);
- assertEquals(calculatorService.divide(3, 2), 1.5, 0);
+ AddService add = new AddServiceImpl();
+ SubtractService subtract = new SubtractServiceImpl();
+ MultiplyService multiply = new MultiplyServiceImpl();
+ DivideService divide = new DivideServiceImpl();
+
+ CalculatorServiceImpl calculator = new CalculatorServiceImpl();
+
+ calculator.setAddService(add);
+ calculator.setSubtractService(subtract);
+ calculator.setMultiplyService(multiply);
+ calculator.setDivideService(divide);
+
+ assertEquals(calculator.add(3, 2), 5.0, 0);
+ assertEquals(calculator.subtract(3, 2), 1.0, 0);
+ assertEquals(calculator.multiply(3, 2), 6.0, 0);
+ assertEquals(calculator.divide(3, 2), 1.5, 0);
}
}