You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2014/09/02 09:10:36 UTC

svn commit: r1621937 - in /ofbiz/trunk/applications/product: script/org/ofbiz/product/store/ProductStoreServices.xml servicedef/services_store.xml

Author: jleroux
Date: Tue Sep  2 07:10:35 2014
New Revision: 1621937

URL: http://svn.apache.org/r1621937
Log:
A patch from  Nicolas Malin for "Convert ProductStore entites CRUD service from simple to entity-auto" https://issues.apache.org/jira/browse/OFBIZ-5741

I converted CRUD service to entity-auto for :

    ProductStoreCatalog
    ProductStorePaymentSetting
    ProductStoreEmail
    ProductStoreVendorPayment
    ProductStoreShipMeth
    ProductStoreRole
    ProductStoreKeywordOvrd
    ProductStoreSurveyAppl
    ProductStoreFinActSetting
    ProductStoreVendorShipment

I keep to service in mini lang ProductStore.
I add a new permission service on product store with the same template of produt and productCategory for more homogeneity.

I run manual test create/update/delete from product store screen with success and I run ./ant clean-all load-demo run-tests without error

Modified:
    ofbiz/trunk/applications/product/script/org/ofbiz/product/store/ProductStoreServices.xml
    ofbiz/trunk/applications/product/servicedef/services_store.xml

Modified: ofbiz/trunk/applications/product/script/org/ofbiz/product/store/ProductStoreServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/product/store/ProductStoreServices.xml?rev=1621937&r1=1621936&r2=1621937&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/script/org/ofbiz/product/store/ProductStoreServices.xml (original)
+++ ofbiz/trunk/applications/product/script/org/ofbiz/product/store/ProductStoreServices.xml Tue Sep  2 07:10:35 2014
@@ -109,349 +109,6 @@ under the License.
         </if-compare-field>
     </simple-method>
 
-    <!-- ProductStore and ProdCatalog services -->
-    <simple-method method-name="createProductStoreCatalog" short-description="Create ProductStoreCatalog">
-        <check-permission permission="CATALOG" action="_CREATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogCreatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="newEntity" entity-name="ProductStoreCatalog"/>
-        <set-pk-fields map="parameters" value-field="newEntity"/>
-        <set-nonpk-fields map="parameters" value-field="newEntity"/>
-
-        <if-empty field="newEntity.fromDate">
-            <now-timestamp field="nowTimestamp"/>
-            <set from-field="nowTimestamp" field="newEntity.fromDate"/>
-        </if-empty>
-
-        <create-value value-field="newEntity"/>
-    </simple-method>
-    <simple-method method-name="updateProductStoreCatalog" short-description="Update ProductStoreCatalog">
-        <check-permission permission="CATALOG" action="_UPDATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogUpdatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupPKMap" entity-name="ProductStoreCatalog"/>
-        <set-pk-fields map="parameters" value-field="lookupPKMap"/>
-        <find-by-primary-key map="lookupPKMap" value-field="lookedUpValue"/>
-        <set-nonpk-fields map="parameters" value-field="lookedUpValue"/>
-        <store-value value-field="lookedUpValue"/>
-    </simple-method>
-    <simple-method method-name="deleteProductStoreCatalog" short-description="Delete ProductStoreCatalog">
-        <check-permission permission="CATALOG" action="_DELETE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogDeletePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupPKMap" entity-name="ProductStoreCatalog"/>
-        <set-pk-fields map="parameters" value-field="lookupPKMap"/>
-        <find-by-primary-key map="lookupPKMap" value-field="lookedUpValue"/>
-        <remove-value value-field="lookedUpValue"/>
-    </simple-method>
-
-    <!-- ProductStore Payment Setting Services -->
-    <simple-method method-name="createProductStorePaymentSetting" short-description="Create a Product Store Payment Setting">
-        <check-permission permission="CATALOG" action="_CREATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogCreatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="newEntity" entity-name="ProductStorePaymentSetting"/>
-        <set-pk-fields map="parameters" value-field="newEntity"/>
-        <set-nonpk-fields map="parameters" value-field="newEntity"/>
-        <create-value value-field="newEntity"/>
-    </simple-method>
-    <simple-method method-name="updateProductStorePaymentSetting" short-description="Update a Product Store Payment Setting">
-        <check-permission permission="CATALOG" action="_UPDATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogUpdatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupPKMap" entity-name="ProductStorePaymentSetting"/>
-        <set-pk-fields map="parameters" value-field="lookupPKMap"/>
-        <find-by-primary-key entity-name="ProductStorePaymentSetting" map="lookupPKMap" value-field="setting"/>
-        <set-nonpk-fields map="parameters" value-field="setting"/>
-        <store-value value-field="setting"/>
-    </simple-method>
-    <simple-method method-name="deleteProductStorePaymentSetting" short-description="Delete a Product Store Payment Setting">
-        <check-permission permission="CATALOG" action="_DELETE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogDeletePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupPKMap" entity-name="ProductStorePaymentSetting"/>
-        <set-pk-fields map="parameters" value-field="lookupPKMap"/>
-        <find-by-primary-key entity-name="ProductStorePaymentSetting" map="lookupPKMap" value-field="setting"/>
-        <set-nonpk-fields map="parameters" value-field="setting"/>
-        <remove-value value-field="setting"/>
-    </simple-method>
-
-    <!-- ProductStore Email Services -->
-    <simple-method method-name="createProductStoreEmail" short-description="Create Product Store Email Setting">
-        <check-permission permission="CATALOG" action="_CREATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogCreatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="newEntity" entity-name="ProductStoreEmailSetting"/>
-        <set-nonpk-fields map="parameters" value-field="newEntity"/>
-        <set-pk-fields map="parameters" value-field="newEntity"/>
-
-        <create-value value-field="newEntity"/>
-    </simple-method>
-    <simple-method method-name="updateProductStoreEmail" short-description="Update Product Store Email Setting">
-        <check-permission permission="CATALOG" action="_UPDATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogUpdatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupKeyValue" entity-name="ProductStoreEmailSetting"/>
-        <set-pk-fields map="parameters" value-field="lookupKeyValue"/>
-        <find-by-primary-key entity-name="ProductStoreEmailSetting" map="lookupKeyValue" value-field="lookedUpValue"/>
-        <set-nonpk-fields map="parameters" value-field="lookedUpValue"/>
-        <store-value value-field="lookedUpValue"/>
-    </simple-method>
-    <simple-method method-name="removeProductStoreEmail" short-description="Remove Product Store Email Setting">
-        <check-permission permission="CATALOG" action="_DELETE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogDeletePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupPKMap" entity-name="ProductStoreEmailSetting"/>
-        <set-pk-fields map="parameters" value-field="lookupPKMap"/>
-        <find-by-primary-key entity-name="ProductStoreEmailSetting" map="lookupPKMap" value-field="lookedUpValue"/>
-        <remove-value value-field="lookedUpValue"/>
-    </simple-method>
-
-    <!-- ProductStore Vendor Payment Services -->
-    <simple-method method-name="createProductStoreVendorPayment" short-description="Create a ProductStoreVendorPayment">
-        <check-permission permission="CATALOG" action="_CREATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogCreatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value entity-name="ProductStoreVendorPayment" value-field="newEntity"/>
-        <set-pk-fields value-field="newEntity" map="parameters"/>
-        <create-value value-field="newEntity"/>
-    </simple-method>
-    <simple-method method-name="deleteProductStoreVendorPayment" short-description="Remove the ProductStoreVendorPayment">
-        <check-permission permission="CATALOG" action="_DELETE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogDeletePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value entity-name="ProductStoreVendorPayment" value-field="lookedUpValue"/>
-        <set-pk-fields value-field="lookedUpValue" map="parameters"/>
-        <remove-value value-field="lookedUpValue"/>
-    </simple-method>
-
-    <!-- ProductStore Carrier Shipment Services -->
-    <simple-method method-name="createProductStoreShipMeth" short-description="Create Product Store Carrier Shipment Method">
-        <check-permission permission="CATALOG" action="_CREATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogCreatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="newEntity" entity-name="ProductStoreShipmentMeth"/>
-        <set-nonpk-fields map="parameters" value-field="newEntity"/>
-        <sequenced-id sequence-name="ProductStoreShipmentMeth" field="newEntity.productStoreShipMethId"/>
-
-        <create-value value-field="newEntity"/>
-    </simple-method>
-    <simple-method method-name="updateProductStoreShipMeth" short-description="Update Product Store Carrier Shipment Method">
-        <check-permission permission="CATALOG" action="_UPDATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogUpdatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupKeyValue" entity-name="ProductStoreShipmentMeth"/>
-        <set-pk-fields map="parameters" value-field="lookupKeyValue"/>
-        <find-by-primary-key entity-name="ProductStoreShipmentMeth" map="lookupKeyValue" value-field="lookedUpValue"/>
-        <set-nonpk-fields map="parameters" value-field="lookedUpValue"/>
-        <store-value value-field="lookedUpValue"/>
-    </simple-method>
-    <simple-method method-name="removeProductStoreShipMeth" short-description="Remove Product Store Carrier Shipment Method">
-        <check-permission permission="CATALOG" action="_DELETE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogDeletePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupPKMap" entity-name="ProductStoreShipmentMeth"/>
-        <set-pk-fields map="parameters" value-field="lookupPKMap"/>
-        <find-by-primary-key entity-name="ProductStoreShipmentMeth" map="lookupPKMap" value-field="lookedUpValue"/>
-        <remove-value value-field="lookedUpValue"/>
-    </simple-method>
-
-    <!-- Product Store Role Services -->
-    <simple-method method-name="createProductStoreRole" short-description="Create ProductStoreRole">
-        <check-permission permission="CATALOG" action="_CREATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogCreatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="newEntity" entity-name="ProductStoreRole"/>
-        <set-pk-fields map="parameters" value-field="newEntity"/>
-        <set-nonpk-fields map="parameters" value-field="newEntity"/>
-
-        <if-empty field="newEntity.fromDate">
-            <now-timestamp field="nowTimestamp"/>
-            <set from-field="nowTimestamp" field="newEntity.fromDate"/>
-        </if-empty>
-
-        <create-value value-field="newEntity"/>
-    </simple-method>
-    <simple-method method-name="updateProductStoreRole" short-description="Update a ProductStoreRole">
-        <check-permission permission="CATALOG" action="_UPDATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogUpdatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupPKMap" entity-name="ProductStoreRole"/>
-        <set-pk-fields map="parameters" value-field="lookupPKMap"/>
-        <find-by-primary-key map="lookupPKMap" value-field="lookedUpValue"/>
-        <set-nonpk-fields map="parameters" value-field="lookedUpValue"/>
-        <store-value value-field="lookedUpValue"/>
-    </simple-method>
-    <simple-method method-name="removeProductStoreRole" short-description="Remove ProductStoreRole">
-        <check-permission permission="CATALOG" action="_DELETE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogDeletePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupPKMap" entity-name="ProductStoreRole"/>
-        <set-pk-fields map="parameters" value-field="lookupPKMap"/>
-        <find-by-primary-key map="lookupPKMap" value-field="lookedUpValue"/>
-        <set-nonpk-fields map="parameters" value-field="lookedUpValue"/>
-
-        <if-empty field="lookedUpValue.thruDate">
-            <now-timestamp field="nowTimestamp"/>
-            <set from-field="nowTimestamp" field="lookedUpValue.thruDate"/>
-        </if-empty>
-        <store-value value-field="lookedUpValue"/>
-    </simple-method>
-
-    <!-- Product Store Keyword Override Services -->
-    <simple-method method-name="createProductStoreKeywordOvrd" short-description="Create a ProductStoreKeywordOvrd">
-        <check-permission permission="CATALOG" action="_CREATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogCreatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="newEntity" entity-name="ProductStoreKeywordOvrd"/>
-        <set-pk-fields map="parameters" value-field="newEntity"/>
-        <set-nonpk-fields map="parameters" value-field="newEntity"/>
-
-        <if-empty field="newEntity.fromDate">
-            <now-timestamp field="nowTimestamp"/>
-            <set from-field="nowTimestamp" field="newEntity.fromDate"/>
-        </if-empty>
-
-        <!-- make sure the keyword is lower cased -->
-        <call-object-method obj-field="newEntity.keyword" method-name="toLowerCase" ret-field="newEntity.keyword"/>
-
-        <create-value value-field="newEntity"/>
-    </simple-method>
-    <simple-method method-name="updateProductStoreKeywordOvrd" short-description="Update a ProductStoreKeywordOvrd">
-        <check-permission permission="CATALOG" action="_UPDATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogUpdatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupPKMap" entity-name="ProductStoreKeywordOvrd"/>
-        <set-pk-fields map="parameters" value-field="lookupPKMap"/>
-        <find-by-primary-key map="lookupPKMap" value-field="lookedUpValue"/>
-        <set-nonpk-fields map="parameters" value-field="lookedUpValue"/>
-        <store-value value-field="lookedUpValue"/>
-    </simple-method>
-    <simple-method method-name="deleteProductStoreKeywordOvrd" short-description="Delete a ProductStoreKeywordOvrd">
-        <check-permission permission="CATALOG" action="_DELETE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogDeletePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupPKMap" entity-name="ProductStoreKeywordOvrd"/>
-        <set-pk-fields map="parameters" value-field="lookupPKMap"/>
-        <find-by-primary-key map="lookupPKMap" value-field="lookedUpValue"/>
-        <remove-value value-field="lookedUpValue"/>
-    </simple-method>
-
-    <!-- Product Store Survey Appl Services -->
-    <simple-method method-name="createProductStoreSurveyAppl" short-description="Create ProductStoreSurveyAppl">
-        <check-permission permission="CATALOG" action="_CREATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogCreatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="newEntity" entity-name="ProductStoreSurveyAppl"/>
-        <sequenced-id sequence-name="ProductStoreSurveyAppl" field="productStoreSurveyId"/>
-        <set from-field="productStoreSurveyId" field="newEntity.productStoreSurveyId"/>
-        <field-to-result field="productStoreSurveyId" result-name="productStoreSurveyId"/>
-        <set-nonpk-fields map="parameters" value-field="newEntity"/>
-
-        <if-empty field="newEntity.fromDate">
-            <now-timestamp field="nowTimestamp"/>
-            <set from-field="nowTimestamp" field="newEntity.fromDate"/>
-        </if-empty>
-
-        <create-value value-field="newEntity"/>
-    </simple-method>
-    <simple-method method-name="removeProductStoreSurveyAppl" short-description="Remove ProductStoreSurveyAppl">
-        <check-permission permission="CATALOG" action="_DELETE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogDeletePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupPKMap" entity-name="ProductStoreSurveyAppl"/>
-        <set-pk-fields map="parameters" value-field="lookupPKMap"/>
-        <find-by-primary-key map="lookupPKMap" value-field="lookedUpValue"/>
-        <set-nonpk-fields map="parameters" value-field="lookedUpValue"/>
-
-        <if-empty field="lookedUpValue.thruDate">
-            <now-timestamp field="nowTimestamp"/>
-            <set from-field="nowTimestamp" field="lookedUpValue.thruDate"/>
-        </if-empty>
-        <store-value value-field="lookedUpValue"/>
-    </simple-method>
-
-    <!-- Product Store FinAccount Settings -->
-    <simple-method method-name="createProductStoreFinActSetting" short-description="Create a ProductStoreFinActSetting">
-        <check-permission permission="CATALOG" action="_CREATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogCreatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="finAcctSetting" entity-name="ProductStoreFinActSetting"/>
-        <set-pk-fields value-field="finAcctSetting" map="parameters"/>
-        <set-nonpk-fields value-field="finAcctSetting" map="parameters"/>
-        <create-value value-field="finAcctSetting"/>
-    </simple-method>
-    <simple-method method-name="updateProductStoreFinActSetting" short-description="Update a ProductStoreFinActSetting">
-        <check-permission permission="CATALOG" action="_UPDATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogUpdatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupPk" entity-name="ProductStoreFinActSetting"/>
-        <set-pk-fields value-field="lookupPk" map="parameters"/>
-        <find-by-primary-key map="lookupPk" value-field="finAccountSetting"/>
-
-        <set-nonpk-fields value-field="finAccountSetting" map="parameters"/>
-        <store-value value-field="finAccountSetting"/>
-    </simple-method>
-    <simple-method method-name="removeProductStoreFinActSetting" short-description="Remove a ProductStoreFinActSetting">
-        <check-permission permission="CATALOG" action="_DELETE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogDeletePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupPk" entity-name="ProductStoreFinActSetting"/>
-        <set-pk-fields value-field="lookupPk" map="parameters"/>
-        <find-by-primary-key map="lookupPk" value-field="finAccountSetting"/>
-        <remove-value value-field="finAccountSetting"/>
-    </simple-method>
-
     <!-- Store Inventory Services -->
     <simple-method method-name="reserveStoreInventory" short-description="Reserve Store Inventory">
         <entity-one entity-name="Product" value-field="product" use-cache="true"/>
@@ -753,24 +410,87 @@ under the License.
         </if-compare>
     </simple-method>
 
-    <!-- ProductStore Vendor Shipment Services -->
-    <simple-method method-name="createProductStoreVendorShipment" short-description="Create a ProductStoreVendorShipment">
-        <check-permission permission="CATALOG" action="_CREATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogCreatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-        <make-value entity-name="ProductStoreVendorShipment" value-field="newEntity"/>
-        <set-pk-fields value-field="newEntity" map="parameters"/>
-        <create-value value-field="newEntity"/>
+    <!-- ============================= -->
+    <!-- Permission Methods -->
+    <!-- ============================= -->
+
+    <!-- a methods to centralize product security code, meant to be called in-line with
+        call-simple-method, and the checkAction and callingMethodName attributes should be in the method context -->
+    <simple-method method-name="checkProductStoreRelatedPermission" short-description="Check ProductStore Related Permission">
+        <if-empty field="callingMethodName">
+            <set field="callingMethodName" value="this operation"/>
+        </if-empty>
+        <if-empty field="checkAction">
+            <set field="checkAction" value="UPDATE"/>
+        </if-empty>
+        <if-empty field="productStoreIdName">
+            <set field="productStoreIdName" value="productStoreId"/>
+        </if-empty>
+        <if-empty field="productStoreIdToCheck">
+            <set field="productStoreIdToCheck" from-field="parameters.${productStoreIdName}"/>
+        </if-empty>
+
+        <!-- find all role-store that this productStore is a member of -->
+        <if>
+            <condition>
+                <not><if-has-permission permission="CATALOG" action="_${checkAction}"/></not>
+            </condition>
+            <then>
+                <entity-and entity-name="ProductStoreRole" list="roleStores" filter-by-date="true">
+                    <field-map field-name="productStoreId" from-field="productStoreIdToCheck"/>
+                    <field-map field-name="partyId" from-field="userLogin.partyId"/>
+                    <field-map field-name="roleTypeId" value="LTD_ADMIN"/>
+                </entity-and>
+                <filter-list-by-date list="roleStores" from-field-name="roleFromDate" thru-field-name="roleThruDate"/>
+            </then>
+        </if>
+        <log level="info" message="Checking store permission, roleStores=${roleStores}"/>
+        <if>
+            <condition>
+                <not>
+                    <or>
+                        <if-has-permission permission="CATALOG" action="_${checkAction}"/>
+                        <and>
+                            <if-has-permission permission="CATALOG_ROLE" action="_${checkAction}"/>
+                            <not><if-empty field="roleStores"/></not>
+                        </and>
+                    </or>
+                </not>
+            </condition>
+            <then>
+                <log level="verbose" message="Permission check failed, user does not have permission"/>
+                <set field="checkActionLabel" value="${groovy: 'ProductCatalog' + checkAction.charAt(0) + checkAction.substring(1).toLowerCase() + 'PermissionError'}"/>
+                <add-error>
+                    <fail-property resource="ProductUiLabels" property="${checkActionLabel}"/>
+                </add-error>
+                <set field="hasPermission" type="Boolean" value="false"/>
+            </then>
+        </if>
     </simple-method>
-    <simple-method method-name="deleteProductStoreVendorShipment" short-description="Remove the ProductStoreVendorShipment">
-        <check-permission permission="CATALOG" action="_DELETE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogDeletePermissionError"/>
-        </check-permission>
-        <check-errors/>
-        <make-value entity-name="ProductStoreVendorShipment" value-field="lookedUpValue"/>
-        <set-pk-fields value-field="lookedUpValue" map="parameters"/>
-        <remove-value value-field="lookedUpValue"/>
+    <simple-method method-name="productStoreGenericPermission" short-description="Main permission logic">
+        <set field="mainAction" from-field="parameters.mainAction"/>
+        <if-empty field="mainAction">
+            <add-error>
+                <fail-property resource="ProductUiLabels" property="ProductMissingMainActionInPermissionService"/>
+            </add-error>
+            <check-errors/>
+        </if-empty>
+
+        <set field="callingMethodName" from-field="parameters.resourceDescription"/>
+        <set field="checkAction" from-field="parameters.mainAction"/>
+        <call-simple-method method-name="checkProductStoreRelatedPermission"/>
+
+        <if-empty field="error_list">
+            <set field="hasPermission" type="Boolean" value="true"/>
+            <field-to-result field="hasPermission"/>
+
+            <else>
+                <property-to-field resource="ProductUiLabels" property="ProductPermissionError" field="failMessage"/>
+                <set field="hasPermission" type="Boolean" value="false"/>
+                <field-to-result field="hasPermission"/>
+                <field-to-result field="failMessage"/>
+            </else>
+        </if-empty>
     </simple-method>
 
     <simple-method method-name="checkProductStoreGroupRollup" short-description="When product store group hierarchy has been operate, synchronize primaryParentGroupId with ProductStoreGroupRollup">

Modified: ofbiz/trunk/applications/product/servicedef/services_store.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/services_store.xml?rev=1621937&r1=1621936&r2=1621937&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/servicedef/services_store.xml (original)
+++ ofbiz/trunk/applications/product/servicedef/services_store.xml Tue Sep  2 07:10:35 2014
@@ -83,151 +83,151 @@ under the License.
     </service>
 
     <!-- Product Store Role Services -->
-    <service name="createProductStoreRole" default-entity-name="ProductStoreRole" engine="simple"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="createProductStoreRole" auth="true">
+    <service name="createProductStoreRole" default-entity-name="ProductStoreRole" engine="entity-auto" invoke="create" auth="true">
         <description>Create ProductStoreRole</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="CREATE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
         <override name="fromDate" optional="true"/>
     </service>
-    <service name="updateProductStoreRole" default-entity-name="ProductStoreRole" engine="simple"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="updateProductStoreRole" auth="true">
+    <service name="updateProductStoreRole" default-entity-name="ProductStoreRole" engine="entity-auto" invoke="update" auth="true">
         <description>Update a Product Store Role</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="UPDATE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
     </service>
-    <service name="removeProductStoreRole" default-entity-name="ProductStoreRole" engine="simple"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="removeProductStoreRole" auth="true">
+    <service name="removeProductStoreRole" default-entity-name="ProductStoreRole" engine="entity-auto" invoke="delete" auth="true">
         <description>Remove ProductStoreRole</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="DELETE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
     </service>
 
     <!-- Product Store Catalog Services -->
-    <service name="createProductStoreCatalog" default-entity-name="ProductStoreCatalog" engine="simple"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="createProductStoreCatalog" auth="true">
+    <service name="createProductStoreCatalog" default-entity-name="ProductStoreCatalog" engine="entity-auto" invoke="create" auth="true">
         <description>Create ProductStoreCatalog</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="CREATE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
         <override name="fromDate" optional="true"/>
     </service>
-    <service name="updateProductStoreCatalog" default-entity-name="ProductStoreCatalog" engine="simple"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="updateProductStoreCatalog" auth="true">
+    <service name="updateProductStoreCatalog" default-entity-name="ProductStoreCatalog" engine="entity-auto" invoke="update" auth="true">
         <description>Update ProductStoreCatalog</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="UPDATE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
     </service>
-    <service name="deleteProductStoreCatalog" default-entity-name="ProductStoreCatalog" engine="simple"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="deleteProductStoreCatalog" auth="true">
+    <service name="deleteProductStoreCatalog" default-entity-name="ProductStoreCatalog" engine="entity-auto" invoke="delete" auth="true">
         <description>Delete ProductStoreCatalog</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="DELETE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
     </service>
 
     <!-- Product Store Payment Services -->
-    <service name="createProductStorePaymentSetting" default-entity-name="ProductStorePaymentSetting" engine="simple"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="createProductStorePaymentSetting" auth="true">
+    <service name="createProductStorePaymentSetting" default-entity-name="ProductStorePaymentSetting" engine="entity-auto" invoke="create" auth="true">
         <description>Create ProductStorePaymentSetting</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="CREATE"/>
         <auto-attributes include="all" mode="IN" optional="false"/>
         <override name="paymentCustomMethodId" optional="true"/>
         <override name="paymentGatewayConfigId" optional="true"/>
         <override name="paymentPropertiesPath" optional="true"/>
         <override name="paymentService" optional="true"/>
     </service>
-    <service name="updateProductStorePaymentSetting" default-entity-name="ProductStorePaymentSetting" engine="simple"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="updateProductStorePaymentSetting" auth="true">
+    <service name="updateProductStorePaymentSetting" default-entity-name="ProductStorePaymentSetting" engine="entity-auto" invoke="update" auth="true">
         <description>Update ProductStorePaymentSetting</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="UPDATE"/>
         <auto-attributes include="all" mode="IN" optional="false"/>
         <override name="paymentCustomMethodId" optional="true"/>
         <override name="paymentGatewayConfigId" optional="true"/>
         <override name="paymentPropertiesPath" optional="true"/>
         <override name="paymentService" optional="true"/>
     </service>
-    <service name="deleteProductStorePaymentSetting" default-entity-name="ProductStorePaymentSetting" engine="simple"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="deleteProductStorePaymentSetting" auth="true">
+    <service name="deleteProductStorePaymentSetting" default-entity-name="ProductStorePaymentSetting" engine="entity-auto" invoke="delete" auth="true">
         <description>Delete ProductStorePaymentSetting</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="DELETE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
     </service>
 
     <!-- Product Store Email Services -->
-    <service name="createProductStoreEmailSetting" engine="simple"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="createProductStoreEmail" auth="true">
+    <service name="createProductStoreEmailSetting" default-entity-name="ProductStoreEmailSetting" engine="entity-auto" invoke="create" auth="true">
         <description>Create a Product Store Email Setting</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="CREATE"/>
         <auto-attributes entity-name="ProductStoreEmailSetting" include="all" mode="IN" optional="false"/>
         <override name="xslfoAttachScreenLocation" optional="true"/>
         <override name="ccAddress" optional="true"/>
         <override name="bccAddress" optional="true"/>
         <override name="contentType" optional="true"/>
     </service>
-    <service name="updateProductStoreEmailSetting" engine="simple"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="updateProductStoreEmail" auth="true">
+    <service name="updateProductStoreEmailSetting" default-entity-name="ProductStoreEmailSetting" engine="entity-auto" invoke="update" auth="true">
         <description>Update a Product Store Email Setting</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="UPDATE"/>
         <auto-attributes entity-name="ProductStoreEmailSetting" include="all" mode="IN" optional="false"/>
         <override name="xslfoAttachScreenLocation" optional="true"/>
         <override name="ccAddress" optional="true"/>
         <override name="bccAddress" optional="true"/>
         <override name="contentType" optional="true"/>
     </service>
-    <service name="removeProductStoreEmailSetting" engine="simple"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="removeProductStoreEmail" auth="true">
+    <service name="removeProductStoreEmailSetting" default-entity-name="ProductStoreEmailSetting" engine="entity-auto" invoke="delete" auth="true">
         <description>Remove a Product Store Email Setting</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="DELETE"/>
         <auto-attributes entity-name="ProductStoreEmailSetting" include="pk" mode="IN" optional="false"/>
     </service>
 
     <!-- Product Store Shipping Method Services -->
-    <service name="createProductStoreShipMeth" default-entity-name="ProductStoreShipmentMeth" engine="simple"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="createProductStoreShipMeth" auth="true">
+    <service name="createProductStoreShipMeth" default-entity-name="ProductStoreShipmentMeth" engine="entity-auto" invoke="create" auth="true">
         <description>Create a Product Store Shipment Method</description>
-        <auto-attributes include="nonpk" mode="IN" optional="true"/>
+        <permission-service service-name="productStoreGenericPermission" main-action="CREATE"/>
+        <auto-attributes include="all" mode="IN" optional="true"/>
+        <auto-attributes include="pk" mode="OUT" optional="false"/>
         <override name="productStoreId" optional="false"/>
         <override name="shipmentMethodTypeId" optional="false"/>
         <override name="partyId" optional="false"/>
         <override name="roleTypeId" optional="false"/>
     </service>
-    <service name="updateProductStoreShipMeth" default-entity-name="ProductStoreShipmentMeth" engine="simple"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="updateProductStoreShipMeth" auth="true">
+    <service name="updateProductStoreShipMeth" default-entity-name="ProductStoreShipmentMeth" engine="entity-auto" invoke="update" auth="true">
         <description>Update a Product Store Shipment Method</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="UPDATE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
     </service>
-    <service name="removeProductStoreShipMeth" default-entity-name="ProductStoreShipmentMeth" engine="simple"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="removeProductStoreShipMeth" auth="true">
+    <service name="removeProductStoreShipMeth" default-entity-name="ProductStoreShipmentMeth" engine="entity-auto" invoke="delete" auth="true">
         <description>Remove a Product Store Shipment Method</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="DELETE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
     </service>
 
     <!-- Product Store Keyword Override services -->
-    <service name="createProductStoreKeywordOvrd" default-entity-name="ProductStoreKeywordOvrd" engine="simple"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="createProductStoreKeywordOvrd" auth="true">
+    <service name="createProductStoreKeywordOvrd" default-entity-name="ProductStoreKeywordOvrd" engine="entity-auto" invoke="create" auth="true">
         <description>Create a Product Store Keyword Override</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="CREATE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
         <override name="target" optional="false"/>
         <override name="fromDate" optional="true"/>
         <override name="targetTypeEnumId" optional="false"/>
     </service>
-    <service name="updateProductStoreKeywordOvrd" default-entity-name="ProductStoreKeywordOvrd" engine="simple"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="updateProductStoreKeywordOvrd" auth="true">
+    <service name="updateProductStoreKeywordOvrd" default-entity-name="ProductStoreKeywordOvrd" engine="entity-auto" invoke="update" auth="true">
         <description>Update a Product Store Keyword Override</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="UPDATE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
     </service>
-    <service name="deleteProductStoreKeywordOvrd" default-entity-name="ProductStoreKeywordOvrd" engine="simple"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="deleteProductStoreKeywordOvrd" auth="true">
+    <service name="deleteProductStoreKeywordOvrd" default-entity-name="ProductStoreKeywordOvrd" engine="entity-auto" invoke="delete" auth="true">
         <description>Delete a Product Store Keyword Override</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="DELETE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
-        <auto-attributes include="nonpk" mode="IN" optional="true"/>
     </service>
 
     <!-- ProductStoreSurveyAppl Services -->
-    <service name="createProductStoreSurveyAppl" default-entity-name="ProductStoreSurveyAppl" engine="simple"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="createProductStoreSurveyAppl" auth="true">
+    <service name="createProductStoreSurveyAppl" default-entity-name="ProductStoreSurveyAppl" engine="entity-auto" invoke="create" auth="true">
         <description>Create a Product Store Survey Appl</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="CREATE"/>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
         <auto-attributes include="pk" mode="OUT" optional="false"/>
     </service>
-    <service name="deleteProductStoreSurveyAppl" default-entity-name="ProductStoreSurveyAppl" engine="simple"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="removeProductStoreSurveyAppl" auth="true">
+    <service name="deleteProductStoreSurveyAppl" default-entity-name="ProductStoreSurveyAppl" engine="entity-auto" invoke="delete" auth="true">
         <description>Delete a Product Store Survey Appl</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="DELETE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
     </service>
 
@@ -252,57 +252,60 @@ under the License.
     </service>
 
     <!-- ProductStoreFinActSetting Services -->
-    <service name="createProductStoreFinActSetting" default-entity-name="ProductStoreFinActSetting" engine="simple"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="createProductStoreFinActSetting" auth="true">
+    <service name="createProductStoreFinActSetting" default-entity-name="ProductStoreFinActSetting" engine="entity-auto" invoke="create" auth="true">
         <description>Create ProductStoreFinActSetting</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="CREATE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
     </service>
-    <service name="updateProductStoreFinActSetting" default-entity-name="ProductStoreFinActSetting" engine="simple"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="updateProductStoreFinActSetting" auth="true">
+    <service name="updateProductStoreFinActSetting" default-entity-name="ProductStoreFinActSetting" engine="entity-auto" invoke="update" auth="true">
         <description>Update ProductStoreFinActSetting</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="UPDATE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
     </service>
-    <service name="removeProductStoreFinActSetting" default-entity-name="ProductStoreFinActSetting" engine="simple"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="removeProductStoreFinActSetting" auth="true">
+    <service name="removeProductStoreFinActSetting" default-entity-name="ProductStoreFinActSetting" engine="entity-auto" invoke="delete" auth="true">
         <description>Remove ProductStoreFinActSetting</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="DELETE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
     </service>
 
     <!--ProductStoreVendorPayment Services -->
-    <service name="createProductStoreVendorPayment" engine="simple" default-entity-name="ProductStoreVendorPayment"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="createProductStoreVendorPayment" auth="true">
+    <service name="createProductStoreVendorPayment" engine="entity-auto" default-entity-name="ProductStoreVendorPayment" invoke="create" auth="true">
+        <permission-service service-name="productStoreGenericPermission" main-action="CREATE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
     </service>
-    <service name="deleteProductStoreVendorPayment" engine="simple" default-entity-name="ProductStoreVendorPayment"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="deleteProductStoreVendorPayment" auth="true">
+    <service name="deleteProductStoreVendorPayment" engine="entity-auto" default-entity-name="ProductStoreVendorPayment" invoke="delete" auth="true">
+        <permission-service service-name="productStoreGenericPermission" main-action="DELETE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
     </service>
 
     <!--ProductStoreVendorShipment Services -->
-    <service name="createProductStoreVendorShipment" engine="simple" default-entity-name="ProductStoreVendorShipment"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="createProductStoreVendorShipment" auth="true">
+    <service name="createProductStoreVendorShipment" default-entity-name="ProductStoreVendorShipment" engine="entity-auto" invoke="create" auth="true">
+        <permission-service service-name="productStoreGenericPermission" main-action="CREATE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
     </service>
-    <service name="deleteProductStoreVendorShipment" engine="simple" default-entity-name="ProductStoreVendorShipment"
-            location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="deleteProductStoreVendorShipment" auth="true">
+    <service name="deleteProductStoreVendorShipment" default-entity-name="ProductStoreVendorShipment" engine="entity-auto" invoke="delete" auth="true">
+        <permission-service service-name="productStoreGenericPermission" main-action="DELETE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
     </service>
 
     <!--ProductStoreFacility Services -->
     <service name="createProductStoreFacility" default-entity-name="ProductStoreFacility" engine="entity-auto" invoke="create" auth="true">
         <description>Create a ProductStoreFacility</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="CREATE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
     </service>
     <service name="updateProductStoreFacility" default-entity-name="ProductStoreFacility" engine="entity-auto" invoke="update" auth="true">
         <description>Update a ProductStoreFacility</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="UPDATE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
     </service>
     <service name="deleteProductStoreFacility" default-entity-name="ProductStoreFacility" engine="entity-auto" invoke="delete" auth="true">
         <description>Delete a ProductStoreFacility</description>
+        <permission-service service-name="productStoreGenericPermission" main-action="DELETE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
     </service>
 
@@ -349,4 +352,10 @@ under the License.
         <attribute name="parentGroupId" mode="IN" type="String" optional="true"/>
         <attribute name="fromDate" mode="IN" type="String" optional="true"/>
     </service>
+
+    <!-- Permission Services -->
+    <service name="productStoreGenericPermission" engine="simple"
+        location="component://product/script/org/ofbiz/product/store/ProductStoreServices.xml" invoke="productStoreGenericPermission">
+        <implements service="permissionInterface"/>
+    </service>
 </services>