|
|
@@ -1,5 +1,5 @@ |
|
|
|
/* |
|
|
|
* Copyright 2000-2002,2004 The Apache Software Foundation |
|
|
|
* Copyright 2000-2002,2004-2005 The Apache Software Foundation |
|
|
|
* |
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
* you may not use this file except in compliance with the License. |
|
|
@@ -27,15 +27,31 @@ import org.apache.tools.ant.Project; |
|
|
|
public class Reference { |
|
|
|
|
|
|
|
private String refid; |
|
|
|
private Project project; |
|
|
|
|
|
|
|
/** |
|
|
|
* @deprecated Please use {@link Reference#Reference(Project,String)} instead. |
|
|
|
*/ |
|
|
|
public Reference() { |
|
|
|
super(); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @deprecated Please use {@link Reference#Reference(Project,String)} instead. |
|
|
|
*/ |
|
|
|
public Reference(String id) { |
|
|
|
this(); |
|
|
|
setRefId(id); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Create a reference to a named ID in a particular project. |
|
|
|
* @param p the project this reference is associated with |
|
|
|
* @param id the name of this reference |
|
|
|
* @since Ant 1.7 |
|
|
|
*/ |
|
|
|
public Reference(Project p, String id) { |
|
|
|
setRefId(id); |
|
|
|
setProject(p); |
|
|
|
} |
|
|
|
|
|
|
|
public void setRefId(String id) { |
|
|
|
refid = id; |
|
|
@@ -44,16 +60,59 @@ public class Reference { |
|
|
|
public String getRefId() { |
|
|
|
return refid; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Set the associated project. Should not normally be necessary; |
|
|
|
* use {@link Reference#Reference(Project,String)}. |
|
|
|
* @param p the project to use |
|
|
|
* @since Ant 1.7 |
|
|
|
*/ |
|
|
|
public void setProject(Project p) { |
|
|
|
this.project = p; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Get the associated project, if any; may be null. |
|
|
|
* @return the associated project |
|
|
|
* @since Ant 1.7 |
|
|
|
*/ |
|
|
|
public Project getProject() { |
|
|
|
return project; |
|
|
|
} |
|
|
|
|
|
|
|
public Object getReferencedObject(Project project) throws BuildException { |
|
|
|
/** |
|
|
|
* Resolve the reference, using the associated project if |
|
|
|
* it set, otherwise use the passed in project. |
|
|
|
* @param fallback the fallback project to use if the project attribute of |
|
|
|
* reference is not set. |
|
|
|
* @return the dereferenced object. |
|
|
|
* @throws BuildException if the reference cannot be dereferenced. |
|
|
|
*/ |
|
|
|
public Object getReferencedObject(Project fallback) throws BuildException { |
|
|
|
if (refid == null) { |
|
|
|
throw new BuildException("No reference specified"); |
|
|
|
} |
|
|
|
|
|
|
|
Object o = project.getReference(refid); |
|
|
|
|
|
|
|
Object o = project == null ? fallback.getReference(refid) : project.getReference(refid); |
|
|
|
if (o == null) { |
|
|
|
throw new BuildException("Reference " + refid + " not found."); |
|
|
|
} |
|
|
|
return o; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Resolve the reference, looking in the associated project. |
|
|
|
* @see Project#getReference |
|
|
|
* @return the dereferenced object. |
|
|
|
* @throws BuildException if the project is null or the reference cannot be dereferenced |
|
|
|
* @since Ant 1.7 |
|
|
|
*/ |
|
|
|
public Object getReferencedObject() throws BuildException { |
|
|
|
if (project == null) { |
|
|
|
throw new BuildException("No project set on reference to " + refid); |
|
|
|
} |
|
|
|
return getReferencedObject(project); |
|
|
|
} |
|
|
|
|
|
|
|
} |