Where does it now fail? I'd assume the first part of the test (where only 1 Cheese exists) would still pass, but the second part of the test where 3 Cheeses existing in total to now fail.
Is my understanding correct? Cheers, Mike On 26 May 2011 05:44, Mark Proctor <mproc...@codehaus.org> wrote: > https://issues.jboss.org/browse/JBRULES-3051 > > Previously ALL collections where cloned when bound: > > public Object getNonShadowedValue(InternalWorkingMemory workingMemory, > final Object object) { > Object result = this.readAccessor.getValue( workingMemory, > object ); > if ( this.isInternalFact() && result instanceof Collection ) { > try { > Collection newCol = (Collection) > result.getClass().newInstance(); > for ( Iterator it = ((Collection) result).iterator(); > it.hasNext(); ) { > Object element = it.next(); > newCol.add( element ); > } > return newCol; > } catch ( InstantiationException e ) { > // nothing we can do, so just return the resulting object > } catch ( IllegalAccessException e ) { > // TODO Auto-generated catch block } > } > return result; > } > > This was left over from shadow facts and actually still existed today. I > have removed the code but now we have a failing test in > FirstOrderLogicTest.testCollectResultConstraints. > > rule "Collect Test" salience 70 > when > $cheeseList : ArrayList(size == 1) from collect( Cheese( ) ); > then > results.add($cheeseList); > end > > The reason why this passed before was the collection was cloned, so the > accumulate's evaulations would not impact it. Now it is no longer cloned and > while the rule does not fire the Collection is updated. I think the later is > the correct behaviour and I've updated the test as expected. Everyone > agreed? > > > _______________________________________________ > rules-dev mailing list > rules-dev@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/rules-dev > >
_______________________________________________ rules-dev mailing list rules-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-dev