[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