From 629a2649e8f4ae3b95c81438b485bdad898fb92c Mon Sep 17 00:00:00 2001 From: Matthew Jason Benson Date: Thu, 26 May 2005 17:01:01 +0000 Subject: [PATCH] Obtain subproject instance from Project to satisfy the remote chance of Project having been subclassed. PR: 17901 git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@278363 13f79535-47bb-0310-9956-ffa450edef68 --- src/main/org/apache/tools/ant/Project.java | 21 ++++++++++++++++++- .../org/apache/tools/ant/taskdefs/Ant.java | 6 +----- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/main/org/apache/tools/ant/Project.java b/src/main/org/apache/tools/ant/Project.java index 5b510102a..88db1a058 100644 --- a/src/main/org/apache/tools/ant/Project.java +++ b/src/main/org/apache/tools/ant/Project.java @@ -235,12 +235,31 @@ public class Project { } /** - * Init a sub project--used by taskdefs.Ant . + * Create and initialize a subproject. By default the subproject will be of + * the same type as its parent. If a no-arg constructor is unavailable, the + * Project class will be used. + * @return a Project instance configured as a subproject of this Project. + * @since Ant 1.7 + */ + public Project createSubProject() { + Project subProject = null; + try { + subProject = (Project) (getClass().newInstance()); + } catch (Exception e) { + subProject = new Project(); + } + initSubProject(subProject); + return subProject; + } + + /** + * Initialize a subproject. * @param subProject the subproject to initialize. */ public void initSubProject(Project subProject) { ComponentHelper.getComponentHelper(subProject) .initSubProject(ComponentHelper.getComponentHelper(this)); + subProject.setDefaultInputStream(getDefaultInputStream()); subProject.setKeepGoingMode(this.isKeepGoingMode()); subProject.setExecutor(getExecutor().getSubProjectExecutor()); } diff --git a/src/main/org/apache/tools/ant/taskdefs/Ant.java b/src/main/org/apache/tools/ant/taskdefs/Ant.java index ed0afea86..c3f30603b 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Ant.java +++ b/src/main/org/apache/tools/ant/taskdefs/Ant.java @@ -143,8 +143,7 @@ public class Ant extends Task { * Creates a Project instance for the project to call. */ public void init() { - newProject = new Project(); - newProject.setDefaultInputStream(getProject().getDefaultInputStream()); + newProject = getProject().createSubProject(); newProject.setJavaVersionProperty(); } @@ -194,9 +193,6 @@ public class Ant extends Task { log("Ant: Can't set output to " + output); } } - - getProject().initSubProject(newProject); - // set user-defined properties getProject().copyUserProperties(newProject);