peterreilly 2005/01/28 01:32:50
Modified: src/main/org/apache/tools/ant/types Tag: ANT_16_BRANCH
Reference.java
Log:
sync: reference has a project
Revision Changes Path
No revision
No revision
1.14.2.5 +75 -5 ant/src/main/org/apache/tools/ant/types/Reference.java
Index: Reference.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/types/Reference.java,v
retrieving revision 1.14.2.4
retrieving revision 1.14.2.5
diff -u -r1.14.2.4 -r1.14.2.5
--- Reference.java 9 Mar 2004 17:01:55 -0000 1.14.2.4
+++ Reference.java 28 Jan 2005 09:32:50 -0000 1.14.2.5
@@ -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,33 +27,103 @@
public class Reference {
private String refid;
+ private Project project;
+ /**
+ * Create a reference.
+ * @deprecated Please use {@link Reference#Reference(Project,String)} instead.
+ */
public Reference() {
- super();
}
+ /**
+ * Create a reference to a named ID.
+ * @param id the name of this reference
+ * @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.6.3
+ */
+ public Reference(Project p, String id) {
+ setRefId(id);
+ setProject(p);
+ }
+
+ /**
+ * Set the reference id. Should not normally be necessary;
+ * use {@link Reference#Reference(Project, String)}.
+ * @param id the reference id to use
+ */
public void setRefId(String id) {
refid = id;
}
+ /**
+ * Get the reference id of this reference.
+ * @return the reference id
+ */
public String getRefId() {
return refid;
}
- public Object getReferencedObject(Project project) throws BuildException {
+ /**
+ * Set the associated project. Should not normally be necessary;
+ * use {@link Reference#Reference(Project,String)}.
+ * @param p the project to use
+ * @since Ant 1.6.3
+ */
+ public void setProject(Project p) {
+ this.project = p;
+ }
+
+ /**
+ * Get the associated project, if any; may be null.
+ * @return the associated project
+ * @since Ant 1.6.3
+ */
+ public Project getProject() {
+ return project;
+ }
+
+ /**
+ * 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.6.3
+ */
+ public Object getReferencedObject() throws BuildException {
+ if (project == null) {
+ throw new BuildException("No project set on reference to " + refid);
+ }
+ return getReferencedObject(project);
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
|