[jboss-svn-commits] JBL Code SVN: r19782 - in labs/jbossrules/branches/4.0.x: drools-compiler/src/test/java/org/drools/integrationtests and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Apr 30 15:53:48 EDT 2008


Author: tirelli
Date: 2008-04-30 15:53:48 -0400 (Wed, 30 Apr 2008)
New Revision: 19782

Added:
   labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/MockPersistentSet.java
   labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/MockPersistentSetException.java
   labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/ObjectWithSet.java
   labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_ShadowProxyOnCollections2.drl
Modified:
   labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
   labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/util/ShadowProxyUtils.java
Log:
JBRULES-1590: fixing problem with shadow proxy cloning for collections

Added: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/MockPersistentSet.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/MockPersistentSet.java	                        (rev 0)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/MockPersistentSet.java	2008-04-30 19:53:48 UTC (rev 19782)
@@ -0,0 +1,45 @@
+package org.drools;
+
+import java.util.AbstractSet;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+public class MockPersistentSet extends AbstractSet implements Set
+{
+
+	private Set set;
+	
+	private boolean exception;
+
+	public MockPersistentSet()
+	{
+		exception = true;
+		set = new HashSet();
+	}
+	
+	public MockPersistentSet(boolean exception)
+	{
+		this.exception = exception;
+		set = new HashSet();
+	}
+	
+	public int size()
+	{
+		return set.size();
+	}
+	
+	public Iterator iterator()
+	{
+		return set.iterator();
+	}
+	
+	public boolean addAll(Collection c)
+	{
+		if (exception)
+			throw new MockPersistentSetException("error message like PersistentSet");
+		return set.addAll(c);
+	}
+
+}

Added: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/MockPersistentSetException.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/MockPersistentSetException.java	                        (rev 0)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/MockPersistentSetException.java	2008-04-30 19:53:48 UTC (rev 19782)
@@ -0,0 +1,9 @@
+package org.drools;
+
+public class MockPersistentSetException extends RuntimeException
+{
+	public MockPersistentSetException(String message)
+	{
+		super(message);
+	}
+}

Added: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/ObjectWithSet.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/ObjectWithSet.java	                        (rev 0)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/ObjectWithSet.java	2008-04-30 19:53:48 UTC (rev 19782)
@@ -0,0 +1,35 @@
+package org.drools;
+
+import java.util.Set;
+
+public class ObjectWithSet
+{
+	private Set set;
+
+	private String message;
+	
+	public String getMessage()
+	{
+		return message;
+	}
+	
+	public void setMessage(String message)
+	{
+		this.message = message;
+	}
+	
+	public ObjectWithSet()
+	{
+	}
+
+	public Set getSet()
+	{
+		return set;
+	}
+
+	public void setSet(Set set)
+	{
+		this.set = set;
+	}
+
+}

Modified: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2008-04-30 19:03:23 UTC (rev 19781)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2008-04-30 19:53:48 UTC (rev 19782)
@@ -18,7 +18,6 @@
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
-import java.io.File;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.ObjectInput;
@@ -58,6 +57,8 @@
 import org.drools.IndexedNumber;
 import org.drools.InsertedObject;
 import org.drools.Message;
+import org.drools.MockPersistentSet;
+import org.drools.ObjectWithSet;
 import org.drools.Order;
 import org.drools.OrderItem;
 import org.drools.OuterClass;
@@ -115,7 +116,6 @@
 import org.drools.lang.descr.RuleDescr;
 import org.drools.rule.InvalidRulePackage;
 import org.drools.rule.Package;
-import org.drools.rule.builder.dialect.java.JavaDialect;
 import org.drools.rule.builder.dialect.java.JavaDialectConfiguration;
 import org.drools.spi.Activation;
 import org.drools.spi.ConsequenceExceptionHandler;
@@ -4329,6 +4329,38 @@
                       cheesery.getCheeses().get( 0 ) );
     }
 
+    public void testShadowProxyOnCollections2() throws Exception {
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_ShadowProxyOnCollections2.drl" ) ) );
+        final Package pkg = builder.getPackage();
+
+        final RuleBase ruleBase = getRuleBase();
+        ruleBase.addPackage( pkg );
+        final StatefulSession workingMemory = ruleBase.newStatefulSession();
+
+        final List results = new ArrayList();
+        workingMemory.setGlobal( "results",
+                                 results );
+
+        List list = new ArrayList();
+        list.add( "example1" );
+        list.add( "example2" );
+
+        MockPersistentSet mockPersistentSet = new MockPersistentSet( false );
+        mockPersistentSet.addAll( list );
+        org.drools.ObjectWithSet objectWithSet = new ObjectWithSet();
+        objectWithSet.setSet( mockPersistentSet );
+
+        workingMemory.insert( objectWithSet );
+
+        workingMemory.fireAllRules();
+
+        assertEquals( 1,
+                      results.size() );
+        assertEquals( "show",
+                      objectWithSet.getMessage() );
+    }
+
     public void testQueryWithCollect() throws Exception {
         final PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Query.drl" ) ) );
@@ -4725,30 +4757,31 @@
 
     public void testAlphaCompositeConstraints() throws Exception {
         final PackageBuilder builder = new PackageBuilder();
-        builder.addPackageFromDrl(new InputStreamReader(getClass()
-                .getResourceAsStream("test_AlphaCompositeConstraints.drl")));
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_AlphaCompositeConstraints.drl" ) ) );
         final Package pkg = builder.getPackage();
 
         final RuleBase ruleBase = getRuleBase();
-        ruleBase.addPackage(pkg);
+        ruleBase.addPackage( pkg );
         final WorkingMemory workingMemory = ruleBase.newStatefulSession();
 
         final List list = new ArrayList();
-        workingMemory.setGlobal("results", list);
+        workingMemory.setGlobal( "results",
+                                 list );
 
-        Person bob = new Person( "bob", 30 );
+        Person bob = new Person( "bob",
+                                 30 );
 
-        workingMemory.insert(bob);
+        workingMemory.insert( bob );
         workingMemory.fireAllRules();
 
-        assertEquals( 1, list.size());
+        assertEquals( 1,
+                      list.size() );
     }
 
-	public void testModifyBlock() throws Exception {
-		final PackageBuilder builder = new PackageBuilder();
-		builder.addPackageFromDrl(new InputStreamReader(getClass()
-				.getResourceAsStream("test_ModifyBlock.drl")));
-		final Package pkg = builder.getPackage();
+    public void testModifyBlock() throws Exception {
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_ModifyBlock.drl" ) ) );
+        final Package pkg = builder.getPackage();
         final RuleBase ruleBase = getRuleBase();
         ruleBase.addPackage( pkg );
         final WorkingMemory workingMemory = ruleBase.newStatefulSession();
@@ -4796,7 +4829,7 @@
         workingMemory.insert( new Cheese() );
         workingMemory.insert( new OuterClass.InnerClass( 1 ) );
 
-        workingMemory.fireAllRules( );
+        workingMemory.fireAllRules();
 
         assertEquals( 2,
                       list.size() );
@@ -4805,7 +4838,7 @@
         assertEquals( 31,
                       bob.getAge() );
         assertEquals( 2,
-                      ((OuterClass.InnerClass)list.get( 1 )).getIntAttr() );
+                      ((OuterClass.InnerClass) list.get( 1 )).getIntAttr() );
     }
 
     public void testOrCE() throws Exception {

Added: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_ShadowProxyOnCollections2.drl
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_ShadowProxyOnCollections2.drl	                        (rev 0)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_ShadowProxyOnCollections2.drl	2008-04-30 19:53:48 UTC (rev 19782)
@@ -0,0 +1,14 @@
+package org.drools;
+
+import java.util.ArrayList;
+
+global java.util.List results;
+
+rule "shadow proxy on collections2"
+	when
+		obj:ObjectWithSet( set != null && set.empty == false )
+	then
+		obj.setMessage("show");
+		results.add( "OK" );
+end
+

Modified: labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/util/ShadowProxyUtils.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/util/ShadowProxyUtils.java	2008-04-30 19:03:23 UTC (rev 19781)
+++ labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/util/ShadowProxyUtils.java	2008-04-30 19:53:48 UTC (rev 19782)
@@ -53,6 +53,7 @@
             } catch ( Exception e ) {
                 /* Failed to clone.  Don't worry about it, and just return
                  * the original object. */
+                clone = null;
             }
         }
 
@@ -82,6 +83,7 @@
             } catch ( Exception e ) {
                 /* Failed to clone.  Don't worry about it, and just return
                  * the original object. */
+                clone = null;
             }
         }
 




More information about the jboss-svn-commits mailing list