diff --git a/common/source/java/ch/systemsx/cisd/common/utilities/Template.java b/common/source/java/ch/systemsx/cisd/common/utilities/Template.java index 33462ec12507ee1edec6d5a7244d71aa7fded374..49e196e023ca63004788dc870407be4fb7ef6565 100644 --- a/common/source/java/ch/systemsx/cisd/common/utilities/Template.java +++ b/common/source/java/ch/systemsx/cisd/common/utilities/Template.java @@ -250,15 +250,17 @@ public class Template public Template createFreshCopy() { LinkedHashMap<String, VariableToken> map = new LinkedHashMap<String, VariableToken>(); + for (VariableToken variableToken : variableTokens.values()) + { + String variableName = variableToken.getVariableName(); + map.put(variableName, new VariableToken(variableName)); + } ArrayList<IToken> list = new ArrayList<IToken>(); for (IToken token : tokens) { if (token instanceof VariableToken) { - String variableName = ((VariableToken) token).getVariableName(); - VariableToken variableToken = new VariableToken(variableName); - map.put(variableName, variableToken); - list.add(variableToken); + list.add(map.get(((VariableToken) token).getVariableName())); } else { list.add(token); diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/utilities/TemplateTest.java b/common/sourceTest/java/ch/systemsx/cisd/common/utilities/TemplateTest.java index 8e019e68490a5d5d8140e4b3bb036e30f59ab6d6..96beb89adfaa6031043f969ddc4a7360a0b039ac 100644 --- a/common/sourceTest/java/ch/systemsx/cisd/common/utilities/TemplateTest.java +++ b/common/sourceTest/java/ch/systemsx/cisd/common/utilities/TemplateTest.java @@ -165,16 +165,24 @@ public class TemplateTest @Test public void testCreateFreshCopy() { - Template template = new Template("hello ${name}!"); + Template template = new Template("hello ${name}.${name}!"); Template template1 = template.createFreshCopy(); + try + { + template1.createText(); + fail("IllegalStateException expected"); + } catch (IllegalStateException e) + { + assertEquals("The following variables are not bound: name ", e.getMessage()); + } template1.bind("name", "world"); - assertEquals("hello world!", template1.createText()); - assertEquals("hello ${name}!", template.createText(false)); + assertEquals("hello world.world!", template1.createText()); + assertEquals("hello ${name}.${name}!", template.createText(false)); Template template2 = template.createFreshCopy(); template2.bind("name", "universe"); - assertEquals("hello universe!", template2.createText()); - assertEquals("hello world!", template1.createText()); - assertEquals("hello ${name}!", template.createText(false)); + assertEquals("hello universe.universe!", template2.createText()); + assertEquals("hello world.world!", template1.createText()); + assertEquals("hello ${name}.${name}!", template.createText(false)); } }