[overlord-commits] Overlord SVN: r244 - in sam/trunk/modules/core/src: test/java/org/jboss/test/sam/database and 1 other directories.

overlord-commits at lists.jboss.org overlord-commits at lists.jboss.org
Wed Aug 13 10:54:12 EDT 2008


Author: heiko.braun at jboss.com
Date: 2008-08-13 10:54:11 -0400 (Wed, 13 Aug 2008)
New Revision: 244

Added:
   sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/MapMessageAdapter.java
Modified:
   sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/ObjectMessageAdaptor.java
   sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/SAMAdapter.java
   sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/StreamOutputAdapter.java
   sam/trunk/modules/core/src/test/java/org/jboss/test/sam/database/DatabaseTestCase.java
   sam/trunk/modules/core/src/test/resources/database/test.drl
Log:
Added MapMessageAdater to cope with SQL query results as event streams

Added: sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/MapMessageAdapter.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/MapMessageAdapter.java	                        (rev 0)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/MapMessageAdapter.java	2008-08-13 14:54:11 UTC (rev 244)
@@ -0,0 +1,61 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.sam.internal.drools;
+
+import org.jboss.sam.EventMessage;
+
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * @author Heiko.Braun <heiko.braun at jboss.com>
+ */
+public class MapMessageAdapter implements EventMessage
+{
+
+   private Map delegate;
+
+   public MapMessageAdapter(Map delegate)
+   {
+      this.delegate = delegate;
+   }
+
+   public long getTimestamp()
+   {
+      return (Long)delegate.get("timestamp");
+   }
+
+   public Object getProperty(String name)
+   {
+      return delegate.get(name); 
+   }
+
+   public Iterator getPropertyNames()
+   {
+      return delegate.keySet().iterator();
+   }
+
+   public Object getUnderlying()
+   {
+      return delegate; 
+   }
+}


Property changes on: sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/MapMessageAdapter.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/ObjectMessageAdaptor.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/ObjectMessageAdaptor.java	2008-08-13 14:42:18 UTC (rev 243)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/ObjectMessageAdaptor.java	2008-08-13 14:54:11 UTC (rev 244)
@@ -56,7 +56,7 @@
       }
       catch (Exception e)
       {
-         throw new RuntimeException("Proprty access error: "+methodName, e);
+         throw new RuntimeException("Property access error: "+methodName, e);
       }
       return returnValue;
    }

Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/SAMAdapter.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/SAMAdapter.java	2008-08-13 14:42:18 UTC (rev 243)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/SAMAdapter.java	2008-08-13 14:54:11 UTC (rev 244)
@@ -98,13 +98,15 @@
             Map row = new HashMap();
             for(int i=1;i<=numcols;i++)
             {
-               row.put(rset.getMetaData().getColumnName(i), rset.getObject(i));
+               // TODO: case handling should be configureable
+               row.put(rset.getMetaData().getColumnName(i).toLowerCase(), rset.getObject(i));
             }
             results.add(row);
          }
       }
       catch(SQLException e)
       {
+         // todo: exeception handling? (Goes back into drools)
          e.printStackTrace();
       }
       finally

Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/StreamOutputAdapter.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/StreamOutputAdapter.java	2008-08-13 14:42:18 UTC (rev 243)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/StreamOutputAdapter.java	2008-08-13 14:54:11 UTC (rev 244)
@@ -25,6 +25,7 @@
 import org.jboss.sam.EventMessage;
 
 import java.util.Collection;
+import java.util.Map;
 
 /**
  * @author Heiko.Braun <heiko.braun at jboss.com>
@@ -60,7 +61,11 @@
          events = new EventMessage[c.size()];
          for(int i=0; i<c.size(); i++)
          {
-            events[i] = new ObjectMessageAdaptor(cAr[i]);
+            // TODO: think more thoroughly about payload adoption
+            if(cAr[i] instanceof Map)
+               events[i] = new MapMessageAdapter((Map)cAr[i]);
+            else
+               events[i] = new ObjectMessageAdaptor(cAr[i]);
          }
       }
       else

Modified: sam/trunk/modules/core/src/test/java/org/jboss/test/sam/database/DatabaseTestCase.java
===================================================================
--- sam/trunk/modules/core/src/test/java/org/jboss/test/sam/database/DatabaseTestCase.java	2008-08-13 14:42:18 UTC (rev 243)
+++ sam/trunk/modules/core/src/test/java/org/jboss/test/sam/database/DatabaseTestCase.java	2008-08-13 14:54:11 UTC (rev 244)
@@ -87,10 +87,11 @@
       // evaluate
       assertTrue("Listener not invoked", bufferedOutput.isInvoked());
       EventMessage[] eventMessages = bufferedOutput.getLastNewData();
+      assertEquals(7, eventMessages.length);
 
       for(EventMessage event : eventMessages)
       {
-         System.out.println("!! " + event.getUnderlying() );
+         System.out.println(event.getProperty("symbol") + " -> " + event.getProperty("price") );
       }
    }
 

Modified: sam/trunk/modules/core/src/test/resources/database/test.drl
===================================================================
--- sam/trunk/modules/core/src/test/resources/database/test.drl	2008-08-13 14:42:18 UTC (rev 243)
+++ sam/trunk/modules/core/src/test/resources/database/test.drl	2008-08-13 14:54:11 UTC (rev 244)
@@ -8,7 +8,7 @@
 when
    $query: Query();
    $sqlStream: ArrayList() from collect (
-      Map() from SAM.query("hsqlDB", "SELECT * FROM quotes WHERE symbol='"+$query.criteria+"'")
+      Map() from SAM.query("hsqlDB", "SELECT * FROM quotes")
       );
 then
    SAM.getListener("InVM").update($sqlStream);




More information about the overlord-commits mailing list