[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