X-Git-Url: http://git.phpeclipse.com
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/IClasspathEntry.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/IClasspathEntry.java
index 83de070..a9648aa 100644
--- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/IClasspathEntry.java
+++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/IClasspathEntry.java
@@ -12,97 +12,108 @@ package net.sourceforge.phpdt.core;
import org.eclipse.core.runtime.IPath;
-/**
+/**
* An entry on a Java project classpath identifying one or more package fragment
- * roots. A classpath entry has a content kind (either source,
- * K_SOURCE
, or binary, K_BINARY
), which is inherited
- * by each package fragment root and package fragment associated with the entry.
+ * roots. A classpath entry has a content kind (either source,
+ * K_SOURCE
, or binary, K_BINARY
), which is
+ * inherited by each package fragment root and package fragment associated with
+ * the entry.
*
- * A classpath entry can refer to any of the following:
.java
source files. The root folder itself represents a default
- * package, subfolders represent package fragments, and .java
files
- * represent compilation units. All compilation units will be compiled when
- * the project is built. The classpath entry must specify the
- * absolute path to the root folder. Entries of this kind are
- * associated with the CPE_SOURCE
constant.
- * Source classpath entries can carry patterns to exclude selected files.
- * Excluded .java
source files do not appear as compilation
- * units and are not compiled when the project is built.
- * .java
source files. The root folder itself represents a
+ * default package, subfolders represent package fragments, and
+ * .java
files represent compilation units. All compilation units
+ * will be compiled when the project is built. The classpath entry must specify
+ * the absolute path to the root folder. Entries of this kind are associated
+ * with the CPE_SOURCE
constant. Source classpath entries can
+ * carry patterns to exclude selected files. Excluded .java
+ * source files do not appear as compilation units and are not compiled when the
+ * project is built. .class
files. The classpath entry
- * must specify the absolute path to the JAR (or root folder), and in case it refers
- * to an external JAR, then there is no associated resource in the workbench. Entries
- * of this kind are associated with the CPE_LIBRARY
constant..class
files. The
+ * classpath entry must specify the absolute path to the JAR (or root folder),
+ * and in case it refers to an external JAR, then there is no associated
+ * resource in the workbench. Entries of this kind are associated with the
+ * CPE_LIBRARY
constant..class
files when building). When performing other
- * "development" operations - such as code assist, code resolve, type hierarchy
- * creation, etc. - the source code of the project is referred to. Thus, development
- * is performed against a required project's source code, and compilation is
- * performed against a required project's last built state. The
- * classpath entry must specify the absolute path to the
- * project. Entries of this kind are associated with the CPE_PROJECT
- * constant.
- * Note: referencing a required project with a classpath entry refers to the source
- * code or associated .class
files located in its output location.
- * It will also automatically include any other libraries or projects that the required project's classpath
- * refers to, iff the corresponding classpath entries are tagged as being exported
- * (IClasspathEntry#isExported
).
- * Unless exporting some classpath entries, classpaths are not chained by default -
- * each project must specify its own classpath in its entirety..class
files when building). When
+ * performing other "development" operations - such as code assist, code
+ * resolve, type hierarchy creation, etc. - the source code of the project is
+ * referred to. Thus, development is performed against a required project's
+ * source code, and compilation is performed against a required project's last
+ * built state. The classpath entry must specify the absolute path to the
+ * project. Entries of this kind are associated with the
+ * CPE_PROJECT
constant. Note: referencing a required project
+ * with a classpath entry refers to the source code or associated
+ * .class
files located in its output location. It will also
+ * automatically include any other libraries or projects that the required
+ * project's classpath refers to, iff the corresponding classpath entries are
+ * tagged as being exported (IClasspathEntry#isExported
).
+ * Unless exporting some classpath entries, classpaths are not chained by
+ * default - each project must specify its own classpath in its entirety.CPE_VARIABLE
constant.
- * Classpath variables are created using JavaCore#setClasspathVariable
,
- * and gets resolved, to either a project or library entry, using
- * JavaCore#getResolvedClasspathVariable
.
- * It is also possible to register an automatic initializer (ClasspathVariableInitializer
),
- * which will be invoked through the extension point "org.eclipse.jdt.core.classpathVariableInitializer".
- * After resolution, a classpath variable entry may either correspond to a project or a library entry. CPE_VARIABLE
constant. Classpath variables are created using
+ * JavaCore#setClasspathVariable
, and gets resolved, to either a
+ * project or library entry, using
+ * JavaCore#getResolvedClasspathVariable
. It is also possible to
+ * register an automatic initializer (ClasspathVariableInitializer
),
+ * which will be invoked through the extension point
+ * "net.sourceforge.phpdt.core.classpathVariableInitializer". After resolution,
+ * a classpath variable entry may either correspond to a project or a library
+ * entry. CPE_CONTAINER
. Typically, a classpath container can
- * be used to describe a complex library composed of multiple JARs, projects or classpath variables,
- * considering also that containers can be mapped differently on each project. Several projects can
- * reference the same generic container path, but have each of them actually bound to a different
- * container object.
- * The container path is a formed by a first ID segment followed with extra segments,
- * which can be used as additional hints for resolving this container reference. If no container was ever
- * recorded for this container path onto this project (using setClasspathContainer
,
- * then a ClasspathContainerInitializer
will be activated if any was registered for this
- * container ID onto the extension point "org.eclipse.jdt.core.classpathContainerInitializer".
- * A classpath container entry can be resolved explicitly using JavaCore#getClasspathContainer
- * and the resulting container entries can contain any non-container entry. In particular, it may contain variable
- * entries, which in turn needs to be resolved before being directly used.
- * CPE_CONTAINER
.
+ * Typically, a classpath container can be used to describe a complex library
+ * composed of multiple JARs, projects or classpath variables, considering also
+ * that containers can be mapped differently on each project. Several projects
+ * can reference the same generic container path, but have each of them actually
+ * bound to a different container object. The container path is a formed by a
+ * first ID segment followed with extra segments, which can be used as
+ * additional hints for resolving this container reference. If no container was
+ * ever recorded for this container path onto this project (using
+ * setClasspathContainer
, then a
+ * ClasspathContainerInitializer
will be activated if any was
+ * registered for this container ID onto the extension point
+ * "net.sourceforge.phpdt.core.classpathContainerInitializer". A classpath
+ * container entry can be resolved explicitly using
+ * JavaCore#getClasspathContainer
and the resulting container
+ * entries can contain any non-container entry. In particular, it may contain
+ * variable entries, which in turn needs to be resolved before being directly
+ * used. IJavaProject#getResolvedClasspath
will have all entries of type
- * CPE_VARIABLE
and CPE_CONTAINER
resolved to a set of
- * CPE_SOURCE
, CPE_LIBRARY
or CPE_PROJECT
- * classpath entries.
+ * The result of IJavaProject#getResolvedClasspath
will have all
+ * entries of type CPE_VARIABLE
and CPE_CONTAINER
+ * resolved to a set of CPE_SOURCE
, CPE_LIBRARY
+ * or CPE_PROJECT
classpath entries.
*
- * Any classpath entry other than a source folder (kind CPE_SOURCE
) can
- * be marked as being exported. Exported entries are automatically contributed to
- * dependent projects, along with the project's default output folder, which is
- * implicitly exported, and any auxiliary output folders specified on source
- * classpath entries. The project's output folder(s) are always listed first,
- * followed by the any exported entries.
+ * Any classpath entry other than a source folder (kind CPE_SOURCE
)
+ * can be marked as being exported. Exported entries are automatically
+ * contributed to dependent projects, along with the project's default output
+ * folder, which is implicitly exported, and any auxiliary output folders
+ * specified on source classpath entries. The project's output folder(s) are
+ * always listed first, followed by the any exported entries.
*
- * This interface is not intended to be implemented by clients.
- * Classpath entries can be created via methods on JavaCore
.
+ * This interface is not intended to be implemented by clients. Classpath
+ * entries can be created via methods on JavaCore
.
*
IPackageFragmentRoot.K_SOURCE
for files containing
- * source code, and IPackageFragmentRoot.K_BINARY
for binary
- * class files.
- * There is no specified value for an entry denoting a variable (CPE_VARIABLE
)
- * or a classpath container (CPE_CONTAINER
).
+ * source code, and IPackageFragmentRoot.K_BINARY
for
+ * binary class files. There is no specified value for an entry
+ * denoting a variable (CPE_VARIABLE
) or a
+ * classpath container (CPE_CONTAINER
).
*/
int getContentKind();
/**
* Returns the kind of this classpath entry.
- *
+ *
* @return one of:
- * CPE_SOURCE
- this entry describes a source root in
- its project
- * CPE_LIBRARY
- this entry describes a folder or JAR
- containing binaries
- * CPE_PROJECT
- this entry describes another project
- *
- * CPE_VARIABLE
- this entry describes a project or library
- * indirectly via a classpath variable in the first segment of the path
- * *
+ * CPE_SOURCE
- this entry describes a source
+ * root in its project
+ * CPE_LIBRARY
- this entry describes a folder
+ * or JAR containing binaries
+ * CPE_PROJECT
- this entry describes another
+ * project
+ *
+ * CPE_VARIABLE
- this entry describes a project or
+ * library indirectly via a classpath variable in the first segment of the
+ * path *
* CPE_CONTAINER
- this entry describes set of entries
- * referenced indirectly via a classpath container
+ * referenced indirectly via a classpath container
* @@ -197,111 +208,154 @@ public interface IClasspathEntry { *
** The pattern mechanism is similar to Ant's. Each pattern is represented as - * a relative path. The path segments can be regular file or folder names or simple patterns - * involving standard wildcard characters. + * a relative path. The path segments can be regular file or folder names or + * simple patterns involving standard wildcard characters. *
*
- * '*' matches 0 or more characters within a segment. So
- * *.java
matches .java
, a.java
- * and Foo.java
, but not Foo.properties
- * (does not end with .java
).
+ * '*' matches 0 or more characters within a segment. So *.java
+ * matches .java
, a.java
and
+ * Foo.java
, but not Foo.properties
(does not
+ * end with .java
).
*
- * '?' matches 1 character within a segment. So ?.java
- * matches a.java
, A.java
,
- * but not .java
or xyz.java
(neither have
- * just one character before .java
).
+ * '?' matches 1 character within a segment. So ?.java
+ * matches a.java
, A.java
, but not
+ * .java
or xyz.java
(neither have just one
+ * character before .java
).
*
* Combinations of *'s and ?'s are allowed. *
*
- * The special pattern '**' matches zero or more segments. A path
- * like tests/
that ends in a trailing separator is interpreted
- * as tests/**
, and would match all files under the
- * the folder named tests
.
+ * The special pattern '**' matches zero or more segments. A path like
+ * tests/
that ends in a trailing separator is interpreted as
+ * tests/**
, and would match all files under the the
+ * folder named tests
.
*
* Examples: *
tests/**
(or simply tests/
)
- * matches all files under a root folder
- * named tests
. This includes tests/Foo.java
- * and tests/com/example/Foo.java
, but not
+ * tests/**
(or simply tests/
)
+ * matches all files under a root folder named tests
. This
+ * includes tests/Foo.java
and
+ * tests/com/example/Foo.java
, but not
* com/example/tests/Foo.java
(not under a root folder named
- * tests
).
- * tests/*
matches all files directly below a root
- * folder named tests
. This includes tests/Foo.java
- * and tests/FooHelp.java
- * but not tests/com/example/Foo.java
(not directly under
- * a folder named tests
) or
- * com/Foo.java
(not under a folder named tests
).
- * **/tests/**
matches all files under any
- * folder named tests
. This includes tests/Foo.java
,
- * com/examples/tests/Foo.java
, and
- * com/examples/tests/unit/Foo.java
, but not
+ * tests
). tests/*
matches all files directly below a root
+ * folder named tests
. This includes
+ * tests/Foo.java
and tests/FooHelp.java
but
+ * not tests/com/example/Foo.java
(not directly under a
+ * folder named tests
) or com/Foo.java
(not
+ * under a folder named tests
). **/tests/**
matches all files under
+ * any folder named tests
. This includes
+ * tests/Foo.java
, com/examples/tests/Foo.java
,
+ * and com/examples/tests/unit/Foo.java
, but not
* com/example/Foo.java
(not under a folder named
- * tests
).
- * tests
). null
for other
- * kinds of classpath entries
+ * @return the possibly empty list of resource exclusion patterns associated
+ * with this source entry, and null
for other kinds
+ * of classpath entries
* @since 2.1
*/
IPath[] getExclusionPatterns();
-
+
+ /**
+ * Returns the set of patterns used to explicitly define resources to be
+ * included with this source entry.
+ * + * When no inclusion patterns are specified, the source entry includes all + * relevent files in the resource tree rooted at this source entry's path. + * Specifying one or more inclusion patterns means that only the specified + * portions of the resource tree are to be included. Each path specified + * must be a relative path, and will be interpreted relative to this source + * entry's path. File patterns are case-sensitive. A file matched by one or + * more of these patterns is included in the corresponding package fragment + * root unless it is excluded by one or more of this entrie's exclusion + * patterns. Exclusion patterns have higher precedence than inclusion + * patterns; in other words, exclusion patterns can remove files for the + * ones that are to be included, not the other way around. + *
+ *
+ * See {@link #getExclusionPatterns()} for a discussion of the syntax and
+ * semantics of path patterns. The absence of any inclusion patterns is
+ * semantically equivalent to the explicit inclusion pattern
+ * **
.
+ *
+ * Examples: + *
src/**
by itself
+ * includes all files under a root folder named src
. src/**
and
+ * tests/**
includes all files under the root folders
+ * named src
and tests
. src/**
together with
+ * the exclusion pattern src/**/Foo.java
includes all
+ * files under a root folder named src
except for ones named
+ * Foo.java
. null
for other kinds
+ * of classpath entries
+ * @since 3.0
+ */
+ IPath[] getInclusionPatterns();
+
/**
- * Returns the full path to the specific location where the builder writes
- * .class
files generated for this source entry
- * (entry kind CPE_SOURCE
).
+ * Returns the full path to the specific location where the builder writes
+ * .class
files generated for this source entry (entry kind
+ * CPE_SOURCE
).
*
- * Source entries can optionally be associated with a specific output location.
- * If none is provided, the source entry will be implicitly associated with its project
- * default output location (see IJavaProject#getOutputLocation
).
- *
- * NOTE: A specific output location cannot coincidate with another source/library entry.
+ * Source entries can optionally be associated with a specific output
+ * location. If none is provided, the source entry will be implicitly
+ * associated with its project default output location (see
+ * IJavaProject#getOutputLocation
).
+ *
+ * NOTE: A specific output location cannot coincidate with another + * source/library entry. *
* - * @return the full path to the specific location where the builder writes - *.class
files for this source entry, or null
- * if using default output folder
+ * @return the full path to the specific location where the builder writes
+ * .class
files for this source entry, or
+ * null
if using default output folder
* @since 2.1
*/
IPath getOutputLocation();
-
+
/**
* Returns the path of this classpath entry.
- *
- * The meaning of the path of a classpath entry depends on its entry kind:CPE_SOURCE
) -
- * The path associated with this entry is the absolute path to the root folder. CPE_LIBRARY
) - the path
- * associated with this entry is the absolute path to the JAR (or root folder), and
- * in case it refers to an external JAR, then there is no associated resource in
- * the workbench.
- * CPE_PROJECT
) - the path of the entry denotes the
- * path to the corresponding project resource.CPE_VARIABLE
) - the first segment of the path
- * is the name of a classpath variable. If this classpath variable
- * is bound to the path CPE_CONTAINER
) - the path of the entry
- * is the name of the classpath container, which can be bound indirectly to a set of classpath
- * entries after resolution. The containerPath is a formed by a first ID segment followed with
- * extra segments that can be used as additional hints for resolving this container
- * reference (also see IClasspathContainer
).
- * CPE_SOURCE
) -
+ * The path associated with this entry is the absolute path to the root
+ * folder. CPE_LIBRARY
) -
+ * the path associated with this entry is the absolute path to the JAR (or
+ * root folder), and in case it refers to an external JAR, then there is no
+ * associated resource in the workbench.
+ * CPE_PROJECT
) - the path of the
+ * entry denotes the path to the corresponding project resource.CPE_VARIABLE
) - the first segment
+ * of the path is the name of a classpath variable. If this classpath
+ * variable is bound to the path CPE_CONTAINER
) - the path of the
+ * entry is the name of the classpath container, which can be bound
+ * indirectly to a set of classpath entries after resolution. The
+ * containerPath is a formed by a first ID segment followed with extra
+ * segments that can be used as additional hints for resolving this
+ * container reference (also see IClasspathContainer
). * Only library and variable classpath entries may have source attachments. - * For library classpath entries, the result path (if present) locates a source - * archive or folder. This archive or folder can be located in a project of the - * workspace or outside thr workspace. For variable classpath entries, the - * result path (if present) has an analogous form and meaning as the - * variable path, namely the first segment is the name of a classpath variable. + * For library classpath entries, the result path (if present) locates a + * source archive or folder. This archive or folder can be located in a + * project of the workspace or outside thr workspace. For variable classpath + * entries, the result path (if present) has an analogous form and meaning + * as the variable path, namely the first segment is the name of a classpath + * variable. *
- * - * @return the path to the source archive or folder, ornull
if none
+ *
+ * @return the path to the source archive or folder, or null
+ * if none
*/
IPath getSourceAttachmentPath();
/**
- * Returns the path within the source archive or folder where package fragments
- * are located. An empty path indicates that packages are located at
- * the root of the source archive or folder. Returns a non-null
value
- * if and only if getSourceAttachmentPath
returns
- * a non-null
value.
- *
- * @return the path within the source archive or folder, or null
if
- * not applicable
+ * Returns the path within the source archive or folder where package
+ * fragments are located. An empty path indicates that packages are located
+ * at the root of the source archive or folder. Returns a non-null
+ * value if and only if getSourceAttachmentPath
returns a
+ * non-null
value.
+ *
+ * @return the path within the source archive or folder, or
+ * null
if not applicable
*/
IPath getSourceAttachmentRootPath();
-
+
/**
- * Returns whether this entry is exported to dependent projects.
- * Always returns false
for source entries (kind
+ * Returns whether this entry is exported to dependent projects. Always
+ * returns false
for source entries (kind
* CPE_SOURCE
), which cannot be exported.
*
- * @return true
if exported, and false
otherwise
+ * @return true
if exported, and false
+ * otherwise
* @since 2.0
*/
boolean isExported();
-
+
/**
- * This is a helper method, which returns the resolved classpath entry denoted
- * by an entry (if it is a variable entry). It is obtained by resolving the variable
- * reference in the first segment. Returns null
null
- * Variable source attachment is also resolved and recorded in the resulting classpath entry. + * Variable source attachment is also resolved and recorded in the resulting + * classpath entry. *
+ *
* @return the resolved library or project classpath entry, or null
- * if the given path could not be resolved to a classpath entry
- *
- * Note that this deprecated API doesn't handle CPE_CONTAINER entries. + * if the given path could not be resolved to a classpath entry + *
+ * Note that this deprecated API doesn't handle CPE_CONTAINER + * entries. * * @deprecated - use JavaCore.getResolvedClasspathEntry(...) */ - IClasspathEntry getResolvedEntry(); + IClasspathEntry getResolvedEntry(); }