From 5f6f915b67998984955846e5c752e0ebfeeb1054 Mon Sep 17 00:00:00 2001 From: fmoga Date: Fri, 11 Feb 2011 20:09:34 +0000 Subject: Update comet binding sample to demonstrate server push. git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1069940 13f79535-47bb-0310-9956-ffa450edef68 --- .../binding-comet/weather-webapp/pom.xml | 12 ++-- .../tuscany/sca/sample/comet/HumidityService.java | 8 ++- .../sca/sample/comet/PrecipitationService.java | 8 ++- .../sca/sample/comet/PrecipitationServiceImpl.java | 27 ++++++--- .../comet/TemperatureHumidityServiceImpl.java | 64 +++++++++++++++------- .../sca/sample/comet/TemperatureService.java | 12 ++-- .../src/main/webapp/WEB-INF/web.composite | 21 +++++-- .../weather-webapp/src/main/webapp/index.html | 6 +- 8 files changed, 110 insertions(+), 48 deletions(-) (limited to 'sca-java-2.x/contrib/samples/learning-more/binding-comet') diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/pom.xml b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/pom.xml index cb538d02a0..af69d0b1bb 100644 --- a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/pom.xml +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/pom.xml @@ -33,11 +33,6 @@ Apache Tuscany SCA Sample binding.comet Weather Webapp - - org.apache.tuscany.sca - tuscany-base-runtime - 2.0-SNAPSHOT - org.apache.tuscany.sca tuscany-binding-comet-runtime @@ -49,6 +44,13 @@ 6.0 provided + + org.apache.tuscany.sca + tuscany-base-runtime-pom + 2.0-SNAPSHOT + pom + compile + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/HumidityService.java b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/HumidityService.java index 00cbe73e82..1eae6802cd 100644 --- a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/HumidityService.java +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/HumidityService.java @@ -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 diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationService.java b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationService.java index afbdcbc8d7..a53fac5ed1 100644 --- a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationService.java +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationService.java @@ -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); } diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationServiceImpl.java index 4278ef975b..4798a3457e 100644 --- a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationServiceImpl.java +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationServiceImpl.java @@ -21,19 +21,32 @@ package org.apache.tuscany.sca.sample.comet; 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(); + } + } + } } diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureHumidityServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureHumidityServiceImpl.java index 55f935fa9f..41654a417b 100644 --- a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureHumidityServiceImpl.java +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureHumidityServiceImpl.java @@ -21,28 +21,50 @@ package org.apache.tuscany.sca.sample.comet; 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 { - - @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; - } - -} +@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(); + } + } + } + +} \ No newline at end of file diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureService.java b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureService.java index 092988213b..385107c6ac 100644 --- a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureService.java +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureService.java @@ -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 diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/WEB-INF/web.composite b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/WEB-INF/web.composite index 05b2ddd0d7..20d25fe527 100644 --- a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/WEB-INF/web.composite +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/WEB-INF/web.composite @@ -20,25 +20,38 @@ + name="Weather"> - + + + + - + + + + + - + + + + diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/index.html b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/index.html index 0387e67adb..43dcb607a2 100644 --- a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/index.html +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/webapp/index.html @@ -20,7 +20,7 @@ Apache Tuscany Comet Sample - +