[jboss-svn-commits] JBL Code SVN: r12727 - 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
Thu Jun 21 00:28:04 EDT 2007
Author: michael.neale at jboss.com
Date: 2007-06-21 00:28:03 -0400 (Thu, 21 Jun 2007)
New Revision: 12727
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/FileScanner.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/PackageProvider.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleBaseAgent.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/FileScannerTest.java
Log:
JBRULES-752 refactoring love
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-21 03:52:07 UTC (rev 12726)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/DirectoryScanner.java 2007-06-21 04:28:03 UTC (rev 12727)
@@ -1,24 +1,44 @@
package org.drools.agent;
-import java.util.List;
+import java.io.File;
+import java.util.Properties;
import org.drools.RuleBase;
+/**
+ * This will scan a directory for files to watch for a change.
+ * It will update the list of files only if they number of files in a directory changes.
+ *
+ * @author Michael Neale
+ */
public class DirectoryScanner extends PackageProvider {
- private List dir;
+ private File[] currentList;
+ private FileScanner scanner;
+ private File dir;
- void configure(List configList) {
- this.dir = configList;
+ void configure(Properties config) {
+ String d = config.getProperty( RuleBaseAgent.DIRECTORY );
+
//now check to see whats in them dir...
- if (configList.size() > 1) {
- throw new IllegalArgumentException("You can only monitor one directory at a time this way.");
+ dir = new File(d);
+ if (!(dir.isDirectory() && dir.exists())) {
+ throw new IllegalArgumentException("The directory " + d + "is not valid.");
}
+ this.currentList = dir.listFiles();
+ scanner = new FileScanner();
+ scanner.setFiles( currentList );
+
}
void updateRuleBase(RuleBase rb, boolean removeExistingPackages) {
-
+ if (currentList.length != dir.listFiles().length) {
+ currentList = dir.listFiles();
+ scanner = new FileScanner();
+ scanner.setFiles( currentList );
+ }
+ scanner.updateRuleBase( rb, removeExistingPackages );
}
}
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-21 03:52:07 UTC (rev 12726)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/FileScanner.java 2007-06-21 04:28:03 UTC (rev 12727)
@@ -9,6 +9,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Properties;
import org.drools.RuleBase;
import org.drools.RuntimeDroolsException;
@@ -33,7 +34,8 @@
* This sets the list of files to be monitored.
* This takes a list of paths and files (not directories).
*/
- void configure(List paths) {
+ void configure(Properties config) {
+ List paths = RuleBaseAgent.list( config.getProperty( RuleBaseAgent.FILES ) );
files = new File[paths.size()];
for ( int i = 0; i < paths.size(); i++ ) {
File file = new File( (String) paths.get( i ) );
@@ -43,6 +45,13 @@
files[i] = file;
}
}
+
+ /**
+ * An alternative way to configure.
+ */
+ void setFiles(File[] files) {
+ this.files = files;
+ }
/**
* Perform the scan, adding in any packages changed to the rulebase.
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/PackageProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/PackageProvider.java 2007-06-21 03:52:07 UTC (rev 12726)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/PackageProvider.java 2007-06-21 04:28:03 UTC (rev 12727)
@@ -1,6 +1,6 @@
package org.drools.agent;
-import java.util.List;
+import java.util.Properties;
import org.drools.RuleBase;
@@ -20,9 +20,9 @@
/**
- * This will be passed a list of configuration strings which were extracted from the config property.
+ * This will be passed the entire config.
*/
- abstract void configure(List configList);
+ abstract void configure(Properties config);
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleBaseAgent.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleBaseAgent.java 2007-06-21 03:52:07 UTC (rev 12726)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleBaseAgent.java 2007-06-21 04:28:03 UTC (rev 12727)
@@ -1,9 +1,6 @@
package org.drools.agent;
-import java.io.FileNotFoundException;
-import java.io.IOException;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
@@ -17,7 +14,6 @@
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.RuntimeDroolsException;
-import org.drools.util.BinaryRuleBaseLoader;
/**
* This manages a single rulebase, based on the properties given
@@ -31,6 +27,7 @@
* <code>file</code>: a space seperated listing of files that make up the
* packages of the rulebase.
*
+ * <code>dir</code>: a single file system directory to monitor for packages.
* ...
*
* @author Michael Neale
@@ -43,7 +40,7 @@
*/
public static final String NEW_INSTANCE = "newInstance";
public static final String FILES = "file";
- //public static final String DIRECTORIES = "dir";
+ public static final String DIRECTORY = "dir";
//public static final String URIS = "uri";
public static final String POLL_INTERVAL = "poll";
@@ -80,10 +77,9 @@
for ( Iterator iter = config.keySet().iterator(); iter.hasNext(); ) {
String key = (String) iter.next();
- if ( key.equals( POLL_INTERVAL ) || key.equals( NEW_INSTANCE ) ) {
- //already dealt with these
- } else {
- providers.add( getProvider( key, config.getProperty( key ) ) );
+ PackageProvider prov = getProvider( key, config );
+ if (prov != null) {
+ providers.add( prov ) ;
}
}
@@ -93,11 +89,14 @@
/**
* Return a configured provider ready to go.
*/
- private PackageProvider getProvider(String key, String property) {
+ private PackageProvider getProvider(String key, Properties config) {
+ if (!PACKAGE_PROVIDERS.containsKey( key )) {
+ return null;
+ }
Class clz = (Class) PACKAGE_PROVIDERS.get( key );
try {
PackageProvider prov = (PackageProvider) clz.newInstance();
- prov.configure( list( property ) );
+ prov.configure( config );
return prov;
} catch ( InstantiationException e ) {
throw new RuntimeDroolsException( "Unable to load up a package provider for " + key,
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/FileScannerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/FileScannerTest.java 2007-06-21 03:52:07 UTC (rev 12726)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/FileScannerTest.java 2007-06-21 04:28:03 UTC (rev 12727)
@@ -5,6 +5,7 @@
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
+import java.util.Properties;
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
@@ -44,7 +45,9 @@
RuleBaseAssemblerTest.writePackage( p2, p2f);
FileScanner scan = new FileScanner();
- scan.configure( Arrays.asList( new String[] {p1f.getPath(), p2f.getPath()}) );
+ Properties props = new Properties();
+ props.setProperty( RuleBaseAgent.FILES, p1f.getPath() + " " + p2f.getPath() );
+ scan.configure( props );
RuleBase rb = RuleBaseFactory.newRuleBase();
scan.updateRuleBase( rb, true );
More information about the jboss-svn-commits
mailing list