You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by da...@apache.org on 2021/05/30 07:13:29 UTC

[ofbiz-framework] branch trunk updated: Improved: Convert EntitySyncServices.xml mini-lang to groovy

This is an automated email from the ASF dual-hosted git repository.

danwatford pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git


The following commit(s) were added to refs/heads/trunk by this push:
     new c654d9b  Improved: Convert EntitySyncServices.xml mini-lang to groovy
c654d9b is described below

commit c654d9bbcc31f2b3ea218914a56a9569c21d0f8d
Author: Daniel Watford <da...@watfordconsulting.com>
AuthorDate: Sun May 30 08:13:23 2021 +0100

    Improved: Convert EntitySyncServices.xml mini-lang to groovy
    
    (OFBIZ-11660)
    
    removed: EntitySyncServices.xml
    added: EntitySyncServices.groovy
    modified: services.xml to reflect the change from minilang to groovy for:
    - entitySyncPermissionCheck
    - resetEntitySyncStatus
    modified: webtools/controller.xml to reflect changed request-map and event type regarding reset of EntitySyncStatus
    modified: webtools/widget/EntitySyncForms.xml to reflect changed target regarding reset of EntitySyncStatus
    
    Thanks: Pierre Smits for implementation
---
 .../groovyScripts/EntitySyncServices.groovy        | 32 +++++++++++++++++++
 .../entityext/minilang/EntitySyncServices.xml      | 36 ----------------------
 framework/entityext/servicedef/services.xml        |  8 ++---
 .../webapp/webtools/WEB-INF/controller.xml         |  4 +--
 framework/webtools/widget/EntitySyncForms.xml      |  2 +-
 5 files changed, 39 insertions(+), 43 deletions(-)

diff --git a/framework/entityext/groovyScripts/EntitySyncServices.groovy b/framework/entityext/groovyScripts/EntitySyncServices.groovy
new file mode 100644
index 0000000..8acea4e
--- /dev/null
+++ b/framework/entityext/groovyScripts/EntitySyncServices.groovy
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+def entitySyncPermissionCheck() {
+    parameters.primaryPermission = "ENTITY_SYNC"
+    Map serviceResult = run service: "genericBasePermissionCheck", with: parameters
+    return serviceResult
+}
+
+def resetEntitySyncStatus() {
+	entitySyncRecord = from("EntitySync").where("entitySyncId", parameters.entitySyncId).queryOne()
+    if(entitySyncRecord && "ESR_RUNNING".equals(entitySyncRecord.runStatusId)) {
+        entitySyncRecord.runStatusId = "ESR_NOT_STARTED"
+        entitySyncRecord.store()
+    }
+}
diff --git a/framework/entityext/minilang/EntitySyncServices.xml b/framework/entityext/minilang/EntitySyncServices.xml
deleted file mode 100644
index a134c26..0000000
--- a/framework/entityext/minilang/EntitySyncServices.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-<simple-methods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xmlns="http://ofbiz.apache.org/Simple-Method" xsi:schemaLocation="http://ofbiz.apache.org/Simple-Method http://ofbiz.apache.org/dtds/simple-methods.xsd">
-    <simple-method method-name="resetEntitySyncStatusToNotStarted" short-description="Update a EntitySync, set the Status to ESR_NOT_STARTED, but ONLY if running (ie in ESR_RUNNING)">
-        <!-- TODO: add some code to make sure, as much as possible, that this really isn't running -->
-        <set field="lookupPKMap.entitySyncId" from-field="parameters.entitySyncId"/>
-        <find-by-primary-key entity-name="EntitySync" map="lookupPKMap" value-field="valueToStore"/>
-        <if-compare field="valueToStore.runStatusId" operator="equals" value="ESR_RUNNING">
-            <set field="valueToStore.runStatusId" value="ESR_NOT_STARTED"/>
-            <store-value value-field="valueToStore"/>
-        </if-compare>
-    </simple-method>
-    <simple-method method-name="entitySyncPermissionCheck" short-description="Check user permission for entity sync.">
-        <set field="primaryPermission" value="ENTITY_SYNC"/>
-        <call-simple-method method-name="genericBasePermissionCheck" xml-resource="component://common/minilang/permission/CommonPermissionServices.xml"/>
-    </simple-method>
-</simple-methods>
diff --git a/framework/entityext/servicedef/services.xml b/framework/entityext/servicedef/services.xml
index 7d0951e..b95fc2d 100644
--- a/framework/entityext/servicedef/services.xml
+++ b/framework/entityext/servicedef/services.xml
@@ -224,8 +224,8 @@ under the License.
             location="org.apache.ofbiz.entityext.synchronization.EntitySyncServices" invoke="cleanSyncRemoveInfo" auth="true" transaction-timeout="600">
         <description>Clean EntitySyncRemove Info - Generally should be run asynchronously after each sync run, or periodically run on a schedule</description>
     </service>
-    <service name="resetEntitySyncStatusToNotStarted" engine="simple"
-            location="component://entityext/minilang/EntitySyncServices.xml" invoke="resetEntitySyncStatusToNotStarted" auth="true" transaction-timeout="600">
+    <service name="resetEntitySyncStatus" engine="groovy"
+            location="component://entityext/groovyScripts/EntitySyncServices.groovy" invoke="resetEntitySyncStatus" auth="true" transaction-timeout="600">
         <description>Generally run manually to reset the status of an EntitySync when it has "crashed". Update a EntitySync, set the Status to ESR_NOT_STARTED, but ONLY if running (ie in ESR_RUNNING)</description>
         <permission-service service-name="entitySyncPermissionCheck" main-action="UPDATE"/>
         <attribute name="entitySyncId" type="String" mode="IN" optional="false"/>
@@ -446,8 +446,8 @@ under the License.
         <description>Delete a ServerHitType</description>
         <auto-attributes include="pk" mode="IN" optional="false"/>
     </service>
-    <service name="entitySyncPermissionCheck" engine="simple"
-             location="component://entityext/minilang/EntitySyncServices.xml" invoke="entitySyncPermissionCheck">
+    <service name="entitySyncPermissionCheck" engine="groovy"
+             location="component://entityext/groovyScripts/EntitySyncServices.groovy" invoke="entitySyncPermissionCheck">
         <description>Entity sync permission Checking Logic</description>
         <implements service="permissionInterface"/>
     </service>
diff --git a/framework/webtools/webapp/webtools/WEB-INF/controller.xml b/framework/webtools/webapp/webtools/WEB-INF/controller.xml
index 4d39271..0f8bf4b 100644
--- a/framework/webtools/webapp/webtools/WEB-INF/controller.xml
+++ b/framework/webtools/webapp/webtools/WEB-INF/controller.xml
@@ -503,9 +503,9 @@ under the License.
 
     <!-- EntitySync requests -->
     <request-map uri="EntitySyncStatus"><security https="true" auth="true"/><response name="success" type="view" value="EntitySyncStatus"/></request-map>
-    <request-map uri="resetEntitySyncStatusToNotStarted">
+    <request-map uri="resetEntitySyncStatus">
         <security https="true" auth="true"/>
-        <event type="service" path="" invoke="resetEntitySyncStatusToNotStarted"/>
+        <event type="service" path="" invoke="resetEntitySyncStatus"/>
         <response name="success" type="view" value="EntitySyncStatus"/>
         <response name="error" type="view" value="EntitySyncStatus"/>
     </request-map>
diff --git a/framework/webtools/widget/EntitySyncForms.xml b/framework/webtools/widget/EntitySyncForms.xml
index 6dcca48..f78323e 100644
--- a/framework/webtools/widget/EntitySyncForms.xml
+++ b/framework/webtools/widget/EntitySyncForms.xml
@@ -36,7 +36,7 @@ under the License.
         </field>
 
         <field use-when="&quot;ESR_RUNNING&quot;.equals(runStatusId)" name="resetStatus" title=" " widget-style="smallSubmit">
-            <hyperlink description="${uiLabelMap.WebtoolsSyncResetRunStatus}" target="resetEntitySyncStatusToNotStarted" also-hidden="false">
+            <hyperlink description="${uiLabelMap.WebtoolsSyncResetRunStatus}" target="resetEntitySyncStatus" also-hidden="false">
                 <parameter param-name="entitySyncId"/>
             </hyperlink>
         </field>

Re: [ofbiz-framework] branch trunk updated: Improved: Convert EntitySyncServices.xml mini-lang to groovy

Posted by Jacques Le Roux <ja...@les7arts.com>.
Hi Aayush,

Please help yourself: https://ofbiz.apache.org/mailing-lists.html

Jacques

Le 30/05/2021 à 09:17, Aayush Gupta a écrit :
> Hello guys
> Please unsubscribe from these mails
> Thanks
>
> On Sun, 30 May 2021, 12:43 pm , <da...@apache.org> wrote:
>
>> This is an automated email from the ASF dual-hosted git repository.
>>
>> danwatford pushed a commit to branch trunk
>> in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
>>
>>
>> The following commit(s) were added to refs/heads/trunk by this push:
>>       new c654d9b  Improved: Convert EntitySyncServices.xml mini-lang to
>> groovy
>> c654d9b is described below
>>
>> commit c654d9bbcc31f2b3ea218914a56a9569c21d0f8d
>> Author: Daniel Watford <da...@watfordconsulting.com>
>> AuthorDate: Sun May 30 08:13:23 2021 +0100
>>
>>      Improved: Convert EntitySyncServices.xml mini-lang to groovy
>>
>>      (OFBIZ-11660)
>>
>>      removed: EntitySyncServices.xml
>>      added: EntitySyncServices.groovy
>>      modified: services.xml to reflect the change from minilang to groovy
>> for:
>>      - entitySyncPermissionCheck
>>      - resetEntitySyncStatus
>>      modified: webtools/controller.xml to reflect changed request-map and
>> event type regarding reset of EntitySyncStatus
>>      modified: webtools/widget/EntitySyncForms.xml to reflect changed
>> target regarding reset of EntitySyncStatus
>>
>>      Thanks: Pierre Smits for implementation
>> ---
>>   .../groovyScripts/EntitySyncServices.groovy        | 32
>> +++++++++++++++++++
>>   .../entityext/minilang/EntitySyncServices.xml      | 36
>> ----------------------
>>   framework/entityext/servicedef/services.xml        |  8 ++---
>>   .../webapp/webtools/WEB-INF/controller.xml         |  4 +--
>>   framework/webtools/widget/EntitySyncForms.xml      |  2 +-
>>   5 files changed, 39 insertions(+), 43 deletions(-)
>>
>> diff --git a/framework/entityext/groovyScripts/EntitySyncServices.groovy
>> b/framework/entityext/groovyScripts/EntitySyncServices.groovy
>> new file mode 100644
>> index 0000000..8acea4e
>> --- /dev/null
>> +++ b/framework/entityext/groovyScripts/EntitySyncServices.groovy
>> @@ -0,0 +1,32 @@
>> +/*
>> + * Licensed to the Apache Software Foundation (ASF) under one
>> + * or more contributor license agreements.  See the NOTICE file
>> + * distributed with this work for additional information
>> + * regarding copyright ownership.  The ASF licenses this file
>> + * to you under the Apache License, Version 2.0 (the
>> + * "License"); you may not use this file except in compliance
>> + * with the License.  You may obtain a copy of the License at
>> + *
>> + * http://www.apache.org/licenses/LICENSE-2.0
>> + *
>> + * Unless required by applicable law or agreed to in writing,
>> + * software distributed under the License is distributed on an
>> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> + * KIND, either express or implied.  See the License for the
>> + * specific language governing permissions and limitations
>> + * under the License.
>> + */
>> +
>> +def entitySyncPermissionCheck() {
>> +    parameters.primaryPermission = "ENTITY_SYNC"
>> +    Map serviceResult = run service: "genericBasePermissionCheck", with:
>> parameters
>> +    return serviceResult
>> +}
>> +
>> +def resetEntitySyncStatus() {
>> +       entitySyncRecord = from("EntitySync").where("entitySyncId",
>> parameters.entitySyncId).queryOne()
>> +    if(entitySyncRecord &&
>> "ESR_RUNNING".equals(entitySyncRecord.runStatusId)) {
>> +        entitySyncRecord.runStatusId = "ESR_NOT_STARTED"
>> +        entitySyncRecord.store()
>> +    }
>> +}
>> diff --git a/framework/entityext/minilang/EntitySyncServices.xml
>> b/framework/entityext/minilang/EntitySyncServices.xml
>> deleted file mode 100644
>> index a134c26..0000000
>> --- a/framework/entityext/minilang/EntitySyncServices.xml
>> +++ /dev/null
>> @@ -1,36 +0,0 @@
>> -<?xml version="1.0" encoding="UTF-8"?>
>> -<!--
>> -Licensed to the Apache Software Foundation (ASF) under one
>> -or more contributor license agreements.  See the NOTICE file
>> -distributed with this work for additional information
>> -regarding copyright ownership.  The ASF licenses this file
>> -to you under the Apache License, Version 2.0 (the
>> -"License"); you may not use this file except in compliance
>> -with the License.  You may obtain a copy of the License at
>> -
>> -http://www.apache.org/licenses/LICENSE-2.0
>> -
>> -Unless required by applicable law or agreed to in writing,
>> -software distributed under the License is distributed on an
>> -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> -KIND, either express or implied.  See the License for the
>> -specific language governing permissions and limitations
>> -under the License.
>> --->
>> -
>> -<simple-methods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> -        xmlns="http://ofbiz.apache.org/Simple-Method"
>> xsi:schemaLocation="http://ofbiz.apache.org/Simple-Method
>> http://ofbiz.apache.org/dtds/simple-methods.xsd">
>> -    <simple-method method-name="resetEntitySyncStatusToNotStarted"
>> short-description="Update a EntitySync, set the Status to ESR_NOT_STARTED,
>> but ONLY if running (ie in ESR_RUNNING)">
>> -        <!-- TODO: add some code to make sure, as much as possible, that
>> this really isn't running -->
>> -        <set field="lookupPKMap.entitySyncId"
>> from-field="parameters.entitySyncId"/>
>> -        <find-by-primary-key entity-name="EntitySync" map="lookupPKMap"
>> value-field="valueToStore"/>
>> -        <if-compare field="valueToStore.runStatusId" operator="equals"
>> value="ESR_RUNNING">
>> -            <set field="valueToStore.runStatusId"
>> value="ESR_NOT_STARTED"/>
>> -            <store-value value-field="valueToStore"/>
>> -        </if-compare>
>> -    </simple-method>
>> -    <simple-method method-name="entitySyncPermissionCheck"
>> short-description="Check user permission for entity sync.">
>> -        <set field="primaryPermission" value="ENTITY_SYNC"/>
>> -        <call-simple-method method-name="genericBasePermissionCheck"
>> xml-resource="component://common/minilang/permission/CommonPermissionServices.xml"/>
>> -    </simple-method>
>> -</simple-methods>
>> diff --git a/framework/entityext/servicedef/services.xml
>> b/framework/entityext/servicedef/services.xml
>> index 7d0951e..b95fc2d 100644
>> --- a/framework/entityext/servicedef/services.xml
>> +++ b/framework/entityext/servicedef/services.xml
>> @@ -224,8 +224,8 @@ under the License.
>>
>>   location="org.apache.ofbiz.entityext.synchronization.EntitySyncServices"
>> invoke="cleanSyncRemoveInfo" auth="true" transaction-timeout="600">
>>           <description>Clean EntitySyncRemove Info - Generally should be
>> run asynchronously after each sync run, or periodically run on a
>> schedule</description>
>>       </service>
>> -    <service name="resetEntitySyncStatusToNotStarted" engine="simple"
>> -
>> location="component://entityext/minilang/EntitySyncServices.xml"
>> invoke="resetEntitySyncStatusToNotStarted" auth="true"
>> transaction-timeout="600">
>> +    <service name="resetEntitySyncStatus" engine="groovy"
>> +
>> location="component://entityext/groovyScripts/EntitySyncServices.groovy"
>> invoke="resetEntitySyncStatus" auth="true" transaction-timeout="600">
>>           <description>Generally run manually to reset the status of an
>> EntitySync when it has "crashed". Update a EntitySync, set the Status to
>> ESR_NOT_STARTED, but ONLY if running (ie in ESR_RUNNING)</description>
>>           <permission-service service-name="entitySyncPermissionCheck"
>> main-action="UPDATE"/>
>>           <attribute name="entitySyncId" type="String" mode="IN"
>> optional="false"/>
>> @@ -446,8 +446,8 @@ under the License.
>>           <description>Delete a ServerHitType</description>
>>           <auto-attributes include="pk" mode="IN" optional="false"/>
>>       </service>
>> -    <service name="entitySyncPermissionCheck" engine="simple"
>> -
>>   location="component://entityext/minilang/EntitySyncServices.xml"
>> invoke="entitySyncPermissionCheck">
>> +    <service name="entitySyncPermissionCheck" engine="groovy"
>> +
>>   location="component://entityext/groovyScripts/EntitySyncServices.groovy"
>> invoke="entitySyncPermissionCheck">
>>           <description>Entity sync permission Checking Logic</description>
>>           <implements service="permissionInterface"/>
>>       </service>
>> diff --git a/framework/webtools/webapp/webtools/WEB-INF/controller.xml
>> b/framework/webtools/webapp/webtools/WEB-INF/controller.xml
>> index 4d39271..0f8bf4b 100644
>> --- a/framework/webtools/webapp/webtools/WEB-INF/controller.xml
>> +++ b/framework/webtools/webapp/webtools/WEB-INF/controller.xml
>> @@ -503,9 +503,9 @@ under the License.
>>
>>       <!-- EntitySync requests -->
>>       <request-map uri="EntitySyncStatus"><security https="true"
>> auth="true"/><response name="success" type="view"
>> value="EntitySyncStatus"/></request-map>
>> -    <request-map uri="resetEntitySyncStatusToNotStarted">
>> +    <request-map uri="resetEntitySyncStatus">
>>           <security https="true" auth="true"/>
>> -        <event type="service" path=""
>> invoke="resetEntitySyncStatusToNotStarted"/>
>> +        <event type="service" path="" invoke="resetEntitySyncStatus"/>
>>           <response name="success" type="view" value="EntitySyncStatus"/>
>>           <response name="error" type="view" value="EntitySyncStatus"/>
>>       </request-map>
>> diff --git a/framework/webtools/widget/EntitySyncForms.xml
>> b/framework/webtools/widget/EntitySyncForms.xml
>> index 6dcca48..f78323e 100644
>> --- a/framework/webtools/widget/EntitySyncForms.xml
>> +++ b/framework/webtools/widget/EntitySyncForms.xml
>> @@ -36,7 +36,7 @@ under the License.
>>           </field>
>>
>>           <field use-when="&quot;ESR_RUNNING&quot;.equals(runStatusId)"
>> name="resetStatus" title=" " widget-style="smallSubmit">
>> -            <hyperlink
>> description="${uiLabelMap.WebtoolsSyncResetRunStatus}"
>> target="resetEntitySyncStatusToNotStarted" also-hidden="false">
>> +            <hyperlink
>> description="${uiLabelMap.WebtoolsSyncResetRunStatus}"
>> target="resetEntitySyncStatus" also-hidden="false">
>>                   <parameter param-name="entitySyncId"/>
>>               </hyperlink>
>>           </field>
>>

Re: [ofbiz-framework] branch trunk updated: Improved: Convert EntitySyncServices.xml mini-lang to groovy

Posted by Aayush Gupta <aa...@gmail.com>.
Hello guys
Please unsubscribe from these mails
Thanks

On Sun, 30 May 2021, 12:43 pm , <da...@apache.org> wrote:

> This is an automated email from the ASF dual-hosted git repository.
>
> danwatford pushed a commit to branch trunk
> in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
>
>
> The following commit(s) were added to refs/heads/trunk by this push:
>      new c654d9b  Improved: Convert EntitySyncServices.xml mini-lang to
> groovy
> c654d9b is described below
>
> commit c654d9bbcc31f2b3ea218914a56a9569c21d0f8d
> Author: Daniel Watford <da...@watfordconsulting.com>
> AuthorDate: Sun May 30 08:13:23 2021 +0100
>
>     Improved: Convert EntitySyncServices.xml mini-lang to groovy
>
>     (OFBIZ-11660)
>
>     removed: EntitySyncServices.xml
>     added: EntitySyncServices.groovy
>     modified: services.xml to reflect the change from minilang to groovy
> for:
>     - entitySyncPermissionCheck
>     - resetEntitySyncStatus
>     modified: webtools/controller.xml to reflect changed request-map and
> event type regarding reset of EntitySyncStatus
>     modified: webtools/widget/EntitySyncForms.xml to reflect changed
> target regarding reset of EntitySyncStatus
>
>     Thanks: Pierre Smits for implementation
> ---
>  .../groovyScripts/EntitySyncServices.groovy        | 32
> +++++++++++++++++++
>  .../entityext/minilang/EntitySyncServices.xml      | 36
> ----------------------
>  framework/entityext/servicedef/services.xml        |  8 ++---
>  .../webapp/webtools/WEB-INF/controller.xml         |  4 +--
>  framework/webtools/widget/EntitySyncForms.xml      |  2 +-
>  5 files changed, 39 insertions(+), 43 deletions(-)
>
> diff --git a/framework/entityext/groovyScripts/EntitySyncServices.groovy
> b/framework/entityext/groovyScripts/EntitySyncServices.groovy
> new file mode 100644
> index 0000000..8acea4e
> --- /dev/null
> +++ b/framework/entityext/groovyScripts/EntitySyncServices.groovy
> @@ -0,0 +1,32 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +
> +def entitySyncPermissionCheck() {
> +    parameters.primaryPermission = "ENTITY_SYNC"
> +    Map serviceResult = run service: "genericBasePermissionCheck", with:
> parameters
> +    return serviceResult
> +}
> +
> +def resetEntitySyncStatus() {
> +       entitySyncRecord = from("EntitySync").where("entitySyncId",
> parameters.entitySyncId).queryOne()
> +    if(entitySyncRecord &&
> "ESR_RUNNING".equals(entitySyncRecord.runStatusId)) {
> +        entitySyncRecord.runStatusId = "ESR_NOT_STARTED"
> +        entitySyncRecord.store()
> +    }
> +}
> diff --git a/framework/entityext/minilang/EntitySyncServices.xml
> b/framework/entityext/minilang/EntitySyncServices.xml
> deleted file mode 100644
> index a134c26..0000000
> --- a/framework/entityext/minilang/EntitySyncServices.xml
> +++ /dev/null
> @@ -1,36 +0,0 @@
> -<?xml version="1.0" encoding="UTF-8"?>
> -<!--
> -Licensed to the Apache Software Foundation (ASF) under one
> -or more contributor license agreements.  See the NOTICE file
> -distributed with this work for additional information
> -regarding copyright ownership.  The ASF licenses this file
> -to you under the Apache License, Version 2.0 (the
> -"License"); you may not use this file except in compliance
> -with the License.  You may obtain a copy of the License at
> -
> -http://www.apache.org/licenses/LICENSE-2.0
> -
> -Unless required by applicable law or agreed to in writing,
> -software distributed under the License is distributed on an
> -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> -KIND, either express or implied.  See the License for the
> -specific language governing permissions and limitations
> -under the License.
> --->
> -
> -<simple-methods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> -        xmlns="http://ofbiz.apache.org/Simple-Method"
> xsi:schemaLocation="http://ofbiz.apache.org/Simple-Method
> http://ofbiz.apache.org/dtds/simple-methods.xsd">
> -    <simple-method method-name="resetEntitySyncStatusToNotStarted"
> short-description="Update a EntitySync, set the Status to ESR_NOT_STARTED,
> but ONLY if running (ie in ESR_RUNNING)">
> -        <!-- TODO: add some code to make sure, as much as possible, that
> this really isn't running -->
> -        <set field="lookupPKMap.entitySyncId"
> from-field="parameters.entitySyncId"/>
> -        <find-by-primary-key entity-name="EntitySync" map="lookupPKMap"
> value-field="valueToStore"/>
> -        <if-compare field="valueToStore.runStatusId" operator="equals"
> value="ESR_RUNNING">
> -            <set field="valueToStore.runStatusId"
> value="ESR_NOT_STARTED"/>
> -            <store-value value-field="valueToStore"/>
> -        </if-compare>
> -    </simple-method>
> -    <simple-method method-name="entitySyncPermissionCheck"
> short-description="Check user permission for entity sync.">
> -        <set field="primaryPermission" value="ENTITY_SYNC"/>
> -        <call-simple-method method-name="genericBasePermissionCheck"
> xml-resource="component://common/minilang/permission/CommonPermissionServices.xml"/>
> -    </simple-method>
> -</simple-methods>
> diff --git a/framework/entityext/servicedef/services.xml
> b/framework/entityext/servicedef/services.xml
> index 7d0951e..b95fc2d 100644
> --- a/framework/entityext/servicedef/services.xml
> +++ b/framework/entityext/servicedef/services.xml
> @@ -224,8 +224,8 @@ under the License.
>
>  location="org.apache.ofbiz.entityext.synchronization.EntitySyncServices"
> invoke="cleanSyncRemoveInfo" auth="true" transaction-timeout="600">
>          <description>Clean EntitySyncRemove Info - Generally should be
> run asynchronously after each sync run, or periodically run on a
> schedule</description>
>      </service>
> -    <service name="resetEntitySyncStatusToNotStarted" engine="simple"
> -
> location="component://entityext/minilang/EntitySyncServices.xml"
> invoke="resetEntitySyncStatusToNotStarted" auth="true"
> transaction-timeout="600">
> +    <service name="resetEntitySyncStatus" engine="groovy"
> +
> location="component://entityext/groovyScripts/EntitySyncServices.groovy"
> invoke="resetEntitySyncStatus" auth="true" transaction-timeout="600">
>          <description>Generally run manually to reset the status of an
> EntitySync when it has "crashed". Update a EntitySync, set the Status to
> ESR_NOT_STARTED, but ONLY if running (ie in ESR_RUNNING)</description>
>          <permission-service service-name="entitySyncPermissionCheck"
> main-action="UPDATE"/>
>          <attribute name="entitySyncId" type="String" mode="IN"
> optional="false"/>
> @@ -446,8 +446,8 @@ under the License.
>          <description>Delete a ServerHitType</description>
>          <auto-attributes include="pk" mode="IN" optional="false"/>
>      </service>
> -    <service name="entitySyncPermissionCheck" engine="simple"
> -
>  location="component://entityext/minilang/EntitySyncServices.xml"
> invoke="entitySyncPermissionCheck">
> +    <service name="entitySyncPermissionCheck" engine="groovy"
> +
>  location="component://entityext/groovyScripts/EntitySyncServices.groovy"
> invoke="entitySyncPermissionCheck">
>          <description>Entity sync permission Checking Logic</description>
>          <implements service="permissionInterface"/>
>      </service>
> diff --git a/framework/webtools/webapp/webtools/WEB-INF/controller.xml
> b/framework/webtools/webapp/webtools/WEB-INF/controller.xml
> index 4d39271..0f8bf4b 100644
> --- a/framework/webtools/webapp/webtools/WEB-INF/controller.xml
> +++ b/framework/webtools/webapp/webtools/WEB-INF/controller.xml
> @@ -503,9 +503,9 @@ under the License.
>
>      <!-- EntitySync requests -->
>      <request-map uri="EntitySyncStatus"><security https="true"
> auth="true"/><response name="success" type="view"
> value="EntitySyncStatus"/></request-map>
> -    <request-map uri="resetEntitySyncStatusToNotStarted">
> +    <request-map uri="resetEntitySyncStatus">
>          <security https="true" auth="true"/>
> -        <event type="service" path=""
> invoke="resetEntitySyncStatusToNotStarted"/>
> +        <event type="service" path="" invoke="resetEntitySyncStatus"/>
>          <response name="success" type="view" value="EntitySyncStatus"/>
>          <response name="error" type="view" value="EntitySyncStatus"/>
>      </request-map>
> diff --git a/framework/webtools/widget/EntitySyncForms.xml
> b/framework/webtools/widget/EntitySyncForms.xml
> index 6dcca48..f78323e 100644
> --- a/framework/webtools/widget/EntitySyncForms.xml
> +++ b/framework/webtools/widget/EntitySyncForms.xml
> @@ -36,7 +36,7 @@ under the License.
>          </field>
>
>          <field use-when="&quot;ESR_RUNNING&quot;.equals(runStatusId)"
> name="resetStatus" title=" " widget-style="smallSubmit">
> -            <hyperlink
> description="${uiLabelMap.WebtoolsSyncResetRunStatus}"
> target="resetEntitySyncStatusToNotStarted" also-hidden="false">
> +            <hyperlink
> description="${uiLabelMap.WebtoolsSyncResetRunStatus}"
> target="resetEntitySyncStatus" also-hidden="false">
>                  <parameter param-name="entitySyncId"/>
>              </hyperlink>
>          </field>
>