You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by jg...@apache.org on 2009/03/17 17:25:49 UTC

svn commit: r755308 - in /servicemix/smx4/nmr/trunk: assembly/src/main/descriptors/ examples/ examples/interceptors/ examples/interceptors/exchange/ examples/interceptors/exchange/src/ examples/interceptors/exchange/src/main/ examples/interceptors/exch...

Author: jgoodyear
Date: Tue Mar 17 16:25:48 2009
New Revision: 755308

URL: http://svn.apache.org/viewvc?rev=755308&view=rev
Log:
SMX4NMR-129: Adding Exchange Listener Demo

Added:
    servicemix/smx4/nmr/trunk/examples/interceptors/
    servicemix/smx4/nmr/trunk/examples/interceptors/exchange/
    servicemix/smx4/nmr/trunk/examples/interceptors/exchange/README.txt   (with props)
    servicemix/smx4/nmr/trunk/examples/interceptors/exchange/pom.xml
    servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/
    servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/main/
    servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/main/java/
    servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/main/java/org/
    servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/main/java/org/apache/
    servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/main/java/org/apache/servicemix/
    servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/main/java/org/apache/servicemix/nmr/
    servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/main/java/org/apache/servicemix/nmr/examples/
    servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/main/java/org/apache/servicemix/nmr/examples/interceptors/
    servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/main/java/org/apache/servicemix/nmr/examples/interceptors/exchange/
    servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/main/java/org/apache/servicemix/nmr/examples/interceptors/exchange/CustomExchangeListener.java   (with props)
    servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/main/resources/
    servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/main/resources/META-INF/
    servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/main/resources/META-INF/spring/
    servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/main/resources/META-INF/spring/beans.xml
    servicemix/smx4/nmr/trunk/examples/interceptors/pom.xml
Modified:
    servicemix/smx4/nmr/trunk/assembly/src/main/descriptors/unix-bin.xml
    servicemix/smx4/nmr/trunk/assembly/src/main/descriptors/windows-bin.xml
    servicemix/smx4/nmr/trunk/examples/pom.xml

Modified: servicemix/smx4/nmr/trunk/assembly/src/main/descriptors/unix-bin.xml
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/assembly/src/main/descriptors/unix-bin.xml?rev=755308&r1=755307&r2=755308&view=diff
==============================================================================
--- servicemix/smx4/nmr/trunk/assembly/src/main/descriptors/unix-bin.xml (original)
+++ servicemix/smx4/nmr/trunk/assembly/src/main/descriptors/unix-bin.xml Tue Mar 17 16:25:48 2009
@@ -121,6 +121,14 @@
             <fileMode>0644</fileMode>
             <lineEnding>unix</lineEnding>
         </file>
+
+        <!--filtering README.txt-->
+        <file>
+            <source>../examples/interceptors/exchange/README.txt</source>
+            <outputDirectory>/examples/interceptors/exchange</outputDirectory>
+            <filtered>true</filtered>
+            <lineEnding>unix</lineEnding>
+        </file>
     </files>
 
 </assembly>

Modified: servicemix/smx4/nmr/trunk/assembly/src/main/descriptors/windows-bin.xml
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/assembly/src/main/descriptors/windows-bin.xml?rev=755308&r1=755307&r2=755308&view=diff
==============================================================================
--- servicemix/smx4/nmr/trunk/assembly/src/main/descriptors/windows-bin.xml (original)
+++ servicemix/smx4/nmr/trunk/assembly/src/main/descriptors/windows-bin.xml Tue Mar 17 16:25:48 2009
@@ -122,6 +122,14 @@
             <fileMode>0644</fileMode>
             <lineEnding>dos</lineEnding>
         </file>
+
+        <!--filtering README.txt-->
+        <file>
+            <source>../examples/interceptors/exchange/README.txt</source>
+            <outputDirectory>/examples/interceptors/exchange</outputDirectory>
+            <filtered>true</filtered>
+            <lineEnding>dos</lineEnding>
+        </file>
     </files>
 
 

Added: servicemix/smx4/nmr/trunk/examples/interceptors/exchange/README.txt
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/examples/interceptors/exchange/README.txt?rev=755308&view=auto
==============================================================================
--- servicemix/smx4/nmr/trunk/examples/interceptors/exchange/README.txt (added)
+++ servicemix/smx4/nmr/trunk/examples/interceptors/exchange/README.txt Tue Mar 17 16:25:48 2009
@@ -0,0 +1,45 @@
+/*
+ * 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.
+ */
+
+Welcome to the ServiceMix Custom Exchange Listener Example
+==========================================================
+
+Quick steps to install this example
+-------------------------------------
+
+Launch the ServiceMix Kernel by running
+  bin/servicemix
+in the root dir of this distribution.
+
+run:
+  mvn install
+
+Deploy the example on ServiceMix 4:
+
+- using the ServiceMix console:
+   osgi/install -s mvn:org.apache.servicemix.nmr.examples.interceptors/exchange/${version}/jar 
+
+Once the bundle is installed it will capture and report to the servicemix 
+log the sent and delivered exchanges in the NMR.
+
+Starting and Stopping the Listener:
+
+- using the ServiceMix console:
+   osgi/start BundleID
+   osgi/stop BundleID
+
+Note: Upon installation the Listener will automatically be started.

Propchange: servicemix/smx4/nmr/trunk/examples/interceptors/exchange/README.txt
------------------------------------------------------------------------------
    svn:executable = *

Added: servicemix/smx4/nmr/trunk/examples/interceptors/exchange/pom.xml
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/examples/interceptors/exchange/pom.xml?rev=755308&view=auto
==============================================================================
--- servicemix/smx4/nmr/trunk/examples/interceptors/exchange/pom.xml (added)
+++ servicemix/smx4/nmr/trunk/examples/interceptors/exchange/pom.xml Tue Mar 17 16:25:48 2009
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.nmr.examples</groupId>
+        <artifactId>org.apache.servicemix.nmr.examples.interceptors</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.nmr.examples.interceptors</groupId>
+    <artifactId>exchange</artifactId>
+    <packaging>bundle</packaging>
+    <name>Apache ServiceMix NMR Example:: Exchange Listener</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>${commons.logging.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.nmr</groupId>
+            <artifactId>org.apache.servicemix.nmr.api</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <configuration>
+                    <instructions>
+                        <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+                        <Import-Package>
+                            org.apache.commons.logging,
+                            org.apache.servicemix.nmr.api,
+                            org.apache.servicemix.nmr.api.event,
+                            org.apache.servicemix.nmr.api.internal
+                        </Import-Package>
+                        <Private-Package>org.apache.servicemix.nmr.examples.interceptors.exchange</Private-Package>
+                    </instructions>
+                </configuration>
+             </plugin>
+        </plugins>
+    </build>
+
+</project>

Added: servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/main/java/org/apache/servicemix/nmr/examples/interceptors/exchange/CustomExchangeListener.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/main/java/org/apache/servicemix/nmr/examples/interceptors/exchange/CustomExchangeListener.java?rev=755308&view=auto
==============================================================================
--- servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/main/java/org/apache/servicemix/nmr/examples/interceptors/exchange/CustomExchangeListener.java (added)
+++ servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/main/java/org/apache/servicemix/nmr/examples/interceptors/exchange/CustomExchangeListener.java Tue Mar 17 16:25:48 2009
@@ -0,0 +1,76 @@
+package org.apache.servicemix.nmr.examples.interceptors.exchange;
+
+import org.apache.servicemix.nmr.api.Exchange;
+import org.apache.servicemix.nmr.api.Role;
+import org.apache.servicemix.nmr.api.Status;
+import org.apache.servicemix.nmr.api.event.ExchangeListener;
+import org.apache.servicemix.nmr.api.internal.InternalEndpoint;
+import org.apache.servicemix.nmr.api.internal.InternalExchange;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * This listener will be called each time an exchange is sent
+ * or delivered to an endpoint on NMR.
+ */
+public class CustomExchangeListener implements ExchangeListener {
+
+    private static final transient Log LOG = LogFactory.getLog(CustomExchangeListener.class);
+
+    /**
+     * Method called each time an exchange is sent
+     *
+     * @param exchange the exchange sent
+     */
+    public void exchangeSent(Exchange exchange) {
+         try {
+             LOG.info("Sending exchange: " + exchange);
+             // Intercept exchanges
+             if (exchange instanceof InternalExchange &&
+                 exchange.getStatus() == Status.Active &&
+                 exchange.getRole() == Role.Consumer &&
+                 exchange.getOut(false) == null &&
+                 exchange.getFault(false) == null) {
+                 String id = ((InternalExchange) exchange).getSource().getId();
+                 LOG.info("Source endpoint: " + id);
+             }
+         } catch (Throwable t) {
+             LOG.warn("Caught exception while processing exchange: " + t, t);
+         }
+    }
+
+    /**
+     * Method called each time an exchange is delivered
+     *
+     * @param exchange the delivered exchange
+     */
+    public void exchangeDelivered(Exchange exchange) {
+        try {
+            LOG.info("Receiving exchange: " + exchange);
+            if (exchange.getStatus() == Status.Active &&
+                exchange.getRole() == Role.Provider &&
+                exchange.getOut(false) == null &&
+                exchange.getFault(false) == null &&
+                exchange instanceof InternalExchange) {
+                String id = ((InternalExchange) exchange).getDestination().getId();
+                LOG.info("Dest endpoint: " + id);
+            }
+        } catch (Throwable t) {
+            LOG.warn("Caught exception while processing exchange: " + t, t);
+        }
+    }
+
+    /**
+     * Method called when an exchange resulted in an exception to be
+     * thrown and the exchange not delivered.  This can happen if no
+     * endpoint can be found for the target or if something else bad
+     * happened.
+     *
+     * @param exchange the exchange that failed
+     */
+    public void exchangeFailed(Exchange exchange) {
+        LOG.info("Exchange Failed: " + exchange);
+    }
+
+}

Propchange: servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/main/java/org/apache/servicemix/nmr/examples/interceptors/exchange/CustomExchangeListener.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/main/resources/META-INF/spring/beans.xml
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/main/resources/META-INF/spring/beans.xml?rev=755308&view=auto
==============================================================================
--- servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/main/resources/META-INF/spring/beans.xml (added)
+++ servicemix/smx4/nmr/trunk/examples/interceptors/exchange/src/main/resources/META-INF/spring/beans.xml Tue Mar 17 16:25:48 2009
@@ -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.
+-->
+
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:osgi="http://www.springframework.org/schema/osgi"
+       xmlns:util="http://www.springframework.org/schema/util"
+       xsi:schemaLocation="
+       http://www.springframework.org/schema/beans
+       http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+       http://www.springframework.org/schema/util
+       http://www.springframework.org/schema/util/spring-util.xsd
+       http://www.springframework.org/schema/osgi
+       http://www.springframework.org/schema/osgi/spring-osgi.xsd
+       ">
+
+  <!-- Custome Exchange Listener -->
+  <bean id="CustomExchangeListener" class="org.apache.servicemix.nmr.examples.interceptors.exchange.CustomExchangeListener">
+  </bean>
+
+  <!-- Exchange Listener -->
+  <osgi:service ref="CustomExchangeListener"> 
+      <osgi:interfaces>
+          <value>org.apache.servicemix.nmr.api.event.ExchangeListener</value>
+          <value>org.apache.servicemix.nmr.api.event.Listener</value>
+      </osgi:interfaces>
+  </osgi:service>
+
+</beans>

Added: servicemix/smx4/nmr/trunk/examples/interceptors/pom.xml
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/examples/interceptors/pom.xml?rev=755308&view=auto
==============================================================================
--- servicemix/smx4/nmr/trunk/examples/interceptors/pom.xml (added)
+++ servicemix/smx4/nmr/trunk/examples/interceptors/pom.xml Tue Mar 17 16:25:48 2009
@@ -0,0 +1,38 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.nmr.examples</groupId>
+        <artifactId>examples</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.nmr.examples</groupId>
+    <artifactId>org.apache.servicemix.nmr.examples.interceptors</artifactId>
+    <packaging>pom</packaging>
+    <name>Apache Servicemix NMR Examples:: Interceptors</name>
+
+    <modules>
+        <module>exchange</module>
+    </modules>
+
+</project>

Modified: servicemix/smx4/nmr/trunk/examples/pom.xml
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/examples/pom.xml?rev=755308&r1=755307&r2=755308&view=diff
==============================================================================
--- servicemix/smx4/nmr/trunk/examples/pom.xml (original)
+++ servicemix/smx4/nmr/trunk/examples/pom.xml Tue Mar 17 16:25:48 2009
@@ -33,6 +33,7 @@
 
     <modules>
         <module>cluster</module>
+        <module>interceptors</module>
         <module>nmr</module>
     </modules>