[
http://jira.jboss.com/jira/browse/JBRULES-358?page=all ]
Edson Tirelli resolved JBRULES-358.
-----------------------------------
Resolution: Done
Fixed. Commited in revision #5063.
Adding drools-compiler/src/test/java/org/drools/AssertedObject.java
Adding drools-compiler/src/test/java/org/drools/Precondition.java
Sending
drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
Adding
drools-compiler/src/test/resources/org/drools/integrationtests/test_RemovePackage.drl
Sending drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java
Sending drools-core/src/main/java/org/drools/rule/Rule.java
Transmitting file data ......
Committed revision 5063.
The problem was that the node sharing counter was not being properly incremented when
ReteooBuilder was building the rete network.
RuleBase.removePackage does not work
------------------------------------
Key: JBRULES-358
URL:
http://jira.jboss.com/jira/browse/JBRULES-358
Project: JBoss Rules
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: Reteoo
Affects Versions: 3.0, 3.0.1, 3.0.2
Environment: eclipse IDE 3.12 JBoss Rules 3.0.1 recompiled with debug
information
Reporter: Giovanni Cuccu
Assigned To: Edson Tirelli
Fix For: 3.0.3
Here is the complete test case to reproduce the error:
package simpletest;
import java.io.InputStreamReader;
import java.util.List;
import mit.rules.test.TestRules;
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
import org.drools.audit.WorkingMemoryFileLogger;
import org.drools.compiler.PackageBuilder;
public class TestRemovePackage {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader(
TestRemovePackage.class.getResourceAsStream( "testremove.drl" ) ) );
final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
String packageName=builder.getPackage().getName();
System.out.println("Package Name " + packageName);
ruleBase.addPackage( builder.getPackage() );
final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
fireRules(workingMemory);
RuleBase ruleBaseWM=workingMemory.getRuleBase();
System.out.println("ruleBase" + ruleBaseWM.toString());
ruleBaseWM.removePackage(packageName);
final PackageBuilder builder1 = new PackageBuilder();
builder1.addPackageFromDrl( new InputStreamReader(
TestRules.class.getResourceAsStream( "testremove2.drl" ) ) );
ruleBaseWM.addPackage(builder1.getPackage());
fireRules(workingMemory);
}
public static void fireRules(WorkingMemory workingMemory) {
final WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger( workingMemory
);
logger.setFileName( "log/testcup" );
final boolean dynamic = false;
workingMemory.assertObject( new Precondition(
"genericcode","genericvalue"),
dynamic );
workingMemory.fireAllRules();
List listaStrutture=workingMemory.getObjects(AssertedObject.class);
if (listaStrutture==null) {
System.err.println("Nessuna struttura eroga quello che chiedi");
}
for (int i=0;i<listaStrutture.size();i++) {
AssertedObject assObj=(AssertedObject)listaStrutture.get(i);
System.out.println("found:" +
assObj.getValue());
}
logger.writeToDisk();
}
}
package simpletest;
public class Precondition {
private String code;
private String value;
public Precondition(String code, String value) {
super();
// TODO Auto-generated constructor stub
this.code = code;
this.value = value;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
package simpletest;
public class AssertedObject {
private String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public AssertedObject(String value) {
// TODO Auto-generated constructor stub
this.value = value;
}
}
and here is the drl file
package simpletest;
import simpletest.Precondition;
import simpletest.AssertedObject;
rule rule1
salience 10
when
p: Precondition ( code == "genericcode")
then
assert( new AssertedObject( "value1") );
assert( new AssertedObject( "value2") );
end
rule rule2
when
p: Precondition ( code == "genericcode",
value=="genericvalue")
then
assert( new AssertedObject( "value3") );
assert( new AssertedObject( "value4") );
end
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira