diff options
author | rsivaram <rsivaram@13f79535-47bb-0310-9956-ffa450edef68> | 2008-11-12 13:16:06 +0000 |
---|---|---|
committer | rsivaram <rsivaram@13f79535-47bb-0310-9956-ffa450edef68> | 2008-11-12 13:16:06 +0000 |
commit | af0cfc49958afa2ef6c44384cb5d5d8ca4c516da (patch) | |
tree | d6d049845ae04a9f21d67513bde2ee5edf4cf363 /sandbox/event/samples/event-jms/src | |
parent | 29f3940a57d823817db96b41ccd1e9c7a88c4adc (diff) |
Event prototype: event binding with JMS-based default binding
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@713362 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to '')
8 files changed, 141 insertions, 3 deletions
diff --git a/sandbox/event/samples/event-jms/src/main/java/weather/WeatherPublisher.java b/sandbox/event/samples/event-jms/src/main/java/weather/WeatherPublisher.java index c2de66e7d1..c67314c65b 100644 --- a/sandbox/event/samples/event-jms/src/main/java/weather/WeatherPublisher.java +++ b/sandbox/event/samples/event-jms/src/main/java/weather/WeatherPublisher.java @@ -28,5 +28,7 @@ public interface WeatherPublisher { @EventTypes("ExampleEvent") void publishWeatherReport(String report); + + void publishWeatherWarning(WeatherWarning warning); } diff --git a/sandbox/event/samples/event-jms/src/main/java/weather/WeatherPublisherComponent.java b/sandbox/event/samples/event-jms/src/main/java/weather/WeatherPublisherComponent.java index d976454cb9..c209b39b94 100644 --- a/sandbox/event/samples/event-jms/src/main/java/weather/WeatherPublisherComponent.java +++ b/sandbox/event/samples/event-jms/src/main/java/weather/WeatherPublisherComponent.java @@ -36,8 +36,16 @@ public class WeatherPublisherComponent implements WeatherService { public void start() { System.out.println("weatherPublisher code - start() called"); try { + + WeatherWarning warning = new WeatherWarning(); + warning.setWarning("Heavy rains expected"); + warning.setReportTime(new Date().toString()); + weatherPublisher.publishWeatherWarning(warning); + + for (int i = 0; i < 1; i++) { generateWeatherReport(); + Thread.sleep(500); } } catch (InterruptedException e) { diff --git a/sandbox/event/samples/event-jms/src/main/java/weather/WeatherSubscriber.java b/sandbox/event/samples/event-jms/src/main/java/weather/WeatherSubscriber.java new file mode 100644 index 0000000000..c8cfa06f7a --- /dev/null +++ b/sandbox/event/samples/event-jms/src/main/java/weather/WeatherSubscriber.java @@ -0,0 +1,26 @@ +/* + * 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 weather; + +/** + * The interface for the weather service + */ +public interface WeatherSubscriber { + public int[] getMessageList(); +} diff --git a/sandbox/event/samples/event-jms/src/main/java/weather/WeatherSubscriberComponent.java b/sandbox/event/samples/event-jms/src/main/java/weather/WeatherSubscriberComponent.java index 89920dc31b..314f245e3e 100644 --- a/sandbox/event/samples/event-jms/src/main/java/weather/WeatherSubscriberComponent.java +++ b/sandbox/event/samples/event-jms/src/main/java/weather/WeatherSubscriberComponent.java @@ -23,19 +23,49 @@ import java.util.Date; import org.osoa.sca.annotations.Consumer; import org.osoa.sca.annotations.Remotable; import org.osoa.sca.annotations.EventTypes; +import org.osoa.sca.annotations.Scope; +import org.osoa.sca.annotations.Service; /** * The WeatherService subscriber implementation - receives weather reports and prints it on stdout */ @Remotable -public class WeatherSubscriberComponent { +@Scope("COMPOSITE") +@Service(WeatherSubscriber.class) +public class WeatherSubscriberComponent implements WeatherSubscriber { + + private int[] messagesReceivedList = new int[3]; @Consumer(name="weatherSubscriber") @EventTypes("ExampleEvent") public void onWeather(String report) { System.out.println("Weather report received at " + new Date() + ": " + report); + + messagesReceivedList[0]++; + } + + + @Consumer(name="weatherSubscriber") + @EventTypes("WeatherWarning") + public void onWeatherWarning(WeatherWarning warning) { + System.out.println("WEATHER WARNING received at " + new Date() + ": " + warning); + + messagesReceivedList[1]++; + } + + @Consumer(name="weatherSubscriber") + public void onWeatherInfo(String info) { + System.out.println("Weather info received at " + new Date() + ": " + info); + + messagesReceivedList[2]++; } + + public int[] getMessageList() { + return messagesReceivedList; + } + + }
\ No newline at end of file diff --git a/sandbox/event/samples/event-jms/src/main/java/weather/WeatherWarning.java b/sandbox/event/samples/event-jms/src/main/java/weather/WeatherWarning.java new file mode 100644 index 0000000000..72b328bab2 --- /dev/null +++ b/sandbox/event/samples/event-jms/src/main/java/weather/WeatherWarning.java @@ -0,0 +1,32 @@ +package weather; + +import java.io.Serializable; + +import org.osoa.sca.annotations.EventType; + +@EventType(name="WeatherWarning") +public class WeatherWarning implements Serializable { + + private static final long serialVersionUID = 1; + + private String reportTime; + private String warning; + + public String getReportTime() { + return reportTime; + } + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + public String getWarning() { + return warning; + } + public void setWarning(String warning) { + this.warning = warning; + } + + public String toString() { + return warning; + } + +} diff --git a/sandbox/event/samples/event-jms/src/main/resources/weatherPublisher.composite b/sandbox/event/samples/event-jms/src/main/resources/weatherPublisher.composite index 89064a7f0d..12cc36da90 100644 --- a/sandbox/event/samples/event-jms/src/main/resources/weatherPublisher.composite +++ b/sandbox/event/samples/event-jms/src/main/resources/weatherPublisher.composite @@ -31,10 +31,14 @@ <producer name="weatherPublisher" eventTypes="WeatherEvent">
+ <tuscany:binding.event/>
+ <!--
<binding.jms initialContextFactory="org.apache.activemq.jndi.ActiveMQInitialContextFactory"
- jndiURL="tcp://localhost:61619">
+ jndiURL="tcp://localhost:61619"
+ messageProcessor="org.apache.tuscany.sca.binding.jms.provider.ObjectMessageProcessor">
<destination name="WeatherQueue" create="ifnotexist"/>
</binding.jms>
+ -->
</producer>
</component>
@@ -51,6 +55,9 @@ <component name="WeatherSubscriberComponent2">
<implementation.java class="weather.WeatherSubscriberComponent"/>
+ <service name="WeatherSubscriber">
+ <interface.java interface="weather.WeatherSubscriber"/>
+ </service>
<consumer name="weatherSubscriber"/>
</component>
diff --git a/sandbox/event/samples/event-jms/src/main/resources/weatherSubscriber.composite b/sandbox/event/samples/event-jms/src/main/resources/weatherSubscriber.composite index 2166def160..09f0b741e3 100644 --- a/sandbox/event/samples/event-jms/src/main/resources/weatherSubscriber.composite +++ b/sandbox/event/samples/event-jms/src/main/resources/weatherSubscriber.composite @@ -26,12 +26,20 @@ <component name="WeatherSubscriberComponent">
<implementation.java class="weather.WeatherSubscriberComponent"/>
+ <service name="WeatherSubscriber">
+ <interface.java interface="weather.WeatherSubscriber"/>
+ </service>
+
<consumer name="weatherSubscriber" eventTypes="WeatherEvent">
+ <tuscany:binding.event/>
+ <!--
<binding.jms initialContextFactory="org.apache.activemq.jndi.ActiveMQInitialContextFactory"
- jndiURL="tcp://localhost:61619">
+ jndiURL="tcp://localhost:61619"
+ messageProcessor="org.apache.tuscany.sca.binding.jms.provider.ObjectMessageProcessor">
<destination name="WeatherQueue" create="ifnotexist"/>
</binding.jms>
+ -->
</consumer>
</component>
diff --git a/sandbox/event/samples/event-jms/src/test/java/weather/WeatherTestCase.java b/sandbox/event/samples/event-jms/src/test/java/weather/WeatherTestCase.java index 71162c7538..5293ec64f0 100644 --- a/sandbox/event/samples/event-jms/src/test/java/weather/WeatherTestCase.java +++ b/sandbox/event/samples/event-jms/src/test/java/weather/WeatherTestCase.java @@ -20,6 +20,8 @@ package weather; +import junit.framework.Assert; + import org.apache.activemq.broker.BrokerService; import org.apache.tuscany.sca.host.embedded.SCADomain; import org.junit.After; @@ -38,6 +40,8 @@ public class WeatherTestCase { private WeatherService weatherService; private WeatherService weatherService2; + private WeatherSubscriber weatherSubscriber; + private WeatherSubscriber weatherSubscriber2; private SCADomain weatherSubscriberDomain; private SCADomain weatherPublisherDomain; @@ -52,6 +56,8 @@ public class WeatherTestCase { weatherSubscriberDomain = SCADomain.newInstance("weatherSubscriber.composite"); weatherService = weatherPublisherDomain.getService(WeatherService.class, "WeatherPublisherComponent"); weatherService2 = weatherPublisherDomain.getService(WeatherService.class, "WeatherPublisherComponent2"); + weatherSubscriber = weatherSubscriberDomain.getService(WeatherSubscriber.class, "WeatherSubscriberComponent/WeatherSubscriber"); + weatherSubscriber2 = weatherPublisherDomain.getService(WeatherSubscriber.class, "WeatherSubscriberComponent2/WeatherSubscriber"); } catch (Throwable e) { e.printStackTrace(); } @@ -59,8 +65,27 @@ public class WeatherTestCase { @Test public void runWeatherTest() throws Exception { + weatherService.start(); weatherService2.start(); + + Thread.sleep(2000); + + int[] messageList = weatherSubscriber.getMessageList(); + Assert.assertNotNull("Message list is null.", messageList); + Assert.assertEquals("Message list invalid.", 3, messageList.length); + int[] expectedMessages = {0, 1, 1}; + for (int i = 0; i < messageList.length; i++) { + Assert.assertEquals("Message type " + i + " not received correctly.", expectedMessages[i], messageList[i]); + } + + int[] messageList2 = weatherSubscriber2.getMessageList(); + Assert.assertNotNull("Message list is null.", messageList2); + Assert.assertEquals("Message list invalid.", 3, messageList2.length); + int[] expectedMessages2 = {1, 0, 0}; + for (int i = 0; i < messageList2.length; i++) { + Assert.assertEquals("Message type " + i + " not received correctly.", expectedMessages2[i], messageList2[i]); + } } |