[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