From 945b6d36d1eec5f3ce4df1f71c041564ce01f5e8 Mon Sep 17 00:00:00 2001 From: Sam Ruby Date: Sun, 19 Mar 2000 20:27:44 +0000 Subject: [PATCH] Allow names to be used as id references git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@267638 13f79535-47bb-0310-9956-ffa450edef68 --- src/main/org/apache/tools/ant/Project.java | 8 ++++ .../org/apache/tools/ant/ProjectHelper.java | 8 +++- .../tools/ant/taskdefs/optional/Script.java | 42 ++++++++++++------- 3 files changed, 42 insertions(+), 16 deletions(-) diff --git a/src/main/org/apache/tools/ant/Project.java b/src/main/org/apache/tools/ant/Project.java index 8da398bbb..5f291283a 100644 --- a/src/main/org/apache/tools/ant/Project.java +++ b/src/main/org/apache/tools/ant/Project.java @@ -196,6 +196,10 @@ public class Project { return properties; } + public Hashtable getUserProperties() { + return userProperties; + } + public void setDefaultTarget(String defaultTarget) { this.defaultTarget = defaultTarget; } @@ -353,6 +357,10 @@ public class Project { targets.put(targetName, target); } + public Hashtable getTargets() { + return targets; + } + public Task createTask(String taskType) throws BuildException { Class c = (Class) taskClassDefinitions.get(taskType); diff --git a/src/main/org/apache/tools/ant/ProjectHelper.java b/src/main/org/apache/tools/ant/ProjectHelper.java index 52df93c34..7e5a9fa7e 100644 --- a/src/main/org/apache/tools/ant/ProjectHelper.java +++ b/src/main/org/apache/tools/ant/ProjectHelper.java @@ -102,9 +102,15 @@ public class ProjectHelper { throw new BuildException(msg); } - project.setName(root.getAttribute("name")); project.setDefaultTarget(root.getAttribute("default")); + String name = root.getAttribute("name"); + project.setName(name); + if (name != null) project.addReference(name, project); + + String id = root.getAttribute("id"); + if (id != null) project.addReference(id, project); + String baseDir = project.getProperty("basedir"); if (baseDir == null) { baseDir = root.getAttribute("basedir"); diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/Script.java b/src/main/org/apache/tools/ant/taskdefs/optional/Script.java index e99100b67..86ddc12fd 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/Script.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/Script.java @@ -67,31 +67,43 @@ import com.ibm.bsf.*; public class Script extends Task { private String language; private String script = ""; + private Hashtable beans = new Hashtable(); + /** + * Add a list of named objects to the list to be exported to the script + */ + private void addBeans(Hashtable dictionary) { + for (Enumeration e=dictionary.keys(); e.hasMoreElements(); ) { + String key = (String)e.nextElement(); + + boolean isValid = key.length()>0 && + Character.isJavaIdentifierStart(key.charAt(0)); + + for (int i=1; isValid && i) - Hashtable references = project.getReferences(); - for (Enumeration e = references.keys() ; e.hasMoreElements() ;) { - String key = (String)e.nextElement(); - Object value = references.get(key); - manager.declareBean(key, value, value.getClass()); - } + addBeans(project.getProperties()); + addBeans(project.getUserProperties()); + addBeans(project.getTargets()); + addBeans(project.getReferences()); + + BSFManager manager = new BSFManager (); - // add properties () - Hashtable properties = project.getProperties(); - for (Enumeration e = properties.keys() ; e.hasMoreElements() ;) { + for (Enumeration e = beans.keys() ; e.hasMoreElements() ;) { String key = (String)e.nextElement(); - if (!references.contains(key)) { - Object value = properties.get(key); - manager.declareBean(key, value, value.getClass()); - } + Object value = beans.get(key); + manager.declareBean(key, value, value.getClass()); } // execute the script