[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