[jboss-svn-commits] JBL Code SVN: r21558 - labs/jbossrules/trunk/drools-api/src/main/java/org/drools.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Aug 14 22:39:10 EDT 2008


Author: mark.proctor at jboss.com
Date: 2008-08-14 22:39:09 -0400 (Thu, 14 Aug 2008)
New Revision: 21558

Modified:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseFactory.java
Log:
JBRULES-1734 Drools-API
-added LoadProvider

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-08-15 02:03:12 UTC (rev 21557)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseFactory.java	2008-08-15 02:39:09 UTC (rev 21558)
@@ -1,5 +1,7 @@
 package org.drools;
 
+import org.drools.util.ChainedProperties;
+
 public class KnowledgeBaseFactory {
     private static KnowledgeBaseProvider provider;
     
@@ -8,6 +10,28 @@
     }
     
     public static KnowledgeBase newKnowledgeBase() {
+        if ( provider == null ) {
+            loadProvider();
+        }        
         return provider.newKnowledgeBase();
     }
+    
+    private static void loadProvider() {
+        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 ) {
+            try {
+                // we didn't find anything in properties so lets try and us reflection
+                Class<KnowledgeBaseProvider> cls = ( Class<KnowledgeBaseProvider> ) Class.forName( "org.drools.KnowledgeBaseProviderImpl" );
+                setKnowledgeBaseProvider( cls.newInstance() );
+            } catch ( Exception e2 ) {
+                throw new ProviderInitializationException( "Provider was not set and the Factory was unable to load a provider from properties, nor could reflection find org.drools.KnowledgeBaseProviderImpl." );
+            }
+        }
+    }    
 }




More information about the jboss-svn-commits mailing list