[jboss-svn-commits] JBL Code SVN: r25256 - in labs/jbossrules/trunk/drools-process/drools-workitems: src/main/java/org/drools/process/workitem and 5 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Feb 13 14:26:52 EST 2009


Author: salaboy21
Date: 2009-02-13 14:26:52 -0500 (Fri, 13 Feb 2009)
New Revision: 25256

Added:
   labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/jabber/
   labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/jabber/JabberWorkItemHandler.java
   labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/rss/
   labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/rss/RSSWorkItemHandler.java
   labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/jabber/
   labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/jabber/JabberWorkItemHandlerTest.java
   labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/rss/
   labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/rss/RSSWorkItemHandlerTest.java
Modified:
   labs/jbossrules/trunk/drools-process/drools-workitems/pom.xml
Log:
Jabber (smack) send message work item and RSS (rome) read feeds work item. 

Modified: labs/jbossrules/trunk/drools-process/drools-workitems/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-workitems/pom.xml	2009-02-13 15:55:01 UTC (rev 25255)
+++ labs/jbossrules/trunk/drools-process/drools-workitems/pom.xml	2009-02-13 19:26:52 UTC (rev 25256)
@@ -1,70 +1,96 @@
-<?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">
-
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <artifactId>drools</artifactId>
-    <groupId>org.drools</groupId>
-    <version>5.0.0.SNAPSHOT</version>
-  </parent>
-
-  <artifactId>drools-workitems</artifactId>
-  <packaging>jar</packaging>
-  <name>Drools :: Process :: WorkItems</name>
-
-  <build/>
-
-  <dependencies>
-    <!-- Internal dependencies -->
-    <dependency>
-      <groupId>org.drools</groupId>
-      <artifactId>drools-core</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.drools</groupId>
-      <artifactId>drools-compiler</artifactId>
-    </dependency>
-
-    <!-- External dependencies -->
-    <dependency>
-      <groupId>javax.mail</groupId>
-      <artifactId>mail</artifactId>
-      <version>1.4</version>
-    </dependency>
-    <dependency>
-      <groupId>javax.activation</groupId>
-      <artifactId>activation</artifactId>
-      <version>1.1</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-finder</artifactId>
-      <version>1.0-20080905.033643-1</version>
-    </dependency>
-    <dependency>
-      <groupId>commons-io</groupId>
-      <artifactId>commons-io</artifactId>
-      <version>1.4</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-compress</artifactId>
-      <version>1.0-20080905.032625-1</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-exec</artifactId>
-      <version>1.0.0-20080905.033237-1</version>
-    </dependency>
-    
-    <!-- External test dependencies -->
-    <dependency>
-      <groupId>org.subethamail</groupId>
-      <artifactId>subethasmtp-wiser</artifactId>
-      <version>1.2</version>
-      <scope>test</scope>
-    </dependency>
-        
-  </dependencies>
-
-</project>
+<?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">
+
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>drools</artifactId>
+    <groupId>org.drools</groupId>
+    <version>5.0.0.SNAPSHOT</version>
+  </parent>
+
+  <artifactId>drools-workitems</artifactId>
+  <packaging>jar</packaging>
+  <name>Drools :: Process :: WorkItems</name>
+
+  <build>
+     <plugins>
+         <plugin>
+             <groupId>org.apache.maven.plugins</groupId>
+             <artifactId>maven-surefire-plugin</artifactId>
+             <version>2.3</version>
+             <configuration>
+               <argLine>-Xdebug -Djava.compiler=none -Xnoagent -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</argLine>
+             </configuration>
+         </plugin>
+     </plugins>
+ </build>
+
+  <dependencies>
+    <!-- Internal dependencies -->
+    <dependency>
+      <groupId>org.drools</groupId>
+      <artifactId>drools-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.drools</groupId>
+      <artifactId>drools-compiler</artifactId>
+    </dependency>
+
+    <!-- External dependencies -->
+    <dependency>
+      <groupId>javax.mail</groupId>
+      <artifactId>mail</artifactId>
+      <version>1.4</version>
+    </dependency>
+    <dependency>
+      <groupId>javax.activation</groupId>
+      <artifactId>activation</artifactId>
+      <version>1.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-finder</artifactId>
+      <version>1.0-20080905.033643-1</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <version>1.4</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-compress</artifactId>
+      <version>1.0-20080905.032625-1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-exec</artifactId>
+      <version>1.0.0-20080905.033237-1</version>
+    </dependency>
+    
+    <!-- External test dependencies -->
+    <dependency>
+      <groupId>org.subethamail</groupId>
+      <artifactId>subethasmtp-wiser</artifactId>
+      <version>1.2</version>
+      <scope>test</scope>
+    </dependency>
+    <!-- Smack Jabber LIB -->
+   <dependency>
+        <groupId>jivesoftware</groupId>
+        <artifactId>smack</artifactId>
+        <version>3.0.4</version>
+    </dependency>
+    
+     <!-- Rome RSS Feeds LIB -->
+   <dependency>
+        <groupId>rome</groupId>
+        <artifactId>rome</artifactId>
+        <version>0.9</version>
+    </dependency>
+
+
+   
+  </dependencies>
+
+</project>

Added: labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/jabber/JabberWorkItemHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/jabber/JabberWorkItemHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/jabber/JabberWorkItemHandler.java	2009-02-13 19:26:52 UTC (rev 25256)
@@ -0,0 +1,137 @@
+/*
+ *  Copyright 2009 salaboy.
+ * 
+ *  Licensed 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.
+ *  under the License.
+ */
+
+package org.drools.process.workitem.jabber;
+
+import java.net.URLConnection;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.drools.process.instance.WorkItemHandler;
+import org.drools.runtime.process.WorkItem;
+import org.drools.runtime.process.WorkItemManager;
+import org.jivesoftware.smack.Chat;
+import org.jivesoftware.smack.ChatManager;
+import org.jivesoftware.smack.ConnectionConfiguration;
+import org.jivesoftware.smack.XMPPConnection;
+import org.jivesoftware.smack.XMPPException;
+import org.jivesoftware.smack.packet.Message;
+import org.jivesoftware.smack.packet.Presence;
+
+
+
+/**
+ *
+ * @author salaboy
+ */
+public class JabberWorkItemHandler implements WorkItemHandler {
+    private String user;
+    private String password;
+    private String server;
+    private int port;
+    private String service;
+    private String text;
+
+    private List<String> toUsers = new ArrayList<String>();
+    
+
+    public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
+
+        this.user = (String) workItem.getParameter("User");
+        this.password = (String) workItem.getParameter("Password");
+        this.server = (String) workItem.getParameter("Server");
+        String portString = (String) workItem.getParameter("Port");
+        if(portString != null && !portString.equals("")){
+            this.port = Integer.valueOf((String) workItem.getParameter("Port"));
+        }
+        this.service = (String) workItem.getParameter("Service");
+        this.text = (String) workItem.getParameter("Text");
+
+
+        String to = (String) workItem.getParameter("To");
+		if ( to == null || to.trim().length() == 0 ) {
+		    throw new RuntimeException( "IM must have one or more to adresses" );
+		}
+		for (String s: to.split(";")) {
+			if (s != null && !"".equals(s)) {
+				this.toUsers.add(s);
+			}
+		}
+        ConnectionConfiguration conf = new ConnectionConfiguration(server, port , service);
+        XMPPConnection connection = null;
+        try {
+
+           if(server !=null && !server.equals("") && port != 0){
+             connection = new XMPPConnection(conf);
+           } else {
+             connection = new XMPPConnection(service);
+           }
+
+           connection.connect();
+           System.out.println("Connected to " + connection.getHost());
+
+        } catch (XMPPException ex) {
+            Logger.getLogger(JabberWorkItemHandler.class.getName()).log(Level.SEVERE, null, ex);
+            System.out.println("Failed to connect to " + connection.getHost());
+            System.exit(1);
+
+        }
+
+        try{
+            connection.login(user, password);
+            System.out.println("Logged in as " + connection.getUser());
+            Presence presence = new Presence(Presence.Type.available);
+            connection.sendPacket(presence);
+
+        } catch (XMPPException ex){
+            Logger.getLogger(JabberWorkItemHandler.class.getName()).log(Level.SEVERE, null, ex);
+            System.out.println("Failed to log in as " + connection.getUser());
+            System.exit(1);
+
+        }
+
+        for(String toUser : toUsers){
+
+            ChatManager chatmanager = connection.getChatManager();
+            Chat chat = chatmanager.createChat(toUser, null);
+
+            try {
+                // google bounces back the default message types, you must use chat
+                Message msg = new Message(toUser, Message.Type.chat);
+                msg.setBody(text);
+                chat.sendMessage(msg);
+                System.out.println("Message Sended");
+            } catch (XMPPException e) {
+                System.out.println("Failed to send message");
+                // handle this how?
+            }
+        }
+
+
+        connection.disconnect();
+
+        manager.completeWorkItem(workItem.getId(), null);
+
+         
+    }
+
+    public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/rss/RSSWorkItemHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/rss/RSSWorkItemHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/rss/RSSWorkItemHandler.java	2009-02-13 19:26:52 UTC (rev 25256)
@@ -0,0 +1,89 @@
+/*
+ *  Copyright 2009 salaboy.
+ * 
+ *  Licensed 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.
+ *  under the License.
+ */
+
+package org.drools.process.workitem.rss;
+
+import com.sun.syndication.feed.synd.SyndFeed;
+import com.sun.syndication.io.FeedException;
+import com.sun.syndication.io.SyndFeedInput;
+import com.sun.syndication.io.XmlReader;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.drools.process.instance.WorkItemHandler;
+import org.drools.runtime.process.WorkItem;
+import org.drools.runtime.process.WorkItemManager;
+
+
+
+/**
+ *
+ * @author salaboy
+ */
+public class RSSWorkItemHandler implements WorkItemHandler {
+
+   
+
+    
+    List<SyndFeed> feeds = new ArrayList<SyndFeed>();
+
+    public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
+        try {
+          
+            List<String> urls   = new ArrayList<String>();
+            String urlsList = (String) workItem.getParameter("URL");
+
+            for (String s: urlsList.split(";")) {
+                if (s != null && !"".equals(s)) {
+                    urls.add(s);
+                }
+            }
+
+            for(String url : urls){
+                URL feedSource = new URL(url);
+                SyndFeedInput input = new SyndFeedInput();
+                SyndFeed feed = input.build(new XmlReader(feedSource));
+                feeds.add(feed);
+            }
+
+            manager.completeWorkItem(workItem.getId(), null);
+        } catch (IOException ex) {
+            ex.printStackTrace();
+            Logger.getLogger(RSSWorkItemHandler.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (IllegalArgumentException ex) {
+            ex.printStackTrace();
+            Logger.getLogger(RSSWorkItemHandler.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (FeedException ex) {
+            ex.printStackTrace();
+            Logger.getLogger(RSSWorkItemHandler.class.getName()).log(Level.SEVERE, null, ex);
+        } 
+
+         
+    }
+    public List<SyndFeed> getFeeds(){
+        return this.feeds;
+    }
+
+    public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/jabber/JabberWorkItemHandlerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/jabber/JabberWorkItemHandlerTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/jabber/JabberWorkItemHandlerTest.java	2009-02-13 19:26:52 UTC (rev 25256)
@@ -0,0 +1,36 @@
+package org.drools.process.workitem.jabber;
+
+
+
+import junit.framework.TestCase;
+
+import org.drools.process.instance.impl.DefaultWorkItemManager;
+import org.drools.process.instance.impl.WorkItemImpl;
+import org.drools.runtime.process.WorkItemManager;
+
+// @Author: salaboy at gmail.com
+public class JabberWorkItemHandlerTest extends TestCase {
+    
+  
+    public void testSendJabberMessage() throws Exception {
+        JabberWorkItemHandler handler = new JabberWorkItemHandler();
+        WorkItemImpl workItem = new WorkItemImpl();
+        //The contact in To must be added as a contact in the chat of gtalk
+        workItem.setParameter( "To", "drools.demo at gmail.com" );
+        workItem.setParameter( "Text", "Hello from Ruleflow WorkItem" );
+        //workItem.setParameter( "Server", "talk.google.com" );
+        //workItem.setParameter( "Port", "5222" );
+        workItem.setParameter( "Service", "gmail.com" );
+        workItem.setParameter( "User", "drools.demo" );
+        workItem.setParameter( "Password", "pa$$word" );
+        
+        WorkItemManager manager = new DefaultWorkItemManager(null);
+        handler.executeWorkItem( workItem, manager );
+
+        //In a real case i must register the WorkItemHandler:
+        // workingMemory.getWorkItemManager()
+        //.registerWorkItemHandler("Notification", new NotificationWorkItemHandler());
+
+        
+    }    
+}

Added: labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/rss/RSSWorkItemHandlerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/rss/RSSWorkItemHandlerTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/rss/RSSWorkItemHandlerTest.java	2009-02-13 19:26:52 UTC (rev 25256)
@@ -0,0 +1,32 @@
+package org.drools.process.workitem.rss;
+
+
+
+import junit.framework.TestCase;
+
+import org.drools.process.instance.impl.DefaultWorkItemManager;
+import org.drools.process.instance.impl.WorkItemImpl;
+import org.drools.runtime.process.WorkItemManager;
+
+
+public class RSSWorkItemHandlerTest extends TestCase {
+    
+  
+    public void testReadRSSFeed() throws Exception {
+        RSSWorkItemHandler handler = new RSSWorkItemHandler();
+        WorkItemImpl workItem = new WorkItemImpl();
+        workItem.setParameter( "URL", "http://feeds.athico.com/DroolsRSS;http://salaboy.wordpress.com/feed/" );
+
+        
+        WorkItemManager manager = new DefaultWorkItemManager(null);
+        handler.executeWorkItem( workItem, manager );
+
+        assertEquals(2, handler.getFeeds().size());
+
+        //En el caso real deberia registrar el workitem handler en el workitemmanager
+        // workingMemory.getWorkItemManager()
+        //.registerWorkItemHandler("Notification", new NotificationWorkItemHandler());
+
+        
+    }    
+}




More information about the jboss-svn-commits mailing list