summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi
diff options
context:
space:
mode:
Diffstat (limited to 'sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi')
-rw-r--r--sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/META-INF/MANIFEST.MF19
-rw-r--r--sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/README.html59
-rw-r--r--sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/README.odtbin0 -> 13539 bytes
-rw-r--r--sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/pom.xml95
-rw-r--r--sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/AddService.java28
-rw-r--r--sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/AddServiceImpl.java35
-rw-r--r--sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/CalculatorActivator.java47
-rw-r--r--sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/CalculatorClient.java62
-rw-r--r--sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/CalculatorService.java35
-rw-r--r--sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/CalculatorServiceImpl.java69
-rw-r--r--sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/DivideService.java28
-rw-r--r--sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/DivideServiceImpl.java35
-rw-r--r--sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/MultiplyService.java28
-rw-r--r--sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/MultiplyServiceImpl.java35
-rw-r--r--sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/SubtractService.java28
-rw-r--r--sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/SubtractServiceImpl.java35
-rw-r--r--sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/resources/Calculator.composite56
-rw-r--r--sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/test/java/calculator/CalculatorTestCase.java49
18 files changed, 743 insertions, 0 deletions
diff --git a/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/META-INF/MANIFEST.MF b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000..a9c9b2a8f9
--- /dev/null
+++ b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-Version: 2.0.0
+Bundle-Name: Sample Calculator OSGi
+Bundle-Activator: calculator.CalculatorActivator
+Bundle-ManifestVersion: 2
+Import-Package: org.oasisopen.sca.annotation;version="2.0.0",
+ org.oasisopen.sca;version="2.0.0",
+ org.apache.tuscany.sca;version="2.0.0",
+ org.apache.tuscany.sca.core;version="2.0.0",
+ org.osgi.framework,
+ org.osgi.service.component;resolution:=optional,
+ org.osgi.service.packageadmin,
+ org.osgi.util.tracker
+Bundle-SymbolicName: sample.calculator.osgi
+Bundle-Vendor: The Apache Software Foundation
+Eclipse-LazyStart: true
+Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
+Bundle-DocURL: http://www.apache.org/
+Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6
diff --git a/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/README.html b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/README.html
new file mode 100644
index 0000000000..18e1c62b74
--- /dev/null
+++ b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/README.html
@@ -0,0 +1,59 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+ <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
+ <TITLE></TITLE>
+ <META NAME="GENERATOR" CONTENT="OpenOffice.org 3.3 (Win32)">
+ <META NAME="AUTHOR" CONTENT="ant ">
+ <META NAME="CREATED" CONTENT="20110315;9485571">
+ <META NAME="CHANGED" CONTENT="20110906;11493347">
+ <STYLE TYPE="text/css">
+ <!--
+ @page { margin: 2cm }
+ P { margin-bottom: 0.21cm }
+ H1 { margin-bottom: 0.21cm }
+ H1.western { font-family: "Arial", sans-serif; font-size: 16pt }
+ H1.cjk { font-family: "SimSun"; font-size: 16pt }
+ H1.ctl { font-family: "Mangal"; font-size: 16pt }
+ PRE.cjk { font-family: "NSimSun", monospace }
+ A:link { so-language: zxx }
+ -->
+ </STYLE>
+</HEAD>
+<BODY LANG="en-GB" DIR="LTR">
+<H1 CLASS="western">Contribution OSGi</H1>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<PRE CLASS="western"><FONT FACE="Times New Roman, serif"><FONT SIZE=3>This sample packages the calculator sample as an OSGi bundle. The main differences over and above the basic calculator sample is that the bundle has a bundle activator. When the bundle is installed and started in OSGi the bundle activator starts the Tuscany runtime and runs the sample. </FONT></FONT>
+
+<FONT FACE="Times New Roman, serif"><FONT SIZE=3>See samples/running_tuscany/osgi for instructions for installing the Tuscany runtime in OSGi. Once the runtime is installed this contribution can be installed from the OSGi command line using the following command. </FONT></FONT>
+
+<FONT FACE="Courier New, monospace"><FONT SIZE=2>osgi&gt; install file:///c:\path\to\Tuscany\installation\samples\learning-more\contribution-osgi\target\sample-contribution-osgi.jar</FONT></FONT>
+
+<FONT FACE="Times New Roman, serif"><FONT SIZE=3>This should give rise to a message indicating the bundle ID as follows:</FONT></FONT>
+
+<FONT FACE="Courier New, monospace"><FONT SIZE=2>Bundle id is 264</FONT></FONT>
+
+<FONT FACE="Times New Roman, serif"><FONT SIZE=3>The bundle can then be started using:</FONT></FONT>
+
+<FONT FACE="Courier New, monospace"><FONT SIZE=2>osgi&gt; start 264</FONT></FONT></PRE>
+</BODY>
+</HTML> \ No newline at end of file
diff --git a/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/README.odt b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/README.odt
new file mode 100644
index 0000000000..934c402bdf
--- /dev/null
+++ b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/README.odt
Binary files differ
diff --git a/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/pom.xml b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/pom.xml
new file mode 100644
index 0000000000..6aadf450ee
--- /dev/null
+++ b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/pom.xml
@@ -0,0 +1,95 @@
+<?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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+ http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.tuscany.sca.samples</groupId>
+ <artifactId>tuscany-samples</artifactId>
+ <version>2.0</version>
+ <relativePath />
+ </parent>
+ <artifactId>sample-contribution-osgi</artifactId>
+ <version>2.0</version>
+
+ <name>Apache Tuscany SCA Sample Calculator OSGi</name>
+
+ <properties>
+ <tuscany.version>${project.version}</tuscany.version>
+ </properties>
+
+ <!-- ASF repositories so sample can be built from SVN without building trunk-->
+ <repositories><repository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ <releases><enabled>false</enabled></releases>
+ </repository></repositories>
+ <pluginRepositories><pluginRepository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ <releases><enabled>false</enabled></releases>
+ </pluginRepository></pluginRepositories>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-base-runtime-pom</artifactId>
+ <type>pom</type>
+ <version>2.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-osgi-runtime-pom</artifactId>
+ <type>pom</type>
+ <version>2.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <archive>
+ <manifestFile>${basedir}/META-INF/MANIFEST.MF</manifestFile>
+ </archive>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+</project>
diff --git a/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/AddService.java b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/AddService.java
new file mode 100644
index 0000000000..5a1e7a638a
--- /dev/null
+++ b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/AddService.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package calculator;
+
+/**
+ * The Add service interface
+ */
+public interface AddService {
+
+ double add(double n1, double n2);
+
+}
diff --git a/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/AddServiceImpl.java b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/AddServiceImpl.java
new file mode 100644
index 0000000000..caf4d358df
--- /dev/null
+++ b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/AddServiceImpl.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package calculator;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * An implementation of the Add service
+ */
+public class AddServiceImpl implements AddService {
+
+ public double add(double n1, double n2) {
+ Logger logger = Logger.getLogger("calculator");
+ logger.log(Level.FINEST, "Adding " + n1 + " and " + n2);
+ return n1 + n2;
+ }
+
+}
diff --git a/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/CalculatorActivator.java b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/CalculatorActivator.java
new file mode 100644
index 0000000000..5e65623761
--- /dev/null
+++ b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/CalculatorActivator.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package calculator;
+
+
+import java.util.logging.Logger;
+
+import org.apache.tuscany.sca.Node;
+import org.apache.tuscany.sca.TuscanyRuntime;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+/**
+ *
+ */
+public class CalculatorActivator implements BundleActivator {
+ private Logger logger = Logger.getLogger(CalculatorActivator.class.getName());
+
+ public void start(BundleContext context) throws Exception {
+ logger.info("Starting " + context.getBundle());
+ Node node = TuscanyRuntime.runComposite("Calculator.composite", context.getBundle().getLocation());
+ node.stop();
+ }
+
+ public void stop(BundleContext context) throws Exception {
+ logger.info("Stopping " + context.getBundle());
+ // Registered services will be automatically unregistered
+ }
+
+}
diff --git a/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/CalculatorClient.java b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/CalculatorClient.java
new file mode 100644
index 0000000000..2b791a8e1f
--- /dev/null
+++ b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/CalculatorClient.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package calculator;
+
+import org.oasisopen.sca.annotation.EagerInit;
+import org.oasisopen.sca.annotation.Init;
+import org.oasisopen.sca.annotation.Reference;
+import org.oasisopen.sca.annotation.Scope;
+
+/**
+ * This client program shows how to create an SCA runtime, start it,
+ * and locate and invoke a SCA component
+ */
+@Scope("COMPOSITE") @EagerInit
+public class CalculatorClient {
+
+ private CalculatorService calculatorService;
+
+ @Reference
+ public void setCalculatorService(CalculatorService calculatorService) {
+ this.calculatorService = calculatorService;
+ }
+
+ @Init
+ public void calculate() {
+
+ // Calculate
+ System.out.println("SCA API ClassLoader: " + print(Reference.class.getClassLoader()));
+ System.out.println("3 + 2=" + calculatorService.add(3, 2));
+ System.out.println("3 - 2=" + calculatorService.subtract(3, 2));
+ System.out.println("3 * 2=" + calculatorService.multiply(3, 2));
+ System.out.println("3 / 2=" + calculatorService.divide(3, 2));
+ }
+
+ private static String print(ClassLoader cl) {
+ StringBuffer buf = new StringBuffer();
+ for (; cl != null;) {
+ buf.append(cl.toString());
+ buf.append(' ');
+ cl = cl.getParent();
+ }
+ return buf.toString();
+ }
+
+}
diff --git a/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/CalculatorService.java b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/CalculatorService.java
new file mode 100644
index 0000000000..ad87375529
--- /dev/null
+++ b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/CalculatorService.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package calculator;
+
+
+/**
+ * The Calculator service interface.
+ */
+public interface CalculatorService {
+
+ double add(double n1, double n2);
+
+ double subtract(double n1, double n2);
+
+ double multiply(double n1, double n2);
+
+ double divide(double n1, double n2);
+
+}
diff --git a/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/CalculatorServiceImpl.java b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/CalculatorServiceImpl.java
new file mode 100644
index 0000000000..0f03d6e7a1
--- /dev/null
+++ b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/CalculatorServiceImpl.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package calculator;
+
+import org.oasisopen.sca.annotation.Reference;
+
+/**
+ * An implementation of the Calculator service.
+ */
+public class CalculatorServiceImpl implements CalculatorService {
+
+ private AddService addService;
+ private SubtractService subtractService;
+ private MultiplyService multiplyService;
+ private DivideService divideService;
+
+ @Reference
+ public void setAddService(AddService addService) {
+ this.addService = addService;
+ }
+
+ @Reference
+ public void setSubtractService(SubtractService subtractService) {
+ this.subtractService = subtractService;
+ }
+
+ @Reference
+ public void setDivideService(DivideService divideService) {
+ this.divideService = divideService;
+ }
+
+ @Reference
+ public void setMultiplyService(MultiplyService multiplyService) {
+ this.multiplyService = multiplyService;
+ }
+
+ public double add(double n1, double n2) {
+ return addService.add(n1, n2);
+ }
+
+ public double subtract(double n1, double n2) {
+ return subtractService.subtract(n1, n2);
+ }
+
+ public double multiply(double n1, double n2) {
+ return multiplyService.multiply(n1, n2);
+ }
+
+ public double divide(double n1, double n2) {
+ return divideService.divide(n1, n2);
+ }
+
+}
diff --git a/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/DivideService.java b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/DivideService.java
new file mode 100644
index 0000000000..ef6a8b375b
--- /dev/null
+++ b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/DivideService.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package calculator;
+
+/**
+ * The divide service interface
+ */
+public interface DivideService {
+
+ double divide(double n1, double n2);
+
+}
diff --git a/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/DivideServiceImpl.java b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/DivideServiceImpl.java
new file mode 100644
index 0000000000..cd91935f08
--- /dev/null
+++ b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/DivideServiceImpl.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package calculator;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * An implementation of the Divide service.
+ */
+public class DivideServiceImpl implements DivideService {
+
+ public double divide(double n1, double n2) {
+ Logger logger = Logger.getLogger("calculator");
+ logger.log(Level.FINEST, "Dividing " + n1 + " with " + n2);
+ return n1 / n2;
+ }
+
+}
diff --git a/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/MultiplyService.java b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/MultiplyService.java
new file mode 100644
index 0000000000..db568cc762
--- /dev/null
+++ b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/MultiplyService.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package calculator;
+
+/**
+ * The interface for the multiply service
+ */
+public interface MultiplyService {
+
+ double multiply(double n1, double n2);
+
+}
diff --git a/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/MultiplyServiceImpl.java b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/MultiplyServiceImpl.java
new file mode 100644
index 0000000000..c85357fcd8
--- /dev/null
+++ b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/MultiplyServiceImpl.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package calculator;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * An implementation of the Multiply service.
+ */
+public class MultiplyServiceImpl implements MultiplyService {
+
+ public double multiply(double n1, double n2) {
+ Logger logger = Logger.getLogger("calculator");
+ logger.log(Level.FINEST, "Multiplying " + n1 + " with " + n2);
+ return n1 * n2;
+ }
+
+}
diff --git a/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/SubtractService.java b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/SubtractService.java
new file mode 100644
index 0000000000..56ee372fc4
--- /dev/null
+++ b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/SubtractService.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package calculator;
+
+/**
+ * The interface for the multiply service
+ */
+public interface SubtractService {
+
+ double subtract(double n1, double n2);
+
+}
diff --git a/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/SubtractServiceImpl.java b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/SubtractServiceImpl.java
new file mode 100644
index 0000000000..1b669084d9
--- /dev/null
+++ b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/java/calculator/SubtractServiceImpl.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package calculator;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * An implementation of the subtract service.
+ */
+public class SubtractServiceImpl implements SubtractService {
+
+ public double subtract(double n1, double n2) {
+ Logger logger = Logger.getLogger("calculator");
+ logger.log(Level.FINEST, "Subtracting " + n1 + " from " + n2);
+ return n1 - n2;
+ }
+
+}
diff --git a/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/resources/Calculator.composite b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/resources/Calculator.composite
new file mode 100644
index 0000000000..3a7326caaa
--- /dev/null
+++ b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/main/resources/Calculator.composite
@@ -0,0 +1,56 @@
+<?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="Calculator">
+
+
+ <component name="CalculatorServiceComponent">
+ <implementation.java class="calculator.CalculatorServiceImpl"/>
+ <reference name="addService" target="AddServiceComponent" />
+ <reference name="subtractService" target="SubtractServiceComponent" />
+ <reference name="multiplyService" target="MultiplyServiceComponent" />
+ <reference name="divideService" target="DivideServiceComponent" />
+ </component>
+
+ <component name="AddServiceComponent">
+ <implementation.java class="calculator.AddServiceImpl"/>
+ </component>
+
+ <component name="SubtractServiceComponent">
+ <implementation.java class="calculator.SubtractServiceImpl"/>
+ </component>
+
+ <component name="MultiplyServiceComponent">
+ <implementation.java class="calculator.MultiplyServiceImpl"/>
+ </component>
+
+ <component name="DivideServiceComponent">
+ <implementation.java class="calculator.DivideServiceImpl"/>
+ </component>
+
+
+ <component name="CalculatorClient">
+ <implementation.java class="calculator.CalculatorClient"/>
+ <reference name="calculatorService" target="CalculatorServiceComponent" />
+ </component>
+
+</composite>
diff --git a/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/test/java/calculator/CalculatorTestCase.java b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/test/java/calculator/CalculatorTestCase.java
new file mode 100644
index 0000000000..a81b58bced
--- /dev/null
+++ b/sca-java-2.x/branches/2.0/samples/learning-more/contribution-osgi/src/test/java/calculator/CalculatorTestCase.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package calculator;
+
+import org.junit.Assert;
+
+import org.apache.tuscany.sca.Node;
+import org.apache.tuscany.sca.TuscanyRuntime;
+import org.junit.Test;
+import org.oasisopen.sca.NoSuchServiceException;
+
+/*
+ * A unit test for the Calculator composite that just fires up the
+ * composite and expects the EagerInit of the CalculatorClient component
+ * to do its thing
+ */
+public class CalculatorTestCase {
+
+ @Test
+ public void testCalculate() throws NoSuchServiceException {
+
+ // Run the SCA composite in a Tuscany runtime
+ Node node = TuscanyRuntime.runComposite("Calculator.composite", "target/classes");
+ try {
+
+
+
+ } finally {
+ // Stop the Tuscany runtime Node
+ node.stop();
+ }
+ }
+}