You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by fm...@apache.org on 2011/02/11 21:09:34 UTC

svn commit: r1069940 - in /tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp: ./ src/main/java/org/apache/tuscany/sca/sample/comet/ src/main/webapp/ src/main/webapp/WEB-INF/

Author: fmoga
Date: Fri Feb 11 20:09:34 2011
New Revision: 1069940

URL: http://svn.apache.org/viewvc?rev=1069940&view=rev
Log:
Update comet binding sample to demonstrate server push.

Modified:
    tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/pom.xml
    tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/HumidityService.java
    tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationService.java
    tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationServiceImpl.java
    tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureHumidityServiceImpl.java
    tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureService.java
    tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/WEB-INF/web.composite
    tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/index.html

Modified: tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/pom.xml?rev=1069940&r1=1069939&r2=1069940&view=diff
==============================================================================
--- tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/pom.xml (original)
+++ tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/pom.xml Fri Feb 11 20:09:34 2011
@@ -35,11 +35,6 @@
 	<dependencies>
 		<dependency>
 			<groupId>org.apache.tuscany.sca</groupId>
-			<artifactId>tuscany-base-runtime</artifactId>
-			<version>2.0-SNAPSHOT</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.tuscany.sca</groupId>
 			<artifactId>tuscany-binding-comet-runtime</artifactId>
 			<version>2.0-SNAPSHOT</version>
 		</dependency>
@@ -49,6 +44,13 @@
 			<version>6.0</version>
 			<scope>provided</scope>
 		</dependency>
+		<dependency>
+			<groupId>org.apache.tuscany.sca</groupId>
+			<artifactId>tuscany-base-runtime-pom</artifactId>
+			<version>2.0-SNAPSHOT</version>
+			<type>pom</type>
+			<scope>compile</scope>
+		</dependency>
 	</dependencies>
 	
 </project>

Modified: tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/HumidityService.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/HumidityService.java?rev=1069940&r1=1069939&r2=1069940&view=diff
==============================================================================
--- tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/HumidityService.java (original)
+++ tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/HumidityService.java Fri Feb 11 20:09:34 2011
@@ -19,13 +19,15 @@
 
 package org.apache.tuscany.sca.sample.comet;
 
+import org.apache.tuscany.sca.binding.comet.runtime.callback.CometCallback;
 import org.apache.tuscany.sca.sample.comet.model.Location;
-import org.apache.tuscany.sca.sample.comet.model.Response;
+import org.oasisopen.sca.annotation.Callback;
 import org.oasisopen.sca.annotation.Remotable;
 
 @Remotable
+@Callback(CometCallback.class)
 public interface HumidityService {
 
-    Response getHumidity(Location location);
+	void getHumidity(Location location);
 
-}
+}
\ No newline at end of file

Modified: tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationService.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationService.java?rev=1069940&r1=1069939&r2=1069940&view=diff
==============================================================================
--- tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationService.java (original)
+++ tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationService.java Fri Feb 11 20:09:34 2011
@@ -19,13 +19,17 @@
 
 package org.apache.tuscany.sca.sample.comet;
 
+import org.apache.tuscany.sca.binding.comet.runtime.callback.CometCallback;
 import org.apache.tuscany.sca.sample.comet.model.Location;
-import org.apache.tuscany.sca.sample.comet.model.Response;
+import org.oasisopen.sca.annotation.Callback;
+import org.oasisopen.sca.annotation.OneWay;
 import org.oasisopen.sca.annotation.Remotable;
 
 @Remotable
+@Callback(CometCallback.class)
 public interface PrecipitationService {
 
-    Response getPrecipitation(Location location);
+	@OneWay
+	void getPrecipitation(Location location);
 
 }

Modified: tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationServiceImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationServiceImpl.java?rev=1069940&r1=1069939&r2=1069940&view=diff
==============================================================================
--- tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationServiceImpl.java (original)
+++ tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationServiceImpl.java Fri Feb 11 20:09:34 2011
@@ -21,19 +21,32 @@ package org.apache.tuscany.sca.sample.co
 
 import java.util.Date;
 
+import org.apache.tuscany.sca.binding.comet.runtime.callback.CometCallback;
 import org.apache.tuscany.sca.sample.comet.model.Location;
 import org.apache.tuscany.sca.sample.comet.model.Response;
+import org.oasisopen.sca.annotation.Callback;
 import org.oasisopen.sca.annotation.Service;
 
 @Service(PrecipitationService.class)
 public class PrecipitationServiceImpl implements PrecipitationService {
 
-    @Override
-    public Response getPrecipitation(final Location location) {
-        final Response response = new Response();
-        response.setDate(new Date());
-        response.setData(Helper.randomInt(100) + "%");
-        return response;
-    }
+	@Callback
+	protected CometCallback callback;
+
+	@Override
+	public void getPrecipitation(final Location location) {
+		while (callback.isClientConnected()) {
+			Response response = new Response();
+			response.setDate(new Date());
+			response.setData(Helper.randomInt(100) + "%");
+
+			callback.sendResponse(response);
+			try {
+				Thread.sleep(1000);
+			} catch (InterruptedException e) {
+				e.printStackTrace();
+			}
+		}
+	}
 
 }

Modified: tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureHumidityServiceImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureHumidityServiceImpl.java?rev=1069940&r1=1069939&r2=1069940&view=diff
==============================================================================
--- tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureHumidityServiceImpl.java (original)
+++ tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureHumidityServiceImpl.java Fri Feb 11 20:09:34 2011
@@ -21,28 +21,50 @@ package org.apache.tuscany.sca.sample.co
 
 import java.util.Date;
 
+import org.apache.tuscany.sca.binding.comet.runtime.callback.CometCallback;
 import org.apache.tuscany.sca.sample.comet.model.Location;
 import org.apache.tuscany.sca.sample.comet.model.Response;
+import org.oasisopen.sca.annotation.Callback;
 import org.oasisopen.sca.annotation.Service;
 
-@Service({TemperatureService.class, HumidityService.class})
-public class TemperatureHumidityServiceImpl implements TemperatureService, HumidityService {
+@Service({ TemperatureService.class, HumidityService.class })
+public class TemperatureHumidityServiceImpl implements TemperatureService,
+		HumidityService {
+
+	@Callback
+	protected CometCallback callback;
+
+	@Override
+	public void getHumidity(final Location location) {
+		while (callback.isClientConnected()) {
+			final Response response = new Response();
+			response.setDate(new Date());
+			response.setData(Helper.randomInt(90) + "%");
+			callback.sendResponse(response);
+			try {
+				Thread.sleep(5000);
+			} catch (InterruptedException e) {
+				e.printStackTrace();
+			}
+		}
+	}
+
+	@Override
+	public void getTemperature(final Location location, final int scale) {
+		while (callback.isClientConnected()) {
+			final Response response = new Response();
+			response.setDate(new Date());
+			final String data = ""
+					+ Helper.randomInt(scale == TemperatureService.CELSIUS ? 40
+							: 150);
+			response.setData(data);
+			callback.sendResponse(response);
+			try {
+				Thread.sleep(3000);
+			} catch (InterruptedException e) {
+				e.printStackTrace();
+			}
+		}
+	}
 
-    @Override
-    public Response getHumidity(final Location location) {
-        final Response response = new Response();
-        response.setDate(new Date());
-        response.setData(Helper.randomInt(90) + "%");
-        return response;
-    }
-
-    @Override
-    public Response getTemperature(final Location location, final int scale) {
-        final Response response = new Response();
-        response.setDate(new Date());
-        final String data = "" + Helper.randomInt(scale == TemperatureService.CELSIUS ? 40 : 150);
-        response.setData(data);
-        return response;
-    }
-
-}
+}
\ No newline at end of file

Modified: tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureService.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureService.java?rev=1069940&r1=1069939&r2=1069940&view=diff
==============================================================================
--- tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureService.java (original)
+++ tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureService.java Fri Feb 11 20:09:34 2011
@@ -19,16 +19,18 @@
 
 package org.apache.tuscany.sca.sample.comet;
 
+import org.apache.tuscany.sca.binding.comet.runtime.callback.CometCallback;
 import org.apache.tuscany.sca.sample.comet.model.Location;
-import org.apache.tuscany.sca.sample.comet.model.Response;
+import org.oasisopen.sca.annotation.Callback;
 import org.oasisopen.sca.annotation.Remotable;
 
 @Remotable
+@Callback(CometCallback.class)
 public interface TemperatureService {
 
-    public static final int CELSIUS = 1;
-    public static final int FAHRENHEIT = 2;
+	public static final int CELSIUS = 1;
+	public static final int FAHRENHEIT = 2;
 
-    Response getTemperature(Location location, int scale);
+	void getTemperature(Location location, int scale);
 
-}
+}
\ No newline at end of file

Modified: tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/WEB-INF/web.composite
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/WEB-INF/web.composite?rev=1069940&r1=1069939&r2=1069940&view=diff
==============================================================================
--- tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/WEB-INF/web.composite (original)
+++ tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/WEB-INF/web.composite Fri Feb 11 20:09:34 2011
@@ -20,25 +20,38 @@
 <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">
+           name="Weather">
 
 	<component name="c1">
 		<implementation.java class="org.apache.tuscany.sca.sample.comet.TemperatureHumidityServiceImpl"/>
 		<service name="TemperatureService">
-			<interface.java interface="org.apache.tuscany.sca.sample.comet.TemperatureService"/>
+			<interface.java interface="org.apache.tuscany.sca.sample.comet.TemperatureService"
+				callbackInterface="org.apache.tuscany.sca.binding.comet.runtime.callback.CometCallback"/>
 			<tuscany:binding.comet/>
+			<callback>
+				<tuscany:binding.comet/>
+			</callback>
 		</service>
 		<service name="HumidityService">
-			<interface.java interface="org.apache.tuscany.sca.sample.comet.HumidityService"/>
+			<interface.java interface="org.apache.tuscany.sca.sample.comet.HumidityService"
+				callbackInterface="org.apache.tuscany.sca.binding.comet.runtime.callback.CometCallback"/>
 			<tuscany:binding.comet/>
+			<callback>
+				<tuscany:binding.comet/>
+			</callback>
 		</service>
 	</component>
 	
+
 	<component name="c2">
 		<implementation.java class="org.apache.tuscany.sca.sample.comet.PrecipitationServiceImpl"/>
 		<service name="PrecipitationService">
-			<interface.java interface="org.apache.tuscany.sca.sample.comet.PrecipitationService"/>
+			<interface.java interface="org.apache.tuscany.sca.sample.comet.PrecipitationService" 
+				callbackInterface="org.apache.tuscany.sca.binding.comet.runtime.callback.CometCallback"/>
 			<tuscany:binding.comet/>
+			<callback>
+				<tuscany:binding.comet/>
+			</callback>
 		</service>
 	</component>
 	

Modified: tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/index.html
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/index.html?rev=1069940&r1=1069939&r2=1069940&view=diff
==============================================================================
--- tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/index.html (original)
+++ tuscany/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/index.html Fri Feb 11 20:09:34 2011
@@ -20,7 +20,7 @@
 	<head>
 		<title>Apache Tuscany Comet Sample</title>
 		<!-- Tuscany Comet Javascript Toolkit is dependent on jQuery -->
-		<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
+		<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
 		<script type="text/javascript" src="org.apache.tuscany.sca.cometComponentContext.js"></script>
 		<script type="text/javascript">
 		$(document).ready(function()
@@ -67,18 +67,22 @@
 
 			document.getElementById('tempCButton').onclick = function(event) {
 				SCA.CometComponentContext.TemperatureService.getTemperature(location, 1, updateTempC);
+				document.getElementById('tempCButton').disabled = true;
 			}
 
 			document.getElementById('tempFButton').onclick = function(event) {
 				SCA.CometComponentContext.TemperatureService.getTemperature(location, 2, updateTempF);
+				document.getElementById('tempFButton').disabled = true;
 			}
 
 			document.getElementById('humButton').onclick = function(event) {
 				SCA.CometComponentContext.HumidityService.getHumidity(location, updateHum);
+				document.getElementById('humButton').disabled = true;
 			}
 
 			document.getElementById('precipButton').onclick = function(event) {
 				SCA.CometComponentContext.PrecipitationService.getPrecipitation(location, updatePrecip);
+				document.getElementById('precipButton').disabled = true;
 			}
 		});