Hi Nicolas, Calling it as permission service is tricky. I see the comment in implementation above the simple method in ShipmentServices.xml-
<!-- Check the Status of a Shipment to see if it can be changed - meant to be called in-line --> It was implemented with a purpose to be called inline, may be supporting the traditional way of doing things. Reviewing at a complete patch with all the modifications you have done for making shipment CRUD operations can help here getting the opinion. WDYT? Best regards, Pranay Pandey HotWax Systems http://www.hotwaxsystems.com/ On Thu, Apr 7, 2016 at 1:30 PM, Nicolas Malin <nicolas.ma...@nereide.fr> wrote: > Hello, > > Currently I continue the conversion on shipment crud service and I > detected that many service use the same mini-lang call to check if the > shipment status is ok for editing "checkCanChangeShipmentStatusPacked" > > I convert it on service to call it directly by the permission-service like > that : > > <service name="createShipmentPackageContent" > default-entity-name="ShipmentPackageContent" engine="entity-auto" > invoke="create" auth="true">... > <permission-service > service-name="checkCanChangeShipmentStatusPacked" main-action="CREATE"/> > <auto-attributes include="pk" mode="IN" optional="false"/>... > </service> > > The problem with this change that when I run the unit tests, I have some > failed to due database lock on shipment. > After some analyse I founded that the permission service wasn't call on > the same service's transaction. > I a realize this change : > > Index: framework/service/src/org/ofbiz/service/ModelService.java > =================================================================== > --- framework/service/src/org/ofbiz/service/ModelService.java (révision > 1737860) > +++ framework/service/src/org/ofbiz/service/ModelService.java (copie de > travail) > @@ -985,7 +985,7 @@ > LocalDispatcher dispatcher = dctx.getDispatcher(); > Map<String, Object> resp; > try { > - resp = dispatcher.runSync(permission.name, ctx, 300, > true); > + resp = dispatcher.runSync(permission.name, ctx); > } catch (GenericServiceException e) { > Debug.logError(e, module); > Map<String, Object> result = > ServiceUtil.returnSuccess(); > > All unit test pass. > Anyone know the reason to call the permission service on a new transaction > ? > I couldn't spot any valid reason. > > Thnaks for help ;) > > Nicolas > > -- > #jeSuisCharlie > [image: logoNrd] <http://nereide.fr/> > Nicolas Malin > Ingénieur d'étude. Dernier sujet : "Les vaches portant un prénom pouvent > trouver la sortie d'un labyrinthe en cas de toxoplasmose > informat...@nereide.fr > 8 rue des Déportés 37000 TOURS, 02 47 50 30 54 > Apache OFBiz <http://ofbiz.apache.org/> | ofbiz-fr > <http://www.ofbiz-fr.org/> | | réseau LE > <http://www.libre-entreprise.org/> >