[ https://issues.apache.org/jira/browse/OFBIZ-3847?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15279901#comment-15279901 ]
Gareth Carter commented on OFBIZ-3847: -------------------------------------- Hi I have just encountered an issue caused by the patch committed for this issue. If you delete records in an entity that has an eca on operation="remove" and conditions on the eca, you receive a NPE because of the line highlighted {code:title=org.ofbiz.entityext.eca.EntityEcaRule} if( !fieldsToLoad.isEmpty()) { Delegator delegator = dctx.getDelegator(); --> GenericValue oldValue = delegator.findOne(entityName, value.getPrimaryKey(), false); // null on remove for( String fieldName : fieldsToLoad) { value.put(fieldName, oldValue.get(fieldName)); } } {code} The old value does not exist any more and is null. An example eca: {code:title=applications/product/entitydef/eecas.xml} <eca entity="InventoryItemDetail" operation="create-store-remove" event="return"> <condition field-name="availableToPromiseDiff" operator="not-equals" value="0" type="BigDecimal"/> <action service="setLastInventoryCount" mode="sync"/> </eca> {code} > Entity ECAs not triggered correctly when using Delegator.storeAll() method > -------------------------------------------------------------------------- > > Key: OFBIZ-3847 > URL: https://issues.apache.org/jira/browse/OFBIZ-3847 > Project: OFBiz > Issue Type: Bug > Components: framework > Affects Versions: Release Branch 10.04 > Reporter: Martin Kreidenweis > Assignee: Jacques Le Roux > Fix For: Upcoming Branch > > Attachments: GenericDelegator.java.diff, > OFBIZ-3847_Entity-ECAs-not-triggered-correctly.patch, > OFBIZ-3847_Entity-ECAs-not-triggered-correctly.patch > > > The conditions don't work when updating (not creating) entities using the > Delegator.storeAll() method. E.g. the following condition does not work: > {code} > <eca entity="Product" operation="create-store" event="return"> > <condition field-name="autoCreateKeywords" operator="not-equals" > value="N"/> > <action service="indexProductKeywords" mode="sync" > value-attr="productInstance"/> > </eca> > {code} > The indexProductKeywords service is called anyway when the product is updated > and the autoCreateKeywords was "N" and stays "N". It works correctly for > newly created products. > The problem is in the method GenericDelegator.storeAll(), where unchanged > field values are not passed down to the store() method. The store method > calls the ECA engine, which does not receive the unchanged values at all and > thus cannot evaluate the EECA conditions correctly. -- This message was sent by Atlassian JIRA (v6.3.4#6332)