[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