summaryrefslogtreecommitdiffstats
path: root/sandbox/sebastien/java/vhost/samples/applications/eightball-demo
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/sebastien/java/vhost/samples/applications/eightball-demo')
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/README.txt55
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/pom.xml109
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/src/main/java/demo/EightBall.java28
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/src/main/java/demo/EightBallProcess.java42
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/src/main/java/demo/Translator.java29
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/src/main/resources/META-INF/sca-contribution.xml23
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/src/main/resources/eightball-process.composite31
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/pom.xml162
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/src/main/java/demo/EightBall.java28
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/src/main/java/demo/EightBallServlet.java63
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/src/main/webapp/WEB-INF/web.composite30
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/src/main/webapp/WEB-INF/web.xml44
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/src/main/webapp/eightball.html48
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball/pom.xml109
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball/src/main/java/demo/EightBall.java28
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball/src/main/java/demo/EightBallImpl.java62
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball/src/main/resources/META-INF/sca-contribution.xml23
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball/src/main/resources/eightball.composite29
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/pom.xml39
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/translator/pom.xml109
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/translator/src/main/java/demo/Translator.java29
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/translator/src/main/java/demo/TranslatorImpl.java95
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/translator/src/main/resources/META-INF/sca-contribution.xml23
-rw-r--r--sandbox/sebastien/java/vhost/samples/applications/eightball-demo/translator/src/main/resources/translator.composite29
24 files changed, 1267 insertions, 0 deletions
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/README.txt b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/README.txt
new file mode 100644
index 0000000000..5ab7f1ff37
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/README.txt
@@ -0,0 +1,55 @@
+Eight Ball Demo
+---------------
+
+The Eight Ball Demo is a lighthearted application based on the Doug Tidwell's Magic 8-Ball demo (http://www.ibm.com/developerworks/webservices/library/ws-eight/) to demonstrate the Tuscany distributed domain support.
+
+There is a eightball.jar SCA contribution which has a Java component that answers yes-no questions, and an eightball-test.jar which is a simple test harness to invoke the EightBall service from the command line. To make the demo more interesting the eightball gives the answers in German.
+
+There is a translator.jar and contribution which has a component that can translate phrases between German and English, and a translator-test.jar for testing that at the command line. Presently the translator is just hardcoded with the phrases the EIghtball uses, later it would be good to enhance the translator to use one of Tuscanys bindings to call one of the remote translaotr services available on the internet.
+
+There is a eightball-process.jar contribution which has a Java component which uses the translator and eightball services to translate phrases from English to German, ask the eightball the question, and then translate the answer from German to English. Ideally this would be rewritten using BPEL. And an associated eightball-process-test.jar to test it at the command line.
+
+And finally there's an eightball-webapp which has a simple webapp to invoke all that from a web gui. Presently this doesn't embed the Tuscany runtime so needs to run on a Tomact with the tuscany.war distribution installed.
+
+
+
+When the SCAClient API is updated to work with the distributed domain it would be good to simplify all the *-test.jar contributions to show using the SCAClient APIs.
+
+If you've a recent 2.x full build you can run the contributions using the tuscany.bat script in the 2.x distribution (which you can find in distribution\all\target\apache-tuscany-sca-all-2.0-SNAPSHOT-dir\tuscany-sca-2.0-SNAPSHOT). Its easiest if you add that to your environment path, eg:
+
+ set PATH=\Tuscany\SVN\2.x-trunk\distribution\all\target\apache-tuscany-sca-all-2.0-SNAPSHOT-dir\tuscany-sca-2.0-SNAPSHOT\bin;%PATH%
+
+then at a command prompt:
+
+ tuscany tribes:eightballDomain eightball.jar
+
+and at another command prompt:
+
+ tuscany tribes:eightballDomain eightball-test.jar
+
+That uses multicast, running on separate machines you need point one node at another, so
+
+ tuscany tribes:eightballDomain eightball.jar
+
+then in the console log look for the IP in the line:
+
+ INFO: Receiver Server Socket bound to:/9.164.186.49:4000
+
+and start the test node using that ip:port, eg:
+
+ tuscany "tribes:eightballDomain?routes=9.164.186.49:4000" eightball-test.jar
+
+(Note that you must have quotes around the config uri)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/pom.xml b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/pom.xml
new file mode 100644
index 0000000000..38b52e183d
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/pom.xml
@@ -0,0 +1,109 @@
+<?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>
+ <groupId>demo</groupId>
+ <artifactId>eightball-process</artifactId>
+ <packaging>jar</packaging>
+ <version>1.0-SNAPSHOT</version>
+ <!-- TODO project name -->
+ <name>quickstart</name>
+ <description></description>
+
+ <dependencies>
+ <!-- TUSCANY DEPENDENCIES -->
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <!-- JUNIT DEPENDENCY FOR TESTING -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+ <build>
+ <defaultGoal>install</defaultGoal>
+ <finalName>${artifactId}</finalName>
+ <resources>
+ <resource>
+ <filtering>false</filtering>
+ <directory>src/main/resources</directory>
+ </resource>
+ <resource>
+ <filtering>false</filtering>
+ <directory>src/main/java</directory>
+ <includes>
+ <include>**</include>
+ </includes>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ <testResources>
+ <testResource>
+ <filtering>false</filtering>
+ <directory>src/test/java</directory>
+ <includes>
+ <include>**</include>
+ </includes>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ </excludes>
+ </testResource>
+ </testResources>
+ <plugins>
+ <plugin>
+ <inherited>true</inherited>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ <optimise>true</optimise>
+ <debug>true</debug>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-eclipse-plugin</artifactId>
+ <configuration>
+ <downloadSources>true</downloadSources>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.tuscany.maven.plugins</groupId>
+ <artifactId>maven-tuscany-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+ <properties>
+ <tuscany.version>2.0-SNAPSHOT</tuscany.version>
+ </properties>
+ </project> \ No newline at end of file
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/src/main/java/demo/EightBall.java b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/src/main/java/demo/EightBall.java
new file mode 100644
index 0000000000..88f8b67abb
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/src/main/java/demo/EightBall.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 demo;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface EightBall {
+
+ String askQuestion(String question);
+
+}
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/src/main/java/demo/EightBallProcess.java b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/src/main/java/demo/EightBallProcess.java
new file mode 100644
index 0000000000..7c12c1c3ea
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/src/main/java/demo/EightBallProcess.java
@@ -0,0 +1,42 @@
+/*
+ * 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 demo;
+
+import org.oasisopen.sca.annotation.Reference;
+
+public class EightBallProcess implements EightBall {
+
+ @Reference
+ public EightBall eightball;
+
+ @Reference
+ public Translator translator;
+
+ public String askQuestion(String question) {
+ System.out.println("Processing " + question);
+ String germanQuestion = translator.toGerman(question);
+ System.out.println("Processing " + germanQuestion);
+ String germanAnswer = eightball.askQuestion(germanQuestion);
+ System.out.println("Processing " + germanAnswer);
+ String englishAnswer = translator.toEnglish(germanAnswer);
+ System.out.println("Processing " + englishAnswer);
+ return englishAnswer;
+ }
+
+}
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/src/main/java/demo/Translator.java b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/src/main/java/demo/Translator.java
new file mode 100644
index 0000000000..11070032d1
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/src/main/java/demo/Translator.java
@@ -0,0 +1,29 @@
+/*
+ * 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 demo;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Translator {
+
+ String toEnglish(String phrase);
+ String toGerman(String phrase);
+
+}
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/src/main/resources/META-INF/sca-contribution.xml b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..e36a08dfe5
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+<?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.
+-->
+<contribution xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:sample="http://demo">
+ <deployable composite="sample:eightball-process"/>
+</contribution> \ No newline at end of file
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/src/main/resources/eightball-process.composite b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/src/main/resources/eightball-process.composite
new file mode 100644
index 0000000000..1e3c19f9f4
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-process/src/main/resources/eightball-process.composite
@@ -0,0 +1,31 @@
+<?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"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://demo"
+ name="eightball-process">
+
+ <component name="EightBallProcessComponent">
+ <implementation.java class="demo.EightBallProcess"/>
+ <reference name="eightball" target="EightBallComponent" />
+ <reference name="translator" target="TranslatorComponent" />
+ </component>
+
+</composite>
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/pom.xml b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/pom.xml
new file mode 100644
index 0000000000..eeabfc5fa4
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/pom.xml
@@ -0,0 +1,162 @@
+<?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>
+ <groupId>demo</groupId>
+ <artifactId>eightball-webapp</artifactId>
+ <packaging>war</packaging>
+ <version>1.0-SNAPSHOT</version>
+ <name>quickstart</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-base-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <!-- JUNIT DEPENDENCY FOR TESTING -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- JETTY DEPENDENCIES FOR TESTING -->
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty</artifactId>
+ <version>${jetty.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty-util</artifactId>
+ <version>${jetty.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty-management</artifactId>
+ <version>${jetty.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+ <build>
+ <defaultGoal>install</defaultGoal>
+ <finalName>eightball-webapp</finalName>
+ <resources>
+ <resource>
+ <filtering>false</filtering>
+ <directory>src/main/resources</directory>
+ </resource>
+ <resource>
+ <filtering>false</filtering>
+ <directory>src/main/java</directory>
+ <includes>
+ <include>**</include>
+ </includes>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ <testResources>
+ <testResource>
+ <filtering>false</filtering>
+ <directory>src/test/java</directory>
+ <includes>
+ <include>**</include>
+ </includes>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ </excludes>
+ </testResource>
+ </testResources>
+ <plugins>
+ <plugin>
+ <inherited>true</inherited>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ <optimise>true</optimise>
+ <debug>true</debug>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>maven-jetty-plugin</artifactId>
+ <version>${jetty.version}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-eclipse-plugin</artifactId>
+ <configuration>
+ <downloadSources>true</downloadSources>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy</id>
+ <phase>compile</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <!-- these should really go in the target folder but i can't get jetty:run to work using that -->
+ <artifactItem>
+ <groupId>demo</groupId>
+ <artifactId>eightball</artifactId>
+ <version>${pom.version}</version>
+ <outputDirectory>src/main/webapp/WEB-INF/sca-contributions</outputDirectory>
+ </artifactItem>
+ <artifactItem>
+ <groupId>demo</groupId>
+ <artifactId>eightball-process</artifactId>
+ <version>${pom.version}</version>
+ <outputDirectory>src/main/webapp/WEB-INF/sca-contributions</outputDirectory>
+ </artifactItem>
+ <artifactItem>
+ <groupId>demo</groupId>
+ <artifactId>translator</artifactId>
+ <version>${pom.version}</version>
+ <outputDirectory>src/main/webapp/WEB-INF/sca-contributions</outputDirectory>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ <properties>
+ <tuscany.version>2.0-SNAPSHOT</tuscany.version>
+ <jetty.version>6.1.18</jetty.version>
+ </properties>
+</project> \ No newline at end of file
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/src/main/java/demo/EightBall.java b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/src/main/java/demo/EightBall.java
new file mode 100644
index 0000000000..88f8b67abb
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/src/main/java/demo/EightBall.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 demo;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface EightBall {
+
+ String askQuestion(String question);
+
+}
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/src/main/java/demo/EightBallServlet.java b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/src/main/java/demo/EightBallServlet.java
new file mode 100644
index 0000000000..6728d44e61
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/src/main/java/demo/EightBallServlet.java
@@ -0,0 +1,63 @@
+/*
+ * 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 demo;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.oasisopen.sca.ComponentContext;
+import org.oasisopen.sca.annotation.Reference;
+
+/**
+ */
+public class EightBallServlet extends HttpServlet {
+
+ @Reference
+ protected EightBall eightball;
+
+ @Override
+ public void init(ServletConfig servletConfig) throws ServletException {
+ if (eightball == null) {
+ ComponentContext cc = (ComponentContext)servletConfig.getServletContext().getAttribute("org.oasisopen.sca.ComponentContext");
+ eightball = cc.getService(EightBall .class, "eightball");
+ }
+ }
+
+ @Override
+ protected void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
+ String question = request.getParameter("question");
+ String answer = eightball.askQuestion(question);
+ Writer out = response.getWriter();
+ out.write("<html><head><title>The Magic Eight Ball</title></head><body>");
+ out.write("<h2>The Magic Eight Ball</h2>");
+ out.write("<p>You ask:");
+ out.write("<br><strong>" + question + "</strong>");
+ out.write("<p>Eight Ball says:");
+ out.write("<br><strong>" + answer + "</strong>");
+ out.write("</body></html>");
+ out.flush();
+ out.close();
+ }
+}
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/src/main/webapp/WEB-INF/web.composite b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/src/main/webapp/WEB-INF/web.composite
new file mode 100644
index 0000000000..88bd46e866
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/src/main/webapp/WEB-INF/web.composite
@@ -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"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://demo"
+ name="eightball-webapp">
+
+ <component name="eightball-WebComponent">
+ <implementation.web web-uri=""/>
+ <reference name="eightball" target="EightBallProcessComponent"/>
+ </component>
+
+</composite>
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/src/main/webapp/WEB-INF/web.xml b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000000..ddfcc666ad
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,44 @@
+<?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.
+-->
+<web-app version="2.4"
+ xmlns="http://java.sun.com/xml/ns/j2ee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
+
+ <display-name>eightball-webapp</display-name>
+
+ <listener><listener-class>org.apache.tuscany.sca.host.webapp.TuscanyContextListener</listener-class></listener>
+
+ <servlet>
+ <servlet-name>EightBallServlet</servlet-name>
+ <servlet-class>demo.EightBallServlet</servlet-class>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>EightBallServlet</servlet-name>
+ <url-pattern>/EightBallServlet</url-pattern>
+ </servlet-mapping>
+
+ <welcome-file-list id="WelcomeFileList">
+ <welcome-file>eightball.html</welcome-file>
+ </welcome-file-list>
+
+</web-app>
+
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/src/main/webapp/eightball.html b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/src/main/webapp/eightball.html
new file mode 100644
index 0000000000..e22cc81c83
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball-webapp/src/main/webapp/eightball.html
@@ -0,0 +1,48 @@
+<!--
+ * 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.
+-->
+<html>
+
+<head>
+<title>The Magic Eight Ball</title>
+</head>
+
+<body>
+
+<h2>The Magic Eight Ball</h2>
+
+The Tuscany Magic Eight Ball reaches into the future to find the answers to your questions. It knows what will be, and is willing to share this with you. <p>
+Just type in your question that can be answered "Yes" or "No", concentrate very, very hard, and click on the "Ask" button.<p>
+
+<form action="EightBallServlet" method="post">
+ <table>
+ <tr>
+ <td>
+ <input type="text" name="question" size="100">
+ </td>
+ </tr>
+ <tr>
+ <td align="left">
+ <button name="submit" type="submit">Ask</button>
+ </td>
+ </tr>
+ </table>
+</form>
+
+</body>
+</html> \ No newline at end of file
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball/pom.xml b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball/pom.xml
new file mode 100644
index 0000000000..5bd58d3dae
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball/pom.xml
@@ -0,0 +1,109 @@
+<?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>
+ <groupId>demo</groupId>
+ <artifactId>eightball</artifactId>
+ <packaging>jar</packaging>
+ <version>1.0-SNAPSHOT</version>
+ <!-- TODO project name -->
+ <name>quickstart</name>
+ <description></description>
+
+ <dependencies>
+ <!-- TUSCANY DEPENDENCIES -->
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <!-- JUNIT DEPENDENCY FOR TESTING -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+ <build>
+ <defaultGoal>install</defaultGoal>
+ <finalName>${artifactId}</finalName>
+ <resources>
+ <resource>
+ <filtering>false</filtering>
+ <directory>src/main/resources</directory>
+ </resource>
+ <resource>
+ <filtering>false</filtering>
+ <directory>src/main/java</directory>
+ <includes>
+ <include>**</include>
+ </includes>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ <testResources>
+ <testResource>
+ <filtering>false</filtering>
+ <directory>src/test/java</directory>
+ <includes>
+ <include>**</include>
+ </includes>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ </excludes>
+ </testResource>
+ </testResources>
+ <plugins>
+ <plugin>
+ <inherited>true</inherited>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ <optimise>true</optimise>
+ <debug>true</debug>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-eclipse-plugin</artifactId>
+ <configuration>
+ <downloadSources>true</downloadSources>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.tuscany.maven.plugins</groupId>
+ <artifactId>maven-tuscany-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+ <properties>
+ <tuscany.version>2.0-SNAPSHOT</tuscany.version>
+ </properties>
+ </project> \ No newline at end of file
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball/src/main/java/demo/EightBall.java b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball/src/main/java/demo/EightBall.java
new file mode 100644
index 0000000000..88f8b67abb
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball/src/main/java/demo/EightBall.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 demo;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface EightBall {
+
+ String askQuestion(String question);
+
+}
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball/src/main/java/demo/EightBallImpl.java b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball/src/main/java/demo/EightBallImpl.java
new file mode 100644
index 0000000000..10a09aee9c
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball/src/main/java/demo/EightBallImpl.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 demo;
+
+import java.util.Random;
+import java.lang.Double;
+import java.util.Date;
+
+public class EightBallImpl implements EightBall {
+
+ static String answers[] = {
+ "Zeichen zeigen auf \"Ja\".",
+ "Ja.",
+ "Antwort unklar, versuchen Sie es erneut.",
+ "Ohne Zweifel.",
+ "Meine Quellen sagen nein.",
+ "Wie ich es sehe, ja.",
+ "Sie koennen sich darauf verlassen.",
+ "Konzentrieren Sie sich und fragen Sie erneut.",
+ "Aussichten unguenstig.",
+ "Auf alle Faelle, ja.",
+ "Es ist besser, es Ihnen jetzt nicht zu sagen.",
+ "Sehr zweifelhaft.",
+ "Ja - auf jeden Fall.",
+ "Es ist sicher.",
+ "Kann jetzt nicht vorhergesagt werden.",
+ "Höchstwahrscheinlich.",
+ "Fragen Sie später noch einmal.",
+ "Meine Antwort ist nein.",
+ "Aussichten gut.",
+ "Verlassen Sie sich nicht darauf."};
+
+ public String askQuestion(String question) {
+ String answer;
+ if ("1+2".equals(question)) {
+ answer = "3";
+ } else {
+ Random r = new Random(new Date().getTime());
+ Double d = new Double((r.nextDouble() * 20) - 1);
+ answer = new String(answers[d.intValue()]);
+ }
+ System.out.println("EightBall answer: " + answer);
+ return answer;
+ }
+
+}
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball/src/main/resources/META-INF/sca-contribution.xml b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..cf91d3a97b
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+<?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.
+-->
+<contribution xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:demo="http://demo">
+ <deployable composite="demo:eightball"/>
+</contribution> \ No newline at end of file
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball/src/main/resources/eightball.composite b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball/src/main/resources/eightball.composite
new file mode 100644
index 0000000000..35c29a72e6
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/eightball/src/main/resources/eightball.composite
@@ -0,0 +1,29 @@
+<?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"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://demo"
+ name="eightball">
+
+ <component name="EightBallComponent">
+ <implementation.java class="demo.EightBallImpl"/>
+ </component>
+
+</composite>
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/pom.xml b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/pom.xml
new file mode 100644
index 0000000000..b58b73c0d4
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/pom.xml
@@ -0,0 +1,39 @@
+<?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-samples-applications</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>tuscany-eightball-demo</artifactId>
+ <packaging>pom</packaging>
+ <name>Apache Tuscany Eightball Demo</name>
+
+ <modules>
+ <module>eightball</module>
+ <module>eightball-process</module>
+ <module>eightball-webapp</module>
+ <module>translator</module>
+ </modules>
+
+</project>
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/translator/pom.xml b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/translator/pom.xml
new file mode 100644
index 0000000000..858fa1b4eb
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/translator/pom.xml
@@ -0,0 +1,109 @@
+<?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>
+ <groupId>demo</groupId>
+ <artifactId>translator</artifactId>
+ <packaging>jar</packaging>
+ <version>1.0-SNAPSHOT</version>
+ <!-- TODO project name -->
+ <name>quickstart</name>
+ <description></description>
+
+ <dependencies>
+ <!-- TUSCANY DEPENDENCIES -->
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <!-- JUNIT DEPENDENCY FOR TESTING -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+ <build>
+ <defaultGoal>install</defaultGoal>
+ <finalName>${artifactId}</finalName>
+ <resources>
+ <resource>
+ <filtering>false</filtering>
+ <directory>src/main/resources</directory>
+ </resource>
+ <resource>
+ <filtering>false</filtering>
+ <directory>src/main/java</directory>
+ <includes>
+ <include>**</include>
+ </includes>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ <testResources>
+ <testResource>
+ <filtering>false</filtering>
+ <directory>src/test/java</directory>
+ <includes>
+ <include>**</include>
+ </includes>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ </excludes>
+ </testResource>
+ </testResources>
+ <plugins>
+ <plugin>
+ <inherited>true</inherited>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ <optimise>true</optimise>
+ <debug>true</debug>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-eclipse-plugin</artifactId>
+ <configuration>
+ <downloadSources>true</downloadSources>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.tuscany.maven.plugins</groupId>
+ <artifactId>maven-tuscany-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+ <properties>
+ <tuscany.version>2.0-SNAPSHOT</tuscany.version>
+ </properties>
+ </project> \ No newline at end of file
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/translator/src/main/java/demo/Translator.java b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/translator/src/main/java/demo/Translator.java
new file mode 100644
index 0000000000..11070032d1
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/translator/src/main/java/demo/Translator.java
@@ -0,0 +1,29 @@
+/*
+ * 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 demo;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Translator {
+
+ String toEnglish(String phrase);
+ String toGerman(String phrase);
+
+}
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/translator/src/main/java/demo/TranslatorImpl.java b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/translator/src/main/java/demo/TranslatorImpl.java
new file mode 100644
index 0000000000..19116bc047
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/translator/src/main/java/demo/TranslatorImpl.java
@@ -0,0 +1,95 @@
+/*
+ * 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 demo;
+
+import java.util.Arrays;
+import java.util.List;
+
+public class TranslatorImpl implements Translator {
+
+ static List<String> english = Arrays.asList(new String[]{
+ "Signs point to yes.",
+ "Yes.",
+ "Reply hazy, try again.",
+ "Without a doubt.",
+ "My sources say no.",
+ "As I see it, yes.",
+ "You may rely on it.",
+ "Concentrate and ask again.",
+ "Outlook not so good.",
+ "It is decidedly so.",
+ "Better not tell you now.",
+ "Very doubtful.",
+ "Yes - definitely.",
+ "It is certain.",
+ "Cannot predict now.",
+ "Most likely.",
+ "Ask again later.",
+ "My reply is no.",
+ "Outlook good.",
+ "Don't count on it.",
+ "You are a donkey"});
+
+ static List<String> german = Arrays.asList(new String[]{
+ "Zeichen zeigen auf \"Ja\".",
+ "Ja.",
+ "Antwort unklar, versuchen Sie es erneut.",
+ "Ohne Zweifel.",
+ "Meine Quellen sagen nein.",
+ "Wie ich es sehe, ja.",
+ "Sie koennen sich darauf verlassen.",
+ "Konzentrieren Sie sich und fragen Sie erneut.",
+ "Aussichten unguenstig.",
+ "Auf alle Faelle, ja.",
+ "Es ist besser, es Ihnen jetzt nicht zu sagen.",
+ "Sehr zweifelhaft.",
+ "Ja - auf jeden Fall.",
+ "Es ist sicher.",
+ "Kann jetzt nicht vorhergesagt werden.",
+ "Höchstwahrscheinlich.",
+ "Fragen Sie später noch einmal.",
+ "Meine Antwort ist nein.",
+ "Aussichten gut.",
+ "Verlassen Sie sich nicht darauf.",
+ "Du bist ein Esel"});
+
+ public String toEnglish(String phrase) {
+ int x = german.indexOf(phrase);
+ String translatedPhrase;
+ if (x == -1) {
+ translatedPhrase = phrase;
+ } else {
+ translatedPhrase = english.get(x);
+ }
+ System.out.println("Translated " + phrase + " : " + translatedPhrase);
+ return translatedPhrase;
+ }
+
+ public String toGerman(String phrase) {
+ int x = english.indexOf(phrase);
+ String translatedPhrase;
+ if (x == -1) {
+ translatedPhrase = phrase;
+ } else {
+ translatedPhrase = german.get(x);
+ }
+ System.out.println("Translated " + phrase + " : " + translatedPhrase);
+ return translatedPhrase;
+ }
+}
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/translator/src/main/resources/META-INF/sca-contribution.xml b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/translator/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..f06b6eb3c8
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/translator/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+<?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.
+-->
+<contribution xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:demo="http://demo">
+ <deployable composite="demo:translator"/>
+</contribution> \ No newline at end of file
diff --git a/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/translator/src/main/resources/translator.composite b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/translator/src/main/resources/translator.composite
new file mode 100644
index 0000000000..00ff94f2ed
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/applications/eightball-demo/translator/src/main/resources/translator.composite
@@ -0,0 +1,29 @@
+<?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"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://demo"
+ name="translator">
+
+ <component name="TranslatorComponent">
+ <implementation.java class="demo.TranslatorImpl"/>
+ </component>
+
+</composite>