This is an automated email from the ASF dual-hosted git repository. nmalin pushed a commit to branch release24.09 in repository https://gitbox.apache.org/repos/asf/ofbiz-plugins.git
The following commit(s) were added to refs/heads/release24.09 by this push: new ae0c279b9 Improved: svn call on scrum plugin (OFBIZ-13276) ae0c279b9 is described below commit ae0c279b9c7bb91a36d038f2dab5941b09b1de09 Author: Nicolas Malin <nicolas.ma...@nereide.fr> AuthorDate: Sat Jul 26 07:41:33 2025 +0200 Improved: svn call on scrum plugin (OFBIZ-13276) On scrum plugin when we call the svn command to retrieve a revision diff we call directly the os system by a concat string. We improve that to pass the command with a string table --- scrum/minilang/test/TaskTests.xml | 22 +++++++++++++++++++++- .../java/org/apache/ofbiz/scrum/ScrumServices.java | 20 +++++++++++--------- scrum/testdef/scrumTests.xml | 4 ++-- 3 files changed, 34 insertions(+), 12 deletions(-) diff --git a/scrum/minilang/test/TaskTests.xml b/scrum/minilang/test/TaskTests.xml index e07233171..ee011f04e 100644 --- a/scrum/minilang/test/TaskTests.xml +++ b/scrum/minilang/test/TaskTests.xml @@ -20,7 +20,7 @@ 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="testViewScrumRevision" short-description="Test View Scrum Revision" login-required="false"> <entity-one entity-name="UserLogin" value-field="userLogin"> <field-map field-name="userLoginId" value="system"/> @@ -36,10 +36,29 @@ under the License. <and> <not><if-empty field="result.repository"/></not> <not><if-empty field="result.revision"/></not> + <not><if-empty field="result.logMessage"/></not> </and> </assert> <check-errors/> </simple-method> + --> + <simple-method method-name="testViewScrumRevisionBadCall" short-description="Test View Scrum Revision resist to a bad call" login-required="false"> + <entity-one entity-name="UserLogin" value-field="userLogin"> + <field-map field-name="userLoginId" value="system"/> + </entity-one> + <set-current-user-login value-field="userLogin"/> + <set field="serviceCtx.userLogin" from-field="userLogin"/> + <set field="serviceCtx.repository" value="--diff+--diff-cmd=/bin/ls"/> + <set field="serviceCtx.revision" value="7"/> + <call-service service-name="viewScrumRevision" in-map-name="serviceCtx"> + <results-to-map map-name="result"/> + </call-service> + <assert> + <if-empty field="result.logMessage"/> + </assert> + <check-errors/> + </simple-method> + <!-- <simple-method method-name="testRetrieveMissingScrumRevision" short-description="Test Retrieve Missing Scrum Revision" login-required="false"> <entity-one entity-name="UserLogin" value-field="userLogin"> <field-map field-name="userLoginId" value="system"/> @@ -75,4 +94,5 @@ under the License. </assert> <check-errors/> </simple-method> + --> </simple-methods> diff --git a/scrum/src/main/java/org/apache/ofbiz/scrum/ScrumServices.java b/scrum/src/main/java/org/apache/ofbiz/scrum/ScrumServices.java index a8f75972c..098cba7d2 100644 --- a/scrum/src/main/java/org/apache/ofbiz/scrum/ScrumServices.java +++ b/scrum/src/main/java/org/apache/ofbiz/scrum/ScrumServices.java @@ -28,8 +28,8 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; - import org.apache.ofbiz.base.util.Debug; +import org.apache.ofbiz.base.util.StringUtil; import org.apache.ofbiz.base.util.UtilMisc; import org.apache.ofbiz.base.util.UtilProperties; import org.apache.ofbiz.base.util.UtilValidate; @@ -138,17 +138,18 @@ public class ScrumServices { StringBuilder logMessage = new StringBuilder(); StringBuilder diffMessage = new StringBuilder(); try { - if (UtilValidate.isNotEmpty(repository) && UtilValidate.isNotEmpty(revision)) { + if (UtilValidate.isNotEmpty(repository) && UtilValidate.isNotEmpty(revision) + && UtilValidate.isValidUrl(repository) && UtilValidate.isInteger(revision)) { String logline = null; - String logCommand = "svn log -r" + revision + " " + repository; - Process logProcess = Runtime.getRuntime().exec(logCommand); + Process logProcess = Runtime.getRuntime().exec("svn", + new String[]{"log", "-r", revision, repository}); BufferedReader logIn = new BufferedReader(new InputStreamReader(logProcess.getInputStream())); while ((logline = logIn.readLine()) != null) { logMessage.append(logline).append("\n"); } String diffline = null; - String diffCommand = "svn diff -r" + Integer.toString((Integer.parseInt(revision.trim()) - 1)) + ":" + revision + " " + repository; - Process diffProcess = Runtime.getRuntime().exec(diffCommand); + Process diffProcess = Runtime.getRuntime().exec("svn", + new String[]{"diff", "-r", StringUtil.addToNumberString(revision.trim(), -1) + ":" + revision, repository}); BufferedReader diffIn = new BufferedReader(new InputStreamReader(diffProcess.getInputStream())); while ((diffline = diffIn.readLine()) != null) { diffMessage.append(diffline).append("\n"); @@ -181,13 +182,14 @@ public class ScrumServices { String repositoryRoot = (String) context.get("repositoryRoot"); Map<String, Object> result = ServiceUtil.returnSuccess(); try { - if (UtilValidate.isNotEmpty(repositoryRoot) && UtilValidate.isNotEmpty(latestRevision)) { + if (UtilValidate.isNotEmpty(repositoryRoot) && UtilValidate.isNotEmpty(latestRevision) + && UtilValidate.isValidUrl(repositoryRoot) && UtilValidate.isInteger(latestRevision)) { Integer revision = Integer.parseInt(latestRevision.trim()); for (int i = 1; i <= revision; i++) { String logline = null; List<String> logMessageList = new LinkedList<>(); - String logCommand = "svn log -r" + i + " " + repositoryRoot; - Process logProcess = Runtime.getRuntime().exec(logCommand); + Process logProcess = Runtime.getRuntime().exec("svn", + new String[]{"log", "-r", String.valueOf(i), repositoryRoot}); BufferedReader logIn = new BufferedReader(new InputStreamReader(logProcess.getInputStream())); while ((logline = logIn.readLine()) != null) { logMessageList.add(logline.toString().trim()); diff --git a/scrum/testdef/scrumTests.xml b/scrum/testdef/scrumTests.xml index e20efc34f..cbb2e73a9 100644 --- a/scrum/testdef/scrumTests.xml +++ b/scrum/testdef/scrumTests.xml @@ -41,9 +41,9 @@ under the License. <test-case case-name="product-tests"> <simple-method-test location="component://scrum/minilang/test/ProductTest.xml"/> </test-case> - <!--<test-case case-name="task-test"> + <test-case case-name="task-test"> <simple-method-test location="component://scrum/minilang/test/TaskTests.xml"/> - </test-case>--> + </test-case> <test-case case-name="myWork-test"> <simple-method-test location="component://scrum/minilang/test/MyWorkTests.xml"/> </test-case>