[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