# com.bea.ide.sourceeditor.compiler
CompilerSvc.I Interface

public static interface CompilerSvc.I

Enclosing class
  `CompilerSvc`

## Method Summary

`public boolean` | `addFileStore`(`Object` o) Add a com.bea.compiler.IFileStore to the running Javelin compiler instance.
`public boolean` | `canCompileFile`(`URI` uri) Checks to see if the URI points to a valid, compilable file.
`public `IFileFilter`` | `getCompileFilter`() get a file filter that only accepts compilable files
`public `ILanguageDriver`` | `getDefaultLanguageDriver`(`ISourceDocument` doc, `String` languageName) Returns a default language driver implementation appropriate to the language at the specified offset within the specified document.
`public `List`` | `getDiagnostics`(`ISourceDocument` doc, `Range` range) Returns a list of the `ICompilerDiagnostic``` objects found in the specified document in the specified range.
`public `CompilerSvc.ITwoWayEditLock`` | `getEditLockObject`(`ISourceDocument` doc) Used by the two-way edit mechanism to ensure that the AWT thread waits for two-way edits to complete before continuing application execution.
`public `Object`` | `getFeature`(`ISourceDocument` doc, `Class` featureClass) Allows access to compiler features associated with a specific document.
`public `Object`` | `getFeature`(`IProject` proj, `Class` featureClass) Allows access to compiler features associated with a specific IDE project.
`public `List`` | `getFieldsForType`(`ISourceDocument` doc, `String` type, boolean includeSupers) Get the fields on a given class/interface.
`public `IIdentifierInfo`` | `getIdentifierInfo`(`ISourceDocument` doc, int offset) Get identifier info for an offset in a source document.
`public `Object`` | `getIEncoding`(`IProject` project, `String` ext) Returns an instance of an encoding strategy for the given extension.
`public `String`` | `getLanguageName`(`ISourceDocument` doc, int offset) Returns the name of the active language at the specified offset in the specified document.
`public `Iterator`` | `getLanguages`()
`public `String`[]` | `getLanguageStack`(`ISourceDocument` doc, int offset) Returns an array of language names corresponding to the stack of languages present in the specified document at the specified offset.
`public `CompilerSvc.ICompilerLockManager`` | `getLockManager`(`URI` uri) Retrieves a lock manager for the compiler project associated with the specified URI.
`public `CompilerSvc.ICompilerLockManager`` | `getLockManager`(`IProject` proj) Retrieves a lock manager for the compiler project associated with the specified project.
`public `List`` | `getMethodsForType`(`ISourceDocument` doc, `String` type, boolean includeSupers) Get the methods on a given class/interface.
`public `IPackageCache`` | `getPackageCache`() Gets the package cache: this object is used to get general package information, such as that used for generating auto-import suggestions and generating searchable package/class name lists.
`public `IPackageCache`` | `getPackageCache`(int wait) Gets the package cache: this object is used to get general package information, such as that used for generating auto-import suggestions and generating searchable package/class name lists.
`public `URI`` | `getPathForType`(`ISourceDocument` doc, `String` type) Get the path to the definition of a type in the context of the given document.
`public `IProject`` | `getProject`(`IProject` proj)
`public `Object`` | `getProperty`(`String` name, `Object` defValue)
`public `Object`` | `getProperty`(`IProject` proj, `String` name, `Object` defValue)
`public `IPropertyViewDriver`` | `getPropertyViewDriver`(`IDocument` document) Gets an IPropertyViewDriver for the given document.
`public `IElement`` | `getRootElementForType`(`URI` projectURI, `String` type) Get an element tree that represents the given type.
`public `IElement`` | `getRootElementForType`(`URI` projectURI, `String` type, `IElementChangeListener` listener) Get an element tree that represents the given type, or register a listener that will fire when the type has been resolved by the compiler.
`public `List`` | `getSupersForType`(`ISourceDocument` doc, `String` type) Get the superclass and superinterfaces of a given class/interface.
`public boolean` | `hasCompiler`(`IProject` proj) Determines whether a specific IDE project has an active compiler project.
`public boolean` | `hasLanguage`(`String` ext) Returns true if the given file extension has a default language registered with the compiler
`public boolean` | `isFeatureAvailable`(`ISourceDocument` doc, `Class` featureClass) Determines if a compiler feature is available for a given document.
`public boolean` | `isFilenameRestricted`(`String` ext) Returns true if files with this extension have a restricted namespace in the filesystem.
`public boolean` | `isNameRestricted`(`URI` uri) Returns a boolean indicating whether valid contents of this file are restricted based on file's uri.
`public void` | `loadCompleteSource`(`IProject` proj) Loads all source files in the specified project as quickly as possible.
`public `ICompletionSet`` | `mapCompletions`(`List` completions) Maps a list of completions of various types to an ICompletionSet that the source editor understands.
`public void` | `refreshFile`(`ISourceDocument` doc) Initiates a full recompile of the specified document.
`public void` | `refreshFile`(`URI` path) Initiates a full recompile of the specified URI.
`public boolean` | `registerCompilerRequest`(`URI` uri, `Object` compilationID) If compilation tasks are initiated directly by code outside of the compiler service, the compiler service needs to be told about the initiation ant completion of these requests so that compiler projects will not be closed while they are underway.
`public boolean` | `registerCompilerResponse`(`URI` uri, `Object` compilationID) If compilation tasks are initiated directly by code outside of the compiler service, the compiler service needs to be told about the initiation and completion of these requests so that compiler projects will not be closed while they are underway.
`public void` | `registerDocument`(`ISourceDocument` doc) Associates the given source document with it's URI.
`public boolean` | `registerExtension`(`String` extNew, `String` extExisting) Registers the given new extension to have the same language as the existing extension.
`public boolean` | `sameLanguage`(`String` ext1, `String` ext2) Determines whether or not two extensions have the same default language
`public void` | `setFileModified`(`ISourceDocument` doc, `ISourceModelEvent` e, `ISourceModelEvent.EventType` type) Called by various document change listeners to notify the compiler of changes to document content.
`public boolean` | `synchronizeProject`(`URI` uri) Waits for the project containing the specified URI to synch up with the compiler.
`public void` | `unregisterDocument`(`URI` uri, `ISourceDocument` doc) Remove the association between the given URI and the given document.

## Method Detail

### addFileStore(Object) Method

    public boolean addFileStore(Object o)

Add a com.bea.compiler.IFileStore to the running Javelin compiler instance.

#### Parameters

o
  the IFileStore object to add

#### Returns

Success or failure. This method will fail if the object was not of the correct type.

### canCompileFile(URI) Method

    public boolean canCompileFile(URI uri)

Checks to see if the URI points to a valid, compilable file.

#### Parameters

uri
  the URI pointing to the file in question.

### getCompileFilter() Method

    public IFileFilter getCompileFilter()

get a file filter that only accepts compilable files

#### Returns

IFileFilter implementation that filters out files that cannot be compiled by the compiler svc.

### getDefaultLanguageDriver(ISourceDocument, String) Method

    public ILanguageDriver getDefaultLanguageDriver(ISourceDocument doc,
                                                    String languageName)

Returns a default language driver implementation appropriate to the language at the specified offset within the specified document. This method should only be called by `ISourceViewDriver.getLanguageDriver``` implementations that do not want to customize language behavior. All other callers should obtain an ILanguageDriver by calling through their document's `ISourceViewDriver.getLanguageDriver``` method. Note that a valid return from this method does not guarantee that the specified langauge exists within the document: `getLanguageName``` and `getLanguageStack``` should be used to determine which languages are present.

#### Parameters

doc
  The document upon which to get the language driver

languageName
  The language for which a driver is needed.

#### Returns

an ILanguageDriver implementation. Null if the language does not exist.

### getDiagnostics(ISourceDocument, Range) Method

    public List getDiagnostics(ISourceDocument doc,
                               Range range)

Returns a list of the `ICompilerDiagnostic``` objects found in the specified document in the specified range. Note that diagnostics overlapping the range will be returned as well as those that are completely contained.

#### Parameters

doc
  the source document for which diagnostics are desired

range
  the range in the document text that should be searched

#### Returns

A list of `ICompilerDiagnostic``` objects.

### getEditLockObject(ISourceDocument) Method

    public CompilerSvc.ITwoWayEditLock getEditLockObject(ISourceDocument doc)

Used by the two-way edit mechanism to ensure that the AWT thread waits for two-way edits to complete before continuing application execution.

### getFeature(ISourceDocument, Class) Method

    public Object getFeature(ISourceDocument doc,
                             Class featureClass)

Allows access to compiler features associated with a specific document. Note that the only allowable feature classes for a paticular document type are those explicitly returned from the document's ICompilerDriver's `getAvailableFeatures``` call.

#### Parameters

doc
  the document associated with the desired feature instance

featureClass
  the class of the desired feature. For example, `IStructureFeature.class`

#### Returns

the requested IFeature, if valid and available. May return null.

### getFeature(IProject, Class) Method

    public Object getFeature(IProject proj,
                             Class featureClass)

Allows access to compiler features associated with a specific IDE project.

#### Parameters

proj
  the IDE project

featureClass
  the class of the desired feature. For example, `ITokenInfoFeature.class`

#### Returns

the requested IFeature, if valid and available. May return null.

### getFieldsForType(ISourceDocument, String, boolean) Method

DEPRECATED Use getRootElementForType, preferably the non-blocking one, instead.

    public List getFieldsForType(ISourceDocument doc,
                                 String type,
                                 boolean includeSupers)

Get the fields on a given class/interface. Note: this will block until the compiler finishes it's current work.

#### Parameters

doc
  The source document in whose context the type will be resolved.

type
  The fully-qualified type whose fields you want to find.

includeSupers
  If false, only methods directly on the given type are returned, otherwise all methods available on that type and it's supertypes are given.

#### Returns

A List of JavaVariables objects corresponding to the fields. These are somewhat raw JavaFields, and do not support editing. If you need full information, you'll need to open the appropriate document and get it's parse tree. This list may be empty, but is never null.

### getIdentifierInfo(ISourceDocument, int) Method

    public IIdentifierInfo getIdentifierInfo(ISourceDocument doc,
                                             int offset)

Get identifier info for an offset in a source document.

#### Parameters

doc
  The source document for which to get the identifier info.

offset
  The offset at which the identifier is located.

### getIEncoding(IProject, String) Method

    public Object getIEncoding(IProject project,
                               String ext)

Returns an instance of an encoding strategy for the given extension. Not commonly used.

### getLanguageName(ISourceDocument, int) Method

    public String getLanguageName(ISourceDocument doc,
                                  int offset)

Returns the name of the active language at the specified offset in the specified document.

#### Parameters

doc
  The document. See also `getLanguageStack```.

offset
  The position within the document.

#### Returns

The name of the language at the specified location. Null is the location is invalid.

### getLanguages() Method

    public Iterator getLanguages()

#### Returns

an iterator of com.bea.compiler.ILanguage objects currently loaded by the compiler.

### getLanguageStack(ISourceDocument, int) Method

    public String[] getLanguageStack(ISourceDocument doc,
                                   int offset)

Returns an array of language names corresponding to the stack of languages present in the specified document at the specified offset. See also `getLanguageName```.

#### Parameters

doc
  The document

offset
  The position within the document

#### Returns

An array of strings corresponding to the language stack. Index zero corresponds to the top-level language of the document, index length - 1 corresponds to the langauge active at the offset. Null is the offset is invlaid.

### getLockManager(URI) Method

    public CompilerSvc.ICompilerLockManager getLockManager(URI uri)

Retrieves a lock manager for the compiler project associated with the specified URI. Compiler locks are required when accessing compiler features at a time when compilation may take place.

#### Parameters

uri
  The uri used to determine which project should be locked.

### getLockManager(IProject) Method

    public CompilerSvc.ICompilerLockManager getLockManager(IProject proj)

Retrieves a lock manager for the compiler project associated with the specified project. Compiler locks are required when accessing compiler features at a time when compilation may take place.

#### Parameters

proj
  The IDE project used to determine which compiler project should be locked.

### getMethodsForType(ISourceDocument, String, boolean) Method

DEPRECATED Use getRootElementForType, preferably the non-blocking one, instead.

    public List getMethodsForType(ISourceDocument doc,
                                  String type,
                                  boolean includeSupers)

Get the methods on a given class/interface. Note: this will block until the compiler finishes it's current work.

#### Parameters

doc
  The source document in whose context the type will be resolved.

type
  The fully-qualified type whose methods you want to find.

includeSupers
  If false, only methods directly on the given type are returned, otherwise all methods available on that type and it's supertypes are given.

#### Returns

A List of JavaMethod objects corresponding to the methods. These are somewhat raw JavaMethods, and do not support editing. If you need full information, you'll need to open the appropriate document and get it's parse tree. This list may be empty, but is never null.

### getPackageCache() Method

    public IPackageCache getPackageCache()

Gets the package cache: this object is used to get general package information, such as that used for generating auto-import suggestions and generating searchable package/class name lists.

Note that the package cache returned by this method may be currently initializing or reloading due to classpath or source directory changes. If this is an issue, check the status of the package cache returned, or use getPackageCache() with a wait flag to block on load.

### getPackageCache(int) Method

    public IPackageCache getPackageCache(int wait)

Gets the package cache: this object is used to get general package information, such as that used for generating auto-import suggestions and generating searchable package/class name lists.

#### Parameters

wait
  Flag indicating whether this call should block until a certain load status has been reached. See IPackageCache.WAIT_NONE, IPackageCache.WAIT_CLASSPATH_ONLY, IPackageCache.WAIT_ALL.

### getPathForType(ISourceDocument, String) Method

DEPRECATED Normally, this isn't needed, since getRootElementForType() provides information.

    public URI getPathForType(ISourceDocument doc,
                              String type)

Get the path to the definition of a type in the context of the given document. Note: this will block until the compiler finishes it's current work.

#### Parameters

doc
  The source document in whose context the type will be resolved.

type
  The fully-qualified type whose methods you want to find.

#### Returns

The URI to the definition of the type.

### getProject(IProject) Method

    public IProject getProject(IProject proj)

#### Parameters

proj
  an IDE project in the current workspace

#### Returns

the compiler project associated with a specific IDE project

### getProperty(String, Object) Method

    public Object getProperty(String name,
                              Object defValue)

#### Parameters

name
  a property key

#### Returns

a global compiler property

### getProperty(IProject, String, Object) Method

    public Object getProperty(IProject proj,
                              String name,
                              Object defValue)

#### Parameters

proj
  an IDE project in the current workspace

name
  a property key

#### Returns

a project specific compiler property

### getPropertyViewDriver(IDocument) Method

    public IPropertyViewDriver getPropertyViewDriver(IDocument document)

Gets an IPropertyViewDriver for the given document.

#### Parameters

document
  the document for which the driver should be created.

#### Returns

the driver to get properties for the given document, or null if no driver is available for this document.

### getRootElementForType(URI, String) Method

    public IElement getRootElementForType(URI projectURI,
                                          String type)

Get an element tree that represents the given type. WARNING: this will block until the compiler finishes it's current work.

#### Parameters

projectURI
  The URI of a project (or document in a project) in which the type will be resolved.

type
  the fully-qualified type on which the class will be based.

#### Returns

an element (a JavaUnit normally) containing a class for the type specified, or null if the type cannot be resolved. The returned element tree may not be part of any document, so it is not suitable for getting change notifications or doing any document edits. Use IDocument.getRootElement() if you want a fully-functioning parse tree.

### getRootElementForType(URI, String, IElementChangeListener) Method

    public IElement getRootElementForType(URI projectURI,
                                          String type,
                                          IElementChangeListener listener)

Get an element tree that represents the given type, or register a listener that will fire when the type has been resolved by the compiler.

#### Parameters

projectURI
  The URI of a project (or document in a project) in which the type will be resolved.

type
  the fully-qualified type on which the class will be based.

#### Returns

an element (normally a JavaUnit) containing a class representing the type specified, or null if one cannot be resolved. This will also return null if the compiler has not yet resolved this type, in which case the listener will fire when the class is available. This tree may or may not be part of a document. Use IDocument.getRootElement(ElementChangeListener) if you need a fully-functioning parse tree

### getSupersForType(ISourceDocument, String) Method

DEPRECATED Use getRootElementForType, preferably the non-blocking one, instead.

    public List getSupersForType(ISourceDocument doc,
                                 String type)

Get the superclass and superinterfaces of a given class/interface. Note: this will block until the compiler finishes it's current work.

#### Parameters

doc
  The source document in whose context the type will be resolved.

type
  The fully-qualified type whose supers you want to find.

#### Returns

A List of Strings corresponding to the superclass (unless it's java.lang.Object) and all declared interfaces.

### hasCompiler(IProject) Method

    public boolean hasCompiler(IProject proj)

Determines whether a specific IDE project has an active compiler project.

#### Parameters

proj
  and IDE project in the current workspace

#### Returns

true if there is an associated compiler project

### hasLanguage(String) Method

    public boolean hasLanguage(String ext)

Returns true if the given file extension has a default language registered with the compiler

#### Returns

true if the compiler has a language registered for the given extension

### isFeatureAvailable(ISourceDocument, Class) Method

    public boolean isFeatureAvailable(ISourceDocument doc,
                                      Class featureClass)

Determines if a compiler feature is available for a given document.

#### Parameters

doc
  the document associated with the desired feature instance

featureClass
  the class of the desired feature. For example, `IStructureFeature.class`

#### Returns

true if the feature is valid for the document.

Related Topics

``ICompilerDriver.getAvailableFeatures()``

### isFilenameRestricted(String) Method

    public boolean isFilenameRestricted(String ext)

Returns true if files with this extension have a restricted namespace in the filesystem. It is assumed that this namespace is shared with all other extensions that are also restricted. This check is done by seeing if the language registered for this extension is a name restricted language.

### isNameRestricted(URI) Method

    public boolean isNameRestricted(URI uri)

Returns a boolean indicating whether valid contents of this file are restricted based on file's uri. For example, a .java file must have a package defined that matches its location in the source tree, and a main class name that matches its file name.

### loadCompleteSource(IProject) Method

    public void loadCompleteSource(IProject proj)

Loads all source files in the specified project as quickly as possible. Under normal circumstances, source files are loaded incrementally, so as to provide maximum responsiveness to the user. However, certain features, such as auto-correction, are not available until all source files have been loaded. Calling this method will load all source files, making these features available sooner, possibly at the expense of foreground task responsiveness.

#### Parameters

proj
  The project for which to load all source files.

### mapCompletions(List) Method

    public ICompletionSet mapCompletions(List completions)

Maps a list of completions of various types to an ICompletionSet that the source editor understands. This is necessary for completion types like IAttributeValue where on completion set will wrap another.

#### Parameters

completions
  a list of compiler supplied competion objects.

#### Returns

a completion set.

### refreshFile(ISourceDocument) Method

    public void refreshFile(ISourceDocument doc)

Initiates a full recompile of the specified document. This will cause a refresh of all compiler features, including the IStructureFeature (i.e., the IDE parse tree).

#### Parameters

doc
  the file to be recompiled

### refreshFile(URI) Method

    public void refreshFile(URI path)

Initiates a full recompile of the specified URI. This will cause a refresh of all compiler features, including the IStructureFeature (i.e., the IDE parse tree).

#### Parameters

path
  the file to be recompiled

### registerCompilerRequest(URI, Object) Method

    public boolean registerCompilerRequest(URI uri,
                                           Object compilationID)

If compilation tasks are initiated directly by code outside of the compiler service, the compiler service needs to be told about the initiation ant completion of these requests so that compiler projects will not be closed while they are underway. Call this method before submitting a compilation request to the compiler, and call `registerCompilerResponse``` when the compilation is complete. Note that this method will not instantiate a new compiler project if one does not exist. If changes are being applied externally, it is the caller's responsibility to ensure that the project has been correctly initialized, generally via (@link #getProject getProject}.

#### Parameters

uri
  A uri within the project for which synchronization is desired. This URI is used only to find the correct project, so it does not have to be directly related to the compilation task.

compilationID
  an object that uniquely identifies this compilation. This ID will only be used to notify the compiler service of task completion.

#### Returns

boolean indicating whether a project existed for the specified URI.

### registerCompilerResponse(URI, Object) Method

    public boolean registerCompilerResponse(URI uri,
                                            Object compilationID)

If compilation tasks are initiated directly by code outside of the compiler service, the compiler service needs to be told about the initiation and completion of these requests so that compiler projects will not be closed while they are underway. Call this method when an externally submitted compilation request has completed. This call should have been preceded by a call to `CompilerSvc.I.registerCompilerRequest(URI, Object)``` before the compilation was initiated.

#### Parameters

uri
  A uri within the project for which synchronization is desired. This URI is used only to find the correct project, so it does not have to be directly related to the compilation task.

compilationID
  an object that uniquely identifies this compilation. This ID must be the the same as an ID passed in previously via `CompilerSvc.I.registerCompilerRequest(URI, Object)```.

#### Returns

boolean indicating whether the specified response was found in the request set for the specified project.

### registerDocument(ISourceDocument) Method

    public void registerDocument(ISourceDocument doc)

Associates the given source document with it's URI. The compiler service will rely on the source document to notify it of important changes and will defer to the file system listener on the file to keep it informed about things like whether or not the file has been deleted.

### registerExtension(String, String) Method

    public boolean registerExtension(String extNew,
                                     String extExisting)

Registers the given new extension to have the same language as the existing extension. Note that if the existing extension does not have a language associated with it or if the new extension already has an existing language, this method will do nothing and return false.

#### Returns

true if the new extension now has the same language as the existing extension, false otherwise.

### sameLanguage(String, String) Method

    public boolean sameLanguage(String ext1,
                                String ext2)

Determines whether or not two extensions have the same default language

#### Returns

true if the extensions have the same default language

### setFileModified(ISourceDocument, ISourceModelEvent, ISourceModelEvent.EventType) Method

    public void setFileModified(ISourceDocument doc,
                                ISourceModelEvent e,
                                ISourceModelEvent.EventType type)

Called by various document change listeners to notify the compiler of changes to document content. Generally, only actual content changes (those that would require a recompile) need to be passed to the compiler. Under normal circumstances, it should not be necessary to call this method explicitly.

#### Parameters

doc
  the document that has been modified

e
  the event associated with the modification

type
  the type of modification

### synchronizeProject(URI) Method

    public boolean synchronizeProject(URI uri)

Waits for the project containing the specified URI to synch up with the compiler. This method will block until there are no outstanding compiler requests for the specified project. Note that if the user is continuously changing a document in the project, synchronization may not take place until all edits have been completed.

IMPORTANT: except in very rare circumstances, this method should NEVER be called on the AWT thread. It it possible that completion of outstanding compilation requests may take several seconds, or even minutes.

#### Parameters

uri
  A uri within the project for which synchronization is desired.

#### Returns

boolean indicating success or failure, where success means that there are no outstanding compilations for the project. It does not mean that the project is necessarily active or in an accessible state.

### unregisterDocument(URI, ISourceDocument) Method

    public void unregisterDocument(URI uri,
                                   ISourceDocument doc)

Remove the association between the given URI and the given document. If no such association exists, this method does nothing. Document object should call this method in their finalizers to insure that any compiler data structures associated with the document are removed.