[jboss-jira] [JBoss JIRA] (DROOLS-4305) getOldObject() of ObjectUpdatedEvent is returning same value as getObject()
Benoit Proulx (Jira)
issues at jboss.org
Wed Jul 10 11:44:01 EDT 2019
[ https://issues.jboss.org/browse/DROOLS-4305?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Benoit Proulx updated DROOLS-4305:
----------------------------------
Steps to Reproduce:
*Create a fact file*
{code:java}
public class TestFact {
private String testString;
public String getTestString() {return testString;}
public void setTestString(String testString) {this.testString = testString;}
}
{code}
*Create a test.drl file*
{code}
when
$test : TestFact(testString == "input")
then
$test.setTestString("output");
update($test);
{code}
*Create a Listener*
{code:java}
public class TestRuntimeListener implements org.kie.api.event.rule.RuleRuntimeEventListener {
@Override public void objectDeleted(final ObjectDeletedEvent event) {}
@Override public void objectInserted(final ObjectInsertedEvent event) {}
@Override public void objectUpdated(final ObjectUpdatedEvent event) {
System.out.println("Old and New are the same? " + event.getOldObject() == event.getObject());
}
}
{code}
*Execute*
{code:java}
org.kie.api.runtime.KieSession kSession = [Initialize KieSession]
kSession.addEventListener(new TestRuntimeListener());
TestFact fact = new TestFact;
fact.setString("input");
kSession.insert(fact);
kSession.fireAllRules();
{code}
The console should show "Old and New are the same? true" indicating that both getOldObject() and getObject() are of the same reference.
was:
*Create a fact file*
{code:java}
public class TestFact {
private String testString;
public String getTestString() {return testString;}
public void setTestString(String testString) {this.testString = testString;}
}
{code}
*Create a test.drl file*
{code}
when
$test : TestFact(testString == "input")
then
$test.setTestString("output");
update($test);
{code}
*Create a Listener*
{code:java}
public class TestRuntimeListener implements org.kie.api.event.rule.RuleRuntimeEventListener {
@Override public void objectDeleted(final ObjectDeletedEvent event) {}
@Override public void objectInserted(final ObjectInsertedEvent event) {}
@Override public void objectUpdated(final ObjectUpdatedEvent event) {
System.out.println("Old and New are the same? " + event.getOldObject() == event.getObject());
}
}
{code}
*Execute*
{code:java}
org.kie.api.runtime.KieSession kSession = _[Initialize KieSession]_
kSession.addEventListener(new TestRuntimeListener());
TestFact fact = new TestFact;
fact.setString("input");
kSession.insert(fact);
kSession.fireAllRules();
{code}
The console should show "Old and New are the same? true" indicating that both getOldObject() and getObject() are of the same reference.
> getOldObject() of ObjectUpdatedEvent is returning same value as getObject()
> ---------------------------------------------------------------------------
>
> Key: DROOLS-4305
> URL: https://issues.jboss.org/browse/DROOLS-4305
> Project: Drools
> Issue Type: Bug
> Components: core engine
> Affects Versions: 7.16.0.Final
> Environment: Windows 10 Version 1803 (OS Build 17134.829)
> Eclipse 2018-12 (4.10.0)
> jdk1.8.0_171
> Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T15:39:06-04:00)
> spring-boot-starter-parent 2.1.2.RELEASE
> Reporter: Benoit Proulx
> Assignee: Mario Fusco
> Priority: Optional
>
> We have built a logger file for our rules that implements org.kie.api.event.rule.RuleRuntimeEventListener.
> Whenever the objectUpdated(ObjectUpdatedEvent) method is called, the ObjectUpdatedEvent contains the values of both the old Object and new object (or getOldObject() and getObject() )
> However, it seems that getOldObject() is always returning the same value as getObject().
> Having both values would be very helpful in debugging rules.
--
This message was sent by Atlassian Jira
(v7.12.1#712002)
More information about the jboss-jira
mailing list