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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Sep 28 16:20:03 EDT 2008


Author: mark.proctor at jboss.com
Date: 2008-09-28 16:20:01 -0400 (Sun, 28 Sep 2008)
New Revision: 23146

Added:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/builder/
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/builder/impl/
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/builder/impl/KnowledgeBuilderImpl.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/builder/impl/KnowledgeBuilderProviderImpl.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/api/
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/api/KnowledgeBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/api/KnowledgeSessionTest.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseProviderImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/knowledge/
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/knowledge/definitions/
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/knowledge/definitions/impl/
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/knowledge/definitions/impl/KnowledgePackageImp.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/knowledge/definitions/process/
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/knowledge/definitions/process/impl/
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/knowledge/definitions/process/impl/ProcessImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/knowledge/definitions/rule/
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/knowledge/definitions/rule/impl/
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/knowledge/definitions/rule/impl/RuleImpl.java
Removed:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/FactHandle.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/SessionClock.java
Modified:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBase.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeSessionFactory.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilder.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilderFactory.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/knowledge/definitions/KnowledgePackage.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/knowledge/definitions/rule/Rule.java
   labs/jbossrules/trunk/drools-compiler/.classpath
   labs/jbossrules/trunk/drools-core/.classpath
Log:
JBRULES-1734 Drools API
-Committed a branch, so we can break things a little

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBase.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBase.java	2008-09-28 19:51:28 UTC (rev 23145)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBase.java	2008-09-28 20:20:01 UTC (rev 23146)
@@ -4,4 +4,6 @@
 
 public interface KnowledgeBase {
     void addKnowledgePackage(KnowledgePackage knowledgePackage);
+    
+    StatefulKnowledgeSession newStatefulKnowledgeSession();
 }

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeSessionFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeSessionFactory.java	2008-09-28 19:51:28 UTC (rev 23145)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeSessionFactory.java	2008-09-28 20:20:01 UTC (rev 23146)
@@ -16,7 +16,7 @@
         return provider.newStatefulKnowledgeSession();
     }
     
-    @SuppressWarnings("unchecked")
+    	
 	private static void loadProvider() {
         try {
             ChainedProperties properties = new ChainedProperties( "drools-providers.conf" );

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilder.java	2008-09-28 19:51:28 UTC (rev 23145)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilder.java	2008-09-28 20:20:01 UTC (rev 23146)
@@ -1,5 +1,10 @@
 package org.drools.builder;
 
+import java.util.Collection;
+
+import org.drools.knowledge.definitions.KnowledgePackage;
+
 public interface KnowledgeBuilder extends RuleBuilder, ProcessBuilder {
-
+	
+	Collection<KnowledgePackage> getKnowledgePackages();
 }

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-09-28 19:51:28 UTC (rev 23145)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilderFactory.java	2008-09-28 20:20:01 UTC (rev 23146)
@@ -1,5 +1,9 @@
 package org.drools.builder;
 
+import org.drools.KnowledgeSessionProvider;
+import org.drools.ProviderInitializationException;
+import org.drools.util.ChainedProperties;
+
 public class KnowledgeBuilderFactory {
     private static KnowledgeBuilderProvider provider;
     
@@ -8,6 +12,29 @@
     }
     
     public static KnowledgeBuilder newKnowledgeBuilder() {
+    	if ( provider == null ) {
+    		loadProvider();
+    	}
         return provider.newKnowledgeBuilder();
     }
+    
+	private static void loadProvider() {
+        try {
+            // we didn't find anything in properties so lets try and us reflection
+            Class<KnowledgeBuilderProvider> cls = ( Class<KnowledgeBuilderProvider> ) Class.forName( "org.drools.builder.impl.KnowledgeBuilderProviderImpl" );
+            setKnowledgeBuilderProvider( 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.builder.impl.KnowledgeBuilderProviderImpl.", 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-api/src/main/java/org/drools/knowledge/definitions/KnowledgePackage.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/knowledge/definitions/KnowledgePackage.java	2008-09-28 19:51:28 UTC (rev 23145)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/knowledge/definitions/KnowledgePackage.java	2008-09-28 20:20:01 UTC (rev 23146)
@@ -6,6 +6,10 @@
 import org.drools.knowledge.definitions.rule.Rule;
 
 public interface KnowledgePackage {
+	String getName();
+	
     Collection<Rule> getRules();
+    
     Collection<Process> getProcesses();
+    
 }

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/knowledge/definitions/rule/Rule.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/knowledge/definitions/rule/Rule.java	2008-09-28 19:51:28 UTC (rev 23145)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/knowledge/definitions/rule/Rule.java	2008-09-28 20:20:01 UTC (rev 23146)
@@ -1,5 +1,9 @@
 package org.drools.knowledge.definitions.rule;
 
 public interface Rule {
-    String getRuleName();
+	
+    String getName();
+    
+    public String getPackageName();
+    
 }

Modified: labs/jbossrules/trunk/drools-compiler/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-compiler/.classpath	2008-09-28 19:51:28 UTC (rev 23145)
+++ labs/jbossrules/trunk/drools-compiler/.classpath	2008-09-28 20:20:01 UTC (rev 23146)
@@ -1,22 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-  <classpathentry kind="src" path="src/main/java"/>
-  <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
-  <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
-  <classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
-  <classpathentry kind="output" path="target/classes"/>
-  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-  <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.3/xstream-1.3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar"/>
-  <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
-  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0.1/antlr-runtime-3.0.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/antlr/gunit/1.0.1/gunit-1.0.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/antlr/antlr/3.0.1/antlr-3.0.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.7/antlr-2.7.7.jar"/>
-  <classpathentry kind="src" path="/drools-core"/>
-  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/2.0M2/mvel-2.0M2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.4.2.v_883_R34x/core-3.4.2.v_883_R34x.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.0.1/jmock-2.5.0.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
-</classpath>
\ No newline at end of file
+	<classpathentry kind="src" path="src/main/java"/>
+	<classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry excluding="**/*.java" kind="src" output="target/test-classes" path="src/test/resources"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.3/xstream-1.3.jar"/>
+	<classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar"/>
+	<classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
+	<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0.1/antlr-runtime-3.0.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/antlr/gunit/1.0.1/gunit-1.0.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/antlr/antlr/3.0.1/antlr-3.0.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.7/antlr-2.7.7.jar"/>
+	<classpathentry kind="src" path="/drools-core"/>
+	<classpathentry kind="var" path="M2_REPO/org/mvel/mvel/2.0M2/mvel-2.0M2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.4.2.v_883_R34x/core-3.4.2.v_883_R34x.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.0.1/jmock-2.5.0.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/drools-api"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/builder/impl/KnowledgeBuilderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/builder/impl/KnowledgeBuilderImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/builder/impl/KnowledgeBuilderImpl.java	2008-09-28 20:20:01 UTC (rev 23146)
@@ -0,0 +1,54 @@
+package org.drools.builder.impl;
+
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.compiler.PackageBuilder;
+import org.drools.knowledge.definitions.KnowledgePackage;
+import org.drools.knowledge.definitions.impl.KnowledgePackageImp;
+import org.drools.rule.Package;
+
+public class KnowledgeBuilderImpl implements KnowledgeBuilder {
+	private PackageBuilder pkgBuilder;
+	
+	public KnowledgeBuilderImpl(PackageBuilder pkgBuilder) {
+		this.pkgBuilder = pkgBuilder;
+	}
+
+	public void addPackageFromDrl(Reader reader) {
+		try {
+			pkgBuilder.addPackageFromDrl(reader);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public void addPackageFromXml(Reader reader) {
+		try {
+			pkgBuilder.addPackageFromXml(reader);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public void addProcessFromXml(Reader reader) {
+		try {
+			pkgBuilder.addProcessFromXml(reader);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public Collection<KnowledgePackage> getKnowledgePackages() {
+		Package[] pkgs = pkgBuilder.getPackages();
+		List<KnowledgePackage> list = new ArrayList<KnowledgePackage>( pkgs.length );
+		for ( Package pkg : pkgs ) {
+			list.add( new KnowledgePackageImp( pkg ) );
+		}
+		return list;
+	}
+	
+}

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/builder/impl/KnowledgeBuilderProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/builder/impl/KnowledgeBuilderProviderImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/builder/impl/KnowledgeBuilderProviderImpl.java	2008-09-28 20:20:01 UTC (rev 23146)
@@ -0,0 +1,17 @@
+package org.drools.builder.impl;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseProvider;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderProvider;
+import org.drools.compiler.PackageBuilder;
+import org.drools.spi.KnowledgeHelper;
+
+public class KnowledgeBuilderProviderImpl implements KnowledgeBuilderProvider {
+
+	public KnowledgeBuilder newKnowledgeBuilder() {
+		return new KnowledgeBuilderImpl( new PackageBuilder() );
+	}
+
+
+}

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/api/KnowledgeBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/api/KnowledgeBuilderTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/api/KnowledgeBuilderTest.java	2008-09-28 20:20:01 UTC (rev 23146)
@@ -0,0 +1,136 @@
+package org.drools.api;
+
+import java.io.StringReader;
+import java.util.Collection;
+
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.knowledge.definitions.KnowledgePackage;
+import org.drools.knowledge.definitions.rule.Rule;
+import org.drools.knowledge.definitions.process.Process;
+
+import junit.framework.TestCase;
+
+public class KnowledgeBuilderTest extends TestCase {
+	
+	public void testKnowledgeProvider() {
+		KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+		assertNotNull( builder );
+	}
+	
+	public void testKnowledgeProviderWithRules() {
+		KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+		
+		String str = "";
+		str += "package org.test1\n";
+		str += "rule rule1\n";
+		str += "when\n";
+		str += "then\n";
+		str += "end\n\n";
+		str += "rule rule2\n";
+		str += "when\n";
+		str += "then\n";
+		str += "end\n";				
+		builder.addPackageFromDrl( new StringReader( str ) );
+		
+		str = "package org.test2\n";
+		str += "rule rule3\n";
+		str += "when\n";
+		str += "then\n";
+		str += "end\n\n";
+		str += "rule rule4\n";
+		str += "when\n";
+		str += "then\n";
+		str += "end\n";			
+		builder.addPackageFromDrl( new StringReader( str ) );
+		
+		Collection<KnowledgePackage> pkgs = builder.getKnowledgePackages();
+		assertNotNull( pkgs );
+		assertEquals( 2, pkgs.size() );
+		
+		KnowledgePackage test1 = getKnowledgePackage(pkgs, "org.test1" );
+		Collection<Rule> rules = test1.getRules();		
+		assertEquals( 2, rules.size() );
+		Rule rule = getRule( rules, "rule1" );
+		assertEquals("rule1", rule.getName() );
+		rule = getRule( rules, "rule2" );
+		assertEquals( "rule2", rule.getName() );
+		
+		KnowledgePackage test2 = getKnowledgePackage(pkgs, "org.test2" );
+		rules = test2.getRules();
+		assertEquals( 2, rules.size() );
+		rule = getRule( rules, "rule3" );
+		assertEquals("rule3", rule.getName() );
+		rule = getRule( rules, "rule4" );
+		assertEquals( "rule4", rule.getName() );			
+	}
+	
+	public void testKnowledgeProviderWithProcesses() {
+		KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+		
+		String str = "";
+		str += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
+		str += "<process xmlns=\"http://drools.org/drools-4.0/process\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\" xs:schemaLocation=\"http://drools.org/drools-4.0/process drools-processes-4.0.xsd\" ";
+		str += "         type=\"RuleFlow\" name=\"flow1\" id=\"0\" package-name=\"org.test1\" >";
+		str += "  <header/>\n";
+		str += "  <nodes><start id=\"1\" name=\"Start\" /><end id=\"2\" name=\"End\" /></nodes>\n";
+	    str += "  <connections><connection from=\"1\" to=\"2\"/></connections>";
+	    str += "</process>";
+	    builder.addProcessFromXml( new StringReader( str ) );
+	    
+		str = "";
+		str += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
+		str += "<process xmlns=\"http://drools.org/drools-4.0/process\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\" xs:schemaLocation=\"http://drools.org/drools-4.0/process drools-processes-4.0.xsd\" ";
+		str += "         type=\"RuleFlow\" name=\"flow2\" id=\"0\" package-name=\"org.test2\" >";
+		str += "  <header/>\n";
+		str += "  <nodes><start id=\"1\" name=\"Start\" /><end id=\"2\" name=\"End\" /></nodes>\n";
+	    str += "  <connections><connection from=\"1\" to=\"2\"/></connections>";
+	    str += "</process>";	
+	    builder.addProcessFromXml( new StringReader( str ) );
+	    
+		Collection<KnowledgePackage> pkgs = builder.getKnowledgePackages();
+		assertNotNull( pkgs );
+		assertEquals( 2, pkgs.size() );	 
+		
+		KnowledgePackage test1 = getKnowledgePackage(pkgs, "org.test1" );
+		Collection<Process> processes = test1.getProcesses();		
+		assertEquals( 1, processes.size() );
+		Process process = getProcess( processes, "flow1" );
+		assertEquals("flow1", process.getName() );	
+		
+		KnowledgePackage test2 = getKnowledgePackage(pkgs, "org.test2" );
+		processes = test2.getProcesses();		
+		assertEquals( 1, processes.size() );
+		process = getProcess( processes, "flow2" );
+		assertEquals("flow2", process.getName() );		
+	    	    
+	}
+	
+	public Rule getRule(Collection<Rule> rules, String name) {
+		for ( Rule rule : rules ) {
+			if ( rule.getName().equals( name ) ) {
+				return rule;
+			}
+		}
+		return null;		
+	}
+	
+	public Process getProcess(Collection<Process> processes, String name) {
+		for ( Process process : processes ) {
+			if ( process.getName().equals( name ) ) {
+				return process;
+			}
+		}
+		return null;		
+	}	
+	
+	public KnowledgePackage getKnowledgePackage(Collection<KnowledgePackage> pkgs, String name) {
+		for ( KnowledgePackage pkg : pkgs ) {
+			if ( pkg.getName().equals( name ) ) {
+				return pkg;
+			}
+		}
+		return null;
+	}
+	
+}

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/api/KnowledgeSessionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/api/KnowledgeSessionTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/api/KnowledgeSessionTest.java	2008-09-28 20:20:01 UTC (rev 23146)
@@ -0,0 +1,44 @@
+package org.drools.api;
+
+import java.io.StringReader;
+import java.util.Collection;
+
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.knowledge.definitions.KnowledgePackage;
+import org.drools.knowledge.definitions.rule.Rule;
+
+import junit.framework.TestCase;
+
+public class KnowledgeSessionTest extends TestCase {
+	public void testKnowledgeProviderWithRules() {
+		KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+		
+		String str = "";
+		str += "package org.test1\n";
+		str += "rule rule1\n";
+		str += "when\n";
+		str += "then\n";
+		str += "end\n\n";
+		str += "rule rule2\n";
+		str += "when\n";
+		str += "then\n";
+		str += "end\n";				
+		builder.addPackageFromDrl( new StringReader( str ) );
+		
+		str = "package org.test2\n";
+		str += "rule rule3\n";
+		str += "when\n";
+		str += "then\n";
+		str += "end\n\n";
+		str += "rule rule4\n";
+		str += "when\n";
+		str += "then\n";
+		str += "end\n";			
+		builder.addPackageFromDrl( new StringReader( str ) );
+		
+		Collection<KnowledgePackage> pkgs = builder.getKnowledgePackages();
+
+		
+	}
+}

Modified: labs/jbossrules/trunk/drools-core/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-core/.classpath	2008-09-28 19:51:28 UTC (rev 23145)
+++ labs/jbossrules/trunk/drools-core/.classpath	2008-09-28 20:20:01 UTC (rev 23146)
@@ -1,15 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-  <classpathentry kind="src" path="src/main/java"/>
-  <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
-  <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
-  <classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
-  <classpathentry kind="output" path="target/classes"/>
-  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-  <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.3/xstream-1.3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar"/>
-  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.0.1/jmock-2.5.0.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/2.0M2/mvel-2.0M2.jar"/>
-</classpath>
\ No newline at end of file
+	<classpathentry kind="src" path="src/main/java"/>
+	<classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry excluding="**/*.java" kind="src" output="target/test-classes" path="src/test/resources"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.3/xstream-1.3.jar"/>
+	<classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar"/>
+	<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.0.1/jmock-2.5.0.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/mvel/mvel/2.0M2/mvel-2.0M2.jar"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/drools-api"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/FactHandle.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/FactHandle.java	2008-09-28 19:51:28 UTC (rev 23145)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/FactHandle.java	2008-09-28 20:20:01 UTC (rev 23146)
@@ -1,36 +0,0 @@
-package org.drools;
-
-/*
- * Copyright 2005 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Persistent handle to an asserted fact.
- *
- * @see WorkingMemory#assertObject
- *
- * @author <a href="mailto:bob at werken.com">bob mcwhirter </a>
- */
-
-
-public interface FactHandle {
-
-    /**
-     * Convert this handle to an external representation.
-     *
-     * @return The external string form.
-     */
-    String toExternalForm();
-}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java	2008-09-28 20:20:01 UTC (rev 23146)
@@ -0,0 +1,35 @@
+package org.drools.impl;
+
+import java.util.Collection;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeSessionFactory;
+import org.drools.RuleBase;
+import org.drools.StatefulKnowledgeSession;
+import org.drools.knowledge.definitions.KnowledgePackage;
+import org.drools.knowledge.definitions.impl.KnowledgePackageImp;
+import org.drools.reteoo.ReteooStatefulSession;
+
+public class KnowledgeBaseImpl implements KnowledgeBase {
+	private RuleBase ruleBase;
+	
+	public KnowledgeBaseImpl(RuleBase ruleBase) {
+		this.ruleBase = ruleBase;
+	}
+	
+	public void addKnowledgePackage(KnowledgePackage knowledgePackage) {
+		ruleBase.addPackage( ((KnowledgePackageImp)knowledgePackage).pkg );		
+	}
+	
+	public void addKnowledgePackages(Collection<KnowledgePackage> knowledgePackages) {
+		for ( KnowledgePackage knowledgePackage : knowledgePackages ) {
+			ruleBase.addPackage( ((KnowledgePackageImp)knowledgePackage).pkg );
+		}		
+	}	
+	
+	public StatefulKnowledgeSession newStatefulKnowledgeSession() {
+		ReteooStatefulSession session = ( ReteooStatefulSession ) this.ruleBase.newStatefulSession();			
+		return new StatefulKnowledgeSessionImpl( session );
+	}
+
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseProviderImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseProviderImpl.java	2008-09-28 20:20:01 UTC (rev 23146)
@@ -0,0 +1,13 @@
+package org.drools.impl;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseProvider;
+import org.drools.RuleBaseFactory;
+
+public class KnowledgeBaseProviderImpl implements KnowledgeBaseProvider {
+
+	public KnowledgeBase newKnowledgeBase() {		
+		return new KnowledgeBaseImpl( RuleBaseFactory.newRuleBase() );		
+	}
+
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java	2008-09-28 20:20:01 UTC (rev 23146)
@@ -0,0 +1,77 @@
+package org.drools.impl;
+
+import java.util.Collection;
+import java.util.Map;
+
+import org.drools.FactHandle;
+import org.drools.StatefulKnowledgeSession;
+import org.drools.common.InternalFactHandle;
+import org.drools.process.instance.ProcessInstance;
+import org.drools.process.instance.WorkItemManager;
+import org.drools.reteoo.ReteooStatefulSession;
+import org.drools.time.SessionClock;
+
+public class StatefulKnowledgeSessionImpl implements StatefulKnowledgeSession {
+	public ReteooStatefulSession session;
+	
+	public StatefulKnowledgeSessionImpl(ReteooStatefulSession session) {
+		this.session = session;
+	}
+	
+	public void fireAllRules() {
+		this.session.fireAllRules();
+	}
+
+	public SessionClock getSessionClock() {
+		return this.session.getSessionClock();
+	}
+
+	public void halt() {
+		this.session.halt();
+	}
+
+	public FactHandle insertObject(Object object) {
+		return this.session.insert( object );
+	}
+
+	public void retractObject(FactHandle factHandle) {
+		this.session.retract( factHandle );
+		
+	}
+
+	public void updateObject(FactHandle factHandle) {
+		this.session.update( factHandle, ((InternalFactHandle) factHandle).getObject() );
+	}
+
+	public void updateObject(FactHandle factHandle, Object object) {
+		this.session.update( factHandle, object);
+		
+	}
+
+	public ProcessInstance getProcessInstance(long id) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public Collection<ProcessInstance> getProcessInstances() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public WorkItemManager getWorkItemManager() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public ProcessInstance startProcess(String processId) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public ProcessInstance startProcess(String processId,
+			Map<String, Object> parameters) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/knowledge/definitions/impl/KnowledgePackageImp.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/knowledge/definitions/impl/KnowledgePackageImp.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/knowledge/definitions/impl/KnowledgePackageImp.java	2008-09-28 20:20:01 UTC (rev 23146)
@@ -0,0 +1,43 @@
+package org.drools.knowledge.definitions.impl;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.drools.knowledge.definitions.KnowledgePackage;
+import org.drools.knowledge.definitions.process.Process;
+import org.drools.knowledge.definitions.process.impl.ProcessImpl;
+import org.drools.knowledge.definitions.rule.Rule;
+import org.drools.knowledge.definitions.rule.impl.RuleImpl;
+
+import org.drools.rule.Package;
+
+public class KnowledgePackageImp implements KnowledgePackage {
+	public Package pkg;
+	
+	public KnowledgePackageImp(Package pkg) {
+		this.pkg = pkg;
+	}
+	
+	public String getName() {
+		return this.pkg.getName();
+	}
+	
+    public Collection<Rule> getRules() {
+    	org.drools.rule.Rule[] rules = pkg.getRules();
+    	List<Rule> list = new ArrayList<Rule>( rules.length );
+    	for( org.drools.rule.Rule rule : rules ) {
+    		list.add( new RuleImpl( rule ) );
+    	}
+    	return list;
+    }
+    
+    public Collection<Process> getProcesses() {
+    	Collection<org.drools.process.core.Process> processes = ( Collection<org.drools.process.core.Process> ) pkg.getRuleFlows().values();
+    	List<Process> list = new ArrayList<Process>( processes.size() );
+    	for( org.drools.process.core.Process process : processes ) {
+    		list.add( new ProcessImpl( process ) );
+    	}
+    	return list;
+    }
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/knowledge/definitions/process/impl/ProcessImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/knowledge/definitions/process/impl/ProcessImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/knowledge/definitions/process/impl/ProcessImpl.java	2008-09-28 20:20:01 UTC (rev 23146)
@@ -0,0 +1,27 @@
+package org.drools.knowledge.definitions.process.impl;
+
+import org.drools.process.core.Process;
+
+public class ProcessImpl implements org.drools.knowledge.definitions.process.Process {
+	private Process process;
+	
+	public ProcessImpl(Process process) {
+		this.process = process;
+	}
+
+	public String getId() {
+		return this.process.getId();
+	}
+
+	public String getName() {
+		return this.process.getName();
+	}
+
+	public String getPackageName() {
+		return this.process.getPackageName();
+	}
+
+	public String getVersion() {
+		return this.process.getVersion();
+	}
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/knowledge/definitions/rule/impl/RuleImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/knowledge/definitions/rule/impl/RuleImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/knowledge/definitions/rule/impl/RuleImpl.java	2008-09-28 20:20:01 UTC (rev 23146)
@@ -0,0 +1,19 @@
+package org.drools.knowledge.definitions.rule.impl;
+
+import org.drools.rule.Rule;
+
+public class RuleImpl implements org.drools.knowledge.definitions.rule.Rule {
+	private Rule rule;
+	
+	public RuleImpl(Rule rule) {
+		this.rule = rule;
+	}
+
+	public String getName() {
+		return this.rule.getName();
+	}
+	
+	public String getPackageName() {
+		return this.rule.getPackage();
+	}
+}

Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/SessionClock.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/SessionClock.java	2008-09-28 19:51:28 UTC (rev 23145)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/SessionClock.java	2008-09-28 20:20:01 UTC (rev 23146)
@@ -1,40 +0,0 @@
-/*
- * Copyright 2007 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Created on Oct 17, 2007
- */
-package org.drools.time;
-
-
-/**
- * A clock interface that all engine clocks must implement
- * 
- * @author etirelli
- */
-public interface SessionClock {
-
-    /**
-     * Returns the current time. There is no semantics attached
-     * to the long return value, so it will depend on the actual
-     * implementation. For isntance, for a real clock it may be
-     * milliseconds.
-     * 
-     * @return The current time. The unit of the time, depends on
-     * the actual clock implementation.
-     * 
-     */
-    public long getCurrentTime();
-
-}




More information about the jboss-svn-commits mailing list