diff --git a/core/org.eclipse.cdt.core.tests/templateengine/org/eclipse/cdt/core/tests/templateengine/AllTemplateEngineTests.java b/core/org.eclipse.cdt.core.tests/templateengine/org/eclipse/cdt/core/tests/templateengine/AllTemplateEngineTests.java index d588e80a747..b9e2250f3aa 100644 --- a/core/org.eclipse.cdt.core.tests/templateengine/org/eclipse/cdt/core/tests/templateengine/AllTemplateEngineTests.java +++ b/core/org.eclipse.cdt.core.tests/templateengine/org/eclipse/cdt/core/tests/templateengine/AllTemplateEngineTests.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007 Symbian Software Limited and others. + * Copyright (c) 2007, 2008 Symbian Software Limited and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -31,7 +31,7 @@ public class AllTemplateEngineTests extends TestSuite { * Since the TemplateEngine consists of UI(Wizard). * A TestWizard is created to which the dynamically generated * UIPages are added. The Wizard is launched from here. - * The TestCases created to test the TemplateEngine is initialized here. + * The TestCases created to test the TemplateEngine is initialised here. * @return * * @since 4.0 @@ -45,6 +45,7 @@ public class AllTemplateEngineTests extends TestSuite { suite.addTestSuite(TestValueStore.class); suite.addTestSuite(TestSharedDefaults.class); suite.addTestSuite(TestProcesses.class); + suite.addTestSuite(TestTemplateEngineBugs.class); //$JUnit-END$ return suite; diff --git a/core/org.eclipse.cdt.core.tests/templateengine/org/eclipse/cdt/core/tests/templateengine/TestTemplateEngineBugs.java b/core/org.eclipse.cdt.core.tests/templateengine/org/eclipse/cdt/core/tests/templateengine/TestTemplateEngineBugs.java new file mode 100644 index 00000000000..e01a0e2b13f --- /dev/null +++ b/core/org.eclipse.cdt.core.tests/templateengine/org/eclipse/cdt/core/tests/templateengine/TestTemplateEngineBugs.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright (c) 2007 Symbian Software Limited and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Andrew Ferguson (Symbian) - Initial Implementation + *******************************************************************************/ +package org.eclipse.cdt.core.tests.templateengine; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +import org.eclipse.cdt.core.templateengine.process.ProcessHelper; +import org.eclipse.cdt.core.testplugin.util.BaseTestCase; + +public class TestTemplateEngineBugs extends BaseTestCase { + + public void testBug215283() { + assertEquals(set("a"), ProcessHelper.getReplaceKeys("$(a)")); + assertEquals(set("a","b"), ProcessHelper.getReplaceKeys("$(a)$(b)")); + assertEquals(set("a","b","cc","ddd"), ProcessHelper.getReplaceKeys("$(a)$(b)$(cc)$(ddd)")); + assertEquals(set("aaa","b","c","dd"), ProcessHelper.getReplaceKeys("$(aaa)$(b)$(c)$(dd)")); + assertEquals(set("a"), ProcessHelper.getReplaceKeys("($(a))")); + assertEquals(set("a","b"), ProcessHelper.getReplaceKeys("$(b)$(a)")); + assertEquals(set("a"), ProcessHelper.getReplaceKeys(" \n$(a)")); + assertEquals(set("a"), ProcessHelper.getReplaceKeys("$(a) ")); + } + + private Set set(String ... s) { + HashSet result= new HashSet(); + result.addAll(Arrays.asList(s)); + return result; + } +} diff --git a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/SharedDefaults.java b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/SharedDefaults.java index 40a5f7af983..97ce360ebd1 100644 --- a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/SharedDefaults.java +++ b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/SharedDefaults.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007 Symbian Software Limited and others. + * Copyright (c) 2007, 2008 Symbian Software Limited and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -14,7 +14,6 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; -import java.util.Iterator; import java.util.List; import java.util.Map; @@ -35,8 +34,7 @@ import org.w3c.dom.Node; /** * Processes the shared default values. Updates and Persists new key - value (default) pair */ - -public class SharedDefaults extends HashMap/**/ { +public class SharedDefaults extends HashMap { private static final long serialVersionUID = 0000000000L; public Document document; @@ -46,9 +44,9 @@ public class SharedDefaults extends HashMap/**/ { /** * HashMap's for persistence */ - private HashMap/**/ sharedDefaultsMap; - private HashMap/**/ persistDataMap; - private HashMap/**/ tableDataMap; + private HashMap sharedDefaultsMap; + private HashMap persistDataMap; + private HashMap tableDataMap; /** * Two XML files here supports to provide consistent writing of data into @@ -96,9 +94,9 @@ public class SharedDefaults extends HashMap/**/ { */ public SharedDefaults() { - sharedDefaultsMap = new HashMap/**/(); - persistDataMap = new HashMap/**/(); - tableDataMap = new HashMap/**/(); + sharedDefaultsMap = new HashMap(); + persistDataMap = new HashMap(); + tableDataMap = new HashMap(); // The conditional controls here is provided to have consistent // data storage in the file during System crash or @@ -129,15 +127,15 @@ public class SharedDefaults extends HashMap/**/ { if (length == 0) { parsedXML = createDefaultXMLFormat(parsedXML); } - document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(parsedXML.toURL().openStream()); + document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(parsedXML.toURI().toURL().openStream()); } catch (Exception exp) { TemplateEngineUtil.log(exp); } - List/**/ sharedElementList = TemplateEngine.getChildrenOfElement(document.getDocumentElement()); + List sharedElementList = TemplateEngine.getChildrenOfElement(document.getDocumentElement()); int listSize = sharedElementList.size(); for (int i = 0; i < listSize; i++) { - Element xmlElement = (Element) sharedElementList.get(i); + Element xmlElement = sharedElementList.get(i); key = xmlElement.getAttribute(TemplateEngineHelper.ID); value = xmlElement.getAttribute(TemplateEngineHelper.VALUE); if (key != null && !key.trim().equals("")) { //$NON-NLS-1$ @@ -152,7 +150,7 @@ public class SharedDefaults extends HashMap/**/ { * @param sharedMap */ - public void updateShareDefaultsMap(Map/**/ sharedMap) { + public void updateShareDefaultsMap(Map sharedMap) { sharedDefaultsMap.putAll(sharedMap); persistSharedValueMap(); } @@ -174,7 +172,7 @@ public class SharedDefaults extends HashMap/**/ { * @return HashMap */ - public Map/**/ getSharedDefaultsMap() { + public Map getSharedDefaultsMap() { return sharedDefaultsMap; } @@ -198,20 +196,19 @@ public class SharedDefaults extends HashMap/**/ { * @param updateName * @param updateValue */ - public void updateToBackEndStorage(String updateName, String updateValue) { try { - document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(parsedXML.toURL().openStream()); + document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(parsedXML.toURI().toURL().openStream()); } catch (Exception exp) { TemplateEngineUtil.log(exp); } persistDataMap.putAll(sharedDefaultsMap); - List/**/ sharedElementList = TemplateEngine.getChildrenOfElement(document.getDocumentElement()); + List sharedElementList = TemplateEngine.getChildrenOfElement(document.getDocumentElement()); int elementListSize = sharedElementList.size(); for (int i = 0; i < elementListSize; i++) { - Element xmlElement = (Element) sharedElementList.get(i); + Element xmlElement = sharedElementList.get(i); String name = xmlElement.getAttribute(TemplateEngineHelper.ID); if (updateName.equals(name)) { @@ -228,18 +225,17 @@ public class SharedDefaults extends HashMap/**/ { * @param deleteName */ public void deleteBackEndStorage(String[] deleteName) { - try { - document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(parsedXML.toURL().openStream()); + document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(parsedXML.toURI().toURL().openStream()); } catch (Exception exp) { TemplateEngineUtil.log(exp); } - List/**/ sharedElementList = TemplateEngine.getChildrenOfElement(document.getDocumentElement()); + List sharedElementList = TemplateEngine.getChildrenOfElement(document.getDocumentElement()); int elementListSize = sharedElementList.size(); for (int i = 0; i < elementListSize; i++) { - Element xmlElement = (Element) sharedElementList.get(i); + Element xmlElement = sharedElementList.get(i); String name = xmlElement.getAttribute(TemplateEngineHelper.ID); for (int k = 0; k < deleteName.length; k++) { @@ -312,11 +308,10 @@ public class SharedDefaults extends HashMap/**/ { } Node rootElement = d.appendChild(d.createElement("SharedRoot")); //$NON-NLS-1$ - for(Iterator i = sharedDefaultsMap.keySet().iterator(); i.hasNext(); ) { - String key = (String) i.next(); + for(String key : sharedDefaultsMap.keySet()) { Element element = (Element) rootElement.appendChild(d.createElement("SharedProperty")); //$NON-NLS-1$ element.setAttribute(TemplateEngineHelper.ID, key); - element.setAttribute(TemplateEngineHelper.VALUE, (String) sharedDefaultsMap.get(key)); + element.setAttribute(TemplateEngineHelper.VALUE, sharedDefaultsMap.get(key)); } DOMSource domSource = new DOMSource(d); diff --git a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateCore.java b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateCore.java index e4f6bb45aca..c703b6b7112 100644 --- a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateCore.java +++ b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateCore.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007 Symbian Software Limited and others. + * Copyright (c) 2007, 2008 Symbian Software Limited and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -13,7 +13,6 @@ package org.eclipse.cdt.core.templateengine; import java.io.IOException; import java.net.URL; import java.text.MessageFormat; -import java.util.Collection; import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; @@ -45,18 +44,18 @@ public class TemplateCore { private static final String ID = "id"; //$NON-NLS-1$ private static final String TYPE = "type"; //$NON-NLS-1$ - private static Map/**/ templateCache = new HashMap/**/(); + private static Map templateCache = new HashMap(); - public static final Comparator/*