[jboss-svn-commits] JBL Code SVN: r13323 - 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
Tue Jul 10 18:45:35 EDT 2007


Author: tirelli
Date: 2007-07-10 18:45:35 -0400 (Tue, 10 Jul 2007)
New Revision: 13323

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_SelfReference2.drl
Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ObjectFactory.java
Log:
JBRULES-977: fixing self reference != comparison

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	2007-07-10 22:38:13 UTC (rev 13322)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2007-07-10 22:45:35 UTC (rev 13323)
@@ -3191,6 +3191,27 @@
                       list.size() );
     }
 
+    public void testSelfReference2() throws Exception {
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_SelfReference2.drl" ) ) );
+        final Package pkg = builder.getPackage();
+
+        final RuleBase ruleBase = getRuleBase();
+        ruleBase.addPackage( pkg );
+        final WorkingMemory workingMemory = ruleBase.newStatefulSession();
+
+        final List results = new ArrayList();
+        workingMemory.setGlobal( "results",
+                                 results );
+
+        workingMemory.insert( new Cheese() );
+
+        workingMemory.fireAllRules();
+
+        assertEquals( 0,
+                      results.size() );
+    }
+
     
 
 }
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_SelfReference2.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_SelfReference2.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_SelfReference2.drl	2007-07-10 22:45:35 UTC (rev 13323)
@@ -0,0 +1,11 @@
+package org.drools;
+
+global java.util.List results;
+
+rule "reversed references"
+when
+    $cheese : Cheese( )
+    Cheese( this != $cheese )
+then
+    results.add( $cheese );
+end 
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_SelfReference2.drl
___________________________________________________________________
Name: svn:executable
   + *

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ObjectFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ObjectFactory.java	2007-07-10 22:38:13 UTC (rev 13322)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ObjectFactory.java	2007-07-10 22:45:35 UTC (rev 13323)
@@ -176,6 +176,9 @@
             if ( value1 == null ) {
                 return value2 != null;
             }
+            if( value2 != null && value2 instanceof ShadowProxy ) {
+                return !value2.equals( value1 );
+            }
             return !value1.equals( value2 );
         }
 
@@ -185,6 +188,9 @@
             if ( value == null ) {
                 return ((ObjectVariableContextEntry) context).right != null;
             }
+            if( ((ObjectVariableContextEntry) context).right != null && ((ObjectVariableContextEntry) context).right instanceof ShadowProxy ) {
+                return !((ObjectVariableContextEntry) context).right.equals( value );
+            }
             return !value.equals( ((ObjectVariableContextEntry) context).right );
         }
 
@@ -194,6 +200,9 @@
             if ( ((ObjectVariableContextEntry) context).left == null ) {
                 return value != null;
             }
+            if( value != null && value instanceof ShadowProxy ) {
+                return !value.equals( ((ObjectVariableContextEntry) context).left );
+            }
             return !((ObjectVariableContextEntry) context).left.equals( value );
         }
 
@@ -206,6 +215,9 @@
             if ( value1 == null ) {
                 return value2 != null;
             }
+            if( value2 != null && value2 instanceof ShadowProxy ) {
+                return !value2.equals( value1 );
+            }
             return !value1.equals( value2 );
         }
 




More information about the jboss-svn-commits mailing list