[jboss-svn-commits] JBL Code SVN: r23192 - in labs/jbossrules/branches/drools-api-refactor-20080929: drools-compiler/src/test/java/org/drools/integrationtests and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Sep 29 16:15:48 EDT 2008
Author: mark.proctor at jboss.com
Date: 2008-09-29 16:15:48 -0400 (Mon, 29 Sep 2008)
New Revision: 23192
Added:
labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/ClassObjectFilter.java
labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/ObjectFilter.java
Removed:
labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/ObjectFilter.java
labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/base/ClassObjectFilter.java
Modified:
labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/KnowledgeBase.java
labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/StatefulKnowledgeSession.java
labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/StatefulRuleSession.java
labs/jbossrules/branches/drools-api-refactor-20080929/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
labs/jbossrules/branches/drools-api-refactor-20080929/drools-compiler/src/test/java/org/drools/integrationtests/StatefulSessionTest.java
labs/jbossrules/branches/drools-api-refactor-20080929/drools-compiler/src/test/java/org/drools/integrationtests/TruthMaintenanceTest.java
labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/pom.xml
labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java
labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java
Log:
JBRULES-1734 Drools API
-able to get facthandles and objects now
-first unit test for TruthMaintenanceTest now works.
Copied: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/ClassObjectFilter.java (from rev 23151, labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/base/ClassObjectFilter.java)
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/ClassObjectFilter.java (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/ClassObjectFilter.java 2008-09-29 20:15:48 UTC (rev 23192)
@@ -0,0 +1,29 @@
+package org.drools;
+
+
+/**
+ * Filters Objects by Class, only accepting Classes of the specified type
+ * @author mproctor
+ *
+ */
+public class ClassObjectFilter implements ObjectFilter {
+ private Class clazz;
+
+ /**
+ * The Allowed Class type
+ * @param clazz
+ */
+ public ClassObjectFilter(Class clazz) {
+ this.clazz = clazz;
+ }
+
+ /**
+ * Returning true means the Iterator accepts, and thus returns, the current Object's Class type.
+ * @param object
+ * @return
+ */
+ public boolean accept(Object object) {
+ return this.clazz.isAssignableFrom( object.getClass() );
+ }
+
+}
Property changes on: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/ClassObjectFilter.java
___________________________________________________________________
Name: svn:mergeinfo
+
Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/KnowledgeBase.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/KnowledgeBase.java 2008-09-29 17:47:05 UTC (rev 23191)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/KnowledgeBase.java 2008-09-29 20:15:48 UTC (rev 23192)
@@ -5,7 +5,16 @@
import org.drools.knowledge.definitions.KnowledgePackage;
public interface KnowledgeBase {
+ void addKnowledgePackage(KnowledgePackage knowledgePackage);
+
void addKnowledgePackages(Collection<KnowledgePackage> knowledgePackage);
+ Collection<KnowledgePackage> getKnowledgePackages();
+
StatefulKnowledgeSession newStatefulKnowledgeSession();
+
+ void removeRule(String packageName,
+ String ruleName);
+
+
}
Copied: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/ObjectFilter.java (from rev 23151, labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/ObjectFilter.java)
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/ObjectFilter.java (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/ObjectFilter.java 2008-09-29 20:15:48 UTC (rev 23192)
@@ -0,0 +1,16 @@
+package org.drools;
+
+/**
+ * ObjectFilter is used with WorkingMemories to filter out instances during Iteration
+ * @author mproctor
+ *
+ */
+public interface ObjectFilter {
+
+ /**
+ * Returning true means the Iterator accepts, and thus returns, the current Object.
+ * @param object
+ * @return
+ */
+ boolean accept(Object object);
+}
Property changes on: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/ObjectFilter.java
___________________________________________________________________
Name: svn:mergeinfo
+
Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/StatefulKnowledgeSession.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/StatefulKnowledgeSession.java 2008-09-29 17:47:05 UTC (rev 23191)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/StatefulKnowledgeSession.java 2008-09-29 20:15:48 UTC (rev 23192)
@@ -5,4 +5,6 @@
void setGlobal(String identifier,
Object object);
+ KnowledgeBase getKnowledgeBase();
+
}
Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/StatefulRuleSession.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/StatefulRuleSession.java 2008-09-29 17:47:05 UTC (rev 23191)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/StatefulRuleSession.java 2008-09-29 20:15:48 UTC (rev 23192)
@@ -1,14 +1,16 @@
package org.drools;
+import java.util.Collection;
+import java.util.Iterator;
import java.util.concurrent.Future;
import org.drools.time.SessionClock;
public interface StatefulRuleSession {
- FactHandle insertObject(Object object);
- void retractObject(FactHandle factHandle);
- void updateObject(FactHandle factHandle);
- void updateObject(FactHandle factHandle, Object object);
+ FactHandle insert(Object object);
+ void retract(FactHandle factHandle);
+ void update(FactHandle factHandle);
+ void update(FactHandle factHandle, Object object);
void fireAllRules();
@@ -26,4 +28,12 @@
Future<Object> asyncInsert( Iterable iterable );
Future<?> asyncFireAllRules();
+
+ Collection<?> getObjects();
+
+ Collection<?> getObjects(ObjectFilter filter);
+
+ Collection<? extends FactHandle> getFactHandles();
+
+ Collection<? extends FactHandle> getFactHandles(ObjectFilter filter);
}
Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2008-09-29 17:47:05 UTC (rev 23191)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2008-09-29 20:15:48 UTC (rev 23192)
@@ -42,6 +42,7 @@
import org.drools.CheeseEqual;
import org.drools.Cheesery;
import org.drools.Child;
+import org.drools.ClassObjectFilter;
import org.drools.DomainObjectHolder;
import org.drools.FactA;
import org.drools.FactB;
@@ -81,7 +82,6 @@
import org.drools.Cheesery.Maturity;
import org.drools.audit.WorkingMemoryFileLogger;
import org.drools.audit.WorkingMemoryInMemoryLogger;
-import org.drools.base.ClassObjectFilter;
import org.drools.common.AbstractWorkingMemory;
import org.drools.common.InternalFactHandle;
import org.drools.compiler.DescrBuildError;
Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-compiler/src/test/java/org/drools/integrationtests/StatefulSessionTest.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-compiler/src/test/java/org/drools/integrationtests/StatefulSessionTest.java 2008-09-29 17:47:05 UTC (rev 23191)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-compiler/src/test/java/org/drools/integrationtests/StatefulSessionTest.java 2008-09-29 20:15:48 UTC (rev 23192)
@@ -13,9 +13,7 @@
import org.drools.FactHandle;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
-import org.drools.RuleBase;
import org.drools.RuleBaseConfiguration;
-import org.drools.RuleBaseFactory;
import org.drools.StatefulKnowledgeSession;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-compiler/src/test/java/org/drools/integrationtests/TruthMaintenanceTest.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-compiler/src/test/java/org/drools/integrationtests/TruthMaintenanceTest.java 2008-09-29 17:47:05 UTC (rev 23191)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-compiler/src/test/java/org/drools/integrationtests/TruthMaintenanceTest.java 2008-09-29 20:15:48 UTC (rev 23192)
@@ -3,14 +3,20 @@
import junit.framework.TestCase;
import org.drools.Cheese;
import org.drools.CheeseEqual;
+import org.drools.ClassObjectFilter;
import org.drools.FactHandle;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseConfiguration;
+import org.drools.KnowledgeBaseFactory;
import org.drools.Person;
import org.drools.RuleBase;
import org.drools.RuleBaseConfiguration;
import org.drools.RuleBaseFactory;
import org.drools.Sensor;
+import org.drools.StatefulKnowledgeSession;
import org.drools.WorkingMemory;
-import org.drools.base.ClassObjectFilter;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.common.InternalWorkingMemory;
import org.drools.common.TruthMaintenanceSystem;
import org.drools.compiler.PackageBuilder;
@@ -19,12 +25,14 @@
import org.drools.event.ObjectRetractedEvent;
import org.drools.event.ObjectUpdatedEvent;
import org.drools.event.WorkingMemoryEventListener;
+import org.drools.knowledge.definitions.KnowledgePackage;
import org.drools.rule.Package;
import org.drools.util.ObjectHashMap;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
public class TruthMaintenanceTest extends TestCase {
@@ -40,29 +48,23 @@
config );
}
+ protected KnowledgeBase getKnowledgeBase() throws Exception {
+ return KnowledgeBaseFactory.newKnowledgeBase();
+ }
+
+ protected KnowledgeBase getKnowledgeBase(KnowledgeBaseConfiguration config) throws Exception {
+ return KnowledgeBaseFactory.newKnowledgeBase( config );
+ }
+
public void testLogicalInsertionsDynamicRule() throws Exception {
- PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsDynamicRule.drl" ) ) );
- final Package pkg = builder.getPackage();
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsDynamicRule.drl" ) ) );
+
+ Collection<KnowledgePackage> kpkgs = kbuilder.getKnowledgePackages();
+ KnowledgeBase kbase = getKnowledgeBase();
+ kbase.addKnowledgePackages( kpkgs );
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
- org.drools.reteoo.ReteooRuleBase reteooRuleBase = null;
- // org.drools.leaps.LeapsRuleBase leapsRuleBase = null;
- RuleBase ruleBase = getRuleBase();
- if ( ruleBase instanceof org.drools.reteoo.ReteooRuleBase ) {
- reteooRuleBase = (org.drools.reteoo.ReteooRuleBase) ruleBase;
- // } else if ( ruleBase instanceof org.drools.leaps.LeapsRuleBase )
- // {
- // leapsRuleBase = (org.drools.leaps.LeapsRuleBase) ruleBase;
- }
- ruleBase.addPackage( pkg );
-// ruleBase = SerializationHelper.serializeObject(ruleBase);
- final WorkingMemory workingMemory = ruleBase.newStatefulSession();
-
- // workingMemory.addEventListener(new
- // org.drools.event.DebugAgendaEventListener());
- // workingMemory.addEventListener(new
- // org.drools.event.DebugWorkingMemoryEventListener());
-
final Cheese c1 = new Cheese( "a",
1 );
final Cheese c2 = new Cheese( "b",
@@ -71,13 +73,13 @@
3 );
List list;
- workingMemory.insert( c1 );
- final FactHandle h = workingMemory.insert( c2 );
- workingMemory.insert( c3 );
- workingMemory.fireAllRules();
+ ksession.insert( c1 );
+ final FactHandle h = ksession.insert( c2 );
+ ksession.insert( c3 );
+ ksession.fireAllRules();
- // Check logical Insertions where made for c2 and c3
- list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
+ // Check logical Insertions where made for c2 and c3
+ list = new ArrayList( ksession.getObjects( new ClassObjectFilter( Person.class) ) );
assertEquals( 2,
list.size() );
assertFalse( list.contains( new Person( c1.getType() ) ) );
@@ -86,18 +88,18 @@
// this rule will make a logical assertion for c1 too
final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsDynamicRule2.drl" ) );
- builder = new PackageBuilder();
- builder.addPackageFromDrl( reader );
- final Package pkg2 = builder.getPackage();
- ruleBase.addPackage( pkg2 );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.addPackageFromDrl( reader );
+ Collection<KnowledgePackage> kpkgs2 = kbuilder.getKnowledgePackages();
+ kbase.addKnowledgePackages( kpkgs2 );
+ kbase = SerializationHelper.serializeObject( kbase );
- workingMemory.fireAllRules();
+ ksession.fireAllRules();
- ruleBase = workingMemory.getRuleBase();
-
+ kbase = ksession.getKnowledgeBase();
+
// check all now have just one logical assertion each
- list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
+ list = new ArrayList( ksession.getObjects( new ClassObjectFilter( Person.class) ) );
assertEquals( 3,
list.size() );
assertTrue( list.contains( new Person( c1.getType() ) ) );
@@ -105,35 +107,33 @@
assertTrue( list.contains( new Person( c3.getType() ) ) );
// check the packages are correctly populated
+ KnowledgePackage[] pkgs = ( KnowledgePackage[] ) kbase.getKnowledgePackages().toArray( new KnowledgePackage[] {} );
assertEquals( "org.drools.test",
- ruleBase.getPackages()[0].getName() );
+ pkgs[0].getName() );
assertEquals( "org.drools.test2",
- ruleBase.getPackages()[1].getName() );
+ pkgs[1].getName() );
assertEquals( "rule1",
- ruleBase.getPackages()[0].getRules()[0].getName() );
+ pkgs[0].getRules().iterator().next().getName() );
assertEquals( "rule2",
- ruleBase.getPackages()[1].getRules()[0].getName() );
+ pkgs[1].getRules().iterator().next().getName() );
// now remove the first rule
- if ( reteooRuleBase != null ) {
- reteooRuleBase.removeRule( ruleBase.getPackages()[0].getName(),
- ruleBase.getPackages()[0].getRules()[0].getName() );
- // } else if ( leapsRuleBase != null ) {
- // leapsRuleBase.removeRule( ruleBase.getPackages()[0].getName(),
- // ruleBase.getPackages()[0].getRules()[0].getName() );
- }
+ kbase.removeRule( pkgs[0].getName(),
+ pkgs[0].getRules().iterator().next().getName() );
+ pkgs = ( KnowledgePackage[] ) kbase.getKnowledgePackages().toArray( new KnowledgePackage[] {} );
// Check the rule was correctly remove
assertEquals( 0,
- ruleBase.getPackages()[0].getRules().length );
+ pkgs[0].getRules().size() );
assertEquals( 1,
- ruleBase.getPackages()[1].getRules().length );
+ pkgs[1].getRules().size() );
assertEquals( "org.drools.test2",
- ruleBase.getPackages()[1].getName() );
+ pkgs[1].getName() );
assertEquals( "rule2",
- ruleBase.getPackages()[1].getRules()[0].getName() );
+ pkgs[1].getRules().iterator().next().getName() );
- list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
+
+ list = new ArrayList( ksession.getObjects( new ClassObjectFilter( Person.class) ) );
assertEquals( "removal of the rule should result in retraction of c3's logical assertion",
2,
list.size() );
@@ -145,9 +145,9 @@
list.contains( new Person( c3.getType() ) ) );
c2.setPrice( 3 );
- workingMemory.update( h,
- c2 );
- list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
+ ksession.update( h,
+ c2 );
+ list = new ArrayList( ksession.getObjects( new ClassObjectFilter( Person.class) ) );
assertEquals( "c2 now has a higher price, its logical assertion should be cancelled",
1,
list.size() );
@@ -156,19 +156,16 @@
assertTrue( "The logical assertion for c1 should exist",
list.contains( new Person( c1.getType() ) ) );
- if ( reteooRuleBase != null ) {
- reteooRuleBase.removeRule( ruleBase.getPackages()[1].getName(),
- ruleBase.getPackages()[1].getRules()[0].getName() );
- // } else if ( leapsRuleBase != null ) {
- // leapsRuleBase.removeRule( ruleBase.getPackages()[1].getName(),
- // ruleBase.getPackages()[1].getRules()[0].getName() );
- }
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ pkgs = ( KnowledgePackage[] ) kbase.getKnowledgePackages().toArray( new KnowledgePackage[] {} );
+ kbase.removeRule( pkgs[1].getName(),
+ pkgs[1].getRules().iterator().next().getName() );
+ kbase = SerializationHelper.serializeObject( kbase );
+ pkgs = ( KnowledgePackage[] ) kbase.getKnowledgePackages().toArray( new KnowledgePackage[] {} );
assertEquals( 0,
- ruleBase.getPackages()[0].getRules().length );
+ pkgs[0].getRules().size() );
assertEquals( 0,
- ruleBase.getPackages()[1].getRules().length );
- list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
+ pkgs[1].getRules().size() );
+ list = new ArrayList( ksession.getObjects( new ClassObjectFilter( Person.class) ) );
assertEquals( 0,
list.size() );
}
Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/pom.xml
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/pom.xml 2008-09-29 17:47:05 UTC (rev 23191)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/pom.xml 2008-09-29 20:15:48 UTC (rev 23192)
@@ -25,11 +25,10 @@
<artifactId>mvel</artifactId>
</dependency>
- <!--dependency>
- <groupId>milyn</groupId>
- <artifactId>milyn-smooks-javabean</artifactId>
- <version>1.0.1</version>
- </dependency-->
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-api</artifactId>
+ </dependency>
</dependencies>
Deleted: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/ObjectFilter.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/ObjectFilter.java 2008-09-29 17:47:05 UTC (rev 23191)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/ObjectFilter.java 2008-09-29 20:15:48 UTC (rev 23192)
@@ -1,16 +0,0 @@
-package org.drools;
-
-/**
- * ObjectFilter is used with WorkingMemories to filter out instances during Iteration
- * @author mproctor
- *
- */
-public interface ObjectFilter {
-
- /**
- * Returning true means the Iterator accepts, and thus returns, the current Object.
- * @param object
- * @return
- */
- boolean accept(Object object);
-}
Deleted: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/base/ClassObjectFilter.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/base/ClassObjectFilter.java 2008-09-29 17:47:05 UTC (rev 23191)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/base/ClassObjectFilter.java 2008-09-29 20:15:48 UTC (rev 23192)
@@ -1,30 +0,0 @@
-package org.drools.base;
-
-import org.drools.ObjectFilter;
-
-/**
- * Filters Objects by Class, only accepting Classes of the specified type
- * @author mproctor
- *
- */
-public class ClassObjectFilter implements ObjectFilter {
- private Class clazz;
-
- /**
- * The Allowed Class type
- * @param clazz
- */
- public ClassObjectFilter(Class clazz) {
- this.clazz = clazz;
- }
-
- /**
- * Returning true means the Iterator accepts, and thus returns, the current Object's Class type.
- * @param object
- * @return
- */
- public boolean accept(Object object) {
- return this.clazz.isAssignableFrom( object.getClass() );
- }
-
-}
Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java 2008-09-29 17:47:05 UTC (rev 23191)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java 2008-09-29 20:15:48 UTC (rev 23192)
@@ -4,7 +4,9 @@
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.List;
import org.drools.KnowledgeBase;
import org.drools.RuleBase;
@@ -13,6 +15,7 @@
import org.drools.knowledge.definitions.impl.KnowledgePackageImp;
import org.drools.reteoo.ReteooRuleBase;
import org.drools.reteoo.ReteooStatefulSession;
+import org.drools.rule.Package;
public class KnowledgeBaseImpl
implements
@@ -47,10 +50,23 @@
ruleBase.addPackage( ((KnowledgePackageImp) knowledgePackage).pkg );
}
}
+
+ public Collection<KnowledgePackage> getKnowledgePackages() {
+ Package[] pkgs = ruleBase.getPackages();
+ List< KnowledgePackage > list = new ArrayList< KnowledgePackage >( pkgs.length );
+ for ( Package pkg : pkgs ) {
+ list.add( new KnowledgePackageImp( pkg ) );
+ }
+ return list;
+ }
public StatefulKnowledgeSession newStatefulKnowledgeSession() {
ReteooStatefulSession session = (ReteooStatefulSession) this.ruleBase.newStatefulSession();
- return new StatefulKnowledgeSessionImpl( session );
+ return new StatefulKnowledgeSessionImpl( session , this );
}
+ public void removeRule(String packageName,
+ String ruleName) {
+ this.ruleBase.removeRule( packageName, ruleName );
+ }
}
Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java 2008-09-29 17:47:05 UTC (rev 23191)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java 2008-09-29 20:15:48 UTC (rev 23192)
@@ -1,12 +1,16 @@
package org.drools.impl;
import java.util.Collection;
+import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.Future;
import org.drools.FactHandle;
+import org.drools.KnowledgeBase;
+import org.drools.ObjectFilter;
import org.drools.StatefulKnowledgeSession;
import org.drools.common.InternalFactHandle;
+import org.drools.common.ObjectStore;
import org.drools.concurrent.FutureAdapter;
import org.drools.process.instance.ProcessInstance;
import org.drools.process.instance.WorkItemManager;
@@ -17,10 +21,16 @@
implements
StatefulKnowledgeSession {
public ReteooStatefulSession session;
+ public KnowledgeBaseImpl kbase;
- public StatefulKnowledgeSessionImpl(ReteooStatefulSession session) {
+ public StatefulKnowledgeSessionImpl(ReteooStatefulSession session, KnowledgeBaseImpl kbase) {
this.session = session;
+ this.kbase = kbase;
}
+
+ public KnowledgeBase getKnowledgeBase() {
+ return kbase;
+ }
public void fireAllRules() {
this.session.fireAllRules();
@@ -34,22 +44,22 @@
this.session.halt();
}
- public FactHandle insertObject(Object object) {
+ public FactHandle insert(Object object) {
return this.session.insert( object );
}
- public void retractObject(FactHandle factHandle) {
+ public void retract(FactHandle factHandle) {
this.session.retract( factHandle );
}
- public void updateObject(FactHandle factHandle) {
+ public void update(FactHandle factHandle) {
this.session.update( factHandle,
((InternalFactHandle) factHandle).getObject() );
}
- public void updateObject(FactHandle factHandle,
- Object object) {
+ public void update(FactHandle factHandle,
+ Object object) {
this.session.update( factHandle,
object );
}
@@ -75,10 +85,11 @@
return this.session.startProcess( processId,
parameters );
}
-
+
public void setGlobal(String identifier,
Object object) {
- this.session.setGlobal( identifier, object );
+ this.session.setGlobal( identifier,
+ object );
}
public Future<Object> asyncInsert(Object object) {
@@ -88,12 +99,156 @@
public Future<Object> asyncInsert(Object[] array) {
return new FutureAdapter( this.session.asyncInsert( array ) );
}
-
+
public Future<Object> asyncInsert(Iterable iterable) {
return new FutureAdapter( this.session.asyncInsert( iterable ) );
- }
+ }
- public Future<?> asyncFireAllRules() {
+ public Future< ? > asyncFireAllRules() {
return new FutureAdapter( this.session.asyncFireAllRules() );
}
+
+ public Collection< ? extends FactHandle> getFactHandles() {
+ return new ObjectStoreWrapper( session.getObjectStore(),
+ null,
+ ObjectStoreWrapper.FACT_HANDLE );
+ }
+
+ public Collection< ? extends FactHandle> getFactHandles(ObjectFilter filter) {
+ return new ObjectStoreWrapper( session.getObjectStore(),
+ filter,
+ ObjectStoreWrapper.FACT_HANDLE );
+ }
+
+ public Collection< ? > getObjects() {
+ return new ObjectStoreWrapper( session.getObjectStore(),
+ null,
+ ObjectStoreWrapper.OBJECT );
+ }
+
+ public Collection< ? > getObjects(ObjectFilter filter) {
+ return new ObjectStoreWrapper( session.getObjectStore(),
+ filter,
+ ObjectStoreWrapper.OBJECT );
+ }
+
+ public static abstract class AbstractImmutableCollection
+ implements
+ Collection {
+
+ public boolean add(Object o) {
+ throw new UnsupportedOperationException( "This is an immmutable Collection" );
+ }
+
+ public boolean addAll(Collection c) {
+ throw new UnsupportedOperationException( "This is an immmutable Collection" );
+ }
+
+ public void clear() {
+ throw new UnsupportedOperationException( "This is an immmutable Collection" );
+ }
+
+ public boolean remove(Object o) {
+ throw new UnsupportedOperationException( "This is an immmutable Collection" );
+ }
+
+ public boolean removeAll(Collection c) {
+ throw new UnsupportedOperationException( "This is an immmutable Collection" );
+ }
+
+ public boolean retainAll(Collection c) {
+ throw new UnsupportedOperationException( "This is an immmutable Collection" );
+ }
+ }
+
+ public static class ObjectStoreWrapper extends AbstractImmutableCollection {
+ public ObjectStore store;
+ public ObjectFilter filter;
+ public int type; // 0 == object, 1 == facthandle
+ public static final int OBJECT = 0;
+ public static final int FACT_HANDLE = 1;
+
+ public ObjectStoreWrapper(ObjectStore store,
+ ObjectFilter filter,
+ int type) {
+ this.store = store;
+ this.filter = filter;
+ this.type = type;
+ }
+
+ public boolean contains(Object object) {
+ if ( object instanceof FactHandle ) {
+ return this.store.getObjectForHandle( (InternalFactHandle) object ) != null;
+ } else {
+ return this.store.getHandleForObject( object ) != null;
+ }
+ }
+
+ public boolean containsAll(Collection c) {
+ for ( Object object : c ) {
+ if ( !contains( object ) ) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean isEmpty() {
+ if ( this.filter == null ) {
+ return this.store.isEmpty();
+ }
+
+ return size() == 0;
+ }
+
+ public int size() {
+ if ( this.filter == null ) {
+ return this.store.size();
+ }
+
+ int i = 0;
+ for ( Iterator it = iterator(); it.hasNext(); ) {
+ it.next();
+ i++;
+ }
+
+ return i;
+ }
+
+ public Iterator< ? > iterator() {
+ Iterator it = null;
+ if ( type == OBJECT ) {
+ if ( filter != null ) {
+ it = store.iterateObjects( filter );
+ } else {
+ it = store.iterateObjects();
+ }
+ } else {
+ if ( filter != null ) {
+ it = store.iterateFactHandles( filter );
+ } else {
+ it = store.iterateFactHandles();
+ }
+ }
+ return it;
+ }
+
+ public Object[] toArray() {
+ return toArray( new Object[size()] );
+ }
+
+ public Object[] toArray(Object[] array) {
+ if ( array == null || array.length != size() ) {
+ array = new Object[size()];
+ }
+
+ int i = 0;
+ for ( Iterator it = iterator(); it.hasNext(); ) {
+ array[i++] = it.next();
+ }
+
+ return array;
+ }
+ }
+
}
More information about the jboss-svn-commits
mailing list