[jboss-svn-commits] JBL Code SVN: r12819 - in labs/jbossrules/trunk/drools-core/src: test/java/org/drools/agent and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Jun 24 23:25:18 EDT 2007
Author: michael.neale at jboss.com
Date: 2007-06-24 23:25:18 -0400 (Sun, 24 Jun 2007)
New Revision: 12819
Removed:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/exampleRulebaseDir.conf
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/exampleRulebaseFile.conf
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/exampleRulebaseURI.conf
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/AgentEventListener.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/DirectoryScanner.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/FileScanner.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleAgent.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/URLScanner.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java
Log:
JBRULES-752
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/AgentEventListener.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/AgentEventListener.java 2007-06-25 02:24:14 UTC (rev 12818)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/AgentEventListener.java 2007-06-25 03:25:18 UTC (rev 12819)
@@ -11,17 +11,21 @@
/**
* For general info messages.
*/
- public void info(String message);
+ public void info(String configName, String message);
/**
* For a warning (useful when tracking down problems).
*/
- public void warning(String message);
+ public void warning(String configName, String message);
/**
* An exception occurred.
*/
- public void exception(Exception e);
+ public void exception(String configName, Exception e);
+ /**
+ * These should not be logged, just shown if needed.
+ */
+ public void debug(String configName, String message);
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/DirectoryScanner.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/DirectoryScanner.java 2007-06-25 02:24:14 UTC (rev 12818)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/DirectoryScanner.java 2007-06-25 03:25:18 UTC (rev 12819)
@@ -42,5 +42,16 @@
scanner.updateRuleBase( rb,
removeExistingPackages );
}
+
+ public String toString() {
+ String s = "DirectoryScanner";
+ if (dir != null) {
+ s = s + " scanning dir: " + dir.getPath();
+ }
+ if (currentList != null) {
+ s = s + " found " + currentList.length + " file(s).";
+ }
+ return s;
+ }
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/FileScanner.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/FileScanner.java 2007-06-25 02:24:14 UTC (rev 12818)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/FileScanner.java 2007-06-25 03:25:18 UTC (rev 12819)
@@ -133,6 +133,7 @@
public String toString() {
StringBuffer buf = new StringBuffer();
+ buf.append( "FileScanner scanning: " );
for ( int i = 0; i < files.length; i++ ) {
File f = files[i];
buf.append( f.getPath() + " " );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleAgent.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleAgent.java 2007-06-25 02:24:14 UTC (rev 12818)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleAgent.java 2007-06-25 03:25:18 UTC (rev 12819)
@@ -4,6 +4,7 @@
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -50,8 +51,9 @@
public static final String NEW_INSTANCE = "newInstance";
public static final String FILES = "file";
public static final String DIRECTORY = "dir";
- public static final String URLS = "url";
+ public static final String URLS = "url";
public static final String POLL_INTERVAL = "poll";
+ public static final String CONFIG_NAME = "name"; //name is optional
//this is needed for cold starting when BRMS is down (ie only for URL).
public static final String LOCAL_URL_CACHE = "localCacheDir";
@@ -86,9 +88,10 @@
/**
* The providers that actually do the work.
*/
- ArrayList providers;
+ List providers;
- private AgentEventListener listener = getDefaultListener();
+ AgentEventListener listener = getDefaultListener();
+ private String configName;
/**
* Properties configured to load up packages into a rulebase (and monitor them
@@ -97,6 +100,15 @@
public RuleAgent(Properties config) {
init( config );
}
+
+ /**
+ * This allows an optional listener to be passed in.
+ * The default one prints some stuff out to System.err only when really needed.
+ */
+ public RuleAgent(Properties config, AgentEventListener listener) {
+ this.listener = listener;
+ init(config);
+ }
@@ -106,21 +118,26 @@
"false" ) ).booleanValue();
int secondsToRefresh = Integer.parseInt( config.getProperty( POLL_INTERVAL,
"-1" ) );
+ String name = config.getProperty( CONFIG_NAME, "default" );
+
+ listener.info( this.configName, "Configuring with newInstance=" + newInstance + ", secondsToRefresh="
+ + secondsToRefresh);
+
+ List provs = new ArrayList();
- providers = new ArrayList();
-
for ( Iterator iter = config.keySet().iterator(); iter.hasNext(); ) {
String key = (String) iter.next();
PackageProvider prov = getProvider( key,
config );
if ( prov != null ) {
- providers.add( prov );
+ listener.info( configName, "Configuring package provider : " + prov.toString() );
+ provs.add( prov );
}
}
- configure( newInstance,
- providers,
- secondsToRefresh );
+
+ configure( newInstance, provs,
+ secondsToRefresh, name );
}
/**
@@ -129,6 +146,15 @@
public RuleAgent(String propsFileName) {
init( loadFromProperties( propsFileName ) );
}
+
+ /**
+ * This takes in an optional listener.
+ * Listener must not be null in this case.
+ */
+ public RuleAgent(String propsFileName, AgentEventListener listener) {
+ this.listener = listener;
+ init( loadFromProperties( propsFileName ) );
+ }
Properties loadFromProperties(String propsFileName) {
InputStream in = this.getClass().getResourceAsStream( propsFileName );
@@ -166,10 +192,12 @@
}
synchronized void configure(boolean newInstance,
- final List providers,
- int secondsToRefresh) {
+ List provs,
+ int secondsToRefresh, String name) {
this.newInstance = newInstance;
-
+ this.providers = provs;
+ this.configName = name;
+
//run it the first time for each.
refreshRuleBase();
@@ -180,10 +208,11 @@
timer.schedule( new TimerTask() {
public void run() {
try {
+ listener.debug( configName, "Timer woke up." );
refreshRuleBase();
} catch (Exception e) {
//don't want to stop execution here.
- listener.exception( e );
+ listener.exception( configName, e );
}
}
},
@@ -201,8 +230,8 @@
}
private synchronized void updateRuleBase(PackageProvider prov) {
- System.err.println( "SCANNING FOR CHANGE " + prov.toString() );
- if ( this.newInstance || this.ruleBase == null ) {
+ listener.debug( configName, "SCANNING FOR CHANGE " + prov.toString() );
+ if ( this.newInstance || this.ruleBase == null ) {
ruleBase = RuleBaseFactory.newRuleBase();
}
prov.updateRuleBase( this.ruleBase,
@@ -254,21 +283,35 @@
return this.timer != null;
}
+ /**
+ * This should only be used once, on setup.
+ * @return
+ */
private AgentEventListener getDefaultListener() {
return new AgentEventListener() {
- public void exception(Exception e) {
- e.printStackTrace();
+ public String time() {
+ Date d = new Date();
+ return d.toString();
}
+
+ public void exception(String name, Exception e) {
+ System.err.println("RuleAgent(" + name + ") EXCEPTION (" + time() + "): " + e.getMessage() + ". Stack trace should follow");
+ e.printStackTrace( System.err );
+ }
- public void info(String message) {
- System.err.println("INFO: " + message);
+ public void info(String name, String message) {
+ System.err.println("RuleAgent(" + name + ") INFO (" + time() + "): " + message);
}
- public void warning(String message) {
- System.err.println("WARNING: " + message);
+ public void warning(String name, String message) {
+ System.err.println("RuleAgent(" + name + ") WARNING (" + time() + "): " + message);
}
+
+ public void debug(String name, String message) {
+ //do nothing...
+ }
};
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/URLScanner.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/URLScanner.java 2007-06-25 02:24:14 UTC (rev 12818)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/URLScanner.java 2007-06-25 03:25:18 UTC (rev 12819)
@@ -155,5 +155,19 @@
}
}
}
+
+ public String toString() {
+ String s = "URLScanner monitoring URLs: ";
+ if (this.urls != null) {
+ for ( int i = 0; i < urls.length; i++ ) {
+ URL url = urls[i];
+ s = s + " " + url.toExternalForm();
+ }
+ }
+ if (this.localCacheDir != null) {
+ s = s + " with local cache dir of " + this.localCacheDir.getPath();
+ }
+ return s;
+ }
}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/exampleRulebaseDir.conf
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/exampleRulebaseDir.conf 2007-06-25 02:24:14 UTC (rev 12818)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/exampleRulebaseDir.conf 2007-06-25 03:25:18 UTC (rev 12819)
@@ -1,4 +0,0 @@
-dir=/home/michael/rulebases
-
-poll=10 #minutes
-
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/exampleRulebaseFile.conf
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/exampleRulebaseFile.conf 2007-06-25 02:24:14 UTC (rev 12818)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/exampleRulebaseFile.conf 2007-06-25 03:25:18 UTC (rev 12819)
@@ -1,8 +0,0 @@
-files=/home/michael/Foo.pkg \
- /home/michael/Foo2.pkg
-
-
-poll=10
-
-
-
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/exampleRulebaseURI.conf
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/exampleRulebaseURI.conf 2007-06-25 02:24:14 UTC (rev 12818)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/exampleRulebaseURI.conf 2007-06-25 03:25:18 UTC (rev 12819)
@@ -1,6 +0,0 @@
-uri=http://server/drools-jbrms/packages/FooBarPackage/SNAP_1 \
- http://server/drools-jbrms/packages/FooBarPackage/SNAP_1 \
- http://server/drools-jbrms/packages/FooBarPackage/SNAP_1
-
-
-
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java 2007-06-25 02:24:14 UTC (rev 12818)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java 2007-06-25 03:25:18 UTC (rev 12819)
@@ -190,4 +190,40 @@
cleanActual );
}
+ public void testEventListenerSetup() throws Exception {
+ RuleAgent ag = new RuleAgent();
+ assertNotNull(ag.listener);
+
+ AgentEventListener list = new AgentEventListener() {
+ public void debug(String name, String message) {
+ }
+ public void exception(String name, Exception e) {
+ }
+ public void info(String name, String message) {
+ }
+ public void warning(String name, String message) {
+ }
+ };
+
+ File dir = RuleBaseAssemblerTest.getTempDirectory();
+
+ Package p1 = new Package("p1");
+ File p1f = new File(dir, "p42_.pkg");
+ RuleBaseAssemblerTest.writePackage( p1, p1f );
+
+ String path = dir.getPath() + "/" + "p42_.pkg";
+
+ Properties props = new Properties();
+ props.setProperty( "file", path );
+ props.setProperty( "poll", "1" );
+ ag = new RuleAgent(props, list);
+
+ assertEquals(list, ag.listener);
+ ag.stopPolling();
+
+
+ }
+
+
+
}
More information about the jboss-svn-commits
mailing list