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