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/>
>

Reply via email to