You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by nm...@apache.org on 2014/09/28 22:45:08 UTC

svn commit: r1628100 - in /ofbiz/trunk/applications/product: script/org/ofbiz/product/feature/ProductFeatureServices.xml servicedef/services_feature.xml

Author: nmalin
Date: Sun Sep 28 20:45:08 2014
New Revision: 1628100

URL: http://svn.apache.org/r1628100
Log:
I converted CRUD service to entity-auto for :

    ProductFeatureCategory
    ProductFeature
    ProductFeatureAppl
    ProductFeatureCategoryAppl
    ProductFeatureCatGrpAppl
    ProductFeatureGroup
    ProductFeatureType
    ProductFeatureApplAttr
    ProductFeaturePrice

Modified:
    ofbiz/trunk/applications/product/script/org/ofbiz/product/feature/ProductFeatureServices.xml
    ofbiz/trunk/applications/product/servicedef/services_feature.xml

Modified: ofbiz/trunk/applications/product/script/org/ofbiz/product/feature/ProductFeatureServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/product/feature/ProductFeatureServices.xml?rev=1628100&r1=1628099&r2=1628100&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/script/org/ofbiz/product/feature/ProductFeatureServices.xml (original)
+++ ofbiz/trunk/applications/product/script/org/ofbiz/product/feature/ProductFeatureServices.xml Sun Sep 28 20:45:08 2014
@@ -20,101 +20,6 @@ under the License.
 
 <simple-methods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/simple-methods-v2.xsd">
-    <simple-method method-name="createProductFeatureCategory" short-description="Create Product Feature Category">
-        <check-permission permission="CATALOG" action="_CREATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogCreatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value entity-name="ProductFeatureCategory" value-field="newEntity"/>
-        <set-nonpk-fields value-field="newEntity" map="parameters"/>
-
-        <sequenced-id sequence-name="ProductFeatureCategory" field="newEntity.productFeatureCategoryId"/>
-        <field-to-result field="newEntity.productFeatureCategoryId" result-name="productFeatureCategoryId"/>
-
-        <create-value value-field="newEntity"/>
-    </simple-method>
-    <simple-method method-name="updateProductFeatureCategory" short-description="Update Product Feature Category">
-        <check-permission permission="CATALOG" action="_UPDATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogUpdatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <entity-one entity-name="ProductFeatureCategory" value-field="productFeatureCategory"/>
-        <set-nonpk-fields value-field="productFeatureCategory" map="parameters"/>
-        <store-value value-field="productFeatureCategory"/>
-    </simple-method>
-
-    <simple-method method-name="createProductFeature" short-description="Create Product Feature">
-        <check-permission permission="CATALOG" action="_CREATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogCreatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="newEntity" entity-name="ProductFeature"/>
-        <set-nonpk-fields map="parameters" value-field="newEntity"/>
-        <if-empty field="parameters.productFeatureId">
-            <sequenced-id sequence-name="ProductFeature" field="newEntity.productFeatureId"/>
-        <else>
-            <set field="newEntity.productFeatureId" from-field="parameters.productFeatureId"/>
-        </else>
-        </if-empty>
-        <field-to-result field="newEntity.productFeatureId" result-name="productFeatureId"/>
-
-        <create-value value-field="newEntity"/>
-    </simple-method>
-    <simple-method method-name="updateProductFeature" short-description="Update Product Feature">
-        <check-permission permission="CATALOG" action="_UPDATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogUpdatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <entity-one entity-name="ProductFeature" value-field="productFeature"/>
-        <set-nonpk-fields map="parameters" value-field="productFeature"/>
-        <store-value value-field="productFeature"/>
-    </simple-method>
-
-    <simple-method method-name="applyFeatureToProduct" short-description="Apply Feature to Product">
-        <set field="callingMethodName" value="applyFeatureToProduct"/>
-        <set field="checkAction" value="CREATE"/>
-        <call-simple-method method-name="checkProductRelatedPermission" xml-resource="component://product/script/org/ofbiz/product/product/ProductServices.xml"/>
-        <check-errors/>
-
-        <if-empty field="parameters.fromDate">
-            <now-timestamp field="parameters.fromDate"/>
-        </if-empty>
-        <make-value value-field="newEntity" entity-name="ProductFeatureAppl"/>
-        <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="updateFeatureToProductApplication" short-description="Update Feature to Product Application">
-        <set field="callingMethodName" value="updateFeatureToProductApplication"/>
-        <set field="checkAction" value="UPDATE"/>
-        <call-simple-method method-name="checkProductRelatedPermission" xml-resource="component://product/script/org/ofbiz/product/product/ProductServices.xml"/>
-        <check-errors/>
-
-        <entity-one entity-name="ProductFeatureAppl" value-field="productFeatureAppl"/>
-        <set-nonpk-fields map="parameters" value-field="productFeatureAppl"/>
-        <store-value value-field="productFeatureAppl"/>
-    </simple-method>
-    <simple-method method-name="removeFeatureFromProduct" short-description="Remove Feature from Product">
-        <set field="callingMethodName" value="removeFeatureFromProduct"/>
-        <set field="checkAction" value="DELETE"/>
-        <call-simple-method method-name="checkProductRelatedPermission" xml-resource="component://product/script/org/ofbiz/product/product/ProductServices.xml"/>
-        <check-errors/>
-
-        <entity-one entity-name="ProductFeatureAppl" value-field="productFeatureAppl"/>
-        <!-- This is old code that just sets the thru date; the current codes actually removes the db row
-        <if-empty field="parameters.thruDate">
-            <now-timestamp field="nowStamp"/>
-            <env-to-field env-name="nowStamp" field-name="thruDate" map-name="parameters"/>
-        </if-empty>
-        <field-to-field field-name="thruDate" map-name="parameters" to-map-name="productFeatureAppl"/>
-        <store-value value-field="productFeatureAppl"/>
-        -->
-        <remove-value value-field="productFeatureAppl"/>
-    </simple-method>
 
     <simple-method method-name="applyFeatureToProductFromTypeAndCode" short-description="Apply Feature to Product using Feature Type and ID Code">
         <set field="callingMethodName" value="applyFeatureToProductFromTypeAndCode"/>
@@ -139,176 +44,6 @@ under the License.
             <call-service service-name="applyFeatureToProduct" in-map-name="applyFeatureContext"/>
         </iterate>
     </simple-method>
-
-    <!-- Methods for ProductFeatureCategoryAppl -->
-    <simple-method method-name="createProductFeatureCategoryAppl" short-description="Create an Product Feature Category Application">
-        <check-permission permission="CATALOG" action="_CREATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogCreatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="newEntity" entity-name="ProductFeatureCategoryAppl"/>
-        <set-nonpk-fields map="parameters" value-field="newEntity"/>
-        <set-pk-fields map="parameters" value-field="newEntity"/>
-
-        <if-empty field="newEntity.fromDate">
-            <now-timestamp field="newEntity.fromDate"/>
-        </if-empty>
-
-        <create-value value-field="newEntity"/>
-    </simple-method>
-    <simple-method method-name="updateProductFeatureCategoryAppl" short-description="Update an Product Feature Category Application">
-        <check-permission permission="CATALOG" action="_UPDATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogCreatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupKeyValue" entity-name="ProductFeatureCategoryAppl"/>
-        <set-pk-fields map="parameters" value-field="lookupKeyValue"/>
-        <find-by-primary-key map="lookupKeyValue" value-field="lookedUpValue"/>
-        <set-nonpk-fields map="parameters" value-field="lookedUpValue"/>
-        <store-value value-field="lookedUpValue"/>
-    </simple-method>
-    <simple-method method-name="removeProductFeatureCategoryAppl" short-description="Remove a Product Feature Category Application">
-        <check-permission permission="CATALOG" action="_DELETE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogDeletePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupKeyValue" entity-name="ProductFeatureCategoryAppl"/>
-        <set-pk-fields map="parameters" value-field="lookupKeyValue"/>
-        <find-by-primary-key map="lookupKeyValue" value-field="lookedUpValue"/>
-        <remove-value value-field="lookedUpValue"/>
-    </simple-method>
-
-    <!-- Methods for ProductFeatureCatGrpAppl -->
-    <simple-method method-name="createProductFeatureCatGrpAppl" short-description="Create a ProductFeatureGroup to ProductCategory Application">
-        <check-permission permission="CATALOG" action="_CREATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogCreatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="newEntity" entity-name="ProductFeatureCatGrpAppl"/>
-        <set-nonpk-fields map="parameters" value-field="newEntity"/>
-        <set-pk-fields map="parameters" value-field="newEntity"/>
-
-        <if-empty field="newEntity.fromDate">
-            <now-timestamp field="newEntity.fromDate"/>
-        </if-empty>
-
-        <create-value value-field="newEntity"/>
-    </simple-method>
-    <simple-method method-name="updateProductFeatureCatGrpAppl" short-description="Update a ProductFeatureGroup to ProductCategory Application">
-        <check-permission permission="CATALOG" action="_UPDATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogUpdatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupKeyValue" entity-name="ProductFeatureCatGrpAppl"/>
-        <set-pk-fields map="parameters" value-field="lookupKeyValue"/>
-        <find-by-primary-key map="lookupKeyValue" value-field="lookedUpValue"/>
-        <set-nonpk-fields map="parameters" value-field="lookedUpValue"/>
-        <store-value value-field="lookedUpValue"/>
-    </simple-method>
-    <simple-method method-name="removeProductFeatureCatGrpAppl" short-description="Remove a ProductFeatureGroup to ProductCategory Application">
-        <check-permission permission="CATALOG" action="_DELETE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogDeletePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupKeyValue" entity-name="ProductFeatureCatGrpAppl"/>
-        <set-pk-fields map="parameters" value-field="lookupKeyValue"/>
-        <find-by-primary-key map="lookupKeyValue" value-field="lookedUpValue"/>
-        <remove-value value-field="lookedUpValue"/>
-    </simple-method>
-
-    <!-- ProductFeatureGroup Services -->
-    <simple-method method-name="createProductFeatureGroup" short-description="Create Product Feature Group">
-        <check-permission permission="CATALOG" action="_CREATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogCreatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="newEntity" entity-name="ProductFeatureGroup"/>
-        <set-nonpk-fields map="parameters" value-field="newEntity"/>
-
-        <sequenced-id sequence-name="ProductFeatureGroup" field="newEntity.productFeatureGroupId"/>
-        <field-to-result field="newEntity.productFeatureGroupId" result-name="productFeatureGroupId"/>
-
-        <create-value value-field="newEntity"/>
-    </simple-method>
-    <simple-method method-name="updateProductFeatureGroup" short-description="Update Product Feature Group">
-        <check-permission permission="CATALOG" action="_UPDATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogUpdatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <entity-one entity-name="ProductFeatureGroup" value-field="productFeatureGroup"/>
-        <set-nonpk-fields map="parameters" value-field="productFeatureGroup"/>
-        <store-value value-field="productFeatureGroup"/>
-    </simple-method>
-    <simple-method method-name="createProductFeatureGroupAppl" short-description="Create an Product Feature Group Application">
-        <check-permission permission="CATALOG" action="_CREATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogCreatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="newEntity" entity-name="ProductFeatureGroupAppl"/>
-        <set-nonpk-fields map="parameters" value-field="newEntity"/>
-        <set-pk-fields map="parameters" value-field="newEntity"/>
-
-        <if-empty field="newEntity.fromDate">
-            <now-timestamp field="newEntity.fromDate"/>
-        </if-empty>
-
-        <create-value value-field="newEntity"/>
-    </simple-method>
-    <simple-method method-name="updateProductFeatureGroupAppl" short-description="Update an Product Feature Group Application">
-        <check-permission permission="CATALOG" action="_UPDATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogUpdatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupKeyValue" entity-name="ProductFeatureGroupAppl"/>
-        <set-pk-fields map="parameters" value-field="lookupKeyValue"/>
-        <find-by-primary-key entity-name="ProductFeatureGroupAppl" map="lookupKeyValue" value-field="lookedUpValue"/>
-        <set-nonpk-fields map="parameters" value-field="lookedUpValue"/>
-        <store-value value-field="lookedUpValue"/>
-    </simple-method>
-    <simple-method method-name="removeProductFeatureGroupAppl" short-description="Remove a Product Feature Group Application">
-        <check-permission permission="CATALOG" action="_DELETE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogDeletePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupKeyValue" entity-name="ProductFeatureGroupAppl"/>
-        <set-pk-fields map="parameters" value-field="lookupKeyValue"/>
-        <find-by-primary-key entity-name="ProductFeatureGroupAppl" map="lookupKeyValue" value-field="lookedUpValue"/>
-        <remove-value value-field="lookedUpValue"/>
-    </simple-method>
-
-    <!-- Methods for ProductFeatureIactn -->
-    <simple-method method-name="createProductFeatureIactn" short-description="Create a Product Feature Interaction">
-        <check-permission permission="CATALOG" action="_CREATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogCreatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-        <make-value value-field="newEntity" entity-name="ProductFeatureIactn"/>
-        <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="removeProductFeatureIactn" short-description="Remove a Product Feature Interaction">
-        <check-permission permission="CATALOG" action="_DELETE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogDeletePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupKeyValue" entity-name="ProductFeatureIactn"/>
-        <set-pk-fields map="parameters" value-field="lookupKeyValue"/>
-        <find-by-primary-key map="lookupKeyValue" value-field="lookedUpValue"/>
-        <remove-value value-field="lookedUpValue"/>
-    </simple-method>
     <!-- Methods for ProductFeatureType -->
     <simple-method method-name="createProductFeatureType" short-description="Create a Product Feature Type">
         <check-permission permission="CATALOG" action="_CREATE">
@@ -346,30 +81,6 @@ under the License.
 
         <create-value value-field="newEntity"/>
     </simple-method>
-    <simple-method method-name="updateProductFeatureType" short-description="Update an Product Feature Type">
-        <check-permission permission="CATALOG" action="_UPDATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogUpdatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupKeyValue" entity-name="ProductFeatureType"/>
-        <set-pk-fields map="parameters" value-field="lookupKeyValue"/>
-        <find-by-primary-key map="lookupKeyValue" value-field="lookedUpValue"/>
-        <set-nonpk-fields map="parameters" value-field="lookedUpValue"/>
-        <store-value value-field="lookedUpValue"/>
-    </simple-method>
-    <simple-method method-name="removeProductFeatureType" short-description="Remove a Product Feature Type">
-        <check-permission permission="CATALOG" action="_DELETE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogDeletePermissionError"/>
-        </check-permission>
-        <check-errors/>
-
-        <make-value value-field="lookupKeyValue" entity-name="ProductFeatureType"/>
-        <set-pk-fields map="parameters" value-field="lookupKeyValue"/>
-        <find-by-primary-key map="lookupKeyValue" value-field="lookedUpValue"/>
-        <remove-value value-field="lookedUpValue"/>
-    </simple-method>
-
     <!-- create a new ProductFeatureApplAttr -->
     <simple-method method-name="createProductFeatureApplAttr" short-description="Create a ProductFeatureApplAttr">
         <check-permission permission="CATALOG" action="_CREATE">
@@ -394,70 +105,4 @@ under the License.
         <check-errors/>
     </simple-method>
 
-    <!-- update an existing ProductFeatureApplAttr -->
-    <simple-method method-name="updateProductFeatureApplAttr" short-description="Update an existing ProductFeatureApplAttr">
-        <check-permission permission="CATALOG" action="_UPDATE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogUpdatePermissionError"/>
-        </check-permission>
-        <check-errors/>
-        <entity-one entity-name="ProductFeatureApplAttr" value-field="productFeatureApplAttr" auto-field-map="true"/>
-        <check-errors/>
-        <set-nonpk-fields map="parameters" value-field="productFeatureApplAttr"/>
-        <store-value value-field="productFeatureApplAttr"/>
-        <check-errors/>
-    </simple-method>
-
-    <!-- remove an existing ProductFeatureApplAttr -->
-    <simple-method method-name="removeProductFeatureApplAttr" short-description="Remove an existing ProductFeatureApplAttr">
-        <check-permission permission="CATALOG" action="_DELETE">
-            <fail-property resource="ProductUiLabels" property="ProductCatalogDeletePermissionError"/>
-        </check-permission>
-        <check-errors/>
-        <entity-one entity-name="ProductFeatureApplAttr" value-field="productFeatureApplAttr" auto-field-map="true"/>
-        <check-errors/>
-        <remove-value value-field="productFeatureApplAttr"/>
-        <check-errors/>
-    </simple-method>
-
-    <!-- Feature Price Service -->
-    <simple-method method-name="createFeaturePrice" short-description="Create a Feature Price">
-        <make-value value-field="newEntity" entity-name="ProductFeaturePrice"/>
-        <if-empty field="parameters.productFeatureId">
-            <sequenced-id sequence-name="ProductFeaturePrice" field="parameters.productFeatureId"/>
-        </if-empty>
-        <set-nonpk-fields map="parameters" value-field="newEntity"/>
-        <set-pk-fields map="parameters" value-field="newEntity"/>
-
-        <now-timestamp field="nowTimestamp"/>
-
-        <if-empty field="newEntity.fromDate">
-            <set field="newEntity.fromDate" from-field="nowTimestamp"/>
-        </if-empty>
-        <field-to-result field="newEntity.fromDate" result-name="fromDate"/>
-
-        <set field="newEntity.lastModifiedDate" from-field="nowTimestamp"/>
-        <set field="newEntity.createdDate" from-field="nowTimestamp"/>
-        <set field="newEntity.lastModifiedByUserLogin" from-field="userLogin.userLoginId"/>
-        <set field="newEntity.createdByUserLogin" from-field="userLogin.userLoginId"/>
-
-        <create-value value-field="newEntity"/>
-    </simple-method>
-    <simple-method method-name="updateFeaturePrice" short-description="Update a feature price">
-        <entity-one entity-name="ProductFeaturePrice" value-field="lookedUpValue"/>
-
-        <set-nonpk-fields map="parameters" value-field="lookedUpValue"/>
-
-        <now-timestamp field="nowTimestamp"/>
-        <set field="lookedUpValue.lastModifiedDate" from-field="nowTimestamp"/>
-        <set field="lookedUpValue.lastModifiedByUserLogin" from-field="userLogin.userLoginId"/>
-
-        <store-value value-field="lookedUpValue"/>
-    </simple-method>
-    <simple-method method-name="deleteFeaturePrice" short-description="Delete a feature price">
-        <make-value entity-name="ProductFeaturePrice" value-field="lookupPKMap"/>
-        <set-pk-fields map="parameters" value-field="lookupPKMap"/>
-        <find-by-primary-key entity-name="ProductFeaturePrice" map="lookupPKMap" value-field="lookedUpValue"/>
-
-        <remove-value value-field="lookedUpValue"/>
-    </simple-method>
 </simple-methods>

Modified: ofbiz/trunk/applications/product/servicedef/services_feature.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/services_feature.xml?rev=1628100&r1=1628099&r2=1628100&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/servicedef/services_feature.xml (original)
+++ ofbiz/trunk/applications/product/servicedef/services_feature.xml Sun Sep 28 20:45:08 2014
@@ -25,85 +25,57 @@ under the License.
     <version>1.0</version>
 
     <!-- Product Feature Services -->
-    <service name="createProductFeatureCategory" engine="simple"
-                location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="createProductFeatureCategory" auth="true">
+    <service name="createProductFeatureCategory" engine="entity-auto" invoke="create" default-entity-name="ProductFeatureCategory" auth="true">
         <description>Create a ProductFeatureCategory record</description>
+        <permission-service service-name="productGenericPermission" main-action="CREATE"/>
         <attribute name="parentCategoryId" type="String" mode="IN" optional="true"/>
         <attribute name="description" type="String" mode="IN" optional="false"/>
         <attribute name="productFeatureCategoryId" type="String" mode="OUT" optional="false"/>
     </service>
-    <service name="updateProductFeatureCategory" engine="simple"
-                location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="updateProductFeatureCategory" auth="true">
+    <service name="updateProductFeatureCategory" engine="entity-auto" invoke="update" default-entity-name="ProductFeatureCategory" auth="true">
         <description>Update a ProductFeatureCategory record</description>
+        <permission-service service-name="productGenericPermission" main-action="UPDATE"/>
         <attribute name="productFeatureCategoryId" type="String" mode="IN" optional="false"/>
         <attribute name="parentCategoryId" type="String" mode="IN" optional="true"/>
         <attribute name="description" type="String" mode="IN" optional="false"/>
     </service>
 
-    <service name="createProductFeature" engine="simple"
-                location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="createProductFeature" auth="true">
+    <service name="createProductFeature" engine="entity-auto" invoke="create" default-entity-name="ProductFeature" auth="true">
         <description>Create a ProductFeature record</description>
-        <attribute name="productFeatureTypeId" type="String" mode="IN" optional="false"/>
-        <attribute name="productFeatureCategoryId" type="String" mode="IN" optional="true"/>
-        <attribute name="description" type="String" mode="IN" optional="false"/>
-        <attribute name="uomId" type="String" mode="IN" optional="true"/>
-        <attribute name="numberSpecified" type="BigDecimal" mode="IN" optional="true"/>
-        <attribute name="defaultAmount" type="BigDecimal" mode="IN" optional="true"/>
-        <attribute name="productFeatureId" type="String" mode="IN" optional="true"/>
+        <auto-attributes include="all" mode="IN" optional="true"/>
         <attribute name="productFeatureId" type="String" mode="OUT" optional="false"/>
-        <attribute name="defaultSequenceNum" type="Long" mode="IN" optional="true"/>
-        <attribute name="idCode" type="String" mode="IN" optional="true"/>
-        <attribute name="abbrev" type="String" mode="IN" optional="true"/>
+        <override name="productFeatureTypeId" mode="IN" optional="false"/>
+        <override name="description" mode="IN" optional="false"/>
     </service>
-    <service name="updateProductFeature" engine="simple"
-                location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="updateProductFeature" auth="true">
+    <service name="updateProductFeature" engine="entity-auto" invoke="update" default-entity-name="ProductFeature" auth="true">
         <description>Update a ProductFeature record</description>
-        <attribute name="productFeatureId" type="String" mode="IN" optional="false"/>
-        <attribute name="productFeatureTypeId" type="String" mode="IN" optional="false"/>
-        <attribute name="productFeatureCategoryId" type="String" mode="IN" optional="true"/>
-        <attribute name="description" type="String" mode="IN" optional="false"/>
-        <attribute name="uomId" type="String" mode="IN" optional="true"/>
-        <attribute name="numberSpecified" type="BigDecimal" mode="IN" optional="true"/>
-        <attribute name="defaultAmount" type="BigDecimal" mode="IN" optional="true"/>
-        <attribute name="defaultSequenceNum" type="Long" mode="IN" optional="true"/>
-        <attribute name="idCode" type="String" mode="IN" optional="true"/>
-        <attribute name="abbrev" type="String" mode="IN" optional="true"/>
+        <auto-attributes include="pk" mode="IN" optional="false"/>
+        <auto-attributes include="nonpk" mode="IN" optional="true"/>
+        <override name="productFeatureTypeId" mode="IN" optional="false"/>
+        <override name="description" mode="IN" optional="false"/>
     </service>
 
-    <service name="applyFeatureToProduct" engine="simple"
-                location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="applyFeatureToProduct" auth="true">
+    <service name="applyFeatureToProduct" engine="entity-auto" invoke="create" default-entity-name="ProductFeatureAppl" auth="true">
         <description>Apply a ProductFeature to a Product; a fromDate can be used
             to specify when the feature will be applied, if no fromDate is specified,
             it will be applied now.</description>
-        <attribute name="productId" type="String" mode="IN" optional="false"/>
-        <attribute name="productFeatureId" type="String" mode="IN" optional="false"/>
-        <attribute name="productFeatureApplTypeId" type="String" mode="IN" optional="false"/>
-        <attribute name="fromDate" type="java.sql.Timestamp" mode="IN" optional="true"/>
-        <attribute name="thruDate" type="java.sql.Timestamp" mode="IN" optional="true"/>
-        <attribute name="sequenceNum" type="Long" mode="IN" optional="true"/>
-        <attribute name="amount" type="BigDecimal" mode="IN" optional="true"/>
+        <permission-service service-name="productGenericPermission" main-action="CREATE"/>
+        <auto-attributes include="pk" mode="IN" optional="false"/>
+        <auto-attributes include="nonpk" mode="IN" optional="true"/>
+        <override name="productFeatureApplTypeId" mode="IN" optional="false"/>
+        <override name="fromDate" mode="IN" optional="true"/>
     </service>
-    <service name="updateFeatureToProductApplication" engine="simple"
-                location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="updateFeatureToProductApplication" auth="true">
+    <service name="updateFeatureToProductApplication" engine="entity-auto" invoke="update" default-entity-name="ProductFeatureAppl" auth="true">
         <description>Update a ProductFeature to Product Application</description>
-        <attribute name="productId" type="String" mode="IN" optional="false"/>
-        <attribute name="productFeatureId" type="String" mode="IN" optional="false"/>
-        <attribute name="productFeatureApplTypeId" type="String" mode="IN" optional="false"/>
-        <attribute name="fromDate" type="java.sql.Timestamp" mode="IN" optional="false"/>
-        <attribute name="thruDate" type="java.sql.Timestamp" mode="IN" optional="true"/>
-        <attribute name="sequenceNum" type="Long" mode="IN" optional="true"/>
-        <attribute name="amount" type="BigDecimal" mode="IN" optional="true"/>
-        <attribute name="recurringAmount" type="BigDecimal" mode="IN" optional="true"/>
+        <permission-service service-name="productGenericPermission" main-action="UPDATE"/>
+        <auto-attributes include="pk" mode="IN" optional="false"/>
+        <auto-attributes include="nonpk" mode="IN" optional="true"/>
+        <override name="productFeatureApplTypeId" mode="IN" optional="false"/>
     </service>
-    <service name="removeFeatureFromProduct" engine="simple"
-                location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="removeFeatureFromProduct" auth="true">
-        <description>Remove a ProductFeature from a Product; a thruDate can be used
-            to specify when the feature will be removed, if no thruDate is specified,
-            it will be removed now.</description>
-        <attribute name="productId" type="String" mode="IN" optional="false"/>
-        <attribute name="productFeatureId" type="String" mode="IN" optional="false"/>
-        <attribute name="fromDate" type="java.sql.Timestamp" mode="IN" optional="false"/>
-        <attribute name="thruDate" type="java.sql.Timestamp" mode="IN" optional="true"/>
+    <service name="removeFeatureFromProduct" engine="entity-auto" invoke="delete" default-entity-name="ProductFeatureAppl" auth="true">
+        <description>Remove a ProductFeature from a Product</description>
+        <permission-service service-name="productGenericPermission" main-action="DELETE"/>
+        <auto-attributes include="pk" mode="IN" optional="false"/>
     </service>
     <service name="applyFeatureToProductFromTypeAndCode" engine="simple"
                 location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="applyFeatureToProductFromTypeAndCode" auth="true">
@@ -118,94 +90,89 @@ under the License.
     </service>
 
     <!-- ProductFeatureCategoryAppl Services -->
-    <service name="createProductFeatureCategoryAppl" default-entity-name="ProductFeatureCategoryAppl" engine="simple"
-                location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="createProductFeatureCategoryAppl" auth="true">
+    <service name="createProductFeatureCategoryAppl" default-entity-name="ProductFeatureCategoryAppl" engine="entity-auto" invoke="create" auth="true">
         <description>Create a ProductFeatureCategory to ProductCategory Application</description>
+        <permission-service service-name="productGenericPermission" 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="updateProductFeatureCategoryAppl" default-entity-name="ProductFeatureCategoryAppl" engine="simple"
-                location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="updateProductFeatureCategoryAppl" auth="true">
+    <service name="updateProductFeatureCategoryAppl" default-entity-name="ProductFeatureCategoryAppl" engine="entity-auto" invoke="update" auth="true">
         <description>Update a ProductFeatureCategory to ProductCategory Application</description>
+        <permission-service service-name="productGenericPermission" main-action="UPDATE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
     </service>
-    <service name="removeProductFeatureCategoryAppl" default-entity-name="ProductFeatureCategoryAppl" engine="simple"
-                location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="removeProductFeatureCategoryAppl" auth="true">
+    <service name="removeProductFeatureCategoryAppl" default-entity-name="ProductFeatureCategoryAppl" engine="entity-auto" invoke="delete" auth="true">
         <description>Remove a ProductFeatureCategory to ProductCategory Application</description>
+        <permission-service service-name="productGenericPermission" main-action="DELETE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
     </service>
 
     <!-- ProductFeatureCatGrpAppl Services -->
-    <service name="createProductFeatureCatGrpAppl" default-entity-name="ProductFeatureCatGrpAppl" engine="simple"
-                location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="createProductFeatureCatGrpAppl" auth="true">
+    <service name="createProductFeatureCatGrpAppl" default-entity-name="ProductFeatureCatGrpAppl" engine="entity-auto" invoke="create" auth="true">
         <description>Create a ProductFeatureGroup to ProductCategory Application</description>
+        <permission-service service-name="productGenericPermission" 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="updateProductFeatureCatGrpAppl" default-entity-name="ProductFeatureCatGrpAppl" engine="simple"
-                location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="updateProductFeatureCatGrpAppl" auth="true">
+    <service name="updateProductFeatureCatGrpAppl" default-entity-name="ProductFeatureCatGrpAppl" engine="entity-auto" invoke="update" auth="true">
         <description>Update a ProductFeatureGroup to ProductCategory Application</description>
+        <permission-service service-name="productGenericPermission" main-action="UPDATE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
     </service>
-    <service name="removeProductFeatureCatGrpAppl" default-entity-name="ProductFeatureCatGrpAppl" engine="simple"
-                location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="removeProductFeatureCatGrpAppl" auth="true">
+    <service name="removeProductFeatureCatGrpAppl" default-entity-name="ProductFeatureCatGrpAppl" engine="entity-auto" invoke="delete" auth="true">
         <description>Remove a ProductFeatureGroup to ProductCategory Application</description>
+        <permission-service service-name="productGenericPermission" main-action="DELETE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
     </service>
 
     <!-- ProductFeatureGroup Services -->
-    <service name="createProductFeatureGroup" engine="simple"
-            location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="createProductFeatureGroup" auth="true">
+    <service name="createProductFeatureGroup" default-entity-name="ProductFeatureGroup" engine="entity-auto" invoke="create" auth="true">
         <description>Create a ProductFeatureGroup</description>
+        <permission-service service-name="productGenericPermission" main-action="CREATE"/>
         <attribute name="description" type="String" mode="IN" optional="true"/>
         <attribute name="productFeatureGroupId" type="String" mode="OUT" optional="false"/>
     </service>
-    <service name="updateProductFeatureGroup" engine="simple"
-            location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="updateProductFeatureGroup" auth="true">
+    <service name="updateProductFeatureGroup" default-entity-name="ProductFeatureGroup" engine="entity-auto" invoke="update" auth="true">
         <description>Create a ProductFeatureGroup</description>
+        <permission-service service-name="productGenericPermission" main-action="UPDATE"/>
         <attribute name="productFeatureGroupId" type="String" mode="IN" optional="false"/>
         <attribute name="description" type="String" mode="IN" optional="true"/>
     </service>
-    <service name="createProductFeatureGroupAppl" engine="simple"
-                location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="createProductFeatureGroupAppl" auth="true">
+    <service name="createProductFeatureGroupAppl" default-entity-name="ProductFeatureGroupAppl" engine="entity-auto" invoke="create" auth="true">
         <description>Create a ProductFeatureGroup to ProductFeature Application</description>
-        <attribute name="productFeatureGroupId" type="String" mode="IN" optional="false"/>
-        <attribute name="productFeatureId" type="String" mode="IN" optional="false"/>
-        <attribute name="fromDate" type="java.sql.Timestamp" mode="IN" optional="true"/>
-        <attribute name="thruDate" type="java.sql.Timestamp" mode="IN" optional="true"/>
-        <attribute name="sequenceNum" type="Long" mode="IN" optional="true"/>
+        <permission-service service-name="productGenericPermission" main-action="CREATE"/>
+        <auto-attributes include="pk" mode="IN" optional="false"/>
+        <auto-attributes include="nonpk" mode="IN" optional="true"/>
+        <override name="fromDate" mode="IN" optional="true"/>
     </service>
-    <service name="updateProductFeatureGroupAppl" engine="simple"
-                location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="updateProductFeatureGroupAppl" auth="true">
+    <service name="updateProductFeatureGroupAppl" default-entity-name="ProductFeatureGroupAppl" engine="entity-auto" invoke="update" auth="true">
         <description>Update a ProductFeatureGroup to ProductFeature Application</description>
-        <attribute name="productFeatureGroupId" type="String" mode="IN" optional="false"/>
-        <attribute name="productFeatureId" type="String" mode="IN" optional="false"/>
-        <attribute name="fromDate" type="java.sql.Timestamp" mode="IN" optional="false"/>
-        <attribute name="thruDate" type="java.sql.Timestamp" mode="IN" optional="true"/>
-        <attribute name="sequenceNum" type="Long" mode="IN" optional="true"/>
+        <permission-service service-name="productGenericPermission" main-action="UPDATE"/>
+        <auto-attributes include="pk" mode="IN" optional="false"/>
+        <auto-attributes include="nonpk" mode="IN" optional="true"/>
     </service>
-    <service name="removeProductFeatureGroupAppl" engine="simple"
-                location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="removeProductFeatureGroupAppl" auth="true">
+    <service name="removeProductFeatureGroupAppl" default-entity-name="ProductFeatureGroupAppl" engine="entity-auto" invoke="delete" auth="true">
         <description>Remove a ProductFeatureGroup to ProductFeature Application</description>
+        <permission-service service-name="productGenericPermission" main-action="DELETE"/>
         <attribute name="productFeatureGroupId" type="String" mode="IN" optional="false"/>
         <attribute name="productFeatureId" type="String" mode="IN" optional="false"/>
         <attribute name="fromDate" type="java.sql.Timestamp" mode="IN" optional="false"/>
     </service>
     <!-- ProductFeatureIactn Services -->
-    <service name="createProductFeatureIactn" default-entity-name="ProductFeatureIactn" engine="simple"
-        location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="createProductFeatureIactn" auth="true">
+    <service name="createProductFeatureIactn" default-entity-name="ProductFeatureIactn" engine="entity-auto" invoke="create" auth="true">
         <description>Create a ProductFeatureIactn</description>
+        <permission-service service-name="productGenericPermission" main-action="CREATE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
         <override name="productFeatureIactnTypeId" mode="IN" optional="false"/>
     </service>
-    <service name="removeProductFeatureIactn" default-entity-name="ProductFeatureIactn" engine="simple"
-        location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="removeProductFeatureIactn" auth="true">
+    <service name="removeProductFeatureIactn" default-entity-name="ProductFeatureIactn" engine="entity-auto" invoke="delete" auth="true">
         <description>Remove a ProductFeatureIactn</description>
+        <permission-service service-name="productGenericPermission" main-action="DELETE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
     </service>
     <!-- ProductFeatureType Services -->
@@ -216,41 +183,41 @@ under the License.
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
         <override name="productFeatureTypeId" mode="IN" optional="true" />
     </service>
-    <service name="updateProductFeatureType" default-entity-name="ProductFeatureType" engine="simple"
-                location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="updateProductFeatureType" auth="true">
+    <service name="updateProductFeatureType" default-entity-name="ProductFeatureType" engine="entity-auto" invoke="update" auth="true">
         <description>Update a ProductFeatureType</description>
+        <permission-service service-name="productGenericPermission" main-action="UPDATE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
     </service>
-    <service name="removeProductFeatureType" default-entity-name="ProductFeatureType" engine="simple"
-                location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="removeProductFeatureType" auth="true">
+    <service name="removeProductFeatureType" default-entity-name="ProductFeatureType" engine="entity-auto" invoke="delete" auth="true">
         <description>Remove a ProductFeatureType</description>
+        <permission-service service-name="productGenericPermission" main-action="DELETE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
     </service>
     <!-- ProductFeatureApplAttr  -->
     <service name="createProductFeatureApplAttr" default-entity-name="ProductFeatureApplAttr" engine="simple"
                 location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="createProductFeatureApplAttr" auth="true">
         <description>Create a ProductFeatureApplAttr</description>
+        <permission-service service-name="productGenericPermission" 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="updateProductFeatureApplAttr" default-entity-name="ProductFeatureApplAttr" engine="simple"
-                location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="updateProductFeatureApplAttr" auth="true">
+    <service name="updateProductFeatureApplAttr" default-entity-name="ProductFeatureApplAttr" engine="entity-auto" invoke="update" auth="true">
         <description>Update a ProductFeatureApplAttr</description>
+        <permission-service service-name="productGenericPermission" main-action="UPDATE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
     </service>
-    <service name="removeProductFeatureApplAttr" default-entity-name="ProductFeatureApplAttr" engine="simple"
-                location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="removeProductFeatureApplAttr" auth="true">
+    <service name="removeProductFeatureApplAttr" default-entity-name="ProductFeatureApplAttr" engine="entity-auto" invoke="delete" auth="true">
         <description>Remove a ProductFeatureApplAttr</description>
+        <permission-service service-name="productGenericPermission" main-action="DELETE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
-        <auto-attributes include="nonpk" mode="IN" optional="true"/>
     </service>
     <!-- Feature Price Service -->
-    <service name="createFeaturePrice" engine="simple" default-entity-name="ProductFeaturePrice"
-        location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="createFeaturePrice" auth="true">
+    <service name="createFeaturePrice" default-entity-name="ProductFeaturePrice" engine="entity-auto" invoke="create" auth="true">
         <description>Create a Feature Price</description>
+        <permission-service service-name="productGenericPermission" main-action="CREATE"/>
         <auto-attributes mode="IN" include="pk" optional="false"/>
         <auto-attributes include="nonpk" mode="IN" optional="true">
             <exclude field-name="createdDate"/>
@@ -262,9 +229,9 @@ under the License.
         <override name="fromDate" mode="INOUT" optional="true"/>
         <override name="price" optional="false"/>
     </service>
-    <service name="updateFeaturePrice" engine="simple" default-entity-name="ProductFeaturePrice"
-        location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="updateFeaturePrice" auth="true">
+    <service name="updateFeaturePrice" default-entity-name="ProductFeaturePrice" engine="entity-auto" invoke="update" auth="true">
         <description>Update a Feature Price</description>
+        <permission-service service-name="productGenericPermission" main-action="UPDATE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
         <auto-attributes include="nonpk" mode="IN" optional="true">
             <exclude field-name="createdDate"/>
@@ -274,9 +241,9 @@ under the License.
         </auto-attributes>
         <override name="price" optional="false"/>
     </service>
-    <service name="deleteFeaturePrice" engine="simple" default-entity-name="ProductFeaturePrice"
-        location="component://product/script/org/ofbiz/product/feature/ProductFeatureServices.xml" invoke="deleteFeaturePrice" auth="true">
+    <service name="deleteFeaturePrice" default-entity-name="ProductFeaturePrice" engine="entity-auto" invoke="delete" auth="true">
         <description>Delete a Feature Price</description>
+        <permission-service service-name="productGenericPermission" main-action="DELETE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
     </service>
 </services>