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 [EMAIL PROTECTED] 
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 [EMAIL PROTECTED] 
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 [EMAIL PROTECTED] 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 [EMAIL PROTECTED] 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to