[
http://jira.jboss.com/jira/browse/JBRULES-358?page=comments#action_12339480 ]
Edson Tirelli commented on JBRULES-358:
---------------------------------------
Commited into trunk in revision #5064:
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 5064.
Let me know if you find any other problem.
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