Hi Pranay,
Sorry for the latency
Le 15/04/2016 08:18, Pranay Pandey a écrit :
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

Yes, and it's the reason that I changed the code ;)

. Reviewing at a complete patch with all the modifications you have done for making shipment CRUD operations can help here getting the opinion. WDYT?

With pleasure !
My reflexion is : what analyze a permission service ? If it's only the security permission by check security group permission, run the service permission on new transaction don't' raze problem. But if we want use the permission service to analyze a business case to validate a service run, we have a risk to generate some lock on service chain.

Cheers,
Nicolas

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 <mailto: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
    <http://permission.name>, ctx, 300, true);
    +                    resp = dispatcher.runSync(permission.name
    <http://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
    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 <mailto: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