@Test public void testEventModel() throws Exception { final KieBase kbase = SerializationHelper.serializeObject(loadKnowledgeBase("test_EventModel.drl")); final KieSession wm = createKnowledgeSession(kbase); final RuleRuntimeEventListener wmel = mock(RuleRuntimeEventListener.class); wm.addEventListener(wmel); final Cheese stilton = new Cheese("stilton", 15); final FactHandle stiltonHandle = wm.insert(stilton); final ArgumentCaptor<ObjectInsertedEvent> oic = ArgumentCaptor.forClass(org.kie.api.event.rule.ObjectInsertedEvent.class); verify(wmel).objectInserted(oic.capture()); assertSame(stiltonHandle, oic.getValue().getFactHandle()); wm.update(stiltonHandle, stilton); final ArgumentCaptor<org.kie.api.event.rule.ObjectUpdatedEvent> ouc = ArgumentCaptor.forClass(org.kie.api.event.rule.ObjectUpdatedEvent.class); verify(wmel).objectUpdated(ouc.capture()); assertSame(stiltonHandle, ouc.getValue().getFactHandle()); wm.delete(stiltonHandle); final ArgumentCaptor<ObjectDeletedEvent> orc = ArgumentCaptor.forClass(ObjectDeletedEvent.class); verify(wmel).objectDeleted(orc.capture()); assertSame(stiltonHandle, orc.getValue().getFactHandle()); }
final ObjectUpdatedEvent ome = (ObjectUpdatedEvent) wmList.get( 1 ); assertSame( stiltonHandle, ome.getFactHandle() );
@Override public FactHandle getFactHandle() { return new FactHandleAdapter(event.getFactHandle()); }
final ObjectUpdatedEvent ome = (ObjectUpdatedEvent) wmList.get( 1 ); assertSame( stiltonHandle, ome.getFactHandle() ); assertEquals( cheddar, ome.getObject() ); assertEquals( stilton, ome.getOldObject() );
@Override public void objectUpdated(final ObjectUpdatedEvent event) { if ((handleFilter == null && classFilter == null) || event.getFactHandle() == handleFilter || event.getObject().getClass().equals(classFilter)) { log.trace("Update: " + DroolsUtil.objectDetails(event.getObject())); } }
@Override public void objectUpdated(final ObjectUpdatedEvent event) { if ((handleFilter == null && classFilter == null) || event.getFactHandle() == handleFilter || event.getObject().getClass().equals(classFilter)) { updates.add(event); allEvents.add(event); Object fact = event.getObject(); try { factChanges.add(BeanUtils.describe(fact)); } catch (Exception e) { log.error("Unable to get object details for tracking: " + DroolsUtil.objectDetails(fact), e); } log.trace("Update: " + DroolsUtil.objectDetails(event.getObject())); } }
@SuppressWarnings("unchecked") @Override public void objectUpdated(final ObjectUpdatedEvent event) { if ((handleFilter == null && classFilter == null) || event.getFactHandle() == handleFilter || event.getObject().getClass().equals(classFilter)) { updates.add(event); allEvents.add(event); Object fact = event.getObject(); try { factChanges.add(BeanUtils.describe(fact)); } catch (Exception e) { log.error("Unable to get object details for tracking: " + DroolsUtil.objectDetails(fact), e); } log.trace("Update: " + DroolsUtil.objectDetails(event.getObject())); } }
@Test public void testEventModel() throws Exception { KnowledgeBase kbase = SerializationHelper.serializeObject( loadKnowledgeBase( "test_EventModel.drl" ) ); StatefulKnowledgeSession wm = createKnowledgeSession( kbase ); RuleRuntimeEventListener wmel = mock( RuleRuntimeEventListener.class ); wm.addEventListener( wmel ); final Cheese stilton = new Cheese( "stilton", 15 ); final FactHandle stiltonHandle = wm.insert( stilton ); ArgumentCaptor<org.kie.api.event.rule.ObjectInsertedEvent> oic = ArgumentCaptor.forClass( org.kie.api.event.rule.ObjectInsertedEvent.class ); verify( wmel ).objectInserted( oic.capture() ); assertSame( stiltonHandle, oic.getValue().getFactHandle() ); wm.update( stiltonHandle, stilton ); ArgumentCaptor<org.kie.api.event.rule.ObjectUpdatedEvent> ouc = ArgumentCaptor.forClass( org.kie.api.event.rule.ObjectUpdatedEvent.class ); verify( wmel ).objectUpdated( ouc.capture() ); assertSame( stiltonHandle, ouc.getValue().getFactHandle() ); wm.retract( stiltonHandle ); ArgumentCaptor<ObjectDeletedEvent> orc = ArgumentCaptor.forClass( ObjectDeletedEvent.class ); verify( wmel ).objectDeleted(orc.capture()); assertSame( stiltonHandle, orc.getValue().getFactHandle() ); }
@Test public void testFactBindings() throws Exception { KnowledgeBase kbase = SerializationHelper.serializeObject( loadKnowledgeBase( "test_FactBindings.drl" ) ); StatefulKnowledgeSession ksession = createKnowledgeSession( kbase ); RuleRuntimeEventListener wmel = mock( RuleRuntimeEventListener.class ); ksession.addEventListener( wmel ); final Person bigCheese = new Person( "big cheese" ); final Cheese cheddar = new Cheese( "cheddar", 15 ); bigCheese.setCheese( cheddar ); final FactHandle bigCheeseHandle = ksession.insert( bigCheese ); final FactHandle cheddarHandle = ksession.insert( cheddar ); ksession.fireAllRules(); ArgumentCaptor<org.kie.api.event.rule.ObjectUpdatedEvent> arg = ArgumentCaptor.forClass( org.kie.api.event.rule.ObjectUpdatedEvent.class ); verify( wmel, times( 2 ) ).objectUpdated( arg.capture() ); org.kie.api.event.rule.ObjectUpdatedEvent event = arg.getAllValues().get( 0 ); assertSame( cheddarHandle, event.getFactHandle() ); assertSame( cheddar, event.getOldObject() ); assertSame( cheddar, event.getObject() ); event = arg.getAllValues().get( 1 ); assertSame( bigCheeseHandle, event.getFactHandle() ); assertSame( bigCheese, event.getOldObject() ); assertSame( bigCheese, event.getObject() ); }