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

heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git

commit 4edec7a9b285d84e80fa83898ad803c47a4af3d5
Author: Alex Heneveld <[email protected]>
AuthorDate: Thu Jun 15 11:20:18 2023 +0100

    handle quotes in transform arguments
---
 .../workflow/steps/variables/TransformVariableWorkflowStep.java   | 8 +++++++-
 .../org/apache/brooklyn/core/workflow/WorkflowTransformTest.java  | 3 +--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git 
a/core/src/main/java/org/apache/brooklyn/core/workflow/steps/variables/TransformVariableWorkflowStep.java
 
b/core/src/main/java/org/apache/brooklyn/core/workflow/steps/variables/TransformVariableWorkflowStep.java
index 14c8ff78d8..390dbcae96 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/workflow/steps/variables/TransformVariableWorkflowStep.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/workflow/steps/variables/TransformVariableWorkflowStep.java
@@ -34,6 +34,7 @@ import 
org.apache.brooklyn.core.workflow.WorkflowStepInstanceExecutionContext;
 import org.apache.brooklyn.util.collections.*;
 import org.apache.brooklyn.util.core.flags.TypeCoercions;
 import org.apache.brooklyn.util.guava.Maybe;
+import org.apache.brooklyn.util.text.QuotedStringTokenizer;
 import org.apache.brooklyn.util.text.Strings;
 import org.apache.brooklyn.util.time.Duration;
 import org.slf4j.Logger;
@@ -169,7 +170,12 @@ public class TransformVariableWorkflowStep extends 
WorkflowStepDefinition {
     }
 
     WorkflowTransformWithContext 
getTransform(WorkflowStepInstanceExecutionContext context, String transformDef) 
{
-        List<String> transformWords = Arrays.asList(transformDef.split(" "));
+        List<String> transformWords;
+        // old
+//        transformWords = Arrays.asList(transformDef.split(" "));
+        // new, respecting quotes
+        transformWords = 
QuotedStringTokenizer.builder().includeQuotes(false).includeDelimiters(false).expectQuotesDelimited(true).failOnOpenQuote(true).build(transformDef).remainderAsList();
+
         String transformType = transformWords.get(0);
         Function t = 
Maybe.ofDisallowingNull(TRANSFORMATIONS.get(transformType)).map(Supplier::get).orNull();
         if (t==null) {
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/workflow/WorkflowTransformTest.java
 
b/core/src/test/java/org/apache/brooklyn/core/workflow/WorkflowTransformTest.java
index a07d3e2ce7..9f90a6dfcd 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/workflow/WorkflowTransformTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/workflow/WorkflowTransformTest.java
@@ -198,8 +198,7 @@ public class WorkflowTransformTest extends 
BrooklynMgmtUnitTestSupport {
 
         // append and prepend string
         Asserts.assertEquals(transform("value hello | append _world"), 
"hello_world");
-        // TODO this fails
-//        Asserts.assertEquals(transform("value hello | append \" world\""), 
"hello world");
+        Asserts.assertEquals(transform("value hello | append \" world\""), 
"hello world");
 
         // remove list
         Asserts.assertEquals(transform("value ['a','bb','ccc'] | type list | 
remove 1"), MutableList.of("a", "ccc"));

Reply via email to