[jboss-svn-commits] JBL Code SVN: r22816 - in labs/jbossrules/trunk/drools-core/src: test/java/org/drools/agent and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Sep 16 09:55:36 EDT 2008


Author: Rikkola
Date: 2008-09-16 09:55:35 -0400 (Tue, 16 Sep 2008)
New Revision: 22816

Added:
   labs/jbossrules/trunk/drools-core/src/test/resources/rule-base-rule-agent-config.properties
Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleAgent.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java
Log:
JBRULES-1334: Add RuleBase configuration options to rule agent properties file

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	2008-09-16 13:49:53 UTC (rev 22815)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleAgent.java	2008-09-16 13:55:35 UTC (rev 22816)
@@ -3,7 +3,6 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Date;
@@ -12,7 +11,6 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
-import java.util.StringTokenizer;
 import java.util.Timer;
 import java.util.TimerTask;
 
@@ -182,12 +180,30 @@
         if ( listener != null ) {
             agent.listener = listener;
         }
-        agent.init( config );
+
+        if ( ruleBaseConf == null ) {
+            agent.init( config,
+                        true );
+        } else {
+            agent.init( config );
+        }
+
         return agent;
     }
 
     void init(Properties config) {
+        init( config,
+              false );
+    }
 
+    /**
+     * 
+     * @param config
+     * @param lookForRuleBaseConfigurations true if config contains rule base configuration data that should be used.
+     */
+    void init(Properties config,
+              boolean lookForRuleBaseConfigurations) {
+
         boolean newInstance = Boolean.valueOf( config.getProperty( NEW_INSTANCE,
                                                                    "false" ) ).booleanValue();
         int secondsToRefresh = Integer.parseInt( config.getProperty( POLL_INTERVAL,
@@ -201,16 +217,32 @@
 
         List provs = new ArrayList();
 
+        Properties droolsProperties = new Properties();
+
         for ( Iterator iter = config.keySet().iterator(); iter.hasNext(); ) {
             String key = (String) iter.next();
-            PackageProvider prov = getProvider( key,
-                                                config );
-            if ( prov != null ) {
-                listener.info( "Configuring package provider : " + prov.toString() );
-                provs.add( prov );
+
+            if ( ruleBaseConf != null && key.startsWith( "drools." ) ) {
+
+                droolsProperties.setProperty( key,
+                                              config.getProperty( key ) );
+
+            } else {
+
+                PackageProvider prov = getProvider( key,
+                                                    config );
+                if ( prov != null ) {
+                    listener.info( "Configuring package provider : " + prov.toString() );
+                    provs.add( prov );
+                }
             }
         }
 
+        // If there is no ruleBase and config file had rule base properties, set properties.
+        if ( lookForRuleBaseConfigurations && !droolsProperties.isEmpty() ) {
+            ruleBaseConf = new RuleBaseConfiguration( droolsProperties );
+        }
+
         configure( newInstance,
                    provs,
                    secondsToRefresh );
@@ -524,4 +556,7 @@
         };
     }
 
+    RuleBaseConfiguration getRuleBaseConfiguration() {
+        return ruleBaseConf;
+    }
 }

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	2008-09-16 13:49:53 UTC (rev 22815)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java	2008-09-16 13:55:35 UTC (rev 22816)
@@ -11,6 +11,7 @@
 
 import org.drools.RuleBase;
 import org.drools.RuleBaseConfiguration;
+import org.drools.RuleBaseConfiguration.SequentialAgenda;
 import org.drools.common.InternalRuleBase;
 import org.drools.rule.Package;
 
@@ -21,384 +22,455 @@
     public void testLists() {
         String s = "\tfoo.bar\n baz.bar\t whee ";
         List result = RuleAgent.list( s );
-        assertEquals(3, result.size());
-        assertEquals("foo.bar", result.get( 0 ));
-        assertEquals("baz.bar", result.get(1));
-        assertEquals("whee", result.get(2));
+        assertEquals( 3,
+                      result.size() );
+        assertEquals( "foo.bar",
+                      result.get( 0 ) );
+        assertEquals( "baz.bar",
+                      result.get( 1 ) );
+        assertEquals( "whee",
+                      result.get( 2 ) );
 
         s = null;
         result = RuleAgent.list( s );
-        assertNotNull(result);
-        assertEquals(0, result.size());
+        assertNotNull( result );
+        assertEquals( 0,
+                      result.size() );
 
         s = "\"yeah man\" \"another one\"";
         result = RuleAgent.list( s );
-        assertEquals(2, result.size());
-        assertEquals("yeah man", result.get( 0 ));
-        assertEquals("another one", result.get(1));
+        assertEquals( 2,
+                      result.size() );
+        assertEquals( "yeah man",
+                      result.get( 0 ) );
+        assertEquals( "another one",
+                      result.get( 1 ) );
 
         s = "\"yeah man\"";
         result = RuleAgent.list( s );
-        assertEquals(1, result.size());
-        assertEquals("yeah man", result.get( 0 ));
+        assertEquals( 1,
+                      result.size() );
+        assertEquals( "yeah man",
+                      result.get( 0 ) );
 
         s = "YEAH";
         result = RuleAgent.list( s );
-        assertEquals(1, result.size());
-        assertEquals("YEAH", result.get( 0 ));
+        assertEquals( 1,
+                      result.size() );
+        assertEquals( "YEAH",
+                      result.get( 0 ) );
 
     }
 
     public void testFiles() throws Exception {
         File dir = RuleBaseAssemblerTest.getTempDirectory();
 
-        Package p1 = new Package("p1");
-        File p1f = new File(dir, "p1.pkg");
-        RuleBaseAssemblerTest.writePackage( p1, p1f );
+        Package p1 = new Package( "p1" );
+        File p1f = new File( dir,
+                             "p1.pkg" );
+        RuleBaseAssemblerTest.writePackage( p1,
+                                            p1f );
 
-        Package p2 = new Package("p2");
-        File p2f = new File(dir, "p2.pkg");
-        RuleBaseAssemblerTest.writePackage( p2, p2f );
+        Package p2 = new Package( "p2" );
+        File p2f = new File( dir,
+                             "p2.pkg" );
+        RuleBaseAssemblerTest.writePackage( p2,
+                                            p2f );
 
         String path = dir.getPath() + "/" + "p1.pkg " + dir.getPath() + "/" + "p2.pkg";
 
         Properties props = new Properties();
-        props.setProperty( "file", path );
-        RuleAgent ag = RuleAgent.newRuleAgent(props);
+        props.setProperty( "file",
+                           path );
+        RuleAgent ag = RuleAgent.newRuleAgent( props );
         RuleBase rb = ag.getRuleBase();
-        assertNotNull(rb);
-        assertEquals(2, rb.getPackages().length);
+        assertNotNull( rb );
+        assertEquals( 2,
+                      rb.getPackages().length );
 
-        assertFalse(ag.isPolling());
+        assertFalse( ag.isPolling() );
 
-        props.setProperty( "poll", "1" );
-        ag = RuleAgent.newRuleAgent(props);
-        assertTrue(ag.isPolling());
+        props.setProperty( "poll",
+                           "1" );
+        ag = RuleAgent.newRuleAgent( props );
+        assertTrue( ag.isPolling() );
 
         ag.stopPolling();
-        assertFalse(ag.isPolling());
+        assertFalse( ag.isPolling() );
 
     }
 
-//    public void testSpaces() throws Exception {
-//        File dir = RuleBaseAssemblerTest.getTempDirectory();
-//        File dir_ = new File(dir, "whee waah");
-//        dir_.mkdir();
-//        System.err.println(dir_.getPath());
-//
-//
-//        File x = new File("/tmp/__temp_test_drools_packages/whee waah");
-//        assertTrue(x.exists());
-//    }
+    //    public void testSpaces() throws Exception {
+    //        File dir = RuleBaseAssemblerTest.getTempDirectory();
+    //        File dir_ = new File(dir, "whee waah");
+    //        dir_.mkdir();
+    //        System.err.println(dir_.getPath());
+    //
+    //
+    //        File x = new File("/tmp/__temp_test_drools_packages/whee waah");
+    //        assertTrue(x.exists());
+    //    }
 
     public void testPollingFilesRuleBaseUpdate() throws Exception {
         //RuleBaseAssemblerTest.clearTempDirectory();
         final File dir = RuleBaseAssemblerTest.getTempDirectory();
 
-        Random rnd = new Random(System.currentTimeMillis());
+        Random rnd = new Random( System.currentTimeMillis() );
 
-        final Package p1 = new Package("p1");
-        final File p1f = new File(dir, rnd.nextLong() + ".pkg");
-        RuleBaseAssemblerTest.writePackage( p1, p1f );
+        final Package p1 = new Package( "p1" );
+        final File p1f = new File( dir,
+                                   rnd.nextLong() + ".pkg" );
+        RuleBaseAssemblerTest.writePackage( p1,
+                                            p1f );
 
         String path = p1f.getPath();
 
         Properties props = new Properties();
-        props.setProperty( "file", path );
+        props.setProperty( "file",
+                           path );
 
-        RuleAgent ag = RuleAgent.newRuleAgent(props);
+        RuleAgent ag = RuleAgent.newRuleAgent( props );
 
-
         RuleBase rb = ag.getRuleBase();
-        assertEquals(1, rb.getPackages().length);
-        assertEquals(0, rb.getPackages()[0].getGlobals().size());
+        assertEquals( 1,
+                      rb.getPackages().length );
+        assertEquals( 0,
+                      rb.getPackages()[0].getGlobals().size() );
 
-        p1.addGlobal( "goo", String.class );
+        p1.addGlobal( "goo",
+                      String.class );
 
         Thread.sleep( 1000 );
 
-        RuleBaseAssemblerTest.writePackage( p1, p1f );
+        RuleBaseAssemblerTest.writePackage( p1,
+                                            p1f );
 
         RuleBase rb_ = ag.getRuleBase();
-        assertSame(rb, rb_);
-        assertEquals(1, rb.getPackages().length);
-        assertEquals(0, rb.getPackages()[0].getGlobals().size());
+        assertSame( rb,
+                    rb_ );
+        assertEquals( 1,
+                      rb.getPackages().length );
+        assertEquals( 0,
+                      rb.getPackages()[0].getGlobals().size() );
 
         Thread.sleep( 1000 );
 
         ag.refreshRuleBase();
 
         RuleBase rb2 = ag.getRuleBase();
-        assertSame(rb, rb2);
+        assertSame( rb,
+                    rb2 );
 
-        assertEquals(1, rb2.getPackages().length);
-        assertEquals(1, rb2.getPackages()[0].getGlobals().size());
+        assertEquals( 1,
+                      rb2.getPackages().length );
+        assertEquals( 1,
+                      rb2.getPackages()[0].getGlobals().size() );
 
         //now check subsequent changes
-        p1.addGlobal( "goo2", String.class );
-//        System.err.println("-->WRITING CHANGE");
+        p1.addGlobal( "goo2",
+                      String.class );
+        //        System.err.println("-->WRITING CHANGE");
         Thread.sleep( 1000 );
-        RuleBaseAssemblerTest.writePackage( p1, p1f );
-//        System.err.println("-->WROTE CHANGE");
+        RuleBaseAssemblerTest.writePackage( p1,
+                                            p1f );
+        //        System.err.println("-->WROTE CHANGE");
         Thread.sleep( 1000 );
         ag.refreshRuleBase();
 
         RuleBase rb2_ = ag.getRuleBase();
-        assertSame(rb2_, rb2);
-        assertEquals(1, rb2_.getPackages().length);
-        assertEquals(2, rb2_.getPackages()[0].getGlobals().size());
+        assertSame( rb2_,
+                    rb2 );
+        assertEquals( 1,
+                      rb2_.getPackages().length );
+        assertEquals( 2,
+                      rb2_.getPackages()[0].getGlobals().size() );
 
         ag.refreshRuleBase();
 
         RuleBase rb3 = ag.getRuleBase();
-        assertSame(rb3, rb2);
+        assertSame( rb3,
+                    rb2 );
 
-        assertEquals(1, rb3.getPackages().length);
-        assertEquals(2, rb3.getPackages()[0].getGlobals().size());
+        assertEquals( 1,
+                      rb3.getPackages().length );
+        assertEquals( 2,
+                      rb3.getPackages()[0].getGlobals().size() );
 
         ag.refreshRuleBase();
         ag.refreshRuleBase();
 
-        assertEquals(1, rb3.getPackages().length);
-        assertEquals(2, rb3.getPackages()[0].getGlobals().size());
+        assertEquals( 1,
+                      rb3.getPackages().length );
+        assertEquals( 2,
+                      rb3.getPackages()[0].getGlobals().size() );
 
-
     }
 
     public void testPollingFilesRuleBaseReplace() throws Exception {
         File dir = RuleBaseAssemblerTest.getTempDirectory();
 
-        Package p1 = new Package("p1");
-        File p1f = new File(dir, "p43_.pkg");
-        RuleBaseAssemblerTest.writePackage( p1, p1f );
+        Package p1 = new Package( "p1" );
+        File p1f = new File( dir,
+                             "p43_.pkg" );
+        RuleBaseAssemblerTest.writePackage( p1,
+                                            p1f );
 
-        Package p2 = new Package("p2");
-        File p2f = new File(dir, "p44_.pkg");
-        RuleBaseAssemblerTest.writePackage( p2, p2f );
+        Package p2 = new Package( "p2" );
+        File p2f = new File( dir,
+                             "p44_.pkg" );
+        RuleBaseAssemblerTest.writePackage( p2,
+                                            p2f );
 
-
-
         String path = dir.getPath() + "/" + "p43_.pkg " + dir.getPath() + "/p44_.pkg";
 
         Properties props = new Properties();
-        props.setProperty( "file", path );
+        props.setProperty( "file",
+                           path );
 
-        props.setProperty( "newInstance", "true" );
-        RuleAgent ag = RuleAgent.newRuleAgent(props);
+        props.setProperty( "newInstance",
+                           "true" );
+        RuleAgent ag = RuleAgent.newRuleAgent( props );
 
-        assertTrue(ag.isNewInstance());
+        assertTrue( ag.isNewInstance() );
 
         RuleBase rb = ag.getRuleBase();
-        assertEquals(2, rb.getPackages().length);
+        assertEquals( 2,
+                      rb.getPackages().length );
 
         RuleBase rb_ = ag.getRuleBase();
-        assertSame(rb, rb_);
+        assertSame( rb,
+                    rb_ );
 
-
         ag.refreshRuleBase();
 
-        assertSame(rb, ag.getRuleBase());
+        assertSame( rb,
+                    ag.getRuleBase() );
         Thread.sleep( 1000 );
         //only change one
-        RuleBaseAssemblerTest.writePackage( p1, p1f );
+        RuleBaseAssemblerTest.writePackage( p1,
+                                            p1f );
         Thread.sleep( 1000 );
         ag.refreshRuleBase();
 
-
         rb_ = ag.getRuleBase();
 
-        assertNotSame( rb, rb_ );
+        assertNotSame( rb,
+                       rb_ );
 
-
         //check we will have 2
-        assertEquals(2, rb_.getPackages().length);
+        assertEquals( 2,
+                      rb_.getPackages().length );
 
         ag.refreshRuleBase();
         ag.refreshRuleBase();
 
         RuleBase rb__ = ag.getRuleBase();
-        assertSame(rb_, rb__);
+        assertSame( rb_,
+                    rb__ );
 
+    }
 
+    public void testPollingFilesRuleBaseRemoveNewInstanceFalse() throws Exception {
+        File dir = RuleBaseAssemblerTest.getTempDirectory();
 
+        Package p1 = new Package( "p1" );
+        File p1f = new File( dir,
+                             "p43_.pkg" );
+        RuleBaseAssemblerTest.writePackage( p1,
+                                            p1f );
 
-    }
-    
-    public void testPollingFilesRuleBaseRemoveNewInstanceFalse() throws Exception {
-    	File dir = RuleBaseAssemblerTest.getTempDirectory();
-    	
-    	Package p1 = new Package("p1");
-    	File p1f = new File(dir, "p43_.pkg");
-    	RuleBaseAssemblerTest.writePackage( p1, p1f );
-    	
-    	Package p2 = new Package("p2");
-    	File p2f = new File(dir, "p44_.pkg");
-    	RuleBaseAssemblerTest.writePackage( p2, p2f );
-    	
-    	String path = dir.getPath() + "/" + "p43_.pkg " + dir.getPath() + "/p44_.pkg";
-    	
-    	Properties props = new Properties();
-    	props.setProperty( "file", path );
-    	
-    	props.setProperty( "newInstance", "false" );
-    	RuleAgent ag = RuleAgent.newRuleAgent(props);
-    	
-    	assertFalse(ag.isNewInstance());
-    	
-    	RuleBase rb = ag.getRuleBase();
-    	assertEquals(2, rb.getPackages().length);
-    	
+        Package p2 = new Package( "p2" );
+        File p2f = new File( dir,
+                             "p44_.pkg" );
+        RuleBaseAssemblerTest.writePackage( p2,
+                                            p2f );
 
-    	boolean success = p2f.delete();
-    	assertTrue(success); 
-    	
-    	ag.refreshRuleBase();
+        String path = dir.getPath() + "/" + "p43_.pkg " + dir.getPath() + "/p44_.pkg";
 
-    	assertEquals(1, rb.getPackages().length);
-    	Thread.sleep( 1000 );
-    	//only change one
-    	RuleBaseAssemblerTest.writePackage( p1, p1f );
-    	Thread.sleep( 1000 );
-    	ag.refreshRuleBase();
-    	    	
-    	
-    	//check we will have 2
-    	assertEquals(1, rb.getPackages().length);
-    	
-    	ag.refreshRuleBase();
-    	ag.refreshRuleBase();
-    	
-    	assertEquals(1, rb.getPackages().length);
-    	
-    	
-    	
-    	
+        Properties props = new Properties();
+        props.setProperty( "file",
+                           path );
+
+        props.setProperty( "newInstance",
+                           "false" );
+        RuleAgent ag = RuleAgent.newRuleAgent( props );
+
+        assertFalse( ag.isNewInstance() );
+
+        RuleBase rb = ag.getRuleBase();
+        assertEquals( 2,
+                      rb.getPackages().length );
+
+        boolean success = p2f.delete();
+        assertTrue( success );
+
+        ag.refreshRuleBase();
+
+        assertEquals( 1,
+                      rb.getPackages().length );
+        Thread.sleep( 1000 );
+        //only change one
+        RuleBaseAssemblerTest.writePackage( p1,
+                                            p1f );
+        Thread.sleep( 1000 );
+        ag.refreshRuleBase();
+
+        //check we will have 2
+        assertEquals( 1,
+                      rb.getPackages().length );
+
+        ag.refreshRuleBase();
+        ag.refreshRuleBase();
+
+        assertEquals( 1,
+                      rb.getPackages().length );
+
     }
-    
+
     public void testPollingFilesRuleBaseRemoveNewInstanceTrue() throws Exception {
-    	File dir = RuleBaseAssemblerTest.getTempDirectory();
-    	
-    	Package p1 = new Package("p1");
-    	File p1f = new File(dir, "p43_.pkg");
-    	RuleBaseAssemblerTest.writePackage( p1, p1f );
-    	
-    	Package p2 = new Package("p2");
-    	File p2f = new File(dir, "p44_.pkg");
-    	RuleBaseAssemblerTest.writePackage( p2, p2f );
-    	
-    	
-    	
-    	String path = dir.getPath() + "/" + "p43_.pkg " + dir.getPath() + "/p44_.pkg";
-    	
-    	Properties props = new Properties();
-    	props.setProperty( "file", path );
-    	
-    	props.setProperty( "newInstance", "true" );
-    	RuleAgent ag = RuleAgent.newRuleAgent(props);
-    	
-    	assertTrue(ag.isNewInstance());
-    	
-    	RuleBase rb = ag.getRuleBase();
-    	assertEquals(2, rb.getPackages().length);
-    	
-    	
-    	boolean success = p2f.delete();
-        assertTrue(success); // <-- does not work on windows
-    	
-    	ag.refreshRuleBase();
+        File dir = RuleBaseAssemblerTest.getTempDirectory();
 
-    	RuleBase rb_ = ag.getRuleBase();
-    	
-    	assertNotSame(rb, rb_);
-    	
-    	assertEquals(1, rb_.getPackages().length);
-    	Thread.sleep( 1000 );
-    	//only change one
-    	RuleBaseAssemblerTest.writePackage( p1, p1f );
-    	Thread.sleep( 1000 );
-    	ag.refreshRuleBase();
+        Package p1 = new Package( "p1" );
+        File p1f = new File( dir,
+                             "p43_.pkg" );
+        RuleBaseAssemblerTest.writePackage( p1,
+                                            p1f );
 
-    	RuleBase rb__ = ag.getRuleBase();
-    	
-    	assertNotSame(rb, rb__);
-    	
-    	//check we will have 2
-    	assertEquals(1, rb__.getPackages().length);
-    	
-    	ag.refreshRuleBase();
-    	ag.refreshRuleBase();
+        Package p2 = new Package( "p2" );
+        File p2f = new File( dir,
+                             "p44_.pkg" );
+        RuleBaseAssemblerTest.writePackage( p2,
+                                            p2f );
 
-    	RuleBase rb___ = ag.getRuleBase();
-    	assertEquals(1, rb___.getPackages().length);
-    	
-    	
-    	
-    	
+        String path = dir.getPath() + "/" + "p43_.pkg " + dir.getPath() + "/p44_.pkg";
+
+        Properties props = new Properties();
+        props.setProperty( "file",
+                           path );
+
+        props.setProperty( "newInstance",
+                           "true" );
+        RuleAgent ag = RuleAgent.newRuleAgent( props );
+
+        assertTrue( ag.isNewInstance() );
+
+        RuleBase rb = ag.getRuleBase();
+        assertEquals( 2,
+                      rb.getPackages().length );
+
+        boolean success = p2f.delete();
+        assertTrue( success ); // <-- does not work on windows
+
+        ag.refreshRuleBase();
+
+        RuleBase rb_ = ag.getRuleBase();
+
+        assertNotSame( rb,
+                       rb_ );
+
+        assertEquals( 1,
+                      rb_.getPackages().length );
+        Thread.sleep( 1000 );
+        //only change one
+        RuleBaseAssemblerTest.writePackage( p1,
+                                            p1f );
+        Thread.sleep( 1000 );
+        ag.refreshRuleBase();
+
+        RuleBase rb__ = ag.getRuleBase();
+
+        assertNotSame( rb,
+                       rb__ );
+
+        //check we will have 2
+        assertEquals( 1,
+                      rb__.getPackages().length );
+
+        ag.refreshRuleBase();
+        ag.refreshRuleBase();
+
+        RuleBase rb___ = ag.getRuleBase();
+        assertEquals( 1,
+                      rb___.getPackages().length );
+
     }
 
-
     public void testDirectory() throws Exception {
         File dir = RuleBaseAssemblerTest.getTempDirectory();
 
-        Package p1 = new Package("p1");
-        File p1f = new File(dir, "p43_.pkg");
+        Package p1 = new Package( "p1" );
+        File p1f = new File( dir,
+                             "p43_.pkg" );
 
-        File junk = new File(dir, "xxx.poo");
-        FileOutputStream ojunk = new FileOutputStream(junk);
-        ojunk.write("ignore me".getBytes());
+        File junk = new File( dir,
+                              "xxx.poo" );
+        FileOutputStream ojunk = new FileOutputStream( junk );
+        ojunk.write( "ignore me".getBytes() );
         ojunk.flush();
         ojunk.close();
 
-        RuleBaseAssemblerTest.writePackage( p1, p1f );
+        RuleBaseAssemblerTest.writePackage( p1,
+                                            p1f );
 
         Properties props = new Properties();
-        props.setProperty( RuleAgent.DIRECTORY, dir.getPath() );
-        props.setProperty( RuleAgent.CONFIG_NAME, "goo" );
+        props.setProperty( RuleAgent.DIRECTORY,
+                           dir.getPath() );
+        props.setProperty( RuleAgent.CONFIG_NAME,
+                           "goo" );
 
+        RuleAgent ag = RuleAgent.newRuleAgent( props );
 
-        RuleAgent ag = RuleAgent.newRuleAgent(props);
-
         ag.refreshRuleBase();
 
         RuleBase rb = ag.getRuleBase();
-        assertNotNull(rb);
-//        assertEquals(1, rb.getPackages().length);
+        assertNotNull( rb );
+        //        assertEquals(1, rb.getPackages().length);
     }
 
     public void testCustomRuleBaseConfiguration() throws Exception {
         final File dir = RuleBaseAssemblerTest.getTempDirectory();
 
-        Random rnd = new Random(System.currentTimeMillis());
+        Random rnd = new Random( System.currentTimeMillis() );
 
-        final Package p1 = new Package("p1");
-        final File p1f = new File(dir, rnd.nextLong() + ".pkg");
-        RuleBaseAssemblerTest.writePackage( p1, p1f );
+        final Package p1 = new Package( "p1" );
+        final File p1f = new File( dir,
+                                   rnd.nextLong() + ".pkg" );
+        RuleBaseAssemblerTest.writePackage( p1,
+                                            p1f );
 
         String path = p1f.getPath();
 
         Properties props = new Properties();
-        props.setProperty( "file", path );
+        props.setProperty( "file",
+                           path );
 
         // Check a default value for the RuleBase's RuleBaseConfiguration
         RuleAgent agent = RuleAgent.newRuleAgent( props );
         RuleBaseConfiguration conf = ((InternalRuleBase) agent.getRuleBase()).getConfiguration();
-        assertEquals( false, conf.isSequential() );
+        assertEquals( false,
+                      conf.isSequential() );
 
         // Pass in a RuleBaseConfiguration and make sure the RuleBase was created with it
         conf = new RuleBaseConfiguration();
         conf.setSequential( true );
-        agent = RuleAgent.newRuleAgent( props, conf );
+        agent = RuleAgent.newRuleAgent( props,
+                                        conf );
         conf = ((InternalRuleBase) agent.getRuleBase()).getConfiguration();
-        assertEquals( true, conf.isSequential() );
+        assertEquals( true,
+                      conf.isSequential() );
     }
 
     public void testLoadSampleConfig() {
-        RuleAgent ag = new RuleAgent( new RuleBaseConfiguration()  );
+        RuleAgent ag = new RuleAgent( new RuleBaseConfiguration() );
         Properties props = ag.loadFromProperties( "/sample-agent-config.properties" );
-        assertEquals("10", props.getProperty( RuleAgent.POLL_INTERVAL ));
-        assertEquals("/home/packages", props.getProperty( RuleAgent.DIRECTORY ));
-        assertEquals("true", props.getProperty( RuleAgent.NEW_INSTANCE ));
-        assertEqualsIgnoreWhitespace( "/foo/bar.pkg /wee/waa.pkg /wee/waa2.pkg", props.getProperty( RuleAgent.FILES ));
+        assertEquals( "10",
+                      props.getProperty( RuleAgent.POLL_INTERVAL ) );
+        assertEquals( "/home/packages",
+                      props.getProperty( RuleAgent.DIRECTORY ) );
+        assertEquals( "true",
+                      props.getProperty( RuleAgent.NEW_INSTANCE ) );
+        assertEqualsIgnoreWhitespace( "/foo/bar.pkg /wee/waa.pkg /wee/waa2.pkg",
+                                      props.getProperty( RuleAgent.FILES ) );
     }
 
     private void assertEqualsIgnoreWhitespace(final String expected,
@@ -414,19 +486,23 @@
 
     public void testEventListenerSetup() throws Exception {
         RuleAgent ag = new RuleAgent( new RuleBaseConfiguration() );
-        assertNotNull(ag.listener);
+        assertNotNull( ag.listener );
 
         final String[] name = new String[1];
 
         AgentEventListener list = new AgentEventListener() {
             public void debug(String message) {
             }
+
             public void exception(Exception e) {
             }
+
             public void info(String message) {
             }
+
             public void warning(String message) {
             }
+
             public void setAgentName(String n) {
                 name[0] = n;
             }
@@ -434,59 +510,67 @@
 
         File dir = RuleBaseAssemblerTest.getTempDirectory();
 
-        Package p1 = new Package("p1");
-        File p1f = new File(dir, "p42_.pkg");
-        RuleBaseAssemblerTest.writePackage( p1, p1f );
+        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" );
-        props.setProperty( "name", "poo" );
-        ag = RuleAgent.newRuleAgent(props, list);
+        props.setProperty( "file",
+                           path );
+        props.setProperty( "poll",
+                           "1" );
+        props.setProperty( "name",
+                           "poo" );
+        ag = RuleAgent.newRuleAgent( props,
+                                     list );
 
-        assertEquals(list, ag.listener);
-        assertEquals("poo", name[0]);
+        assertEquals( list,
+                      ag.listener );
+        assertEquals( "poo",
+                      name[0] );
         ag.stopPolling();
     }
 
-
     public void testPollSetup() throws Exception {
         //this is the only method that will actually run the polling timer
 
-
         Properties props = new Properties();
         //props.setProperty( "file", "/foo/bar" );
-        props.setProperty( "poll", "1" );
+        props.setProperty( "poll",
+                           "1" );
         MockRuleAgent ag = new MockRuleAgent();
-        ag.init(props);
+        ag.init( props );
 
-        assertTrue(ag.isPolling());
-        assertTrue(ag.refreshCalled);
+        assertTrue( ag.isPolling() );
+        assertTrue( ag.refreshCalled );
         ag.refreshCalled = false;
-        assertFalse(ag.refreshCalled);
+        assertFalse( ag.refreshCalled );
         Thread.sleep( 100 );
-        assertFalse(ag.refreshCalled);
+        assertFalse( ag.refreshCalled );
         Thread.sleep( 1500 );
-        assertTrue(ag.refreshCalled);
+        assertTrue( ag.refreshCalled );
         ag.refreshCalled = false;
         Thread.sleep( 100 );
-        assertFalse(ag.refreshCalled);
+        assertFalse( ag.refreshCalled );
         Thread.sleep( 1500 );
-        assertTrue(ag.refreshCalled);
+        assertTrue( ag.refreshCalled );
         ag.stopPolling();
 
     }
 
     public void testProviderMap() throws Exception {
 
-        assertEquals(3, RuleAgent.PACKAGE_PROVIDERS.size());
-        assertTrue(RuleAgent.PACKAGE_PROVIDERS.containsKey( "url" ));
-        assertTrue(RuleAgent.PACKAGE_PROVIDERS.containsKey( "file" ));
-        assertTrue(RuleAgent.PACKAGE_PROVIDERS.containsKey( "dir" ));
-        assertFalse(RuleAgent.PACKAGE_PROVIDERS.containsKey( "XXX" ));
-        assertTrue(RuleAgent.PACKAGE_PROVIDERS.get( "url" ).equals( URLScanner.class ));
+        assertEquals( 3,
+                      RuleAgent.PACKAGE_PROVIDERS.size() );
+        assertTrue( RuleAgent.PACKAGE_PROVIDERS.containsKey( "url" ) );
+        assertTrue( RuleAgent.PACKAGE_PROVIDERS.containsKey( "file" ) );
+        assertTrue( RuleAgent.PACKAGE_PROVIDERS.containsKey( "dir" ) );
+        assertFalse( RuleAgent.PACKAGE_PROVIDERS.containsKey( "XXX" ) );
+        assertTrue( RuleAgent.PACKAGE_PROVIDERS.get( "url" ).equals( URLScanner.class ) );
 
     }
 
@@ -495,11 +579,13 @@
         Map oldMap = ag.PACKAGE_PROVIDERS;
 
         ag.PACKAGE_PROVIDERS = new HashMap();
-        ag.PACKAGE_PROVIDERS.put( RuleAgent.URLS, MockProvider.class );
-        ag.PACKAGE_PROVIDERS.put( RuleAgent.FILES, MockProvider.class );
-        ag.PACKAGE_PROVIDERS.put( RuleAgent.DIRECTORY, MockProvider.class );
+        ag.PACKAGE_PROVIDERS.put( RuleAgent.URLS,
+                                  MockProvider.class );
+        ag.PACKAGE_PROVIDERS.put( RuleAgent.FILES,
+                                  MockProvider.class );
+        ag.PACKAGE_PROVIDERS.put( RuleAgent.DIRECTORY,
+                                  MockProvider.class );
 
-
         Properties props = new Properties();
         props.load( this.getClass().getResourceAsStream( "/rule-agent-config.properties" ) );
         MockEventListener evl = new MockEventListener();
@@ -507,53 +593,91 @@
 
         ag.init( props );
 
+        assertTrue( ag.newInstance );
+        assertEquals( 3,
+                      ag.provs.size() );
+        assertEquals( 30,
+                      ag.secondsToRefresh );
+        assertEquals( "MyConfig",
+                      evl.name );
+        assertFalse( evl.exceptionCalled );
+        assertFalse( evl.warningCalled );
+        assertTrue( evl.infoCalled );
 
-        assertTrue(ag.newInstance);
-        assertEquals(3, ag.provs.size());
-        assertEquals(30, ag.secondsToRefresh);
-        assertEquals("MyConfig", evl.name);
-        assertFalse(evl.exceptionCalled);
-        assertFalse(evl.warningCalled);
-        assertTrue(evl.infoCalled);
-
         ag.PACKAGE_PROVIDERS = oldMap;
     }
 
+    public void testLoadRuleBaseConfigurationProperties() throws Exception {
+        AnotherRuleAgentMock ag = new AnotherRuleAgentMock();
+        Map oldMap = ag.PACKAGE_PROVIDERS;
 
+        RuleAgent.PACKAGE_PROVIDERS = new HashMap();
+        RuleAgent.PACKAGE_PROVIDERS.put( RuleAgent.URLS,
+                                         MockProvider.class );
+        RuleAgent.PACKAGE_PROVIDERS.put( RuleAgent.FILES,
+                                         MockProvider.class );
+        RuleAgent.PACKAGE_PROVIDERS.put( RuleAgent.DIRECTORY,
+                                         MockProvider.class );
 
+        Properties props = new Properties();
+        MockEventListener evl = new MockEventListener();
+        ag.listener = evl;
 
+        props.load( this.getClass().getResourceAsStream( "/rule-agent-config.properties" ) );
+        ag.init( props,
+                 true );
+
+        assertTrue( ag.getRuleBaseConfiguration().isMaintainTms() );
+        assertFalse( ag.getRuleBaseConfiguration().isSequential() );
+        assertTrue( ag.getRuleBaseConfiguration().getSequentialAgenda().equals( SequentialAgenda.SEQUENTIAL ) );
+        assertTrue( ag.getRuleBaseConfiguration().isShareAlphaNodes() );
+        assertTrue( ag.getRuleBaseConfiguration().isShareBetaNodes() );
+
+        props.load( this.getClass().getResourceAsStream( "/rule-base-rule-agent-config.properties" ) );
+
+        ag.init( props,
+                 true );
+
+        assertTrue( ag.getRuleBaseConfiguration().isMaintainTms() );
+        assertFalse( ag.getRuleBaseConfiguration().isSequential() );
+        assertTrue( ag.getRuleBaseConfiguration().getSequentialAgenda().equals( SequentialAgenda.DYNAMIC ) );
+        assertFalse( ag.getRuleBaseConfiguration().isShareAlphaNodes() );
+        assertTrue( ag.getRuleBaseConfiguration().isShareBetaNodes() );
+
+        ag.PACKAGE_PROVIDERS = oldMap;
+    }
+
     class AnotherRuleAgentMock extends RuleAgent {
 
-        public int secondsToRefresh;
-        public List provs;
+        public int     secondsToRefresh;
+        public List    provs;
         public boolean newInstance;
 
         public AnotherRuleAgentMock() {
             super( new RuleBaseConfiguration() );
         }
 
-        synchronized void configure(boolean newInstance, List provs, int secondsToRefresh) {
+        synchronized void configure(boolean newInstance,
+                                    List provs,
+                                    int secondsToRefresh) {
             this.newInstance = newInstance;
             this.provs = provs;
             this.secondsToRefresh = secondsToRefresh;
         }
 
-
-
     }
 
+    class MockEventListener
+        implements
+        AgentEventListener {
 
-    class MockEventListener implements AgentEventListener {
-
-
         public String name;
-        boolean exceptionCalled = false;
-        boolean infoCalled = false;
-        boolean warningCalled;
+        boolean       exceptionCalled = false;
+        boolean       infoCalled      = false;
+        boolean       warningCalled;
 
         public void debug(String message) {
 
-
         }
 
         public void exception(Exception e) {
@@ -561,7 +685,7 @@
         }
 
         public void info(String message) {
-            if (message != null) this.infoCalled = true;
+            if ( message != null ) this.infoCalled = true;
         }
 
         public void setAgentName(String name) {
@@ -573,7 +697,6 @@
 
         }
 
-
     }
 
 }

Added: labs/jbossrules/trunk/drools-core/src/test/resources/rule-base-rule-agent-config.properties
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/resources/rule-base-rule-agent-config.properties	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/resources/rule-base-rule-agent-config.properties	2008-09-16 13:55:35 UTC (rev 22816)
@@ -0,0 +1,47 @@
+##
+## RuleAgent configuration file example
+##
+
+#setting this means the rulebase will be created fresh whenever there are 
+#changes
+newInstance=true
+
+#this points to a binary compiled rule package, you can have spaces
+#seperating multiple files
+file=/foo/bar/boo.pkg /foo/bar/boo2.pkg
+
+#this specifies that packages may appear in a directory
+#it will pick up whatever files are dumped in there (.pkg files like above)
+dir=/my/dir
+
+#this specifies a list of urls for packages - these urls 
+#are those that are exposed by the BRMS
+url=http://some.url/here http://some.url/here
+
+#the following can be used with the urls to keep a local cache
+#so if the runtime server is restarted, the BRMS does not need
+#to be available
+localCacheDir=/foo/bar/cache
+
+#this specifies the frequency at which the sources will be checked for
+#changes (in seconds). If you don't set this, it will mean that you have
+#to manually poll
+poll=30
+
+
+#this specifies the name of this config, necessary in case logging is used.
+name=MyConfig
+
+# Rule base configurations
+drools.maintainTms = true
+drools.sequential = false
+drools.sequential.agenda = dynamic
+drools.removeIdentities = true
+drools.shareAlphaNodes  = false
+drools.shareBetaNodes = true
+drools.compositeKeyDepth  = 2
+drools.indexLeftBetaMemory = true
+drools.indexRightBetaMemory = false
+drools.assertBehaviour = identity
+drools.logicalOverride = preserve
+drools.useStaticObjenesis = true




More information about the jboss-svn-commits mailing list