[jboss-svn-commits] JBL Code SVN: r14676 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools: reteoo and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Aug 27 21:09:40 EDT 2007
Author: mark.proctor at jboss.com
Date: 2007-08-27 21:09:40 -0400 (Mon, 27 Aug 2007)
New Revision: 14676
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELGlobalVariable.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELKnowledgeHelper.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELLocalDeclarationVariable.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELPreviousDeclarationVariable.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteTuple.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java
Log:
-MVEL tuple's objects are now resolved ahead of time.
-set type on various variableresolvers.
-only compiled code is removed, mvel was breaking this earlier.
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java 2007-08-27 23:28:38 UTC (rev 14675)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java 2007-08-28 01:09:40 UTC (rev 14676)
@@ -7,6 +7,7 @@
import java.util.Map;
import org.drools.WorkingMemory;
+import org.drools.reteoo.ReteTuple;
import org.drools.rule.Declaration;
import org.drools.spi.KnowledgeHelper;
import org.drools.spi.Tuple;
@@ -24,7 +25,7 @@
/**
* Holds the instance of the variables.
*/
- private Tuple tuple;
+ private Object[] tupleObjects;
private KnowledgeHelper knowledgeHelper;
private Object object;
private Map localDeclarations;
@@ -79,7 +80,7 @@
final Object object,
final WorkingMemory workingMemory,
final Map variables) {
- this.tuple = tuple;
+ this.tupleObjects = ((ReteTuple) tuple).toObjectArray();
this.knowledgeHelper = knowledgeHelper;
this.object = object;
this.workingMemory = workingMemory;
@@ -91,7 +92,8 @@
}
public Object getValue(final Declaration declaration) {
- return this.tuple.get( declaration ).getObject();
+ int i = declaration.getPattern().getOffset();
+ return this.tupleObjects[ i ];
}
public Object getValue(final String identifier) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELGlobalVariable.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELGlobalVariable.java 2007-08-27 23:28:38 UTC (rev 14675)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELGlobalVariable.java 2007-08-28 01:09:40 UTC (rev 14676)
@@ -45,7 +45,7 @@
* Not used in drools.
*/
public Class getType() {
- return null;
+ return this.knownType;
}
/**
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELKnowledgeHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELKnowledgeHelper.java 2007-08-27 23:28:38 UTC (rev 14675)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELKnowledgeHelper.java 2007-08-28 01:09:40 UTC (rev 14676)
@@ -42,7 +42,7 @@
* Not used in drools.
*/
public Class getType() {
- return null;
+ return KnowledgeHelper.class;
}
/**
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELLocalDeclarationVariable.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELLocalDeclarationVariable.java 2007-08-27 23:28:38 UTC (rev 14675)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELLocalDeclarationVariable.java 2007-08-28 01:09:40 UTC (rev 14676)
@@ -40,11 +40,8 @@
return 0;
}
- /**
- * Not used in drools.
- */
public Class getType() {
- return null;
+ return this.declaration.getExtractor().getExtractToClass();
}
/**
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELPreviousDeclarationVariable.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELPreviousDeclarationVariable.java 2007-08-27 23:28:38 UTC (rev 14675)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELPreviousDeclarationVariable.java 2007-08-28 01:09:40 UTC (rev 14676)
@@ -44,7 +44,7 @@
* Not used in drools.
*/
public Class getType() {
- return null;
+ return this.declaration.getExtractor().getExtractToClass();
}
/**
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteTuple.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteTuple.java 2007-08-27 23:28:38 UTC (rev 14675)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteTuple.java 2007-08-28 01:09:40 UTC (rev 14676)
@@ -3,6 +3,7 @@
import java.util.ArrayList;
import java.util.List;
+import org.drools.base.ShadowProxy;
import org.drools.common.InternalFactHandle;
import org.drools.rule.Declaration;
import org.drools.spi.Activation;
@@ -210,4 +211,18 @@
}
return entry;
}
+
+ public Object[] toObjectArray() {
+ Object[] objects = new Object[ this.index + 1 ];
+ ReteTuple entry = this;
+ while ( entry != null ) {
+ Object object = entry.getLastHandle().getObject();
+ if ( object instanceof ShadowProxy ) {
+ object = ((ShadowProxy)object).getShadowedObject();
+ }
+ objects[entry.index] = object;
+ entry = entry.parent;
+ }
+ return objects;
+ }
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java 2007-08-27 23:28:38 UTC (rev 14675)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java 2007-08-28 01:09:40 UTC (rev 14676)
@@ -327,13 +327,15 @@
public PackageCompilationData removeRule(final Rule rule) {
this.rules.remove( rule.getName() );
final String consequenceName = rule.getConsequence().getClass().getName();
- this.packageCompilationData.remove( consequenceName );
-
- removeClasses( rule.getLhs() );
-
- // Now remove the rule class - the name is a subset of the consequence name
- this.packageCompilationData.remove( consequenceName.substring( 0,
- consequenceName.indexOf( "ConsequenceInvoker" ) ) );
+
+ // check for compiled code and remove if present.
+ if ( this.packageCompilationData.remove( consequenceName ) ) {
+ removeClasses( rule.getLhs() );
+
+ // Now remove the rule class - the name is a subset of the consequence name
+ this.packageCompilationData.remove( consequenceName.substring( 0,
+ consequenceName.indexOf( "ConsequenceInvoker" ) ) );
+ }
return this.packageCompilationData;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java 2007-08-27 23:28:38 UTC (rev 14675)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java 2007-08-28 01:09:40 UTC (rev 14676)
@@ -182,13 +182,15 @@
}
- public void remove(final String resourceName) throws RuntimeDroolsException {
+ public boolean remove(final String resourceName) throws RuntimeDroolsException {
this.invokerLookups.remove( resourceName );
if ( this.store.remove( convertClassToResourcePath( resourceName ) ) != null ) {
// we need to make sure the class is removed from the classLoader
// reload();
this.dirty = true;
+ return true;
}
+ return false;
}
public String[] list() {
More information about the jboss-svn-commits
mailing list