org.acm.seguin.project
Class Path

java.lang.Object
  extended by org.acm.seguin.project.Path
All Implemented Interfaces:
java.lang.Cloneable

public class Path
extends java.lang.Object
implements java.lang.Cloneable

This object represents a path as used by CLASSPATH or PATH environment variable.

<sometask>
  <somepath>
    <pathelement location="/path/to/file.jar" />
    <pathelement path="/path/to/file2.jar:/path/to/class2;/path/to/class3" />
    <pathelement location="/path/to/file3.jar" />
    <pathelement location="/path/to/file4.jar" />
  </somepath>
</sometask>

The object implemention sometask must provide a method called createSomepath which returns an instance of Path. Nested path definitions are handled by the Path object and must be labeled pathelement.

The path element takes a parameter path which will be parsed and split into single elements. It will usually be used to define a path from an environment variable.

Since:
2.8.01
Version:
$Id: Path.java,v 1.4 2004/03/25 20:24:28 mikeatkinson Exp $
Author:
Thomas.Haas@softwired-inc.com, Stefan Bodewig, Mike Atkinson

Nested Class Summary
 class Path.PathElement
          Helper class, holds the nested <pathelement> values.
 
Field Summary
static Path systemClasspath
          The system classspath as a Path object
 
Constructor Summary
Path(Project project)
           
Path(Project p, java.lang.String path)
          Invoked by IntrospectionHelper for setXXX(Path p) attribute setters.
 
Method Summary
 void addExisting(Path source)
          Adds the components on the given path which exist to this Path.
 void addJavaRuntime()
          Add the Java Runtime classes to this Path instance.
 void append(Path other)
          Append the contents of the other Path instance to this.
 java.lang.Object clone()
          Return a Path that holds the same elements as this instance.
 Path concatSystemClasspath()
          Concatenates the system class path in the order specified by the ${build.sysclasspath} property - using "last" as default value.
 Path concatSystemClasspath(java.lang.String defValue)
          Concatenates the system class path in the order specified by the ${build.sysclasspath} property - using the supplied value if ${build.sysclasspath} has not been set.
 Path createPath()
          Creates a nested <path> element.
 Path.PathElement createPathElement()
          Creates the nested <pathelement> element.
protected  void dieOnCircularReference(java.util.Stack stk, Project p)
          Overrides the version of DataType to recurse on all DataType child elements that may have been added.
 java.lang.String[] list()
          Returns all path elements defined by this and nested path objects.
protected  void log(java.lang.String message)
          Logs a message through the project object if one has been provided.
 void setLocation(java.io.File location)
          Adds a element definition to the path.
 void setPath(java.lang.String path)
          Parses a path definition and creates single PathElements.
 int size()
          How many parts does this Path instance consist of.
 java.lang.String toString()
          Returns a textual representation of the path, which can be used as CLASSPATH or PATH environment variable definition.
static java.lang.String translateFile(java.lang.String source)
          Returns its argument with all file separator characters replaced so that they match the local OS conventions.
protected static boolean translateFileSep(java.lang.StringBuffer buffer, int pos)
          Translates all occurrences of / or \ to correct separator of the current platform and returns whether it had to do any replacements.
static java.lang.String[] translatePath(Project project, java.lang.String source)
          Splits a PATH (with : or ; as separators) into its parts.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

systemClasspath

public static Path systemClasspath
The system classspath as a Path object

Constructor Detail

Path

public Path(Project p,
            java.lang.String path)
Invoked by IntrospectionHelper for setXXX(Path p) attribute setters.


Path

public Path(Project project)
Method Detail

setLocation

public void setLocation(java.io.File location)
                 throws ProjectException
Adds a element definition to the path.

Parameters:
location - the location of the element to add (must not be null nor empty.
Throws:
ProjectException

setPath

public void setPath(java.lang.String path)
             throws ProjectException
Parses a path definition and creates single PathElements.

Parameters:
path - the path definition.
Throws:
ProjectException

createPathElement

public Path.PathElement createPathElement()
Creates the nested <pathelement> element.


createPath

public Path createPath()
                throws ProjectException
Creates a nested <path> element.

Throws:
ProjectException

append

public void append(Path other)
Append the contents of the other Path instance to this.


addExisting

public void addExisting(Path source)
Adds the components on the given path which exist to this Path. Components that don't exist, aren't added.

Parameters:
source - - source path whose components are examined for existence

list

public java.lang.String[] list()
                        throws ProjectException
Returns all path elements defined by this and nested path objects.

Returns:
list of path elements.
Throws:
ProjectException

toString

public java.lang.String toString()
Returns a textual representation of the path, which can be used as CLASSPATH or PATH environment variable definition.

Overrides:
toString in class java.lang.Object
Returns:
a textual representation of the path.

translatePath

public static java.lang.String[] translatePath(Project project,
                                               java.lang.String source)
Splits a PATH (with : or ; as separators) into its parts.


translateFile

public static java.lang.String translateFile(java.lang.String source)
Returns its argument with all file separator characters replaced so that they match the local OS conventions.


translateFileSep

protected static boolean translateFileSep(java.lang.StringBuffer buffer,
                                          int pos)
Translates all occurrences of / or \ to correct separator of the current platform and returns whether it had to do any replacements.


size

public int size()
How many parts does this Path instance consist of.


clone

public java.lang.Object clone()
Return a Path that holds the same elements as this instance.

Overrides:
clone in class java.lang.Object

dieOnCircularReference

protected void dieOnCircularReference(java.util.Stack stk,
                                      Project p)
                               throws ProjectException
Overrides the version of DataType to recurse on all DataType child elements that may have been added.

Throws:
ProjectException

concatSystemClasspath

public Path concatSystemClasspath()
Concatenates the system class path in the order specified by the ${build.sysclasspath} property - using "last" as default value.


concatSystemClasspath

public Path concatSystemClasspath(java.lang.String defValue)
Concatenates the system class path in the order specified by the ${build.sysclasspath} property - using the supplied value if ${build.sysclasspath} has not been set.


addJavaRuntime

public void addJavaRuntime()
Add the Java Runtime classes to this Path instance.


log

protected void log(java.lang.String message)
Logs a message through the project object if one has been provided.

Parameters:
message - The message to log. Should not be null.
priority - The logging priority of the message.