[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