public interface SourceFile extends SourceElement, JavaFile
Modifier and Type | Interface and Description |
---|---|
static class |
SourceFile.ElementAtMask |
CHILDREN_ALL, CHILDREN_BLANKLINES, CHILDREN_COMMENTS, CHILDREN_default, CHILDREN_none, CHILDREN_REGULAR, EMPTY_ARRAY, PRINT_ALL, REFORMAT_ALL, REFORMAT_INDENT
Modifier and Type | Method and Description |
---|---|
void |
addSourceFileListener(SourceFileListener listener)
Registers the given observer to begin receiving notifications when changes are made on this SourceFile or when this SourceFile is invalidated.
|
SourceTransaction |
beginTransaction()
Locks (and implicitly pins) the text buffer and indicates a new transaction.
|
void |
cancelCompile()
Cancels the previously started compile() on this file.
|
void |
clearAllBindings(int key)
Traverses the entire parse tree, calling clearBinding( key ) on each element.
|
void |
clearCompiledInfo()
Clears the entire source data model of compiled information.
|
SourceFile |
cloneSelf(TextBuffer textBuffer)
Clones this SourceFile into the input TextBuffer.
|
void |
compile(java.util.List<FlowAnalysisListener> listeners)
Compile this SourceFile and request flow analysis callbacks.
|
void |
expire()
Mark this SourceFile as invalid.
|
java.util.List<SourceError> |
getCompileErrors()
Gets the list of compile-time errors.
|
SourceElement |
getElementAt(int offset)
If the offset is in a token, meaning there is a character at that offset, select the deepest nested SourceElement containing that token.
|
SourceElement |
getElementAt(int offset, java.util.EnumSet<SourceFile.ElementAtMask> mask)
If the offset is in a token, meaning there is a character at that offset, return the deepest nested SourceElement that satisfies the mask and contains that token.
|
SourceElement |
getElementAt(int offset, int mask)
Deprecated.
The mask argument is too limited. This method has been replaced by getElementAt( offset, ElementAtMask )
|
SourceElement |
getElementContaining(int startOffset, int endOffset)
Gets the deepest nested SourceElement that includes the range [startOffset, endOffset].
|
SourceElement |
getElementContaining(int startOffset, int endOffset, java.util.EnumSet<SourceFile.ElementAtMask> mask)
Gets the deepest nested SourceElement that includes the range [startOffset, endOffset].
|
java.util.Collection<SourceError> |
getErrors(int severity, int errorCategory)
Gets all the errors in the indicated categories with the given severity or worse.
|
SourceFactory |
getFactory()
Gets the SourceFactory tied to this SourceFile.
|
int |
getLanguageVersion()
Deprecated.
Use getJdkVersion() instead
|
java.lang.String |
getPackageName()
Gets the package name, empty if none.
|
java.util.List<SourceError> |
getParseErrors()
Gets the list of parse-time errors.
|
java.util.List<java.lang.String> |
getPossibleTypes()
Gets the list of possible type String's, collected during parse-time.
|
SourcePreferences |
getPreferences()
Gets the saved JavaPreferences cookie.
|
JavaProvider |
getProvider()
Gets the saved JavaProvider cookie.
|
SourceClass |
getSourceClass(java.lang.String name)
Gets the matching top-level source class.
|
java.util.List<SourceClass> |
getSourceClasses()
Gets the list of top-level source classes.
|
java.util.Set<java.lang.String> |
getSourceImportNames()
Gets the set of import strings.
|
java.util.List<SourceImport> |
getSourceImports()
Gets the list of import declarations.
|
SourcePackage |
getSourcePackage()
Gets the package declaration.
|
SourceClass |
getSourcePrimaryClass()
Gets the primary class.
|
TextBuffer |
getTextBuffer()
Gets the associated TextBuffer.
|
SourceTransaction |
getTransaction()
Gets the pending transaction, null if none.
|
java.net.URL |
getURL()
Gets the saved URL cookie.
|
boolean |
hasCompileErrors()
True if compiling generated any errors.
|
boolean |
hasErrors(int severity, int errorCategory)
True if any error in the indicated categories exists with the given severity or worse.
|
boolean |
hasParseErrors()
True if parsing generated any errors.
|
boolean |
isCompiled()
Note: This does not consider whether or not the file is out-of-date and needs to be recompiled.
|
boolean |
isExpired()
True if this has been expired.
|
boolean |
isPackageInfoFile()
Determine if this is a package-info.java SourceFile.
|
void |
pinTextBuffer(TextBuffer textBuffer)
Sets the text buffer cookie and pins it.
|
void |
removeSourceFileListener(SourceFileListener listener)
Unregisters the given observer.
|
void |
setPackageName(java.lang.String packageName)
Attempts to set the name of the package declaration.
|
void |
setPreferences(SourcePreferences preferences)
Sets the preferences to be used with this source file.
|
void |
setProvider(JavaProvider provider)
Sets the provider cookie that will provide class information needed for compilation.
|
void |
setSourcePackage(SourcePackage packageD)
Attempts to set the package declaration.
|
void |
setTextBuffer(TextBuffer textBuffer)
Sets the text buffer but leaves it unpinned.
|
void |
setURL(java.net.URL url)
Set the URL cookie that is saved with this SourceFile.
|
void |
unpinTextBuffer()
Unpins the saved text buffer from this parse tree.
|
addSelf, addSelf, addSelfAfter, addSelfBefore, adjustTextIndentation, clearBinding, cloneSelf, compile, getBinding, getChildren, getChildren, getCompiledObject, getContainedElements, getEndOffset, getJdkVersion, getOwningFile, getOwningSourceFile, getParent, getSiblingAfter, getSiblingBefore, getSiblings, getSiblings, getStartOffset, getSymbolKind, getText, getTokens, hasErrors, print, print, reformatSelf, removeSelf, replaceSelf, resolve, setBinding, setContext, visitSelf
getClass, getClasses, getPackage, getPrimaryClass
getElementKind, getFile, getModifiers, getOwner, getSourceElement, isDeprecated, isFinal, isHidden, isSourceElement, isSynthetic, printCompiledInfo
@Deprecated int getLanguageVersion()
JavaTokens
.J2SE_*
constant, e.g. J2SE_16SourcePackage getSourcePackage()
java.lang.String getPackageName()
getPackageName
in interface JavaFile
void setSourcePackage(SourcePackage packageD)
void setPackageName(java.lang.String packageName)
packageName
- Must be non-null. If empty, this will attempt to remove the package declaration.java.util.List<SourceImport> getSourceImports()
java.util.Set<java.lang.String> getSourceImportNames()
java.util.List<SourceClass> getSourceClasses()
SourceClass getSourceClass(java.lang.String name)
SourceClass getSourcePrimaryClass()
The term "primary class" is not actually used in any reference I tried: JLS, JPL, or Effective Java. It does see some usage on the web. The term "main class" could be confused with the run-time class whose "main(...)" method is being run.
SourceFile cloneSelf(TextBuffer textBuffer)
Compiled information and intermediate formatting data are not copied. SourceFileListener's are not copied.
The input textBuffer is cleared and the text from this SourceFile's TextBuffer is copied into the new TextBuffer.
textBuffer
- If null, an array text buffer is created for use.java.lang.UnsupportedOperationException
- if this SourceFile has no TextBuffer associated with it, or if this SourceFile has an open transaction with outstanding changes. To clone a SourceFile with an open transaction, perform a savepoint() on the transaction.SourceFactory getFactory()
void clearAllBindings(int key)
java.util.List<java.lang.String> getPossibleTypes()
void compile(java.util.List<FlowAnalysisListener> listeners)
listeners
- The listeners that want to get flow analysis call backsjava.util.concurrent.CancellationException
- if SourceFile.cancelCompile() is called or the thread doing the compile is interrupted.void cancelCompile()
void clearCompiledInfo()
boolean isCompiled()
void expire()
boolean isExpired()
boolean isPackageInfoFile()
boolean hasParseErrors()
java.util.List<SourceError> getParseErrors()
boolean hasCompileErrors()
java.util.List<SourceError> getCompileErrors()
boolean hasErrors(int severity, int errorCategory)
severity
- Valid values are JavaErrors.SEVERITY_*.errorCategory
- Valid values are JavaErrors.ERROR_CATEGORY_*. If no error categories are included, the error set is trivially empty. If ERROR_CATEGORY_COMPILE is included, this SourceFile will be implicitly compiled if if not already so.java.util.Collection<SourceError> getErrors(int severity, int errorCategory)
severity
- Valid values are JavaErrors.SEVERITY_*.errorCategory
- Valid values are JavaErrors.ERROR_CATEGORY_*. If no error categories are included, the error set is trivially empty. If ERROR_CATEGORY_COMPILE is included, this SourceFile will be implicitly compiled if if not already so.java.net.URL getURL()
void setURL(java.net.URL url)
JavaProvider getProvider()
ExpiredTextBufferException
- if this SourceFile is out-of-date because the underlying TextBuffer was modifiedvoid setProvider(JavaProvider provider)
SourcePreferences getPreferences()
void setPreferences(SourcePreferences preferences)
TextBuffer getTextBuffer()
ExpiredTextBufferException
- if this SourceFile is out-of-date because the underlying TextBuffer was modifiedvoid setTextBuffer(TextBuffer textBuffer)
java.lang.IllegalStateException
- if there is already a pinned text buffer.void pinTextBuffer(TextBuffer textBuffer)
Warning: Not re-entrant. (What does this mean anyways?) -- acyu 2005/03/07
java.lang.IllegalStateException
- if there is already a pinned text buffer.void unpinTextBuffer()
SourceTransaction beginTransaction()
NOTE: It is the client's responsibility to ensure that the underlying text buffer is already write-locked. The transaction implementation makes certain to lock the text buffer as a safety measure.
IMPORTANT: If you're in a transaction, always have a finally clause that either aborts or commits the transaction. Otherwise, we'll be left with a locked text buffer somewhere out there.
java.lang.UnsupportedOperationException
- if there is no text buffer to edit.java.lang.IllegalStateException
- if there is already a transaction in progress.ExpiredTextBufferException
- if this SourceFile is out-of-date because the underlying TextBuffer was modifiedSourceTransaction getTransaction()
void addSourceFileListener(SourceFileListener listener)
If the input listener is already registered with this SourceFile, no action is taken.
listener
- The listener to be added.void removeSourceFileListener(SourceFileListener listener)
listener
- The listener to be removed.SourceElement getElementAt(int offset)
offset
- The offset in the buffer of the SourceFileSourceElement getElementAt(int offset, java.util.EnumSet<SourceFile.ElementAtMask> mask)
offset
- The offset in the buffer of the SourceFilemask
- A set of ElementAtMask. DEFAULT is implicitly added if mask is null or empty or does not contain NONE or ALL. In case several flags might conflict, the order of application is: NONE, COMMENTS, BLANKLINES, SAME_LINE, STRUCTURAL, NEAREST, BEFORE, AFTER, ALL, DEFAULT@Deprecated SourceElement getElementAt(int offset, int mask)
0. Whitespace. 1. Comments. 2. All others.If there are two elements at the insertion point (one before and one after), then:
1. If they have different precedence, the one with the higher precedence is returned. For example, suppose one element is a whitespace element (0) and the other is a structural element (2), then the structural element is returned. 2. The element occurring after the insertion point is returned.
offset
- The insertion point.mask
- Same as the mask in getChildren(I) or getSiblings(I).SourceElement.getChildren(int)
, SourceElement.getSiblings(int)
SourceElement getElementContaining(int startOffset, int endOffset)
startOffset
- The start offset, inclusiveendOffset
- The end offset, inclusiveSourceElement getElementContaining(int startOffset, int endOffset, java.util.EnumSet<SourceFile.ElementAtMask> mask)
startOffset
- The startOffset, inclusiveendOffset
- The endOffset, inclusivemask
- The mask to use for filtering elements. Only NONE, COMMENTS, BLANKLINES, ALL, DEFAULT are honored, applied in that order.