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);
     }
 }