summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2010-06-18 12:56:07 +0000
committerantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2010-06-18 12:56:07 +0000
commit60a59816e3ffc0472455fb2aa49f33f539c692eb (patch)
tree3dfccfc4bc619f3c2c6b46607ea660f98936abe9
parent8927aec11c6b77eedbf117443de70595bc842c9b (diff)
Add a simple callback sample to contrib area
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@955988 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--sca-java-2.x/contrib/samples/callback/pom.xml51
-rw-r--r--sca-java-2.x/contrib/samples/callback/src/main/java/sample/StockCallback.java29
-rw-r--r--sca-java-2.x/contrib/samples/callback/src/main/java/sample/StockClient.java24
-rw-r--r--sca-java-2.x/contrib/samples/callback/src/main/java/sample/StockClientImpl.java46
-rw-r--r--sca-java-2.x/contrib/samples/callback/src/main/java/sample/StockService.java28
-rw-r--r--sca-java-2.x/contrib/samples/callback/src/main/java/sample/StockServiceImpl.java48
-rw-r--r--sca-java-2.x/contrib/samples/callback/src/main/resources/callback.composite34
-rw-r--r--sca-java-2.x/contrib/samples/callback/src/main/webapp/WEB-INF/proposal_web.composite41
-rw-r--r--sca-java-2.x/contrib/samples/callback/src/main/webapp/WEB-INF/web.composite34
-rw-r--r--sca-java-2.x/contrib/samples/callback/src/main/webapp/WEB-INF/web.xml44
-rw-r--r--sca-java-2.x/contrib/samples/callback/src/main/webapp/proposal_stock.html40
-rw-r--r--sca-java-2.x/contrib/samples/callback/src/main/webapp/stock.html34
-rw-r--r--sca-java-2.x/contrib/samples/callback/src/test/java/sample/SCTestCase.java35
13 files changed, 488 insertions, 0 deletions
diff --git a/sca-java-2.x/contrib/samples/callback/pom.xml b/sca-java-2.x/contrib/samples/callback/pom.xml
new file mode 100644
index 0000000000..95ef724158
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/callback/pom.xml
@@ -0,0 +1,51 @@
+<?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-sca</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>sample-callback</artifactId>
+ <name>Apache Tuscany SCA Sample Callback</name>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca.shades</groupId>
+ <artifactId>tuscany-base-nodep</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty</artifactId>
+ <version>6.1.19</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+</project>
+
diff --git a/sca-java-2.x/contrib/samples/callback/src/main/java/sample/StockCallback.java b/sca-java-2.x/contrib/samples/callback/src/main/java/sample/StockCallback.java
new file mode 100644
index 0000000000..82a52049a9
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/callback/src/main/java/sample/StockCallback.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 sample;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface StockCallback {
+
+ void valueCallback(String v);
+
+}
diff --git a/sca-java-2.x/contrib/samples/callback/src/main/java/sample/StockClient.java b/sca-java-2.x/contrib/samples/callback/src/main/java/sample/StockClient.java
new file mode 100644
index 0000000000..ed6c138fc0
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/callback/src/main/java/sample/StockClient.java
@@ -0,0 +1,24 @@
+/*
+ * 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 sample;
+
+public interface StockClient {
+ void doit();
+}
diff --git a/sca-java-2.x/contrib/samples/callback/src/main/java/sample/StockClientImpl.java b/sca-java-2.x/contrib/samples/callback/src/main/java/sample/StockClientImpl.java
new file mode 100644
index 0000000000..51b33d046e
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/callback/src/main/java/sample/StockClientImpl.java
@@ -0,0 +1,46 @@
+/*
+ * 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 sample;
+
+import org.oasisopen.sca.annotation.EagerInit;
+import org.oasisopen.sca.annotation.Init;
+import org.oasisopen.sca.annotation.Reference;
+import org.oasisopen.sca.annotation.Scope;
+
+@EagerInit
+@Scope("COMPOSITE")
+public class StockClientImpl implements StockClient, StockCallback {
+
+ @Reference
+ public StockService service;
+
+ @Override
+ @Init
+ public void doit() {
+ String x = service.getValue("foo");
+ System.out.println("doit: " + x);
+ }
+
+ @Override
+ public void valueCallback(String v) {
+ System.out.println("StockClientImpl.valueCallback: " + v);
+ }
+
+}
diff --git a/sca-java-2.x/contrib/samples/callback/src/main/java/sample/StockService.java b/sca-java-2.x/contrib/samples/callback/src/main/java/sample/StockService.java
new file mode 100644
index 0000000000..2ac90d429d
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/callback/src/main/java/sample/StockService.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 sample;
+
+import org.oasisopen.sca.annotation.Callback;
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+@Callback(StockCallback.class)
+public interface StockService {
+ String getValue(String symbol);
+}
diff --git a/sca-java-2.x/contrib/samples/callback/src/main/java/sample/StockServiceImpl.java b/sca-java-2.x/contrib/samples/callback/src/main/java/sample/StockServiceImpl.java
new file mode 100644
index 0000000000..a98a6c5ce1
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/callback/src/main/java/sample/StockServiceImpl.java
@@ -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.
+ */
+package sample;
+
+import org.oasisopen.sca.annotation.Callback;
+
+public class StockServiceImpl implements StockService {
+
+ @Callback
+ public StockCallback callback;
+
+ public String getValue(String symbol) {
+
+ Runnable r = new Runnable() {
+ public void run() {
+ while (true) {
+ callback.valueCallback("bla");
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ };
+ Thread t = new Thread(r);
+ t.start();
+
+ return "x";
+ }
+
+}
diff --git a/sca-java-2.x/contrib/samples/callback/src/main/resources/callback.composite b/sca-java-2.x/contrib/samples/callback/src/main/resources/callback.composite
new file mode 100644
index 0000000000..02ac4ae410
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/callback/src/main/resources/callback.composite
@@ -0,0 +1,34 @@
+<?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.1"
+ targetNamespace="http://samples"
+ name="Stock">
+
+ <component name="StockComponent">
+ <implementation.java class="sample.StockServiceImpl"/>
+ </component>
+
+ <component name="StockClient">
+ <implementation.java class="sample.StockClientImpl"/>
+ <reference name="service" target="StockComponent" />
+ </component>
+
+</composite>
diff --git a/sca-java-2.x/contrib/samples/callback/src/main/webapp/WEB-INF/proposal_web.composite b/sca-java-2.x/contrib/samples/callback/src/main/webapp/WEB-INF/proposal_web.composite
new file mode 100644
index 0000000000..7dc8aabea6
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/callback/src/main/webapp/WEB-INF/proposal_web.composite
@@ -0,0 +1,41 @@
+<?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.1"
+ targetNamespace="http://samples"
+ name="Stock">
+
+ <component name="WebPage">
+ <implementation.?/>
+ <callback>
+ <binding.? url="/stock/**" method="callbackJsMethod"/>
+ </callback>
+ </component>
+
+ <component name="Servlet">
+ <implementation.web web-uri=""/>
+ <reference name="service" target="StockComponent"/>
+ </component>
+
+ <component name="StockComponent">
+ <implementation.java class="sample.StockServiceImpl"/>
+ </component>
+
+</composite>
diff --git a/sca-java-2.x/contrib/samples/callback/src/main/webapp/WEB-INF/web.composite b/sca-java-2.x/contrib/samples/callback/src/main/webapp/WEB-INF/web.composite
new file mode 100644
index 0000000000..6a2abb920b
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/callback/src/main/webapp/WEB-INF/web.composite
@@ -0,0 +1,34 @@
+<?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.1"
+ targetNamespace="http://samples"
+ name="Stock">
+
+ <component name="Servlet">
+ <implementation.web web-uri=""/>
+ <reference name="service" target="StockComponent"/>
+ </component>
+
+ <component name="StockComponent">
+ <implementation.java class="sample.StockServiceImpl"/>
+ </component>
+
+</composite>
diff --git a/sca-java-2.x/contrib/samples/callback/src/main/webapp/WEB-INF/web.xml b/sca-java-2.x/contrib/samples/callback/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000000..031f0d110f
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/callback/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>Apache Tuscany Asynchronous Servlet Sample</display-name>
+
+ <listener><listener-class>org.apache.tuscany.sca.host.webapp.TuscanyContextListener</listener-class></listener>
+
+ <servlet>
+ <servlet-name>AsyncServlet</servlet-name>
+ <servlet-class>sample.StockServlet</servlet-class>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>AsyncServlet</servlet-name>
+ <url-pattern>/AsyncServlet</url-pattern>
+ </servlet-mapping>
+
+ <welcome-file-list id="WelcomeFileList">
+ <welcome-file>stock.html</welcome-file>
+ </welcome-file-list>
+
+</web-app>
+
diff --git a/sca-java-2.x/contrib/samples/callback/src/main/webapp/proposal_stock.html b/sca-java-2.x/contrib/samples/callback/src/main/webapp/proposal_stock.html
new file mode 100644
index 0000000000..975ed0ed57
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/callback/src/main/webapp/proposal_stock.html
@@ -0,0 +1,40 @@
+<!--
+ * 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>Apache Tuscany Asynchronous Servlet Sample</title>
+ <script type="text/javascript" src="org.apache.tuscany.callbackListener.js"></script>
+
+ <script language="JavaScript">
+ function callbackJsMethod(response) {
+ // process received response
+ }
+ </script>
+</head>
+
+<body>
+ <h2>Apache Tuscany Asynchronous Servlet Sample</h2>
+
+ <h3>Stock Monitor</h3>
+
+ <input type="button" value="Start monitoring" onclick="">
+</body>
+
+</html> \ No newline at end of file
diff --git a/sca-java-2.x/contrib/samples/callback/src/main/webapp/stock.html b/sca-java-2.x/contrib/samples/callback/src/main/webapp/stock.html
new file mode 100644
index 0000000000..394bee04b5
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/callback/src/main/webapp/stock.html
@@ -0,0 +1,34 @@
+<!--
+ * 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>Apache Tuscany Asynchronous Servlet Sample</title>
+</head>
+
+<body>
+
+<h2>Apache Tuscany Asynchronous Servlet Sample</h2>
+
+<h3>Stock Monitor</h3>
+
+<input type="button" value="Start monitoring" onclick="">
+
+</body>
+</html> \ No newline at end of file
diff --git a/sca-java-2.x/contrib/samples/callback/src/test/java/sample/SCTestCase.java b/sca-java-2.x/contrib/samples/callback/src/test/java/sample/SCTestCase.java
new file mode 100644
index 0000000000..40c3a631fc
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/callback/src/test/java/sample/SCTestCase.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 sample;
+
+import org.apache.tuscany.sca.node.Node;
+import org.apache.tuscany.sca.node.NodeFactory;
+import org.junit.Test;
+
+public class SCTestCase {
+
+ @Test
+ public void test1() throws InterruptedException {
+ Node node = NodeFactory.newInstance().createNode("callback.composite", new String[]{"target/classes"});
+ node.start();
+ Thread.sleep(10000);
+ node.stop();
+ }
+}