[jboss-svn-commits] JBL Code SVN: r23934 - in labs/jbossrules/trunk: drools-api/src/main/java/org/drools/agent and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Nov 18 22:16:24 EST 2008


Author: mark.proctor at jboss.com
Date: 2008-11-18 22:16:24 -0500 (Tue, 18 Nov 2008)
New Revision: 23934

Added:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgent.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgentFactory.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgentProvider.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeEventListener.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/KnowledgeAgentProviderImpl.java
Modified:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseFactory.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilderFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/AgentEventListener.java
   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-1734 Drools API 
-A simplified KnowlegeAgent now works

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseFactory.java	2008-11-19 02:59:50 UTC (rev 23933)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseFactory.java	2008-11-19 03:16:24 UTC (rev 23934)
@@ -1,32 +1,37 @@
 package org.drools;
 
+import java.util.Properties;
 
+
 public class KnowledgeBaseFactory {
     private static KnowledgeBaseProvider provider;
     
-    public static void setKnowledgeBaseProvider(KnowledgeBaseProvider provider) {
-        KnowledgeBaseFactory.provider = provider;
+    public static KnowledgeBase newKnowledgeBase() {      
+        return getsetKnowledgeBaseProvider().newKnowledgeBase();
     }
     
-    public static KnowledgeBase newKnowledgeBase() {
-        if ( provider == null ) {
-            loadProvider();
-        }        
-        return provider.newKnowledgeBase();
+    public static KnowledgeBase newKnowledgeBase(KnowledgeBaseConfiguration conf) {
+   
+        return getsetKnowledgeBaseProvider().newKnowledgeBase(conf);        
     }
     
-    public static KnowledgeBase newKnowledgeBase(KnowledgeBaseConfiguration conf) {
-        if ( provider == null ) {
-            loadProvider();
-        }        
-        return provider.newKnowledgeBase(conf);        
+    public static KnowledgeBaseConfiguration newKnowledgBaseConfiguration() {
+        return getsetKnowledgeBaseProvider().newKnowledgeBaseConfiguration();
     }
     
-    public static KnowledgeBaseConfiguration newKnowledgeBaseConfiguration() {
+    public static KnowledgeBaseConfiguration newKnowledgBaseConfiguration(Properties properties, ClassLoader classLoader) {
+        return getsetKnowledgeBaseProvider().newKnowledgeBaseConfiguration( properties, classLoader );
+    }    
+    
+    public static void setKnowledgeBaseProvider(KnowledgeBaseProvider provider) {
+        KnowledgeBaseFactory.provider = provider;
+    }    
+    
+    public static synchronized KnowledgeBaseProvider getsetKnowledgeBaseProvider() {
         if ( provider == null ) {
             loadProvider();
-        }        
-        return provider.newKnowledgeBaseConfiguration();        
+        }     
+        return provider;
     }
     
 	private static void loadProvider() {
@@ -34,19 +39,8 @@
             // we didn't find anything in properties so lets try and us reflection
             Class<KnowledgeBaseProvider> cls = ( Class<KnowledgeBaseProvider> ) Class.forName( "org.drools.impl.KnowledgeBaseProviderImpl" );
             setKnowledgeBaseProvider( cls.newInstance() );
-        } catch ( Exception e2 ) {
+        } catch ( Exception e ) {
             throw new ProviderInitializationException( "Provider org.drools.impl.KnowledgeBaseProviderImpl could not be set." );
-        }
-        
-//        try {
-//            ChainedProperties properties = new ChainedProperties( "drools-providers.conf" );
-//            String className = properties.getProperty( "KnowledgeSessionProvider", null );
-//            if ( className != null && className.trim().length() > 0 ) {
-//                Class<KnowledgeBaseProvider> cls = ( Class<KnowledgeBaseProvider> ) Class.forName( className );
-//                setKnowledgeBaseProvider( cls.newInstance() );
-//            }
-//        } catch ( Exception e1 ) {
-//
-//        }
+        }        
     }    
 }

Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgent.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgent.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgent.java	2008-11-19 03:16:24 UTC (rev 23934)
@@ -0,0 +1,55 @@
+package org.drools.agent;
+
+import org.drools.KnowledgeBase;
+
+/**
+ * This manages a single KnowledeBase, using the given properties.
+ * You should only have ONE instance of this agent per KnowledeBase configuration.
+ * You can get the KnowledeBase from this agent repeatedly, as needed, or if you keep the KnowledeBase,
+ * under most configurations it will be automatically updated.
+ *
+ * How this behaves depends on the properties that you pass into it (documented below)
+ *
+ * CONFIG OPTIONS (to be passed in as properties):
+ *  <code>newInstance</code>: setting this to "true" means that each time the rules are changed
+ *   a new instance of the KnowledeBase is created (as opposed to updated in place)
+ *   the default is to update in place. DEFAULT: false. If you set this to true,
+ *   then you will need to call getRuleBase() each time you want to use it. If it is false,
+ *   then it means you can keep your reference to the KnowledeBase and it will be updated automatically
+ *   (as well as any StatefulKnowlegeSessions).
+ *
+ *  <code>poll</code>The number of seconds to poll for changes. Polling
+ *  happens in a background thread. eg: poll=30 #30 second polling.
+ *
+ *  <code>file</code>: a space separated listing of files that make up the
+ *  packages of the KnowledeBase. Each package can only be in one file. You can't have
+ *  packages spread across files. eg: file=/your/dir/file1.pkg file=/your/dir/file2.pkg
+ *  If the file has a .pkg extension, then it will be loaded as a binary Package (eg from the BRMS). If its a
+ *  DRL file (ie a file with a .drl extension with rule source in it), then it will attempt to compile it (of course, you will need the drools-compiler and its dependencies
+ *  available on your classpath).
+ *
+ *  <code>dir</code>: a single file system directory to monitor for packages.
+ *  As with files, each package must be in its own file.
+ *  eg: dir=/your/dir
+ *
+ *  <code>url</code>: A space separated URL to a binary KnowledeBase in the BRMS.
+ *  eg: url=http://server/drools-guvnor/packages/somePakage/VERSION_1
+ *  For URL you will also want a local cache directory setup:
+ *  eg: localCacheDir=/some/dir/that/exists
+ *  This is needed so that the runtime can startup and load packages even if the BRMS
+ *  is not available (or the network).
+ *
+ *  <code>name</code>
+ *  the Name is used in any logging, so each agent can be differentiated (you may have one agent per KnowledeBase
+ *  that you need in your application).
+ *
+ *  There is also an KnowledgeAgentEventListener interface which you can provide which will call back when lifecycle
+ *  events happen, or errors/warnings occur. As the updating happens in a background thread, this may be important.
+ *  The default event listener logs to the System.err output stream.
+ *
+ */
+public interface KnowledgeAgent {
+    String getName();
+    
+    KnowledgeBase getKnowledgeBase();
+}

Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgentFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgentFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgentFactory.java	2008-11-19 03:16:24 UTC (rev 23934)
@@ -0,0 +1,52 @@
+package org.drools.agent;
+
+import java.util.Properties;
+
+import org.drools.KnowledgeBaseConfiguration;
+import org.drools.KnowledgeBaseProvider;
+import org.drools.ProviderInitializationException;
+
+public class KnowledgeAgentFactory {
+    private static KnowledgeAgentProvider provider;
+    
+    public synchronized static void setKnowledgeAgentProvider(KnowledgeAgentProvider provider) {
+        KnowledgeAgentFactory.provider = provider;
+    }
+    
+    public static KnowledgeAgent newKnowledgeAgent(String name,
+                                                   Properties config) {
+        return newKnowledgeAgent( name,
+                                  config,
+                                  null,
+                                  null );
+    }
+
+    /**
+     * This allows an optional listener to be passed in.
+     * The default one prints some stuff out to System.err only when really needed.
+     */
+    public static KnowledgeAgent newKnowledgeAgent(String name,
+                                                   Properties config,
+                                                   KnowledgeEventListener listener,
+                                                   KnowledgeBaseConfiguration ruleBaseConf) {
+       
+        return getKnowledgeAgentProvider().newKnowledgeAgent(name, config, listener, ruleBaseConf);  
+    }
+    
+    private static synchronized KnowledgeAgentProvider getKnowledgeAgentProvider() {
+        if ( provider == null ) {
+            loadProvider();
+        } 
+        return provider;
+    }
+    
+    private static void loadProvider() {    
+        try {
+            // we didn't find anything in properties so lets try and us reflection
+            Class<KnowledgeAgentProvider> cls = ( Class<KnowledgeAgentProvider> ) Class.forName( "org.drools.agent.KnowledgeAgentProviderImpl" );
+            setKnowledgeAgentProvider( cls.newInstance() );
+        } catch ( Exception e ) {
+            throw new ProviderInitializationException( "Provider org.drools.agent.KnowledgeAgentProvider could not be set." );
+        }  
+    }
+}

Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgentProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgentProvider.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgentProvider.java	2008-11-19 03:16:24 UTC (rev 23934)
@@ -0,0 +1,36 @@
+package org.drools.agent;
+
+import java.util.Properties;
+
+import org.drools.KnowledgeBaseConfiguration;
+
+public interface KnowledgeAgentProvider {
+    
+    KnowledgeAgent newKnowledgeAgent(String name,
+                                     Properties config);
+
+    /**
+     * Properties configured to load up packages into a KnowledgeBase with the provided
+     * configuration (and monitor them for changes).
+     */
+    KnowledgeAgent newKnowledgeAgent(String name,
+                                     Properties config,
+                                     KnowledgeBaseConfiguration ruleBaseConf);
+
+    /**
+     * This allows an optional listener to be passed in.
+     * The default one prints some stuff out to System.err only when really needed.
+     */
+    KnowledgeAgent newKnowledgeAgent(String name,
+                                     Properties config,
+                                     KnowledgeEventListener listener);
+
+    /**
+     * This allows an optional listener to be passed in.
+     * The default one prints some stuff out to System.err only when really needed.
+     */
+    KnowledgeAgent newKnowledgeAgent(String name,
+                                     Properties config,
+                                     KnowledgeEventListener listener,
+                                     KnowledgeBaseConfiguration ruleBaseConf);
+}

Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeEventListener.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeEventListener.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeEventListener.java	2008-11-19 03:16:24 UTC (rev 23934)
@@ -0,0 +1,24 @@
+package org.drools.agent;
+
+public interface KnowledgeEventListener {
+    /**
+     * For general info messages
+     */
+    public void info(String message);
+    
+    /**
+     * For a warning (useful when tracking down problems).
+     */
+    public void warning(String message);
+    
+    /**
+     * An exception occurred.
+     */
+    public void exception(Exception e);
+    
+    
+    /**
+     * These should not be logged, just shown if needed.
+     */
+    public void debug(String message);
+}

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilderFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilderFactory.java	2008-11-19 02:59:50 UTC (rev 23933)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilderFactory.java	2008-11-19 03:16:24 UTC (rev 23934)
@@ -7,45 +7,37 @@
 public class KnowledgeBuilderFactory {
     private static volatile KnowledgeBuilderProvider provider;
     
-    public static void setKnowledgeBuilderProvider(KnowledgeBuilderProvider provider) {
-        KnowledgeBuilderFactory.provider = provider;
-    }
-    
     public static KnowledgeBuilderConfiguration newKnowledgeBuilderConfiguration() {
-        if ( provider == null ) {
-            loadProvider();
-        }
-        return provider.newKnowledgeBuilderConfiguration();        
+        return getKnowledgeBuilderProvider().newKnowledgeBuilderConfiguration();        
     }
     
     public static KnowledgeBuilderConfiguration newKnowledgeBuilderConfiguration(Properties properties, ClassLoader classLoader) {
-        if ( provider == null ) {
-            loadProvider();
-        }
-        return provider.newKnowledgeBuilderConfiguration( properties, 
+        return getKnowledgeBuilderProvider().newKnowledgeBuilderConfiguration( properties, 
                                                           classLoader );         
     }
     
     public static DecisionTableConfiguration newDecisionTableConfiguration() {
-        if ( provider == null ) {
-            loadProvider();
-        }
-        return provider.newDecisionTableConfiguration();        
+        return getKnowledgeBuilderProvider().newDecisionTableConfiguration();        
     }
     
     public static KnowledgeBuilder newKnowledgeBuilder() {
-    	if ( provider == null ) {
-    		loadProvider();
-    	}
-        return provider.newKnowledgeBuilder();
+        return getKnowledgeBuilderProvider().newKnowledgeBuilder();
     }
     
     public static KnowledgeBuilder newKnowledgeBuilder(KnowledgeBuilderConfiguration conf) {
+        return getKnowledgeBuilderProvider().newKnowledgeBuilder(conf);        
+    }
+    
+    public static void setKnowledgeBuilderProvider(KnowledgeBuilderProvider provider) {
+        KnowledgeBuilderFactory.provider = provider;
+    }    
+    
+    public static synchronized KnowledgeBuilderProvider getKnowledgeBuilderProvider() {
         if ( provider == null ) {
             loadProvider();
-        }
-        return provider.newKnowledgeBuilder(conf);        
-    }
+        }     
+        return provider;
+    }    
     
 	private static void loadProvider() {
         try {
@@ -54,15 +46,5 @@
         } catch ( Exception e2 ) {
             throw new ProviderInitializationException( "Provider org.drools.builder.impl.KnowledgeBuilderProviderImpl could not be set.", e2 );
         }
-        
-//        try {
-//            ChainedProperties properties = new ChainedProperties( "drools-providers.conf" );
-//            String className = properties.getProperty( "KnowledgeBuilderProvider", null );
-//            if ( className != null && className.trim().length() > 0 ) {
-//                Class<KnowledgeBuilderProvider> cls = ( Class<KnowledgeBuilderProvider> ) Class.forName( className );
-//                setKnowledgeBuilderProvider( cls.newInstance() );
-//            }
-//        } catch ( Exception e1 ) {
-//        }
     }    
 }

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	2008-11-19 02:59:50 UTC (rev 23933)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/AgentEventListener.java	2008-11-19 03:16:24 UTC (rev 23934)
@@ -6,31 +6,11 @@
  * 
  * @author Michael Neale
  */
-public interface AgentEventListener {
+public interface AgentEventListener extends KnowledgeEventListener {
 
     /**
      * This sets the name for logging.
      */
     public void setAgentName(String name);
-    
-    /**
-     * For general info messages.
-     */
-    public void info(String message);
-    
-    /**
-     * For a warning (useful when tracking down problems).
-     */
-    public void warning(String message);
-    
-    /**
-     * An exception occurred.
-     */
-    public void exception(Exception e);
-    
-    
-    /**
-     * These should not be logged, just shown if needed.
-     */
-    public void debug(String message);
+
 }

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/KnowledgeAgentProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/KnowledgeAgentProviderImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/KnowledgeAgentProviderImpl.java	2008-11-19 03:16:24 UTC (rev 23934)
@@ -0,0 +1,75 @@
+package org.drools.agent;
+
+import java.util.Properties;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseConfiguration;
+import org.drools.RuleBase;
+import org.drools.RuleBaseConfiguration;
+import org.drools.impl.KnowledgeBaseImpl;
+
+public class KnowledgeAgentProviderImpl
+    implements
+    KnowledgeAgentProvider {
+
+    public KnowledgeAgent newKnowledgeAgent(String name,
+                                            Properties config) {
+        return new KnowledgeAgentWrapper( name,
+                                          RuleAgent.newRuleAgent( config ) );
+    }
+
+    public KnowledgeAgent newKnowledgeAgent(String name,
+                                            Properties config,
+                                            KnowledgeBaseConfiguration kbaseConf) {
+        return new KnowledgeAgentWrapper( name,
+                                          RuleAgent.newRuleAgent( config ) );
+    }
+
+    public KnowledgeAgent newKnowledgeAgent(String name,
+                                            Properties config,
+                                            KnowledgeEventListener listener) {
+        return new KnowledgeAgentWrapper( name,
+                                          RuleAgent.newRuleAgent( config ) );
+    }
+
+    public KnowledgeAgent newKnowledgeAgent(String name,
+                                            Properties config,
+                                            KnowledgeEventListener listener,
+                                            KnowledgeBaseConfiguration kbaseConf) {
+        return new KnowledgeAgentWrapper( name,
+                                          RuleAgent.newRuleAgent( config,
+                                                                  null,
+                                                                  ((RuleBaseConfiguration) kbaseConf) ) );
+    }
+
+    public static class KnowledgeAgentWrapper
+        implements
+        KnowledgeAgent {
+        private String        name;
+        private RuleAgent     ruleAgent;
+        private RuleBase      ruleBase;
+        private KnowledgeBase kbase;
+
+        KnowledgeAgentWrapper(String name,
+                              RuleAgent ruleAgent) {
+            this.ruleAgent = ruleAgent;
+            ruleAgent.listener.setAgentName( name );
+            this.name = name;
+        }
+        
+        public String getName() {
+            return this.name;
+        }
+
+        public synchronized KnowledgeBase getKnowledgeBase() {
+            RuleBase newRuleBase = this.ruleAgent.getRuleBase();
+            if ( newRuleBase != this.ruleBase ) {
+                // if ruleBase is null or newRuleBase is a new instance then create a new kbase.
+                this.ruleBase = newRuleBase;
+                this.kbase = new KnowledgeBaseImpl( this.ruleBase );
+            }
+            return this.kbase;
+        }
+    }
+
+}

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-11-19 02:59:50 UTC (rev 23933)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleAgent.java	2008-11-19 03:16:24 UTC (rev 23934)
@@ -96,6 +96,8 @@
                                                                  URLScanner.class );
                                                         }
                                                     };
+                                                    
+    String               name;
 
     /**
      * This is true if the rulebase is created anew each time.
@@ -283,6 +285,13 @@
                              listener,
                              ruleBaseConfiguration );
     }
+    
+    public void setName(String name) {
+        this.name = name;
+        if ( this.listener != null ) {
+            this.listener.setAgentName( this.name );
+        }
+    }
 
     static Properties loadFromProperties(String propsFileName) {
         InputStream in = RuleAgent.class.getResourceAsStream( propsFileName );

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-11-19 02:59:50 UTC (rev 23933)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java	2008-11-19 03:16:24 UTC (rev 23934)
@@ -2,6 +2,7 @@
 
 import java.io.File;
 import java.io.FileOutputStream;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -10,6 +11,7 @@
 
 import junit.framework.TestCase;
 
+import org.drools.KnowledgeBase;
 import org.drools.RuleBase;
 import org.drools.RuleBaseConfiguration;
 import org.drools.RuleBaseConfiguration.SequentialAgenda;
@@ -268,7 +270,69 @@
                     rb__ );
 
     }
+    
+    public void testPollingFilesRuleBaseReplace2() 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" );
+        
+        props.setProperty( "poll", "1" );
+        
+        KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent( "agent1", props );
+        
+        //RuleAgent ag = RuleAgent.newRuleAgent( props );
+
+        //assertTrue( ag.isNewInstance() );
+
+        KnowledgeBase kbase = kagent.getKnowledgeBase();
+        
+        assertEquals( 2,
+                      kbase.getKnowledgePackages().size() );        
+
+        KnowledgeBase kbase_ = kagent.getKnowledgeBase();
+        assertSame( kbase,
+                    kbase_ );
+
+//        //only change one
+        RuleBaseAssemblerTest.writePackage( p1,
+                                            p1f );
+        int i = 0;
+        while ( i < 10 && kagent.getKnowledgeBase() == kbase ) {
+            // this will sleep for a max of 5 seconds, it'll check every 500ms to see if a new kbase exists
+            // if it exists, it will break the loop.
+            Thread.sleep( 500 );
+            i++;
+        }
+        
+        kbase_ = kagent.getKnowledgeBase();
+        assertNotSame( kbase,
+                    kbase_ );
+
+        //check we will have 2
+        assertEquals( 2,
+                      kbase.getKnowledgePackages().size() );
+
+    }    
+
     public void testPollingFilesRuleBaseRemoveNewInstanceFalse() throws Exception {
         File dir = RuleBaseAssemblerTest.getTempDirectory();
 




More information about the jboss-svn-commits mailing list