[prev in list] [next in list] [prev in thread] [next in thread] 

List:       rhq-commits
Subject:    [rhq] Branch 'gwt' - modules/common modules/core
From:       mazz () fedoraproject ! org (mazz)
Date:       2010-04-30 20:18:15
Message-ID: 20100430201815.98F6B1201A4 () lists ! fedorahosted ! org
[Download RAW message or body]

 modules/common/filetemplate-bundle/src/main/java/org/rhq/bundle/filetemplate/recipe/RecipeParser.java \
|    2 +  modules/common/filetemplate-bundle/src/test/java/org/rhq/bundle/filetemplate/recipe/RecipeParserTest.java \
|   16 ++++++++++  modules/core/util/src/main/java/org/rhq/core/template/TemplateEngine.java \
|   15 ++++-----  modules/core/util/src/test/java/org/rhq/core/template/TemplateEngineTest.java \
|    4 +-  4 files changed, 28 insertions(+), 9 deletions(-)

New commits:
commit 2ec54df504a1dea687c489c41e001d78f98bbdd9
Author: John Mazzitelli <mazz at redhat.com>
Date:   Fri Apr 30 16:18:11 2010 -0400

    add some more tests to  template engine/recipe parser; make sure we better \
support windows paths

diff --git a/modules/common/filetemplate-bundle/src/main/java/org/rhq/bundle/filetemplate/recipe/RecipeParser.java \
b/modules/common/filetemplate-bundle/src/main/java/org/rhq/bundle/filetemplate/recipe/RecipeParser.java
 index a871e91..54ae226 100644
--- a/modules/common/filetemplate-bundle/src/main/java/org/rhq/bundle/filetemplate/recipe/RecipeParser.java
                
+++ b/modules/common/filetemplate-bundle/src/main/java/org/rhq/bundle/filetemplate/recipe/RecipeParser.java
 @@ -199,6 +199,8 @@ public class RecipeParser {
     }
 
     protected String[] splitCommandLine(String cmdLine) {
+        cmdLine = cmdLine.replace('\\', '/');
+
         ByteArrayInputStream in = new ByteArrayInputStream(cmdLine.getBytes());
         StreamTokenizer strtok = new StreamTokenizer(new InputStreamReader(in));
         List<String> args = new ArrayList<String>();
diff --git a/modules/common/filetemplate-bundle/src/test/java/org/rhq/bundle/filetemplate/recipe/RecipeParserTest.java \
b/modules/common/filetemplate-bundle/src/test/java/org/rhq/bundle/filetemplate/recipe/RecipeParserTest.java
 index fc9acd3..dda85f4 100644
--- a/modules/common/filetemplate-bundle/src/test/java/org/rhq/bundle/filetemplate/recipe/RecipeParserTest.java
                
+++ b/modules/common/filetemplate-bundle/src/test/java/org/rhq/bundle/filetemplate/recipe/RecipeParserTest.java
 @@ -311,6 +311,22 @@ public class RecipeParserTest {
         assert files.get("tomcat.tar").equals("/opt/tomcat") : files;
     }
 
+    public void testSimpleRecipeWithBackslashes() throws Exception {
+        addRecipeCommand("deploy -f jboss1.zip -d \"C:\\opt\\jboss1\"");
+        addRecipeCommand("deploy -f tomcat.tar \"--directory=C:\\Documents and \
Settings\\user\\\""); +        addRecipeCommand("deploy -f jboss2.zip -d \
C:\\opt\\jboss1"); +        RecipeParser parser = new RecipeParser();
+        RecipeContext context = new RecipeContext(getRecipe());
+        parser.parseRecipe(context);
+        Map<String, String> files = context.getDeployFiles();
+        assert files.containsKey("jboss1.zip") : files;
+        assert files.get("jboss1.zip").equals("C:/opt/jboss1") : files;
+        assert files.containsKey("tomcat.tar") : files;
+        assert files.get("tomcat.tar").equals("C:/Documents and Settings/user/") : \
files; +        assert files.containsKey("jboss2.zip") : files;
+        assert files.get("jboss2.zip").equals("C:/opt/jboss1") : files;
+    }
+
     public void testSimpleRecipeError() throws Exception {
         addRecipeCommand("deploy -f jboss.tar");
         RecipeParser parser = new RecipeParser();
diff --git a/modules/core/util/src/main/java/org/rhq/core/template/TemplateEngine.java \
b/modules/core/util/src/main/java/org/rhq/core/template/TemplateEngine.java index \
                78e56e1..52deb7e 100644
--- a/modules/core/util/src/main/java/org/rhq/core/template/TemplateEngine.java
+++ b/modules/core/util/src/main/java/org/rhq/core/template/TemplateEngine.java
@@ -37,12 +37,7 @@ public class TemplateEngine implements Serializable {
     }
 
     public String replaceTokens(String input) {
-
-        // since our replacement strings may include \ and $ characters avoid the \
                use of
-        // matcher.appendReplacement and like methods when doing this work.
-
-        String result = input;
-
+        StringBuffer buffer = new StringBuffer();
         Matcher matcher = tokenPattern.matcher(input);
         while (matcher.find()) {
             String next = matcher.group();
@@ -51,10 +46,14 @@ public class TemplateEngine implements Serializable {
                 String key = keyMatcher.group();
                 String value = tokens.get(key);
                 if (value != null) {
-                    result = result.replace(next, value);
+                    next = value;
                 }
             }
+
+            // If we didn't find a replacement for the key, leave the original value \
unchanged +            matcher.appendReplacement(buffer, \
Matcher.quoteReplacement(next));  }
-        return result;
+        matcher.appendTail(buffer);
+        return buffer.toString();
     }
 }
diff --git a/modules/core/util/src/test/java/org/rhq/core/template/TemplateEngineTest.java \
b/modules/core/util/src/test/java/org/rhq/core/template/TemplateEngineTest.java index \
                4402c6c..e215545 100644
--- a/modules/core/util/src/test/java/org/rhq/core/template/TemplateEngineTest.java
+++ b/modules/core/util/src/test/java/org/rhq/core/template/TemplateEngineTest.java
@@ -10,7 +10,7 @@ import org.testng.annotations.Test;
 public class TemplateEngineTest extends TestCase {
     private static final String IPADDR = "192.168.22.153";
     private static final String SUCCESSTOKEN1 = "successtoken1";
-    private static final String WINTEMPDIR = \
"C:\\Users\\JSHAUG~1\\AppData\\Local\\Temp\\"; +    private static final String \
WINTEMPDIR = "C:\\Users\\JSHAUG~1\\Documents and Settings\\Local\\Temp\\";  String \
noTokens = "This string should come through unchanged";  String justOneToken = \
"@@rhq.token1@@";  String oneTokenWhiteSpace = "@@ rhq.token1 @@";
@@ -46,6 +46,8 @@ public class TemplateEngineTest extends TestCase {
 
     public void testWinToken() {
         assertEquals(WINTEMPDIR, \
templateEngine.replaceTokens("@@rhq.system.sysprop.java.io.tmpdir@@")); +        \
assertEquals(WINTEMPDIR + "-" + WINTEMPDIR, templateEngine +            \
.replaceTokens("@@rhq.system.sysprop.java.io.tmpdir@@-@@ \
rhq.system.sysprop.java.io.tmpdir @@"));  }
 
     public void testOneTokenWhiteSpace() {


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic