org.eclipse.wst.jsdt.core
Interface IJavaScriptProject

All Superinterfaces:
IJavaScriptElement, ILookupScope, IOpenable, IParent

public interface IJavaScriptProject
extends IParent, IJavaScriptElement, IOpenable

A JavaScript project represents a view of a project resource in terms of JavaScript elements such as package fragments, types, methods and fields. A project may contain several source folders (package roots), which contain source folders (package fragments). A package root corresponds to an underlying folder.

Each JavaScript project has a includepath, defining which folders contain source code and where required libraries are located. A project that references packages in another project can access the packages by including the required project in a includepath entry. The JavaScript model will present the source elements in the required project. The includepath format is a sequence of includepath entries describing the location and contents of package fragment roots.

JavaScript project elements need to be opened before they can be navigated or manipulated. The children of a JavaScript project are the package fragment roots that are defined by the includepath and contained in this project (in other words, it does not include package fragment roots for other projects).

This interface is not intended to be implemented by clients. An instance of one of these handles can be created via JavaScriptCore.create(project).

See Also:
JavaScriptCore#create(org.eclipse.core.resources.IProject), Provisional API: This class/interface is part of an interim API that is still under development and expected to change significantly before reaching stability. It is being made available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.

Field Summary
 
Fields inherited from interface org.eclipse.wst.jsdt.core.IJavaScriptElement
CLASS_FILE, FIELD, IMPORT_CONTAINER, IMPORT_DECLARATION, INITIALIZER, JAVASCRIPT_MODEL, JAVASCRIPT_PROJECT, JAVASCRIPT_UNIT, LOCAL_VARIABLE, METHOD, PACKAGE_DECLARATION, PACKAGE_FRAGMENT, PACKAGE_FRAGMENT_ROOT, TYPE, TYPE_PARAMETER
 
Method Summary
 IIncludePathEntry decodeIncludepathEntry(java.lang.String encodedEntry)
          Decodes the includepath entry that has been encoded in the given string in the context of this project.
 java.lang.String encodeIncludepathEntry(IIncludePathEntry includepathEntry)
          Encodes the given includepath entry into a string in the context of this project.
 IJavaScriptElement findElement(IPath path)
          Returns the IJavaScriptElement corresponding to the given includepath-relative path, or null if no such IJavaScriptElement is found.
 IJavaScriptElement findElement(IPath path, WorkingCopyOwner owner)
          Returns the IJavaScriptElement corresponding to the given includepath-relative path, or null if no such IJavaScriptElement is found.
 IPackageFragment findPackageFragment(IPath path)
          Returns the first existing package fragment on this project's includepath whose path matches the given (absolute) path, or null if none exist.
 IPackageFragmentRoot findPackageFragmentRoot(IPath path)
          Returns the existing package fragment root on this project's includepath whose path matches the given (absolute) path, or null if one does not exist.
 IPackageFragmentRoot[] findPackageFragmentRoots(IIncludePathEntry entry)
          Returns the existing package fragment roots identified by the given entry.
 IType findType(java.lang.String fullyQualifiedName)
          Returns the first type found following this project's includepath with the given fully qualified name or null if none is found.
 IType findType(java.lang.String fullyQualifiedName, IProgressMonitor progressMonitor)
          Same functionality as findType(String) but also look for secondary types if given name does not match a javaScript unit name.
 IType findType(java.lang.String packageName, java.lang.String typeQualifiedName, IProgressMonitor progressMonitor)
          Same functionality as #findType(String, String) but also look for secondary types if given name does not match a javaScript unit name.
 IType findType(java.lang.String packageName, java.lang.String typeQualifiedName, WorkingCopyOwner owner, IProgressMonitor progressMonitor)
          Same functionality as #findType(String, String, WorkingCopyOwner) but also look for secondary types if given name does not match a javaScript unit name.
 IType findType(java.lang.String fullyQualifiedName, WorkingCopyOwner owner, IProgressMonitor progressMonitor)
          Same functionality as #findType(String, WorkingCopyOwner) but also look for secondary types if given name does not match a javaScript unit name.
 ITypeRoot findTypeRoot(java.lang.String fullyQualifiedName)
           
 IPackageFragmentRoot[] getAllPackageFragmentRoots()
          Returns all of the existing package fragment roots that exist on the includepath, in the order they are defined by the includepath.
 IFile getJSDTScopeFile()
           
 java.lang.Object[] getNonJavaScriptResources()
          Returns an array of non-JavaScript resources directly contained in this project.
 java.lang.String getOption(java.lang.String optionName, boolean inheritJavaCoreOptions)
          Helper method for returning one option value only.
 java.util.Map getOptions(boolean inheritJavaCoreOptions)
          Returns the table of the current custom options for this project.
 IPath getOutputLocation()
          Returns the default output location for this project as a workspace- relative absolute path.
 IPackageFragmentRoot getPackageFragmentRoot(java.lang.String filePath)
          Returns a package fragment root for the file at the specified file system path.
 IPackageFragmentRoot[] getPackageFragmentRoots()
          Returns all of the package fragment roots contained in this project, identified on this project's resolved includepath.
 IPackageFragment[] getPackageFragments()
          Returns all package fragments in all package fragment roots contained in this project.
 IProject getProject()
          Returns the IProject on which this IJavaScriptProject was created.
 IIncludePathEntry[] getRawIncludepath()
          Returns the raw includepath for the project, as a list of includepath entries.
 java.lang.String[] getRequiredProjectNames()
          Returns the names of the projects that are directly required by this project.
 IIncludePathEntry[] getResolvedIncludepath(boolean ignoreUnresolvedEntry)
          This is a helper method returning the resolved includepath for the project as a list of simple (non-variable, non-container) includepath entries.
 boolean hasBuildState()
          Returns whether this project has been built at least once and thus whether it has a build state.
 boolean hasIncludepathCycle(IIncludePathEntry[] entries)
          Returns whether setting this project's includepath to the given includepath entries would result in a cycle.
 boolean isOnIncludepath(IJavaScriptElement element)
          Returns whether the given element is on the includepath of this project, that is, referenced from a includepath entry and not explicitly excluded using an exclusion pattern.
 IEvaluationContext newEvaluationContext()
          Creates a new evaluation context.
 ITypeHierarchy newTypeHierarchy(IRegion region, IProgressMonitor monitor)
          Creates and returns a type hierarchy for all types in the given region, considering subtypes within that region.
 ITypeHierarchy newTypeHierarchy(IRegion region, WorkingCopyOwner owner, IProgressMonitor monitor)
          Creates and returns a type hierarchy for all types in the given region, considering subtypes within that region and considering types in the working copies with the given owner.
 ITypeHierarchy newTypeHierarchy(IType type, IRegion region, IProgressMonitor monitor)
          Creates and returns a type hierarchy for the given type considering subtypes in the specified region.
 ITypeHierarchy newTypeHierarchy(IType type, IRegion region, WorkingCopyOwner owner, IProgressMonitor monitor)
          Creates and returns a type hierarchy for the given type considering subtypes in the specified region and considering types in the working copies with the given owner.
 IPath readOutputLocation()
          Returns the default output location for the project as defined by its .jsdtScope file from disk, or null if unable to read the file.
 IIncludePathEntry[] readRawIncludepath()
          Returns the raw includepath for the project as defined by its .jsdtScope file from disk, or null if unable to read the file.
 void setOption(java.lang.String optionName, java.lang.String optionValue)
          Helper method for setting one option value only.
 void setOptions(java.util.Map newOptions)
          Sets the project custom options.
 void setOutputLocation(IPath path, IProgressMonitor monitor)
          Sets the default output location of this project to the location described by the given workspace-relative absolute path.
 void setRawIncludepath(IIncludePathEntry[] entries, boolean canModifyResources, IProgressMonitor monitor)
          Sets the includepath of this project using a list of includepath entries.
 void setRawIncludepath(IIncludePathEntry[] entries, IPath outputLocation, boolean canModifyResources, IProgressMonitor monitor)
          Sets both the includepath of this project and its default output location at once.
 void setRawIncludepath(IIncludePathEntry[] entries, IProgressMonitor monitor)
          Sets the includepath of this project using a list of includepath entries.
 
Methods inherited from interface org.eclipse.wst.jsdt.core.IParent
getChildren, hasChildren
 
Methods inherited from interface org.eclipse.wst.jsdt.core.IJavaScriptElement
exists, getAncestor, getAttachedJavadoc, getCommonSuperType, getCorrespondingResource, getDisplayName, getElementName, getElementType, getHandleIdentifier, getHostPath, getJavaScriptModel, getJavaScriptProject, getOpenable, getParent, getPath, getPrimaryElement, getResource, getSchedulingRule, getUnderlyingResource, isReadOnly, isStructureKnown, isVirtual
 
Methods inherited from interface org.eclipse.wst.jsdt.core.ILookupScope
newNameLookup, newNameLookup, newSearchableNameEnvironment, newSearchableNameEnvironment
 
Methods inherited from interface org.eclipse.wst.jsdt.core.IOpenable
close, findRecommendedLineSeparator, getBuffer, hasUnsavedChanges, isConsistent, isOpen, makeConsistent, open, save
 

Method Detail

getJSDTScopeFile

IFile getJSDTScopeFile()

decodeIncludepathEntry

IIncludePathEntry decodeIncludepathEntry(java.lang.String encodedEntry)
Decodes the includepath entry that has been encoded in the given string in the context of this project. Returns null if the encoded entry is malformed.

Parameters:
encodedEntry - the encoded includepath entry
Returns:
the decoded includepath entry, or null if unable to decode it

encodeIncludepathEntry

java.lang.String encodeIncludepathEntry(IIncludePathEntry includepathEntry)
Encodes the given includepath entry into a string in the context of this project.

Parameters:
includepathEntry - the includepath entry to encode
Returns:
the encoded includepath entry

findElement

IJavaScriptElement findElement(IPath path)
                               throws JavaScriptModelException
Returns the IJavaScriptElement corresponding to the given includepath-relative path, or null if no such IJavaScriptElement is found. The result is one of an IJavaScriptUnit, IClassFile, or IPackageFragment.

When looking for a package fragment, there might be several potential matches; only one of them is returned.

For example, the path "java/lang/Object.js", would result in the IJavaScriptUnit or IClassFile corresponding to "java.lang.Object". The path "java/lang" would result in the IPackageFragment for "java.lang".

Parameters:
path - the given includepath-relative path
Returns:
the IJavaScriptElement corresponding to the given includepath-relative path, or null if no such IJavaScriptElement is found
Throws:
JavaScriptModelException - if the given path is null or absolute

findElement

IJavaScriptElement findElement(IPath path,
                               WorkingCopyOwner owner)
                               throws JavaScriptModelException
Returns the IJavaScriptElement corresponding to the given includepath-relative path, or null if no such IJavaScriptElement is found. The result is one of an IJavaScriptUnit, IClassFile, or IPackageFragment. If it is an IJavaScriptUnit, its owner is the given owner.

When looking for a package fragment, there might be several potential matches; only one of them is returned.

For example, the path "java/lang/Object.js", would result in the IJavaScriptUnit or IClassFile corresponding to "java.lang.Object". The path "java/lang" would result in the IPackageFragment for "java.lang".

Parameters:
path - the given includepath-relative path
owner - the owner of the returned javaScript unit, ignored if it is not a javaScript unit.
Returns:
the IJavaScriptElement corresponding to the given includepath-relative path, or null if no such IJavaScriptElement is found
Throws:
JavaScriptModelException - if the given path is null or absolute

findPackageFragment

IPackageFragment findPackageFragment(IPath path)
                                     throws JavaScriptModelException
Returns the first existing package fragment on this project's includepath whose path matches the given (absolute) path, or null if none exist. The path can be: - internal to the workbench: "/Project/src" - external to the workbench: "c:/jdk/classes.zip/java/lang"

Parameters:
path - the given absolute path
Returns:
the first existing package fragment on this project's includepath whose path matches the given (absolute) path, or null if none exist
Throws:
JavaScriptModelException - if this project does not exist or if an exception occurs while accessing its corresponding resource

findPackageFragmentRoot

IPackageFragmentRoot findPackageFragmentRoot(IPath path)
                                             throws JavaScriptModelException
Returns the existing package fragment root on this project's includepath whose path matches the given (absolute) path, or null if one does not exist. The path can be: - internal to the workbench: "/Compiler/src" - external to the workbench: "c:/jdk/classes.zip"

Parameters:
path - the given absolute path
Returns:
the existing package fragment root on this project's includepath whose path matches the given (absolute) path, or null if one does not exist
Throws:
JavaScriptModelException - if this project does not exist or if an exception occurs while accessing its corresponding resource

findPackageFragmentRoots

IPackageFragmentRoot[] findPackageFragmentRoots(IIncludePathEntry entry)
Returns the existing package fragment roots identified by the given entry. Note that a includepath entry that refers to another project may have more than one root (if that project has more than on root containing source), and includepath entries within the current project identify a single root.

If the includepath entry denotes a variable, it will be resolved and return the roots of the target entry (empty if not resolvable).

If the includepath entry denotes a container, it will be resolved and return the roots corresponding to the set of container entries (empty if not resolvable).

Parameters:
entry - the given entry
Returns:
the existing package fragment roots identified by the given entry
See Also:
IJsGlobalScopeContainer

findType

IType findType(java.lang.String fullyQualifiedName)
               throws JavaScriptModelException
Returns the first type found following this project's includepath with the given fully qualified name or null if none is found. The fully qualified name is a dot-separated name. For example, a class B defined as a member type of a class A in package x.y should have a the fully qualified name "x.y.A.B". Note that in order to be found, a type name (or its toplevel enclosing type name) must match its corresponding javaScript unit name. As a consequence, secondary types cannot be found using this functionality. To find secondary types use findType(String, IProgressMonitor) instead.

Parameters:
fullyQualifiedName - the given fully qualified name
Returns:
the first type found following this project's includepath with the given fully qualified name or null if none is found
Throws:
JavaScriptModelException - if this project does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IType.getFullyQualifiedName(char)

findType

IType findType(java.lang.String fullyQualifiedName,
               IProgressMonitor progressMonitor)
               throws JavaScriptModelException
Same functionality as findType(String) but also look for secondary types if given name does not match a javaScript unit name.

Parameters:
fullyQualifiedName - the given fully qualified name
progressMonitor - the progress monitor to report progress to, or null if no progress monitor is provided
Returns:
the first type found following this project's includepath with the given fully qualified name or null if none is found
Throws:
JavaScriptModelException - if this project does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IType.getFullyQualifiedName(char)

findType

IType findType(java.lang.String fullyQualifiedName,
               WorkingCopyOwner owner,
               IProgressMonitor progressMonitor)
               throws JavaScriptModelException
Same functionality as #findType(String, WorkingCopyOwner) but also look for secondary types if given name does not match a javaScript unit name.

Parameters:
fullyQualifiedName - the given fully qualified name
owner - the owner of the returned type's javaScript unit
progressMonitor - the progress monitor to report progress to, or null if no progress monitor is provided
Returns:
the first type found following this project's includepath with the given fully qualified name or null if none is found
Throws:
JavaScriptModelException - if this project does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IType.getFullyQualifiedName(char)

findType

IType findType(java.lang.String packageName,
               java.lang.String typeQualifiedName,
               IProgressMonitor progressMonitor)
               throws JavaScriptModelException
Same functionality as #findType(String, String) but also look for secondary types if given name does not match a javaScript unit name.

Parameters:
packageName - the given package name
typeQualifiedName - the given type qualified name
progressMonitor - the progress monitor to report progress to, or null if no progress monitor is provided
Returns:
the first type found following this project's includepath with the given fully qualified name or null if none is found
Throws:
JavaScriptModelException - if this project does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IType.getFullyQualifiedName(char)

findType

IType findType(java.lang.String packageName,
               java.lang.String typeQualifiedName,
               WorkingCopyOwner owner,
               IProgressMonitor progressMonitor)
               throws JavaScriptModelException
Same functionality as #findType(String, String, WorkingCopyOwner) but also look for secondary types if given name does not match a javaScript unit name.

Parameters:
packageName - the given package name
typeQualifiedName - the given type qualified name
owner - the owner of the returned type's javaScript unit
progressMonitor - the progress monitor to report progress to, or null if no progress monitor is provided
Returns:
the first type found following this project's includepath with the given fully qualified name or null if none is found
Throws:
JavaScriptModelException - if this project does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IType.getFullyQualifiedName(char)

getAllPackageFragmentRoots

IPackageFragmentRoot[] getAllPackageFragmentRoots()
                                                  throws JavaScriptModelException
Returns all of the existing package fragment roots that exist on the includepath, in the order they are defined by the includepath.

Returns:
all of the existing package fragment roots that exist on the includepath
Throws:
JavaScriptModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource

getNonJavaScriptResources

java.lang.Object[] getNonJavaScriptResources()
                                             throws JavaScriptModelException
Returns an array of non-JavaScript resources directly contained in this project. It does not transitively answer non-JavaScript resources contained in folders; these would have to be explicitly iterated over.

Non-JavaScript resources includes other files and folders located in the project not accounted for by any of it source or binary package fragment roots. If the project is a source folder itself, resources excluded from the corresponding source includepath entry by one or more exclusion patterns are considered non-JavaScript resources and will appear in the result (possibly in a folder)

Returns:
an array of non-JavaScript resources (IFiles and/or IFolders) directly contained in this project
Throws:
JavaScriptModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource

getOption

java.lang.String getOption(java.lang.String optionName,
                           boolean inheritJavaCoreOptions)
Helper method for returning one option value only. Equivalent to (String)this.getOptions(inheritJavaCoreOptions).get(optionName) Note that it may answer null if this option does not exist, or if there is no custom value for it.

For a complete description of the configurable options, see JavaScriptCore#getDefaultOptions.

Parameters:
optionName - the name of an option
inheritJavaCoreOptions - - boolean indicating whether JavaScriptCore options should be inherited as well
Returns:
the String value of a given option
See Also:
JavaScriptCore.getDefaultOptions()

getOptions

java.util.Map getOptions(boolean inheritJavaCoreOptions)
Returns the table of the current custom options for this project. Projects remember their custom options, in other words, only the options different from the the JavaScriptCore global options for the workspace. A boolean argument allows to directly merge the project options with global ones from JavaScriptCore.

For a complete description of the configurable options, see JavaScriptCore#getDefaultOptions.

Parameters:
inheritJavaCoreOptions - - boolean indicating whether JavaScriptCore options should be inherited as well
Returns:
table of current settings of all options (key type: String; value type: String)
See Also:
JavaScriptCore.getDefaultOptions()

getOutputLocation

IPath getOutputLocation()
                        throws JavaScriptModelException
Returns the default output location for this project as a workspace- relative absolute path.

The default output location is where class files are ordinarily generated (and resource files, copied). Each source includepath entry can also specify an output location for the generated class files (and copied resource files) corresponding to javaScript units under that source folder. This makes it possible to arrange generated class files for different source folders in different output folders, and not necessarily the default output folder. This means that the generated class files for the project may end up scattered across several folders, rather than all in the default output folder (which is more standard).

Returns:
the workspace-relative absolute path of the default output folder
Throws:
JavaScriptModelException - if this element does not exist
See Also:
#setOutputLocation(org.eclipse.core.runtime.IPath, IProgressMonitor), IIncludePathEntry.getOutputLocation()

getPackageFragmentRoot

IPackageFragmentRoot getPackageFragmentRoot(java.lang.String filePath)
Returns a package fragment root for the file at the specified file system path. This is a handle-only method. The underlying java.io.File may or may not exist. No resource is associated with this local file package fragment root.

Parameters:
filePath - the file system path
Returns:
a package fragment root for the file at the specified file system path

getPackageFragmentRoots

IPackageFragmentRoot[] getPackageFragmentRoots()
                                               throws JavaScriptModelException
Returns all of the package fragment roots contained in this project, identified on this project's resolved includepath. The result does not include package fragment roots in other projects referenced on this project's includepath.

NOTE: This is equivalent to getChildren().

Returns:
all of the package fragment roots contained in this project, identified on this project's resolved includepath
Throws:
JavaScriptModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource

getPackageFragments

IPackageFragment[] getPackageFragments()
                                       throws JavaScriptModelException
Returns all package fragments in all package fragment roots contained in this project. This is a convenience method. Note that the package fragment roots corresponds to the resolved includepath of the project.

Returns:
all package fragments in all package fragment roots contained in this project
Throws:
JavaScriptModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource

getProject

IProject getProject()
Returns the IProject on which this IJavaScriptProject was created. This is handle-only method.

Returns:
the IProject on which this IJavaScriptProject was created

getRawIncludepath

IIncludePathEntry[] getRawIncludepath()
                                      throws JavaScriptModelException
Returns the raw includepath for the project, as a list of includepath entries. This corresponds to the exact set of entries which were assigned using setRawIncludepath, in particular such a includepath may contain includepath variable and includepath container entries. Includepath variable and includepath container entries can be resolved using the helper method getResolvedIncludepath; includepath variable entries also can be resolved individually using JavaScriptCore#getIncludepathVariable).

Both includepath containers and includepath variables provides a level of indirection that can make the .jsdtScope file stable across workspaces.

Note that in case the project isn't yet opened, the includepath will be read directly from the associated .jsdtScope file.

Returns:
the raw includepath for the project, as a list of includepath entries
Throws:
JavaScriptModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IIncludePathEntry

getRequiredProjectNames

java.lang.String[] getRequiredProjectNames()
                                           throws JavaScriptModelException
Returns the names of the projects that are directly required by this project. A project is required if it is in its includepath.

The project names are returned in the order they appear on the includepath.

Returns:
the names of the projects that are directly required by this project in includepath order
Throws:
JavaScriptModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource

getResolvedIncludepath

IIncludePathEntry[] getResolvedIncludepath(boolean ignoreUnresolvedEntry)
                                           throws JavaScriptModelException
This is a helper method returning the resolved includepath for the project as a list of simple (non-variable, non-container) includepath entries. All includepath variable and includepath container entries in the project's raw includepath will be replaced by the simple includepath entries they resolve to.

The resulting resolved includepath is accurate for the given point in time. If the project's raw includepath is later modified, or if includepath variables are changed, the resolved includepath can become out of date. Because of this, hanging on resolved includepath is not recommended.

Parameters:
ignoreUnresolvedEntry - indicates how to handle unresolvable variables and containers; true indicates that missing variables and unresolvable includepath containers should be silently ignored, and that the resulting list should consist only of the entries that could be successfully resolved; false indicates that a JavaScriptModelException should be thrown for the first unresolved variable or container
Returns:
the resolved includepath for the project as a list of simple includepath entries, where all includepath variable and container entries have been resolved and substituted with their final target entries
Throws:
JavaScriptModelException - in one of the corresponding situation:
  • this element does not exist
  • an exception occurs while accessing its corresponding resource
  • a includepath variable or includepath container was not resolvable and ignoreUnresolvedEntry is false.
See Also:
IIncludePathEntry

hasBuildState

boolean hasBuildState()
Returns whether this project has been built at least once and thus whether it has a build state.

Returns:
true if this project has been built at least once, false otherwise

hasIncludepathCycle

boolean hasIncludepathCycle(IIncludePathEntry[] entries)
Returns whether setting this project's includepath to the given includepath entries would result in a cycle. If the set of entries contains some variables, those are resolved in order to determine cycles.

Parameters:
entries - the given includepath entries
Returns:
true if the given includepath entries would result in a cycle, false otherwise

isOnIncludepath

boolean isOnIncludepath(IJavaScriptElement element)
Returns whether the given element is on the includepath of this project, that is, referenced from a includepath entry and not explicitly excluded using an exclusion pattern.

Parameters:
element - the given element
Returns:
true if the given element is on the includepath of this project, false otherwise
See Also:
IIncludePathEntry.getInclusionPatterns(), IIncludePathEntry.getExclusionPatterns()

newEvaluationContext

IEvaluationContext newEvaluationContext()
Creates a new evaluation context.

Returns:
a new evaluation context.

newTypeHierarchy

ITypeHierarchy newTypeHierarchy(IRegion region,
                                IProgressMonitor monitor)
                                throws JavaScriptModelException
Creates and returns a type hierarchy for all types in the given region, considering subtypes within that region.

Parameters:
monitor - the given progress monitor
region - the given region
Returns:
a type hierarchy for all types in the given region, considering subtypes within that region
Throws:
JavaScriptModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource
java.lang.IllegalArgumentException - if region is null

newTypeHierarchy

ITypeHierarchy newTypeHierarchy(IRegion region,
                                WorkingCopyOwner owner,
                                IProgressMonitor monitor)
                                throws JavaScriptModelException
Creates and returns a type hierarchy for all types in the given region, considering subtypes within that region and considering types in the working copies with the given owner. In other words, the owner's working copies will take precedence over their original javaScript units in the workspace.

Note that if a working copy is empty, it will be as if the original javaScript unit had been deleted.

Parameters:
monitor - the given progress monitor
region - the given region
owner - the owner of working copies that take precedence over their original javaScript units
Returns:
a type hierarchy for all types in the given region, considering subtypes within that region
Throws:
JavaScriptModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource
java.lang.IllegalArgumentException - if region is null

newTypeHierarchy

ITypeHierarchy newTypeHierarchy(IType type,
                                IRegion region,
                                IProgressMonitor monitor)
                                throws JavaScriptModelException
Creates and returns a type hierarchy for the given type considering subtypes in the specified region.

Parameters:
type - the given type
region - the given region
monitor - the given monitor
Returns:
a type hierarchy for the given type considering subtypes in the specified region
Throws:
JavaScriptModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource
java.lang.IllegalArgumentException - if type or region is null

newTypeHierarchy

ITypeHierarchy newTypeHierarchy(IType type,
                                IRegion region,
                                WorkingCopyOwner owner,
                                IProgressMonitor monitor)
                                throws JavaScriptModelException
Creates and returns a type hierarchy for the given type considering subtypes in the specified region and considering types in the working copies with the given owner. In other words, the owner's working copies will take precedence over their original javaScript units in the workspace.

Note that if a working copy is empty, it will be as if the original javaScript unit had been deleted.

Parameters:
type - the given type
region - the given region
monitor - the given monitor
owner - the owner of working copies that take precedence over their original javaScript units
Returns:
a type hierarchy for the given type considering subtypes in the specified region
Throws:
JavaScriptModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource
java.lang.IllegalArgumentException - if type or region is null

readOutputLocation

IPath readOutputLocation()
Returns the default output location for the project as defined by its .jsdtScope file from disk, or null if unable to read the file.

This output location may differ from the in-memory one returned by getOutputLocation, in case the automatic reconciliation mechanism has not been performed yet. Usually, any change to the .classpath file is automatically noticed and reconciled at the next resource change notification event. However, if the file is modified within an operation, where this change needs to be taken into account before the operation ends, then the output location from disk can be read using this method, and further assigned to the project using setRawIncludepath(...).

The default output location is where class files are ordinarily generated (and resource files, copied). Each source includepath entry can also specify an output location for the generated class files (and copied resource files) corresponding to javaScript units under that source folder. This makes it possible to arrange generated class files for different source folders in different output folders, and not necessarily the default output folder. This means that the generated class files for the project may end up scattered across several folders, rather than all in the default output folder (which is more standard).

In order to manually force a project includepath refresh, one can simply assign the project includepath using the result of this method, as follows: proj.setRawIncludepath(proj.readRawIncludepath(), proj.readOutputLocation(), monitor) (note that the readRawIncludepath/readOutputLocation methods could return null).

Returns:
the workspace-relative absolute path of the default output folder
See Also:
getOutputLocation()

readRawIncludepath

IIncludePathEntry[] readRawIncludepath()
Returns the raw includepath for the project as defined by its .jsdtScope file from disk, or null if unable to read the file.

This includepath may differ from the in-memory includepath returned by getRawIncludepath, in case the automatic reconciliation mechanism has not been performed yet. Usually, any change to the .jsdtScope file is automatically noticed and reconciled at the next resource change notification event. However, if the file is modified within an operation, where this change needs to be taken into account before the operation ends, then the includepath from disk can be read using this method, and further assigned to the project using setRawIncludepath(...).

Includepath variable and includepath container entries can be resolved using the helper method getResolvedIncludepath; includepath variable entries also can be resolved individually using JavaScriptCore#getIncludepathVariable).

Note that no check is performed whether the project has the JavaScript nature set, allowing an existing .jsdtScope file to be considered independantly (unlike getRawIncludepath which requires the JavaScript nature to be associated with the project).

In order to manually force a project includepath refresh, one can simply assign the project includepath using the result of this method, as follows: proj.setRawIncludepath(proj.readRawIncludepath(), proj.readOutputLocation(), monitor) (note that the readRawIncludepath/readOutputLocation methods could return null).

Returns:
the raw includepath from disk for the project, as a list of includepath entries
See Also:
getRawIncludepath(), IIncludePathEntry

setOption

void setOption(java.lang.String optionName,
               java.lang.String optionValue)
Helper method for setting one option value only. Equivalent to Map options = this.getOptions(false); map.put(optionName, optionValue); this.setOptions(map)

For a complete description of the configurable options, see JavaScriptCore#getDefaultOptions.

Parameters:
optionName - the name of an option
optionValue - the value of the option to set
See Also:
JavaScriptCore.getDefaultOptions()

setOptions

void setOptions(java.util.Map newOptions)
Sets the project custom options. All and only the options explicitly included in the given table are remembered; all previous option settings are forgotten, including ones not explicitly mentioned.

For a complete description of the configurable options, see JavaScriptCore#getDefaultOptions.

Parameters:
newOptions - the new options (key type: String; value type: String), or null to flush all custom options (clients will automatically get the global JavaScriptCore options).
See Also:
JavaScriptCore.getDefaultOptions()

setOutputLocation

void setOutputLocation(IPath path,
                       IProgressMonitor monitor)
                       throws JavaScriptModelException
Sets the default output location of this project to the location described by the given workspace-relative absolute path.

The default output location is where class files are ordinarily generated (and resource files, copied). Each source includepath entries can also specify an output location for the generated class files (and copied resource files) corresponding to javaScript units under that source folder. This makes it possible to arrange that generated class files for different source folders to end up in different output folders, and not necessarily the default output folder. This means that the generated class files for the project may end up scattered across several folders, rather than all in the default output folder (which is more standard).

Parameters:
path - the workspace-relative absolute path of the default output folder
monitor - the progress monitor
Throws:
JavaScriptModelException - if the includepath could not be set. Reasons include:
  • This JavaScript element does not exist (ELEMENT_DOES_NOT_EXIST)
  • The path refers to a location not contained in this project (PATH_OUTSIDE_PROJECT)
  • The path is not an absolute path (RELATIVE_PATH)
  • The path is nested inside a package fragment root of this project (INVALID_PATH)
  • The output location is being modified during resource change event notification (CORE_EXCEPTION)
See Also:
getOutputLocation(), IIncludePathEntry.getOutputLocation()

setRawIncludepath

void setRawIncludepath(IIncludePathEntry[] entries,
                       IPath outputLocation,
                       boolean canModifyResources,
                       IProgressMonitor monitor)
                       throws JavaScriptModelException
Sets both the includepath of this project and its default output location at once. The includepath is defined using a list of includepath entries. In particular such a includepath may contain includepath variable entries. Includepath variable entries can be resolved individually (JavaScriptCore.getIncludepathVariable(String)), or the full includepath can be resolved at once using the helper method getResolvedIncludepath(boolean).

If it is specified that this operation cannot modify resources, the .jsdtScope file will not be written to disk and no error marker will be generated. To synchronize the .jsdtScope with the in-memory includepath, one can use setRawIncludepath(readRawIncludepath(), true, monitor).

Setting the includepath to null specifies a default includepath (the project root). Setting the includepath to an empty array specifies an empty includepath.

If a cycle is detected while setting this includepath (and if resources can be modified), an error marker will be added to the project closing the cycle. To avoid this problem, use hasIncludepathCycle(IIncludePathEntry[]) before setting the includepath.

This operation acquires a lock on the workspace's root.

Parameters:
entries - a list of includepath entries
outputLocation - the default output location
canModifyResources - whether resources should be written to disk if needed
monitor - the given progress monitor
Throws:
JavaScriptModelException - if the includepath could not be set. Reasons include:
  • This JavaScript element does not exist (ELEMENT_DOES_NOT_EXIST)
  • The includepath is being modified during resource change event notification (CORE_EXCEPTION)
  • The includepath failed the validation check as defined by JavaScriptConventions#validateIncludepath(IJavaScriptProject, IIncludePathEntry[], IPath)
See Also:
IIncludePathEntry

setRawIncludepath

void setRawIncludepath(IIncludePathEntry[] entries,
                       boolean canModifyResources,
                       IProgressMonitor monitor)
                       throws JavaScriptModelException
Sets the includepath of this project using a list of includepath entries. In particular such a includepath may contain includepath variable entries. Includepath variable entries can be resolved individually (JavaScriptCore.getIncludepathVariable(String)), or the full includepath can be resolved at once using the helper method getResolvedIncludepath(boolean).

If it is specified that this operation cannot modify resources, the .jsdtScope file will not be written to disk and no error marker will be generated. To synchronize the .jsdtScope with the in-memory includepath, one can use setRawIncludepath(readRawIncludepath(), true, monitor).

Setting the includepath to null specifies a default includepath (the project root). Setting the includepath to an empty array specifies an empty includepath.

If a cycle is detected while setting this includepath (and if resources can be modified), an error marker will be added to the project closing the cycle. To avoid this problem, use hasIncludepathCycle(IIncludePathEntry[]) before setting the includepath.

This operation acquires a lock on the workspace's root.

Parameters:
entries - a list of includepath entries
canModifyResources - whether resources should be written to disk if needed
monitor - the given progress monitor
Throws:
JavaScriptModelException - if the includepath could not be set. Reasons include:
  • This JavaScript element does not exist (ELEMENT_DOES_NOT_EXIST)
  • The includepath is being modified during resource change event notification (CORE_EXCEPTION)
  • The includepath failed the validation check as defined by JavaScriptConventions#validateIncludepath(IJavaScriptProject, IIncludePathEntry[], IPath)
See Also:
IIncludePathEntry

setRawIncludepath

void setRawIncludepath(IIncludePathEntry[] entries,
                       IProgressMonitor monitor)
                       throws JavaScriptModelException
Sets the includepath of this project using a list of includepath entries. In particular such a includepath may contain includepath variable entries. Includepath variable entries can be resolved individually (JavaScriptCore.getIncludepathVariable(String)), or the full includepath can be resolved at once using the helper method getResolvedIncludepath(boolean).

Setting the includepath to null specifies a default includepath (the project root). Setting the includepath to an empty array specifies an empty includepath.

If a cycle is detected while setting this includepath, an error marker will be added to the project closing the cycle. To avoid this problem, use hasIncludepathCycle(IIncludePathEntry[]) before setting the includepath.

This operation acquires a lock on the workspace's root.

Parameters:
entries - a list of includepath entries
monitor - the given progress monitor
Throws:
JavaScriptModelException - if the includepath could not be set. Reasons include:
  • This JavaScript element does not exist (ELEMENT_DOES_NOT_EXIST)
  • The includepath is being modified during resource change event notification (CORE_EXCEPTION)
  • The includepath failed the validation check as defined by JavaScriptConventions#validateIncludepath(IJavaScriptProject, IIncludePathEntry[], IPath)
See Also:
IIncludePathEntry

findTypeRoot

ITypeRoot findTypeRoot(java.lang.String fullyQualifiedName)
                       throws JavaScriptModelException
Throws:
JavaScriptModelException