public ReteStatelessSessionResult(InternalWorkingMemory workingMemory, GlobalResolver globalResolver) { this.workingMemory = workingMemory; this.objectStore = workingMemory.getObjectStore(); this.globalResolver = globalResolver; }
protected TraitableBean lookForWrapper( final Object objectValue, InternalWorkingMemory workingMemory) { Iterator iter = workingMemory.getObjectStore().iterateObjects( new ObjectFilter() { public boolean accept(Object object) { if ( object instanceof TraitProxy ) { Object core = ((TraitProxy) object).getObject(); if ( core instanceof CoreWrapper ) { core = ((CoreWrapper) core).getCore(); } return core == objectValue; } else { return false; } } }); if ( iter.hasNext() ) { return (TraitableBean) ((TraitProxy) iter.next()).getObject(); } else { return null; // throw new RuntimeException(" Error : the isA operator must be used on a trait-type, was applied to " + objectValue ); } }
@Test public void testCollection() throws Exception { TypeResolver resolver = new ClassTypeResolver(new HashSet<String>(), Thread.currentThread().getContextClassLoader()); resolver.addImport("org.drools.Cheesery"); resolver.addImport("org.drools.Cheese"); WorkingMemory wm = getWorkingMemory("test_rules2.drl"); ScenarioRunner run = new ScenarioRunner( resolver, getClassLoader(), (InternalWorkingMemory) wm); Scenario scenario = new Scenario(); run.run(scenario); Iterator iterator = ((InternalWorkingMemory) wm).getObjectStore().iterateFactHandles(); while (iterator.hasNext()){ FactHandle next = (FactHandle) iterator.next(); FactHandle next1 = next; } }