summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--java/sca/distribution/all/pom.xml20
-rw-r--r--java/sca/itest/pom.xml1
-rw-r--r--java/sca/itest/samples/build.xml38
-rw-r--r--java/sca/itest/samples/pom.xml80
-rw-r--r--java/sca/samples/binding-ws-calculator/build.xml55
-rw-r--r--java/sca/samples/binding-ws-calculator/pom.xml8
-rw-r--r--java/sca/samples/binding-ws-calculator/src/main/java/calculator/CalculatorClient.java73
-rw-r--r--java/sca/samples/binding-ws-calculator/src/main/resources/Calculator.composite10
-rw-r--r--java/sca/samples/binding-ws-calculator/src/test/java/calculator/CalculatorTestCase.java41
-rw-r--r--java/sca/samples/build-common.xml3
10 files changed, 203 insertions, 126 deletions
diff --git a/java/sca/distribution/all/pom.xml b/java/sca/distribution/all/pom.xml
index 70e033d263..f5c7478f12 100644
--- a/java/sca/distribution/all/pom.xml
+++ b/java/sca/distribution/all/pom.xml
@@ -60,6 +60,26 @@
</execution>
</executions>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>distribution-package</id>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ <configuration>
+ <descriptors>
+ <descriptor>src/main/assembly/dir.xml</descriptor>
+ </descriptors>
+ <tarLongFileMode>gnu</tarLongFileMode>
+ <finalName>apache-tuscany-sca-all-2.0-SNAPSHOT</finalName>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
</build>
diff --git a/java/sca/itest/pom.xml b/java/sca/itest/pom.xml
index 6fdc8fd0d9..3f6490dd6f 100644
--- a/java/sca/itest/pom.xml
+++ b/java/sca/itest/pom.xml
@@ -69,6 +69,7 @@
-->
<module>recursive-multi-level</module>
<module>references</module>
+ <module>samples</module>
<module>scopes</module>
<module>services</module>
<module>wires</module>
diff --git a/java/sca/itest/samples/build.xml b/java/sca/itest/samples/build.xml
new file mode 100644
index 0000000000..9650b5e56f
--- /dev/null
+++ b/java/sca/itest/samples/build.xml
@@ -0,0 +1,38 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project name="itest-samples" default="run">
+
+ <echo>${JAVA_HOME}</echo>
+ <!--
+ compile and run each sample as though the user were running
+ samples from the binary distribution. Here we use ant targets
+ in the first instance but for some tests we may want to run
+ jars directly and fire up webapp containers and deploy wars. In other cases
+ we may need to run two samples together to provide reference and
+ service sides of the sample.
+ -->
+ <target name="run">
+ <ant antfile="../../samples/implementation-java-calculator/build.xml"
+ dir="../../samples/implementation-java-calculator"/>
+
+ <ant antfile="../../samples/binding-ws-calculator/build.xml"
+ dir="../../samples/binding-ws-calculator"/>
+ </target>
+
+</project>
diff --git a/java/sca/itest/samples/pom.xml b/java/sca/itest/samples/pom.xml
new file mode 100644
index 0000000000..e43ddea0a9
--- /dev/null
+++ b/java/sca/itest/samples/pom.xml
@@ -0,0 +1,80 @@
+<?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>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-itest</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>itest-samples</artifactId>
+ <name>Apache Tuscany SCA Samples Integration Tests</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-distribution-all</artifactId>
+ <type>pom</type>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <version>1.3</version>
+
+ <dependencies>
+ <dependency>
+ <groupId>ant</groupId>
+ <artifactId>ant-trax</artifactId>
+ <version>1.6.5</version>
+ </dependency>
+ <!-- this JDk dependency is a workaround for Maven bug - http://jira.codehaus.org/browse/MNG-1323 -->
+ <dependency>
+ <groupId>sun.jdk</groupId>
+ <artifactId>tools</artifactId>
+ <version>1.6</version>
+ <scope>system</scope>
+ <systemPath>${java.home}/../lib/tools.jar</systemPath>
+ </dependency>
+ </dependencies>
+
+ <executions>
+ <execution>
+ <id>run-samples</id>
+ <phase>validate</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <configuration>
+ <tasks>
+ <ant antfile="./build.xml" target="run"/>
+ </tasks>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/java/sca/samples/binding-ws-calculator/build.xml b/java/sca/samples/binding-ws-calculator/build.xml
index 67a7818fc1..be237938fd 100644
--- a/java/sca/samples/binding-ws-calculator/build.xml
+++ b/java/sca/samples/binding-ws-calculator/build.xml
@@ -17,17 +17,52 @@
* under the License.
-->
<project name="binding-ws-calculator" default="run">
- <import file="../build-common.xml"/>
- <property name="sample.name" value="${ant.project.name}"/>
- <property name="sample.root" value="."/>
- <property name="sample.jar" value="${sample.root}/target/sample-${sample.name}.jar" />
- <property name="sample.composite" value="Calculator.composite"/>
-
- <target name="compile" depends="common-jar-compile"/>
-
- <target name="run" depends="common-run-jse"/>
+ <property name="jar.name" value="sample-binding-ws-calculator.jar" />
+ <property name="main.class" value="sample.SampleClientImpl" />
+
+ <target name="init">
+ <delete quiet="true" includeemptydirs="true">
+ <fileset dir="target"/>
+ </delete>
+ <mkdir dir="target/classes"/>
+ </target>
- <target name="clean" depends="common-clean"/>
+ <target name="compile" depends="init">
+ <javac srcdir="src/main/java"
+ destdir="target/classes"
+ debug="on"
+ source="1.5"
+ target="1.5">
+ <classpath>
+ <pathelement location="../../modules/tuscany-sca-api-2.0-SNAPSHOT.jar"/>
+ <pathelement location="../../modules/tuscany-node-api-2.0-SNAPSHOT.jar"/>
+ <pathelement location="../../modules/sca-api/target/tuscany-sca-api-2.0-SNAPSHOT.jar"/>
+ <pathelement location="../../modules/node-api/target/tuscany-node-api-2.0-SNAPSHOT.jar"/>
+ </classpath>
+ </javac>
+ <copy todir="target/classes">
+ <fileset dir="src/main/resources"/>
+ </copy>
+ <jar destfile="target/${jar.name}" basedir="target/classes">
+ <manifest>
+ <attribute name="Main-Class" value="${main.class}" />
+ </manifest>
+ </jar>
+ </target>
+
+ <target name="run" depends="compile">
+ <java classname="org.apache.tuscany.sca.launcher.LauncherMain"
+ fork="true"
+ inputstring="q">
+ <jvmarg value="-Djava.util.logging.config.file=${sample.root}/../../logging.properties"/>
+ <classpath>
+ <pathelement location="../../distribution/all/target/apache-tuscany-sca-all-2.0-SNAPSHOT-dir.dir/tuscany-sca-2.0-SNAPSHOT/bin/launcher.jar"/>
+ <pathelement location="../../bin/launcher.jar"/>
+ </classpath>
+ <arg value="unmanaged"/>
+ <arg value="target/${jar.name}"/>
+ </java>
+ </target>
</project>
diff --git a/java/sca/samples/binding-ws-calculator/pom.xml b/java/sca/samples/binding-ws-calculator/pom.xml
index 6f184b87c2..eec6d5da17 100644
--- a/java/sca/samples/binding-ws-calculator/pom.xml
+++ b/java/sca/samples/binding-ws-calculator/pom.xml
@@ -58,6 +58,13 @@
</dependency>
<dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-distribution-ejava</artifactId>
+ <type>pom</type>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.5</version>
@@ -70,7 +77,6 @@
<finalName>${artifactId}</finalName>
<plugins>
- <!-- temporarily skip tests as binding.ws doesn't work yet -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
diff --git a/java/sca/samples/binding-ws-calculator/src/main/java/calculator/CalculatorClient.java b/java/sca/samples/binding-ws-calculator/src/main/java/calculator/CalculatorClient.java
deleted file mode 100644
index 0f275ea46e..0000000000
--- a/java/sca/samples/binding-ws-calculator/src/main/java/calculator/CalculatorClient.java
+++ /dev/null
@@ -1,73 +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.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() {
- // The calls cannot be done in the same thread as the services are starting
- // Fork a new thread
- Thread thread = new Thread() {
- public void run() {
- // Calculate
- try {
- Thread.sleep(3000);
- 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));
- } catch (Throwable e) {
- e.printStackTrace();
- }
- }
- };
- thread.start();
- }
-
- 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/java/sca/samples/binding-ws-calculator/src/main/resources/Calculator.composite b/java/sca/samples/binding-ws-calculator/src/main/resources/Calculator.composite
index d27d09cb8e..f4bcaf4352 100644
--- a/java/sca/samples/binding-ws-calculator/src/main/resources/Calculator.composite
+++ b/java/sca/samples/binding-ws-calculator/src/main/resources/Calculator.composite
@@ -22,6 +22,11 @@
xmlns:sample="http://sample"
name="Calculator">
+ <component name="SampleClient">
+ <implementation.java class="calculator.CalculatorClientImpl"/>
+ <reference name="calculatorService" target="CalculatorServiceComponent" />
+ </component>
+
<component name="CalculatorServiceComponent">
<implementation.java class="calculator.CalculatorServiceImpl"/>
<reference name="addService" >
@@ -51,9 +56,4 @@
<implementation.java class="calculator.DivideServiceImpl"/>
</component>
- <component name="CalculatorClient">
- <implementation.java class="calculator.CalculatorClient"/>
- <reference name="calculatorService" target="CalculatorServiceComponent" />
- </component>
-
</composite>
diff --git a/java/sca/samples/binding-ws-calculator/src/test/java/calculator/CalculatorTestCase.java b/java/sca/samples/binding-ws-calculator/src/test/java/calculator/CalculatorTestCase.java
index 2e710ee4ae..bc90f0e566 100644
--- a/java/sca/samples/binding-ws-calculator/src/test/java/calculator/CalculatorTestCase.java
+++ b/java/sca/samples/binding-ws-calculator/src/test/java/calculator/CalculatorTestCase.java
@@ -27,48 +27,15 @@ import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
+import sample.SampleClientImpl;
+
/**
- * This shows how to test the Calculator composition.
+ * Test the Calculator composition.
*/
public class CalculatorTestCase {
- private static NodeLauncher launcher;
- private static Node node;
- private static String status = "Sample Success";
-
- public static void main(String[] args) throws Exception {
- setUpBeforeClass();
- tearDownAfterClass();
- }
-
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- launcher = NodeLauncher.newInstance();
- String location = ContributionLocationHelper.getContributionLocation(CalculatorClient.class);
- node = launcher.createNode("Calculator.composite", new Contribution("test", location));
-
- try {
- node.start();
- } catch (Exception ex) {
- status = ex.toString();
- System.out.println(status);
- }
- }
-
- @AfterClass
- public static void tearDownAfterClass() throws Exception {
- Thread.sleep(30000);
- if (node != null) {
- node.stop();
- node.destroy();
- }
- if (launcher != null) {
- launcher.destroy();
- }
- }
-
@Test
public void testSample() throws Exception {
- Assert.assertEquals("Sample Success", status);
+ SampleClientImpl.main(null);
}
}
diff --git a/java/sca/samples/build-common.xml b/java/sca/samples/build-common.xml
index 9c81fc929d..2354dd1ce4 100644
--- a/java/sca/samples/build-common.xml
+++ b/java/sca/samples/build-common.xml
@@ -31,6 +31,9 @@
<import file="${distro.root}/features/build-path.xml"/>
<target name="common-init">
+ <delete quiet="true" includeemptydirs="true">
+ <fileset dir="target"/>
+ </delete>
<mkdir dir="${sample.root}/target/classes"/>
</target>