[jboss-svn-commits] JBL Code SVN: r29131 - in labs/jbossrules/trunk/drools-repository/src: main/java/org/drools/repository/events and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Sep 1 03:36:28 EDT 2009


Author: michael.neale at jboss.com
Date: 2009-09-01 03:36:28 -0400 (Tue, 01 Sep 2009)
New Revision: 29131

Added:
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/events/CheckinEvent.java
Modified:
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/VersionableItem.java
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/events/StorageEventManager.java
   labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/events/StorageEventManagerTest.java
Log:
GUVNOR-447 Inbox feature

Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/VersionableItem.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/VersionableItem.java	2009-09-01 06:35:45 UTC (rev 29130)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/VersionableItem.java	2009-09-01 07:36:28 UTC (rev 29131)
@@ -549,6 +549,7 @@
                     StorageEventManager.getSaveEvent().onAssetCheckin((AssetItem) this);
                 }
             }
+            StorageEventManager.doCheckinEvents(this);
 
         } catch ( RepositoryException e ) {
             throw new RulesRepositoryException( "Unable to checkin.",

Added: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/events/CheckinEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/events/CheckinEvent.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/events/CheckinEvent.java	2009-09-01 07:36:28 UTC (rev 29131)
@@ -0,0 +1,11 @@
+package org.drools.repository.events;
+
+import org.drools.repository.AssetItem;
+
+/**
+ * To be called after an asset is checked in. 
+ * @author Michael Neale
+ */
+public interface CheckinEvent {
+    public void afterCheckin(AssetItem item);
+}

Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/events/StorageEventManager.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/events/StorageEventManager.java	2009-09-01 06:35:45 UTC (rev 29130)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/events/StorageEventManager.java	2009-09-01 07:36:28 UTC (rev 29131)
@@ -1,14 +1,20 @@
 package org.drools.repository.events;
 
 import org.drools.repository.AssetItem;
+import org.drools.repository.VersionableItem;
 
 import java.io.InputStream;
+import java.util.List;
+import java.util.ArrayList;
 
 /**
+ * This manages storage events, which may load/save from another location, or just notify on change etc.
  * @author Michael Neale
  */
 public class StorageEventManager {
 
+
+    static List<CheckinEvent> checkinEvents = new ArrayList<CheckinEvent>();
     static LoadEvent le = loadEvent();
     static SaveEvent se = saveEvent();
 
@@ -58,6 +64,20 @@
         return se;
     }
 
+    public static void registerCheckinEvent(CheckinEvent ev) {
+        checkinEvents.add(ev);
+    }
 
-    
+
+    /**
+     * Process any checkin event listeners.
+     */
+    public static void doCheckinEvents(VersionableItem item) {
+        if (item instanceof AssetItem) {
+            AssetItem asset = (AssetItem) item;
+            for (CheckinEvent e : checkinEvents) {
+                e.afterCheckin(asset);
+            }
+        }
+    }
 }

Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/events/StorageEventManagerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/events/StorageEventManagerTest.java	2009-09-01 06:35:45 UTC (rev 29130)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/events/StorageEventManagerTest.java	2009-09-01 07:36:28 UTC (rev 29131)
@@ -58,7 +58,6 @@
         StorageEventManager.se = null;
         assertFalse(StorageEventManager.hasSaveEvent());
 
-
     }
 
 
@@ -81,15 +80,37 @@
         asset.checkin("");
         assertTrue(((MockSaveEvent)StorageEventManager.se).checkinCalled);
 
-
-        
         asset.getContent();
         assertTrue(((MockLoadEvent) StorageEventManager.le).loadCalled);
-        
 
     }
 
+    public void testCheckinListener() throws Exception {
+        StorageEventManager.le = null;
+        StorageEventManager.se = null;
 
+        final AssetItem[] x = new AssetItem[1];
+
+        CheckinEvent e = new CheckinEvent() {
+            public void afterCheckin(AssetItem item) {
+                x[0] = item;
+            }
+        };
+        StorageEventManager.registerCheckinEvent(e);
+        RulesRepository repo = getRepo();
+        PackageItem pkg = repo.loadDefaultPackage();
+        AssetItem asset = pkg.addAsset("testCheckinListener", "");
+        assertEquals(0, asset.getContentLength());
+        asset.updateContent("boo");
+        asset.checkin("");
+
+        assertSame(asset, x[0]);
+
+
+
+    }
+
+
     private RulesRepository getRepo() {
         return RepositorySessionUtil.getRepository();
     }



More information about the jboss-svn-commits mailing list