You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streams.apache.org by le...@apache.org on 2013/01/14 18:40:13 UTC

svn commit: r1433002 - in /incubator/streams/trunk: ./ streams-eip-routes/ streams-eip-routes/src/main/java/ streams-eip-routes/src/main/java/org/ streams-eip-routes/src/main/java/org/apache/ streams-eip-routes/src/main/java/org/apache/streams/ streams...

Author: letourneau
Date: Mon Jan 14 17:40:12 2013
New Revision: 1433002

URL: http://svn.apache.org/viewvc?rev=1433002&view=rev
Log:
rebasing svn and creating working deployable routes

Added:
    incubator/streams/trunk/streams-eip-routes/src/main/java/
    incubator/streams/trunk/streams-eip-routes/src/main/java/org/
    incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/
    incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/
    incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/
    incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/
    incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/ActivityRouter.java
    incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/impl/
    incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/impl/ActivityRouterImpl.java
    incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/rules/
    incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/rules/RoutingRule.java
    incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/rules/impl/
    incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/rules/impl/SimpleRoutingRule.java
Modified:
    incubator/streams/trunk/pom.xml
    incubator/streams/trunk/streams-eip-routes/pom.xml
    incubator/streams/trunk/streams-eip-routes/src/main/resources/META-INF/spring/camelContext.xml
    incubator/streams/trunk/streams-eip-routes/src/main/resources/META-INF/spring/osgi-component-import.xml
    incubator/streams/trunk/streams-osgi-components/activity-publisher-registration/osgi.bnd

Modified: incubator/streams/trunk/pom.xml
URL: http://svn.apache.org/viewvc/incubator/streams/trunk/pom.xml?rev=1433002&r1=1433001&r2=1433002&view=diff
==============================================================================
--- incubator/streams/trunk/pom.xml (original)
+++ incubator/streams/trunk/pom.xml Mon Jan 14 17:40:12 2013
@@ -43,9 +43,10 @@
         <version>1.5</version>
           <extensions>true</extensions>
           <configuration>
-          <provision>
-            <param>--platform=felix</param>
-          </provision>
+            <compilerVersion>1.5</compilerVersion>
+            <provision>
+              <param>--platform=felix</param>
+            </provision>
         </configuration>
        <executions>
         </executions>

Modified: incubator/streams/trunk/streams-eip-routes/pom.xml
URL: http://svn.apache.org/viewvc/incubator/streams/trunk/streams-eip-routes/pom.xml?rev=1433002&r1=1433001&r2=1433002&view=diff
==============================================================================
--- incubator/streams/trunk/streams-eip-routes/pom.xml (original)
+++ incubator/streams/trunk/streams-eip-routes/pom.xml Mon Jan 14 17:40:12 2013
@@ -37,9 +37,20 @@
         </resources>
         <plugins>
             <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.0.2</version>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+
+            <plugin>
                 <groupId>org.ops4j</groupId>
                 <artifactId>maven-pax-plugin</artifactId>
                 <version>1.5</version>
+
                 <!--
                  | enable improved OSGi compilation support for the bundle life-cycle.
                  | to switch back to the standard bundle life-cycle, move this setting
@@ -58,7 +69,9 @@
                     <instructions>
                         <Bundle-SymbolicName>${bundle.symbolicName}</Bundle-SymbolicName>
                         <Bundle-Version>${pom.version}</Bundle-Version>
-                        <Import-Package>org.apache.streams.osgi.components;version="${pom.version}"</Import-Package>
+                        <Export-Package>${bundle.namespace};version="${pom.version}"</Export-Package>
+                        <Private-Package>${bundle.namespace}.messaging.routers.impl.*,${bundle.namespace}.messaging.rules.impl.*</Private-Package>
+                        <Import-Package>org.apache.camel,org.springframework,org.apache.commons.logging,org.apache.streams.messaging.routers, org.apache.streams.messaging.rules,org.apache.streams.osgi-components</Import-Package>
                         <Include-Resource>src/main/resources</Include-Resource>
                     </instructions>
                 </configuration>
@@ -68,12 +81,31 @@
 
     <dependencies>
         <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-core</artifactId>
+            <version>2.10.3</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-core</artifactId>
+            <version>3.0.5.RELEASE</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context</artifactId>
+            <version>2.0.5</version>
+        </dependency>
+
+        <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>osgi_R4_core</artifactId>
             <version>1.0</version>
             <scope>provided</scope>
             <optional>true</optional>
         </dependency>
+
         <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>osgi_R4_compendium</artifactId>
@@ -81,6 +113,7 @@
             <scope>provided</scope>
             <optional>true</optional>
         </dependency>
+
         <dependency>
             <groupId>org.apache.streams.osgi-components</groupId>
             <artifactId>activity-publisher-registration</artifactId>

Added: incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/ActivityRouter.java
URL: http://svn.apache.org/viewvc/incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/ActivityRouter.java?rev=1433002&view=auto
==============================================================================
--- incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/ActivityRouter.java (added)
+++ incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/ActivityRouter.java Mon Jan 14 17:40:12 2013
@@ -0,0 +1,21 @@
+package org.apache.streams.messaging.routers;
+
+import java.lang.Object;
+import java.lang.String;
+import java.util.Map;
+import org.apache.camel.Properties;
+
+
+
+public interface ActivityRouter {
+
+    /*
+    * Use this method to compute dynamic where we should route next.
+    *
+    * @param body the message body
+    * @return endpoints to go, or <tt>null</tt> to indicate the end
+    */
+    String slip(String body,@Properties Map<String, Object> properties);
+    void addRoutingRules(Map<String,String> rules);
+
+}

Added: incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/impl/ActivityRouterImpl.java
URL: http://svn.apache.org/viewvc/incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/impl/ActivityRouterImpl.java?rev=1433002&view=auto
==============================================================================
--- incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/impl/ActivityRouterImpl.java (added)
+++ incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/impl/ActivityRouterImpl.java Mon Jan 14 17:40:12 2013
@@ -0,0 +1,63 @@
+package org.apache.streams.messaging.routers.impl;
+
+import org.apache.streams.messaging.routers.ActivityRouter;
+
+import java.lang.String;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.ArrayList;
+import org.apache.streams.messaging.rules.RoutingRule;
+
+import org.apache.camel.Properties;
+import org.apache.streams.messaging.rules.impl.SimpleRoutingRule;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+
+public class ActivityRouterImpl implements ActivityRouter {
+    private static final transient Log LOG = LogFactory.getLog(ActivityRouterImpl.class);
+
+    private ArrayList<RoutingRule> routingRules;
+
+    public ActivityRouterImpl(){
+        routingRules = new ArrayList<RoutingRule>();
+    }
+
+    public ActivityRouterImpl(HashMap<String, String> routes){
+        LOG.info(">> setting up routes >>");
+       addRoutingRules(routes);
+    }
+
+    public String slip(String body, @Properties Map<String, Object> properties) {
+
+
+        // get the state from the exchange properties and keep track how many times
+        // we have been invoked
+        int invoked = 0;
+        Object current = properties.get("invoked");
+        if (current != null) {
+            invoked = Integer.valueOf(current.toString());
+        }
+        invoked++;
+        // and store the state back on the properties
+        properties.put("invoked", invoked);
+
+        for(RoutingRule r : routingRules){
+           if (r.isMessageRoutable(body)){
+               return r.getDestination();
+           }
+        }
+
+        // no more so return null
+        return "direct:foo";
+    }
+
+    public void addRoutingRules(@Properties Map<String,String> rules){
+        for(String key : rules.keySet()){
+            LOG.info(key + ">> setting up routes >>" + rules.get(key));
+            routingRules.add(new SimpleRoutingRule(key,rules.get(key)));
+        }
+
+    }
+
+}

Added: incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/rules/RoutingRule.java
URL: http://svn.apache.org/viewvc/incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/rules/RoutingRule.java?rev=1433002&view=auto
==============================================================================
--- incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/rules/RoutingRule.java (added)
+++ incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/rules/RoutingRule.java Mon Jan 14 17:40:12 2013
@@ -0,0 +1,11 @@
+package org.apache.streams.messaging.rules;
+
+
+public interface RoutingRule {
+
+    void setSource(String source);
+    String getSource();
+    void setDestination(String destination);
+    String getDestination();
+    boolean isMessageRoutable(String body);
+}

Added: incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/rules/impl/SimpleRoutingRule.java
URL: http://svn.apache.org/viewvc/incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/rules/impl/SimpleRoutingRule.java?rev=1433002&view=auto
==============================================================================
--- incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/rules/impl/SimpleRoutingRule.java (added)
+++ incubator/streams/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/rules/impl/SimpleRoutingRule.java Mon Jan 14 17:40:12 2013
@@ -0,0 +1,36 @@
+package org.apache.streams.messaging.rules.impl;
+
+import org.apache.streams.messaging.rules.RoutingRule;
+
+public class SimpleRoutingRule implements RoutingRule{
+    private String source;
+    private String destination;
+
+    public SimpleRoutingRule(String source, String destination){
+        setSource(source);
+        setDestination(destination);
+    }
+
+    public String getSource() {
+        return source;
+    }
+
+    public void setSource(String source) {
+        this.source = source;
+    }
+
+    public String getDestination() {
+        return destination;
+    }
+
+    public void setDestination(String destination) {
+        this.destination = destination;
+    }
+
+
+    public boolean isMessageRoutable(String body){
+        if (body!=null){  return true; }
+        return false;
+    }
+
+}

Modified: incubator/streams/trunk/streams-eip-routes/src/main/resources/META-INF/spring/camelContext.xml
URL: http://svn.apache.org/viewvc/incubator/streams/trunk/streams-eip-routes/src/main/resources/META-INF/spring/camelContext.xml?rev=1433002&r1=1433001&r2=1433002&view=diff
==============================================================================
--- incubator/streams/trunk/streams-eip-routes/src/main/resources/META-INF/spring/camelContext.xml (original)
+++ incubator/streams/trunk/streams-eip-routes/src/main/resources/META-INF/spring/camelContext.xml Mon Jan 14 17:40:12 2013
@@ -12,11 +12,19 @@
 
 
 
+
     <camelContext xmlns="http://camel.apache.org/schema/spring">
 
         <route>
             <from uri="timer://myTimer?fixedRate=true&amp;period=10000"/>
-            <bean ref="myTransform" method="transform"/>
+            <dynamicRouter>
+                <method ref="activityRouter" method="slip"/>
+            </dynamicRouter>
+        </route>
+
+        <route>
+            <from uri="direct:foo"/>
+                <bean ref="myTransform" method="transform"/>
             <to uri="log:ExampleRouter"/>
         </route>
     </camelContext>

Modified: incubator/streams/trunk/streams-eip-routes/src/main/resources/META-INF/spring/osgi-component-import.xml
URL: http://svn.apache.org/viewvc/incubator/streams/trunk/streams-eip-routes/src/main/resources/META-INF/spring/osgi-component-import.xml?rev=1433002&r1=1433001&r2=1433002&view=diff
==============================================================================
--- incubator/streams/trunk/streams-eip-routes/src/main/resources/META-INF/spring/osgi-component-import.xml (original)
+++ incubator/streams/trunk/streams-eip-routes/src/main/resources/META-INF/spring/osgi-component-import.xml Mon Jan 14 17:40:12 2013
@@ -9,4 +9,13 @@
 
     <osgi:reference id="myTransform" interface="org.apache.streams.osgi.components.TransformService" />
 
+    <bean id="activityRouter" class="org.apache.streams.messaging.routers.impl.ActivityRouterImpl">
+
+        <constructor-arg>
+            <map>
+                <entry key="timer://myTimer?fixedRate=true&amp;period=10000" value="direct:foo"/>
+            </map>
+        </constructor-arg>
+    </bean>
+
 </beans>
\ No newline at end of file

Modified: incubator/streams/trunk/streams-osgi-components/activity-publisher-registration/osgi.bnd
URL: http://svn.apache.org/viewvc/incubator/streams/trunk/streams-osgi-components/activity-publisher-registration/osgi.bnd?rev=1433002&r1=1433001&r2=1433002&view=diff
==============================================================================
--- incubator/streams/trunk/streams-osgi-components/activity-publisher-registration/osgi.bnd (original)
+++ incubator/streams/trunk/streams-osgi-components/activity-publisher-registration/osgi.bnd Mon Jan 14 17:40:12 2013
@@ -2,4 +2,4 @@
 # Use this file to add customized Bnd instructions for the bundle
 #-----------------------------------------------------------------
 
-Bundle-Activator: ${bundle.namespace}.internal.ExampleActivator
+