summaryrefslogtreecommitdiffstats
path: root/java/sca-contrib/samples/binding-notification-producer
diff options
context:
space:
mode:
Diffstat (limited to 'java/sca-contrib/samples/binding-notification-producer')
-rw-r--r--java/sca-contrib/samples/binding-notification-producer/README133
-rw-r--r--java/sca-contrib/samples/binding-notification-producer/binding-notification-producer.pngbin0 -> 21631 bytes
-rw-r--r--java/sca-contrib/samples/binding-notification-producer/build.xml75
-rw-r--r--java/sca-contrib/samples/binding-notification-producer/pom.xml127
-rw-r--r--java/sca-contrib/samples/binding-notification-producer/src/main/java/notification/producer/TestCaseProducer.java24
-rw-r--r--java/sca-contrib/samples/binding-notification-producer/src/main/java/notification/producer/TrafficAdvisory.java30
-rw-r--r--java/sca-contrib/samples/binding-notification-producer/src/main/java/notification/producer/TrafficAdvisoryProducer.java36
-rw-r--r--java/sca-contrib/samples/binding-notification-producer/src/main/java/notification/producer/TrafficAdvisoryServer.java57
-rw-r--r--java/sca-contrib/samples/binding-notification-producer/src/main/resources/TrafficAdvisoryNotification.componentType34
-rw-r--r--java/sca-contrib/samples/binding-notification-producer/src/main/resources/TrafficAdvisoryNotification.composite44
-rw-r--r--java/sca-contrib/samples/binding-notification-producer/src/main/resources/wsdl/TrafficAdvisory.wsdl50
-rw-r--r--java/sca-contrib/samples/binding-notification-producer/src/test/java/notification/producer/TrafficAdvisoryTestCase.java78
12 files changed, 688 insertions, 0 deletions
diff --git a/java/sca-contrib/samples/binding-notification-producer/README b/java/sca-contrib/samples/binding-notification-producer/README
new file mode 100644
index 0000000000..c5f284d4c5
--- /dev/null
+++ b/java/sca-contrib/samples/binding-notification-producer/README
@@ -0,0 +1,133 @@
+Notification Producer Binding Sample
+===============================
+
+This sample illustrates the use of <binding.notification/> with a
+remote producer.
+
+The README in the samples directory (the directory above this) provides
+general instructions about building and running samples. Take a look there
+first.
+
+Sample Overview
+---------------
+
+This sample illustrates the use of a notification producer that is located in a
+separate (and remote) composite with respect to any consumers. As such, this sample
+is run in conjunction with the binding-notification-consumer sample, the
+binding-notification-broker sample, or both. Take a look at the composite file
+or the .svg file which shows the composite file in pictorial form. The composite
+reference, referred to by the notification component, has a <binding.notification/>
+that handles the remote communication. This binding includes an 'ntm' attribute
+that refers to the notification type manager, which manages the connectivity of
+producers, consumers and brokers, and which (for this sample) is assumed to be
+running on http://localhost:8083. The ntm is a system component that is included in
+and runs as part of the binding-notification module.
+This sample also illustrates the use of a wsdl interface in the notification
+component's <implementation.notification/>. This allows messages sent and received
+via <binding.notification/> to be transported as literal xml over http.
+
+Building And Running The Sample Using Ant
+-----------------------------------------
+With the binary distribution the sample can be built and run using Ant as
+follows
+
+cd binding-notification-producer
+ant compile
+ant run
+
+You should see the following output from the run target.
+
+run:
+ [java] Sep 14, 2007 10:31:45 AM org.apache.tuscany.sca.http.jetty.JettyServer addServletMapping
+ [java] INFO: Added Servlet mapping: http://localhost:8083/ntm/trafficAdvisory
+ [java] Sep 14, 2007 10:31:45 AM org.apache.tuscany.sca.http.jetty.JettyServer addServletMapping
+ [java] INFO: Added Servlet mapping: http://localhost:8083/producer/trafficAdvisory
+
+Building And Running The Sample Using Maven
+-------------------------------------------
+With either the binary or source distributions the sample can be built and run
+using Maven as follows.
+
+cd binding-notification-producer
+mvn
+
+You should see the following output from the test phase.
+
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running notification.producer.TrafficAdvisoryTestCase
+Only instantiating and closing domain ...
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.252 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+
+This shows that the Junit test cases have run successfully.
+
+Sample Usage
+------------
+
+This sample is run using the tuscany binary distribution. To run it, navigate to this sample's directory and
+
+on Wondows, use following command:
+
+java -Dnotification.httpPort=8083 -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-binding-notification-producer.jar notification.producer.TrafficAdvisoryServer
+
+on *nix, use following command:
+
+java -Dnotification.httpPort=8083 -cp ../../lib/tuscany-sca-manifest.jar:target/sample-binding-notification-producer.jar notification.producer.TrafficAdvisoryServer
+
+this should bring up the following prompt:
+
+Send a report value, ^C or <end> to end
+
+at this point you should be able to type a message to send, for instance:
+
+Traffic congestion
+
+Notice that before you try to send any message, you should bring up the
+consumer sample or the broker sample. When you have finished using this
+sample, type 'end' or ^C to end.
+
+Also notice that '-Dnotification.httpPort=8083' is used in the java command.
+This indicates the port the sample should use. This also says that this server
+is going to play the role of ntm, given our previous assumption. It is important
+that the first one of the producer, consumer or broker sample that is run be the
+one that uses '-Dnotification.httpPort=8083', otherwise there is no ntm to talk
+to and an exception will be thrown.
+
+Sample directory structure:
+---------------------------
+
+binding-notification-producer/
+ src/
+ main/
+ java/
+ notification.producer/
+ TestCaseProducer.java - interface for the producer component
+ TrafficAdvisory.java - remote interface referred to by the producer component
+ TrafficAdvisoryProducer.java - implementation for the producer component
+ TrafficAdvisoryServer.java - server class including main entry point
+ resources/
+ wsdl/
+ TrafficAdvisory.wsdl - remote interface for the notification component
+ TrafficAdvisoryNotification.componentType - the component type referred to by
+ <implementation.notification/>
+ TrafficAdvisoryNotification.composite - the main composite including producer and
+ notification components, and composite reference
+ test/
+ java/
+ notification.producer/
+ TrafficAdvisoryTestCase.java - JUnit test case
+ resources/
+ wsdl/
+ TrafficAdvisory.wsdl - remote interface for the notification component
+ TrafficAdvisoryNotification.componentType - the component type referred to by
+ <implementation.notification/>
+ TrafficAdvisoryNotification.composite - the main composite including producer and
+ notification components, and composite reference
+ binding-notification-producer.png - a pictorial representation of the sample .composite file
+ build.xml - the Ant build file
+ pom.xml - the Maven build file
diff --git a/java/sca-contrib/samples/binding-notification-producer/binding-notification-producer.png b/java/sca-contrib/samples/binding-notification-producer/binding-notification-producer.png
new file mode 100644
index 0000000000..34c347c893
--- /dev/null
+++ b/java/sca-contrib/samples/binding-notification-producer/binding-notification-producer.png
Binary files differ
diff --git a/java/sca-contrib/samples/binding-notification-producer/build.xml b/java/sca-contrib/samples/binding-notification-producer/build.xml
new file mode 100644
index 0000000000..d13e4c8a6c
--- /dev/null
+++ b/java/sca-contrib/samples/binding-notification-producer/build.xml
@@ -0,0 +1,75 @@
+<!--
+ * 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 name="binding-notification-producer" default="compile">
+ <property name="test.class" value="notification.producer.TrafficAdvisoryServer" />
+ <property name="test.jar" value="sample-binding-notification-producer.jar" />
+
+ <target name="init">
+ <mkdir dir="target/classes"/>
+ </target>
+
+ <target name="compile" depends="init">
+ <javac srcdir="src/main/java"
+ destdir="target/classes"
+ debug="on"
+ source="1.5"
+ target="1.5">
+ <classpath>
+ <pathelement location="../../lib/tuscany-sca-manifest.jar"/>
+ </classpath>
+ </javac>
+ <copy todir="target/classes">
+ <fileset dir="src/main/resources"/>
+ </copy>
+ <jar destfile="target/${test.jar}" basedir="target/classes">
+ <manifest>
+ <attribute name="Main-Class" value="${test.class}" />
+ </manifest>
+ </jar>
+ </target>
+
+ <target name="run-classes">
+ <java classname="${test.class}"
+ fork="true">
+ <classpath>
+ <pathelement path="target/classes"/>
+ <pathelement location="../../lib/tuscany-sca-manifest.jar"/>
+ </classpath>
+ <sysproperty key="notification.httpPort" value="8083"/>
+ <arg value="end"/>
+ </java>
+ </target>
+
+ <target name="run">
+ <java classname="${test.class}"
+ fork="true">
+ <classpath>
+ <pathelement path="target/${test.jar}"/>
+ <pathelement location="../../lib/tuscany-sca-manifest.jar"/>
+ </classpath>
+ <sysproperty key="notification.httpPort" value="8082"/>
+ </java>
+ </target>
+
+ <target name="clean">
+ <delete quiet="true" includeemptydirs="true">
+ <fileset dir="target"/>
+ </delete>
+ </target>
+</project>
diff --git a/java/sca-contrib/samples/binding-notification-producer/pom.xml b/java/sca-contrib/samples/binding-notification-producer/pom.xml
new file mode 100644
index 0000000000..ffe90c0cb3
--- /dev/null
+++ b/java/sca-contrib/samples/binding-notification-producer/pom.xml
@@ -0,0 +1,127 @@
+<?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-binding-notification-producer</artifactId>
+ <name>Apache Tuscany SCA Notification Binding Producer Sample</name>
+ <version>2.0-SNAPSHOT</version>
+ <description>A sample illustrating use of binding.notification</description>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-notification</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-notification</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-embedded</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-interface-wsdl-xml</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.5</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jetty</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <archive>
+ <manifest>
+ <mainClass>org.apache.tuscany.notification.remoteProducer.TrafficAdvisoryServer</mainClass>
+ </manifest>
+ </archive>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <systemProperties>
+ <property>
+ <name>notification.httpPort</name>
+ <value>8083</value>
+ </property>
+ </systemProperties>
+ </configuration>
+ </plugin>
+ </plugins>
+ <defaultGoal>install</defaultGoal>
+ </build>
+</project>
diff --git a/java/sca-contrib/samples/binding-notification-producer/src/main/java/notification/producer/TestCaseProducer.java b/java/sca-contrib/samples/binding-notification-producer/src/main/java/notification/producer/TestCaseProducer.java
new file mode 100644
index 0000000000..be80e71249
--- /dev/null
+++ b/java/sca-contrib/samples/binding-notification-producer/src/main/java/notification/producer/TestCaseProducer.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 notification.producer;
+
+public interface TestCaseProducer {
+
+ public void produceTrafficNotification(String report);
+}
diff --git a/java/sca-contrib/samples/binding-notification-producer/src/main/java/notification/producer/TrafficAdvisory.java b/java/sca-contrib/samples/binding-notification-producer/src/main/java/notification/producer/TrafficAdvisory.java
new file mode 100644
index 0000000000..548d45b12d
--- /dev/null
+++ b/java/sca-contrib/samples/binding-notification-producer/src/main/java/notification/producer/TrafficAdvisory.java
@@ -0,0 +1,30 @@
+/*
+ * 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 notification.producer;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@Remotable
+public interface TrafficAdvisory {
+
+ void trafficNotification(String report);
+}
diff --git a/java/sca-contrib/samples/binding-notification-producer/src/main/java/notification/producer/TrafficAdvisoryProducer.java b/java/sca-contrib/samples/binding-notification-producer/src/main/java/notification/producer/TrafficAdvisoryProducer.java
new file mode 100644
index 0000000000..e670ccb95c
--- /dev/null
+++ b/java/sca-contrib/samples/binding-notification-producer/src/main/java/notification/producer/TrafficAdvisoryProducer.java
@@ -0,0 +1,36 @@
+/*
+ * 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 notification.producer;
+
+import org.oasisopen.sca.annotation.Reference;
+import org.oasisopen.sca.annotation.Scope;
+import org.oasisopen.sca.annotation.Service;
+
+@Service(TestCaseProducer.class)
+@Scope("COMPOSITE")
+public class TrafficAdvisoryProducer implements TestCaseProducer {
+
+ @Reference
+ protected TrafficAdvisory destination;
+
+ public void produceTrafficNotification(String report) {
+
+ destination.trafficNotification(report);
+ }
+}
diff --git a/java/sca-contrib/samples/binding-notification-producer/src/main/java/notification/producer/TrafficAdvisoryServer.java b/java/sca-contrib/samples/binding-notification-producer/src/main/java/notification/producer/TrafficAdvisoryServer.java
new file mode 100644
index 0000000000..efd3657dc3
--- /dev/null
+++ b/java/sca-contrib/samples/binding-notification-producer/src/main/java/notification/producer/TrafficAdvisoryServer.java
@@ -0,0 +1,57 @@
+/*
+ * 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 notification.producer;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+public class TrafficAdvisoryServer {
+
+ public static void main(String[] args) {
+ try {
+ SCADomain domain = SCADomain.newInstance("TrafficAdvisoryNotification.composite");
+ TestCaseProducer testCaseProducer = domain.getService(TestCaseProducer.class, "TrafficAdvisoryProducer");
+ BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
+ String value = "";
+ if (args.length == 1) {
+ value = args[0];
+ }
+ do {
+ if(value == null || value.equals("end")) {
+ break;
+ }
+ try {
+ System.out.println("Send a report value, ^C or <end> to end");
+ value = reader.readLine();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ testCaseProducer.produceTrafficNotification("Report value [" + value + "]");
+ }
+ while(true);
+
+ domain.close();
+ } catch(Throwable e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/java/sca-contrib/samples/binding-notification-producer/src/main/resources/TrafficAdvisoryNotification.componentType b/java/sca-contrib/samples/binding-notification-producer/src/main/resources/TrafficAdvisoryNotification.componentType
new file mode 100644
index 0000000000..2dc70f8ed1
--- /dev/null
+++ b/java/sca-contrib/samples/binding-notification-producer/src/main/resources/TrafficAdvisoryNotification.componentType
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ * 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.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0" xmlns:wsdli="http://www.w3.org/2006/01/wsdl-instance">
+ <service name="TrafficAdvisoryNotificationService">
+ <interface.wsdl interface="http://example.com/TrafficAdvisory.wsdl#wsdl.interface(TrafficAdvisoryPortType)"
+ wsdli:wsdlLocation="http://example.com/TrafficAdvisory.wsdl wsdl/TrafficAdvisory.wsdl">
+ </interface.wsdl>
+ </service>
+
+ <reference name="TrafficAdvisoryNotificationReference"
+ multiplicity="0..n">
+ <interface.wsdl interface="http://example.com/TrafficAdvisory.wsdl#wsdl.interface(TrafficAdvisoryPortType)"
+ wsdli:wsdlLocation="http://example.com/TrafficAdvisory.wsdl wsdl/TrafficAdvisory.wsdl">
+ </interface.wsdl>
+ </reference>
+</componentType>
diff --git a/java/sca-contrib/samples/binding-notification-producer/src/main/resources/TrafficAdvisoryNotification.composite b/java/sca-contrib/samples/binding-notification-producer/src/main/resources/TrafficAdvisoryNotification.composite
new file mode 100644
index 0000000000..2db6ea655b
--- /dev/null
+++ b/java/sca-contrib/samples/binding-notification-producer/src/main/resources/TrafficAdvisoryNotification.composite
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ * 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://www.osoa.org/xmlns/sca/1.0"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscany.apache.org/xmlns/notification/1.0/samples"
+ xmlns:wsdli="http://www.w3.org/2006/01/wsdl-instance"
+ name="TrafficAdvisoryNotificationRemoteProducerComposite">
+
+ <component name="TrafficAdvisoryProducer">
+ <implementation.java class="notification.producer.TrafficAdvisoryProducer"/>
+ <reference name="destination" target="TrafficAdvisoryNotificationComponent"/>
+ </component>
+
+ <component name="TrafficAdvisoryNotificationComponent">
+ <tuscany:implementation.notification name="TrafficAdvisoryNotification"/>
+ </component>
+
+ <reference name="TrafficAdvisoryNotificationCompositeReference"
+ promote="TrafficAdvisoryNotificationComponent/TrafficAdvisoryNotificationReference">
+ <interface.wsdl interface="http://example.com/TrafficAdvisory.wsdl#wsdl.interface(TrafficAdvisoryPortType)"
+ wsdli:wsdlLocation="http://example.com/TrafficAdvisory.wsdl wsdl/TrafficAdvisory.wsdl">
+ </interface.wsdl>
+ <tuscany:binding.notification ntm="http://localhost:8083/ntm" notificationType="trafficAdvisory"/>
+ </reference>
+
+</composite>
diff --git a/java/sca-contrib/samples/binding-notification-producer/src/main/resources/wsdl/TrafficAdvisory.wsdl b/java/sca-contrib/samples/binding-notification-producer/src/main/resources/wsdl/TrafficAdvisory.wsdl
new file mode 100644
index 0000000000..b823bbebcc
--- /dev/null
+++ b/java/sca-contrib/samples/binding-notification-producer/src/main/resources/wsdl/TrafficAdvisory.wsdl
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<!--
+ * 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.
+-->
+<definitions name="TrafficAdvisory"
+ targetNamespace="http://example.com/TrafficAdvisory.wsdl"
+ xmlns:tns="http://example.com/TrafficAdvisory.wsdl"
+ xmlns:xsd1="http://example.com/TrafficAdvisory.xsd"
+ xmlns="http://schemas.xmlsoap.org/wsdl/">
+
+ <types>
+ <schema targetNamespace="http://example.com/TrafficAdvisory.xsd"
+ xmlns:tns="http://example.com/TrafficAdvisory.xsd"
+ xmlns="http://www.w3.org/2001/XMLSchema">
+ <element name="trafficNotification">
+ <complexType>
+ <sequence>
+ <element name="report" type="string" />
+ </sequence>
+ </complexType>
+ </element>
+ </schema>
+ </types>
+
+ <message name="TrafficNotificationInput">
+ <part name="body" element="xsd1:trafficNotification" />
+ </message>
+
+ <portType name="TrafficAdvisoryPortType">
+ <operation name="trafficNotification">
+ <input message="tns:TrafficNotificationInput" />
+ </operation>
+ </portType>
+
+</definitions>
diff --git a/java/sca-contrib/samples/binding-notification-producer/src/test/java/notification/producer/TrafficAdvisoryTestCase.java b/java/sca-contrib/samples/binding-notification-producer/src/test/java/notification/producer/TrafficAdvisoryTestCase.java
new file mode 100644
index 0000000000..d3901ee407
--- /dev/null
+++ b/java/sca-contrib/samples/binding-notification-producer/src/test/java/notification/producer/TrafficAdvisoryTestCase.java
@@ -0,0 +1,78 @@
+/*
+ * 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 notification.producer;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+
+import notification.producer.TestCaseProducer;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+//import org.apache.tuscany.sca.notification.remoteProducer.TestCaseProducer;
+
+import junit.framework.TestCase;
+
+public class TrafficAdvisoryTestCase extends TestCase {
+
+ private SCADomain domain;
+
+ public void testTrafficAdvisoryNotification() throws Exception {
+ System.out.println("Only instantiating and closing domain ...");
+ TestCaseProducer testCaseProducer = domain.getService(TestCaseProducer.class, "TrafficAdvisoryProducer");
+
+ /* Uncomment to test with consumer
+ BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
+ String value = "foo";
+ do {
+ try {
+ System.out.println("Send a report value, ^C or <end> to end");
+ value = reader.readLine();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ if(value == null || value.equals("end")) {
+ break;
+ }
+ testCaseProducer.produceTrafficNotification("Report value [" + value + "]");
+ value = "end";
+ }
+ while(true);
+ */
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ try {
+ domain = SCADomain.newInstance("TrafficAdvisoryNotification.composite");
+ } catch(Throwable e) {
+ e.printStackTrace();
+ if (e instanceof Exception) {
+ throw (Exception)e;
+ }
+ else {
+ throw new Exception(e);
+ }
+ }
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ domain.close();
+ }
+}