[jboss-svn-commits] JBL Code SVN: r25535 - in labs/jbossrules/trunk: drools-compiler/src/test/resources/org/drools/integrationtests and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Mar 6 23:40:42 EST 2009
Author: mark.proctor at jboss.com
Date: 2009-03-06 23:40:42 -0500 (Fri, 06 Mar 2009)
New Revision: 25535
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_TestMapVariableRef.drl
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/MVELClassFieldReader.java
Log:
-fixed "this" context objects in MVEL field constraints.
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2009-03-07 03:03:02 UTC (rev 25534)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2009-03-07 04:40:42 UTC (rev 25535)
@@ -6175,8 +6175,7 @@
list.get( 0 ) );
}
- //FIXME
- public void FIXME_testListOfMaps(){
+ public void testListOfMaps(){
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("test_TestMapVariableRef.drl", getClass()), ResourceType.DRL);
KnowledgeBuilderErrors errors = kbuilder.getErrors();
Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_TestMapVariableRef.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_TestMapVariableRef.drl 2009-03-07 03:03:02 UTC (rev 25534)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_TestMapVariableRef.drl 2009-03-07 04:40:42 UTC (rev 25535)
@@ -9,7 +9,7 @@
rule "check message"
when
list : List()
- Map( $msg: this['MSG'] ) from list
+ Map( $msg: this['MSG'] != null ) from list
Map( this['MSGTWO']== $msg) from list
then
Map result = new HashMap();
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/MVELClassFieldReader.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/MVELClassFieldReader.java 2009-03-07 03:03:02 UTC (rev 25534)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/MVELClassFieldReader.java 2009-03-07 04:40:42 UTC (rev 25535)
@@ -39,13 +39,14 @@
*/
public class MVELClassFieldReader extends BaseObjectClassFieldReader {
- private static final long serialVersionUID = 400L;
+ private static final long serialVersionUID = 400L;
- private CompiledExpression mvelExpression = null;
- private Map extractors = null;
+ private CompiledExpression mvelExpression = null;
+ private Map extractors = null;
public MVELClassFieldReader() {
}
+
public MVELClassFieldReader(Class cls,
String fieldName,
CacheEntry cache) {
@@ -56,42 +57,52 @@
ExpressionCompiler compiler = new ExpressionCompiler( fieldName );
this.mvelExpression = compiler.compile();
-
Set inputs = compiler.getParserContextState().getInputs().keySet();
- for( Iterator it = inputs.iterator(); it.hasNext(); ) {
+ for ( Iterator it = inputs.iterator(); it.hasNext(); ) {
String basefield = (String) it.next();
-
- InternalReadAccessor extr = cache.getReadAccessor( new AccessorKey( cls.getName(), basefield, AccessorKey.AccessorType.FieldAccessor), cls );
- this.extractors.put( basefield, extr );
+ if ( "this".equals( basefield ) ) {
+ continue;
+ }
+ InternalReadAccessor extr = cache.getReadAccessor( new AccessorKey( cls.getName(),
+ basefield,
+ AccessorKey.AccessorType.FieldAccessor ),
+ cls );
+ this.extractors.put( basefield,
+ extr );
}
}
-// public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
-// super.readExternal(in);
-// mvelExpression = (CompiledExpression)in.readObject();
-// extractors = (Map)in.readObject();
-// }
-//
-// public void writeExternal(ObjectOutput out) throws IOException {
-// super.writeExternal(out);
-// out.writeObject(mvelExpression);
-// out.writeObject(extractors);
-// }
+ // public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ // super.readExternal(in);
+ // mvelExpression = (CompiledExpression)in.readObject();
+ // extractors = (Map)in.readObject();
+ // }
+ //
+ // public void writeExternal(ObjectOutput out) throws IOException {
+ // super.writeExternal(out);
+ // out.writeObject(mvelExpression);
+ // out.writeObject(extractors);
+ // }
/* (non-Javadoc)
* @see org.drools.base.extractors.BaseObjectClassFieldExtractor#getValue(java.lang.Object)
*/
- public Object getValue(InternalWorkingMemory workingMemory, Object object) {
+ public Object getValue(InternalWorkingMemory workingMemory,
+ Object object) {
Map variables = new HashMap();
- for( Iterator it = this.extractors.entrySet().iterator(); it.hasNext(); ) {
+ for ( Iterator it = this.extractors.entrySet().iterator(); it.hasNext(); ) {
Map.Entry entry = (Map.Entry) it.next();
String var = (String) entry.getKey();
InternalReadAccessor extr = (InternalReadAccessor) entry.getValue();
- variables.put( var, extr.getValue( workingMemory, object ));
+ variables.put( var,
+ extr.getValue( workingMemory,
+ object ) );
}
- return MVEL.executeExpression( mvelExpression, variables );
+ return MVEL.executeExpression( mvelExpression,
+ object,
+ variables );
}
}
More information about the jboss-svn-commits
mailing list