Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 53826 Details for
Bug 125504
[API] common supertype for ICompilationUnit and IClassFile
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
minimal patch
125504-minimal.txt (text/plain), 26.21 KB, created by
Martin Aeschlimann
on 2006-11-14 11:21:38 EST
(
hide
)
Description:
minimal patch
Filename:
MIME Type:
Creator:
Martin Aeschlimann
Created:
2006-11-14 11:21:38 EST
Size:
26.21 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.jdt.core >Index: model/org/eclipse/jdt/core/IWorkingCopy.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IWorkingCopy.java,v >retrieving revision 1.41 >diff -u -r1.41 IWorkingCopy.java >--- model/org/eclipse/jdt/core/IWorkingCopy.java 29 Sep 2006 17:13:57 -0000 1.41 >+++ model/org/eclipse/jdt/core/IWorkingCopy.java 14 Nov 2006 16:16:43 -0000 >@@ -277,7 +277,7 @@ > * the buffer, or this element if this element is already a working copy > * @since 2.0 > * >- * @deprecated Use {@link ICompilationUnit#getWorkingCopy(WorkingCopyOwner, IProblemRequestor, IProgressMonitor)} instead. >+ * @deprecated Use {@link IJavaFile#getWorkingCopy(WorkingCopyOwner, IProgressMonitor)} instead. > */ > IJavaElement getWorkingCopy( > IProgressMonitor monitor, >Index: model/org/eclipse/jdt/core/ICompilationUnit.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ICompilationUnit.java,v >retrieving revision 1.58 >diff -u -r1.58 ICompilationUnit.java >--- model/org/eclipse/jdt/core/ICompilationUnit.java 6 Nov 2006 14:13:47 -0000 1.58 >+++ model/org/eclipse/jdt/core/ICompilationUnit.java 14 Nov 2006 16:16:43 -0000 >@@ -30,7 +30,7 @@ > * This interface is not intended to be implemented by clients. > * </p> > */ >-public interface ICompilationUnit extends IJavaElement, ISourceReference, IParent, IOpenable, IWorkingCopy, ISourceManipulation, ICodeAssist { >+public interface ICompilationUnit extends IJavaFile, IWorkingCopy, ISourceManipulation { > /** > * Constant indicating that a reconcile operation should not return an AST. > * @since 3.0 >@@ -254,14 +254,6 @@ > */ > IJavaElement[] findElements(IJavaElement element); > /** >- * Finds the primary type of this compilation unit (that is, the type with the same name as the >- * compilation unit), or <code>null</code> if no such a type exists. >- * >- * @return the found primary type of this compilation unit, or <code>null</code> if no such a type exists >- * @since 3.0 >- */ >-IType findPrimaryType(); >-/** > * Finds the working copy for this compilation unit, given a {@link WorkingCopyOwner}. > * If no working copy has been created for this compilation unit associated with this > * working copy owner, returns <code>null</code>. >@@ -286,20 +278,6 @@ > */ > IType[] getAllTypes() throws JavaModelException; > /** >- * Returns the smallest element within this compilation unit that >- * includes the given source position (that is, a method, field, etc.), or >- * <code>null</code> if there is no element other than the compilation >- * unit itself at the given position, or if the given position is not >- * within the source range of this compilation unit. >- * >- * @param position a source position inside the compilation unit >- * @return the innermost Java element enclosing a given source position or <code>null</code> >- * if none (excluding the compilation unit). >- * @throws JavaModelException if the compilation unit does not exist or if an >- * exception occurs while accessing its corresponding resource >- */ >-IJavaElement getElementAt(int position) throws JavaModelException; >-/** > * Returns the first import declaration in this compilation unit with the given name. > * This is a handle-only method. The import declaration may or may not exist. This > * is a convenience method - imports can also be accessed from a compilation unit's >Index: model/org/eclipse/jdt/core/IMember.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IMember.java,v >retrieving revision 1.23 >diff -u -r1.23 IMember.java >--- model/org/eclipse/jdt/core/IMember.java 10 May 2006 18:03:42 -0000 1.23 >+++ model/org/eclipse/jdt/core/IMember.java 14 Nov 2006 16:16:43 -0000 >@@ -49,6 +49,14 @@ > */ > ICompilationUnit getCompilationUnit(); > /** >+ * Returns the Java file in which this member is declared. >+ * This is a handle-only method. >+ * >+ * @return the Java file in which this member is declared >+ * @since 3.3 >+ */ >+IJavaFile getJavaFile(); >+/** > * Returns the type in which this member is declared, or <code>null</code> > * if this member is not declared in a type (for example, a top-level type). > * This is a handle-only method. >Index: model/org/eclipse/jdt/core/IClassFile.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IClassFile.java,v >retrieving revision 1.21 >diff -u -r1.21 IClassFile.java >--- model/org/eclipse/jdt/core/IClassFile.java 29 Sep 2006 17:13:57 -0000 1.21 >+++ model/org/eclipse/jdt/core/IClassFile.java 14 Nov 2006 16:16:43 -0000 >@@ -32,7 +32,7 @@ > * @see IPackageFragmentRoot#attachSource(org.eclipse.core.runtime.IPath, org.eclipse.core.runtime.IPath, IProgressMonitor) > */ > >-public interface IClassFile extends IJavaElement, IParent, IOpenable, ISourceReference, ICodeAssist { >+public interface IClassFile extends IJavaFile { > > /** > * Changes this class file handle into a working copy. A new {@link IBuffer} is >@@ -80,21 +80,6 @@ > ICompilationUnit becomeWorkingCopy(IProblemRequestor problemRequestor, WorkingCopyOwner owner, IProgressMonitor monitor) throws JavaModelException; > > /** >- * Returns the smallest element within this class file that >- * includes the given source position (a method, field, etc.), or >- * <code>null</code> if there is no element other than the class file >- * itself at the given position, or if the given position is not >- * within the source range of this class file. >- * >- * @param position a source position inside the class file >- * @return the innermost Java element enclosing a given source position or <code>null</code> >- * if none (excluding the class file). >- * >- * @exception JavaModelException if this element does not exist or if an >- * exception occurs while accessing its corresponding resource >- */ >-IJavaElement getElementAt(int position) throws JavaModelException; >-/** > * Returns the type contained in this class file. > * > * @return the type contained in this class file >@@ -105,29 +90,6 @@ > IType getType() throws JavaModelException; > /** > * Returns a working copy on the source associated with this class file using the given >- * owner to create the buffer, or <code>null</code> if there is no source associated >- * with the class file. >- * <p> >- * The buffer will be automatically initialized with the source of the class file >- * upon creation. >- * <p> >- * The only valid operations on this working copy are <code>getBuffer()</code> or <code>getPrimary()</code>. >- * >- * @param owner the owner that creates a buffer that is used to get the content of the working copy >- * or <code>null</code> if the primary owner should be used >- * @param monitor a progress monitor used to report progress while opening this compilation unit >- * or <code>null</code> if no progress should be reported >- * @return a a working copy on the source associated with this class file >- * @exception JavaModelException if the source of this class file can >- * not be determined. Reasons include: >- * <ul> >- * <li> This class file does not exist (ELEMENT_DOES_NOT_EXIST)</li> >- * </ul> >- * @since 3.0 >- */ >-ICompilationUnit getWorkingCopy(WorkingCopyOwner owner, IProgressMonitor monitor) throws JavaModelException; >-/** >- * Returns a working copy on the source associated with this class file using the given > * factory to create the buffer, or <code>null</code> if there is no source associated > * with the class file. > * <p> >@@ -147,7 +109,7 @@ > * <li> This class file does not exist (ELEMENT_DOES_NOT_EXIST)</li> > * </ul> > * @since 2.0 >- * @deprecated Use {@link #getWorkingCopy(WorkingCopyOwner, IProgressMonitor)} instead >+ * @deprecated Use {@link IJavaFile#getWorkingCopy(WorkingCopyOwner, IProgressMonitor)} instead > */ > IJavaElement getWorkingCopy(IProgressMonitor monitor, IBufferFactory factory) throws JavaModelException; > /** >Index: model/org/eclipse/jdt/internal/core/SourceRefElement.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceRefElement.java,v >retrieving revision 1.46 >diff -u -r1.46 SourceRefElement.java >--- model/org/eclipse/jdt/internal/core/SourceRefElement.java 24 Nov 2005 12:14:48 -0000 1.46 >+++ model/org/eclipse/jdt/internal/core/SourceRefElement.java 14 Nov 2006 16:16:44 -0000 >@@ -151,6 +151,12 @@ > String token = memento.nextToken(); > return getHandleFromMemento(token, memento, owner); > } >+/** >+ * @see IMember >+ */ >+public IJavaFile getJavaFile() { >+ return ((JavaElement)getParent()).getJavaFile(); >+} > /* > * @see IMember#getOccurrenceCount() > */ >Index: model/org/eclipse/jdt/internal/core/CompilationUnit.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CompilationUnit.java,v >retrieving revision 1.234 >diff -u -r1.234 CompilationUnit.java >--- model/org/eclipse/jdt/internal/core/CompilationUnit.java 6 Nov 2006 14:13:45 -0000 1.234 >+++ model/org/eclipse/jdt/internal/core/CompilationUnit.java 14 Nov 2006 16:16:44 -0000 >@@ -713,6 +713,12 @@ > System.arraycopy(elements, 0, imports, 0, length); > return imports; > } >+/* >+ * @see IMember >+ */ >+public IJavaFile getJavaFile() { >+ return this; >+} > /** > * @see org.eclipse.jdt.internal.compiler.env.ICompilationUnit#getMainTypeName() > */ >@@ -878,6 +884,12 @@ > return getWorkingCopy(new WorkingCopyOwner() {/*non shared working copy*/}, null/*no problem requestor*/, monitor); > } > /** >+ * @see IJavaFile#getWorkingCopy(WorkingCopyOwner, IProblemRequestor) >+ */ >+public ICompilationUnit getWorkingCopy(WorkingCopyOwner workingCopyOwner, IProgressMonitor monitor) throws JavaModelException { >+ return getWorkingCopy(workingCopyOwner, null, monitor); >+} >+/** > * @see IWorkingCopy#getWorkingCopy(IProgressMonitor, IBufferFactory, IProblemRequestor) > * @deprecated > */ >Index: model/org/eclipse/jdt/internal/core/ClassFile.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ClassFile.java,v >retrieving revision 1.128 >diff -u -r1.128 ClassFile.java >--- model/org/eclipse/jdt/internal/core/ClassFile.java 6 Nov 2006 14:13:45 -0000 1.128 >+++ model/org/eclipse/jdt/internal/core/ClassFile.java 14 Nov 2006 16:16:44 -0000 >@@ -239,6 +239,9 @@ > } > return elt; > } >+public IType findPrimaryType() { >+ return getType(); >+} > public String getAttachedJavadoc(IProgressMonitor monitor) throws JavaModelException { > return this.getType().getAttachedJavadoc(monitor); > } >@@ -327,6 +330,12 @@ > return this; > } > /** >+ * @see IMember >+ */ >+public IJavaFile getJavaFile() { >+ return this; >+} >+/** > * A class file has a corresponding resource unless it is contained > * in a jar. > * >Index: model/org/eclipse/jdt/internal/core/JavaElement.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaElement.java,v >retrieving revision 1.123 >diff -u -r1.123 JavaElement.java >--- model/org/eclipse/jdt/internal/core/JavaElement.java 20 Oct 2006 18:10:51 -0000 1.123 >+++ model/org/eclipse/jdt/internal/core/JavaElement.java 14 Nov 2006 16:16:44 -0000 >@@ -293,6 +293,12 @@ > * contribution to a memento. > */ > protected abstract char getHandleMementoDelimiter(); >+ /* (non-Javadoc) >+ * @see IMember#getJavaFile() >+ */ >+ public IJavaFile getJavaFile() { >+ return null; >+ } > /** > * @see IJavaElement > */ >Index: dom/org/eclipse/jdt/core/dom/ASTParser.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTParser.java,v >retrieving revision 1.65 >diff -u -r1.65 ASTParser.java >--- dom/org/eclipse/jdt/core/dom/ASTParser.java 23 Jun 2006 13:44:54 -0000 1.65 >+++ dom/org/eclipse/jdt/core/dom/ASTParser.java 14 Nov 2006 16:16:42 -0000 >@@ -17,6 +17,7 @@ > import org.eclipse.jdt.core.IClassFile; > import org.eclipse.jdt.core.ICompilationUnit; > import org.eclipse.jdt.core.IJavaElement; >+import org.eclipse.jdt.core.IJavaFile; > import org.eclipse.jdt.core.IJavaProject; > import org.eclipse.jdt.core.JavaCore; > import org.eclipse.jdt.core.JavaModelException; >@@ -154,14 +155,9 @@ > private char[] rawSource = null; > > /** >- * Java mode compilation unit supplying the source. >+ * Java model class file or compilation unit supplying the source. > */ >- private ICompilationUnit compilationUnitSource = null; >- >- /** >- * Java model class file supplying the source. >- */ >- private IClassFile classFileSource = null; >+ private IJavaFile javaFileSource = null; > > /** > * Character-based offset into the source string where parsing is to >@@ -218,8 +214,7 @@ > private void initializeDefaults() { > this.astKind = K_COMPILATION_UNIT; > this.rawSource = null; >- this.classFileSource = null; >- this.compilationUnitSource = null; >+ this.javaFileSource = null; > this.resolveBindings = false; > this.sourceLength = -1; > this.sourceOffset = 0; >@@ -452,9 +447,8 @@ > */ > public void setSource(char[] source) { > this.rawSource = source; >- // clear the others >- this.compilationUnitSource = null; >- this.classFileSource = null; >+ // clear the other >+ this.javaFileSource = null; > } > > /** >@@ -467,16 +461,7 @@ > * is to be parsed, or <code>null</code> if none > */ > public void setSource(ICompilationUnit source) { >- this.compilationUnitSource = source; >- // clear the others >- this.rawSource = null; >- this.classFileSource = null; >- if (source != null) { >- this.project = source.getJavaProject(); >- Map options = this.project.getOptions(true); >- options.remove(JavaCore.COMPILER_TASK_TAGS); // no need to parse task tags >- this.compilerOptions = options; >- } >+ setSource((IJavaFile) source); > } > > /** >@@ -491,10 +476,25 @@ > * is to be parsed, or <code>null</code> if none > */ > public void setSource(IClassFile source) { >- this.classFileSource = source; >- // clear the others >+ setSource((IJavaFile) source); >+ } >+ >+ /** >+ * Sets the source code to be parsed. >+ * <p>This method automatically sets the project (and compiler >+ * options) based on the given compilation unit of class file, in a manner >+ * equivalent to <code>setProject(source.getJavaProject())</code>.</p> >+ * <p>If the source is a class file without source attachment, the creation of the >+ * ast will fail with an IllegalStateException.</p> >+ * >+ * @param source the Java model compilation unit or class file whose corresponding source code >+ * is to be parsed, or <code>null</code> if none >+ * @since 3.3 >+ */ >+ public void setSource(IJavaFile source) { >+ this.javaFileSource = source; >+ // clear the other > this.rawSource = null; >- this.compilationUnitSource = null; > if (source != null) { > this.project = source.getJavaProject(); > Map options = this.project.getOptions(true); >@@ -623,8 +623,7 @@ > if (monitor != null) monitor.beginTask("", 1); //$NON-NLS-1$ > try { > if ((this.rawSource == null) >- && (this.compilationUnitSource == null) >- && (this.classFileSource == null)) { >+ && (this.javaFileSource == null)) { > throw new IllegalStateException("source not specified"); //$NON-NLS-1$ > } > result = internalCreateAST(monitor); >@@ -782,22 +781,22 @@ > try { > NodeSearcher searcher = null; > org.eclipse.jdt.internal.compiler.env.ICompilationUnit sourceUnit = null; >- IJavaElement element = null; >- if (this.compilationUnitSource != null) { >- sourceUnit = (org.eclipse.jdt.internal.compiler.env.ICompilationUnit) this.compilationUnitSource; >- // use a BasicCompilation that caches the source instead of using the compilationUnitSource directly >+ IJavaFile javaFile = null; >+ if (this.javaFileSource instanceof ICompilationUnit) { >+ sourceUnit = (org.eclipse.jdt.internal.compiler.env.ICompilationUnit) this.javaFileSource; >+ // use a BasicCompilation that caches the source instead of using the javaFileSource directly > // (if it is a working copy, the source can change between the parse and the AST convertion) > // (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=75632) > sourceUnit = new BasicCompilationUnit(sourceUnit.getContents(), sourceUnit.getPackageName(), new String(sourceUnit.getFileName()), this.project); >- element = this.compilationUnitSource; >- } else if (this.classFileSource != null) { >+ javaFile = this.javaFileSource; >+ } else if (this.javaFileSource instanceof IClassFile) { > try { >- String sourceString = this.classFileSource.getSource(); >+ String sourceString = this.javaFileSource.getSource(); > if (sourceString == null) { > throw new IllegalStateException(); > } >- PackageFragment packageFragment = (PackageFragment) this.classFileSource.getParent(); >- BinaryType type = (BinaryType) this.classFileSource.getType(); >+ PackageFragment packageFragment = (PackageFragment) this.javaFileSource.getParent(); >+ BinaryType type = (BinaryType) this.javaFileSource.findPrimaryType(); > IBinaryType binaryType = (IBinaryType) type.getElementInfo(); > // file name is used to recreate the Java element, so it has to be the toplevel .class file name > char[] fileName = binaryType.getFileName(); >@@ -811,7 +810,7 @@ > fileName = newFileName; > } > sourceUnit = new BasicCompilationUnit(sourceString.toCharArray(), Util.toCharArrays(packageFragment.names), new String(fileName), this.project); >- element = this.classFileSource; >+ javaFile = this.javaFileSource; > } catch(JavaModelException e) { > // an error occured accessing the java element > throw new IllegalStateException(); >@@ -859,10 +858,10 @@ > this.apiLevel, > this.compilerOptions, > needToResolveBindings, >- this.compilationUnitSource == null ? this.workingCopyOwner : this.compilationUnitSource.getOwner(), >+ ! (this.javaFileSource instanceof ICompilationUnit) ? this.workingCopyOwner : ((ICompilationUnit) this.javaFileSource).getOwner(), > needToResolveBindings ? new DefaultBindingResolver.BindingTables() : null, > monitor); >- result.setJavaElement(element); >+ result.setJavaElement(javaFile); > return result; > } finally { > if (compilationUnitDeclaration != null && this.resolveBindings) { >Index: dom/org/eclipse/jdt/core/dom/CompilationUnit.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/CompilationUnit.java,v >retrieving revision 1.84 >diff -u -r1.84 CompilationUnit.java >--- dom/org/eclipse/jdt/core/dom/CompilationUnit.java 23 Oct 2006 16:43:55 -0000 1.84 >+++ dom/org/eclipse/jdt/core/dom/CompilationUnit.java 14 Nov 2006 16:16:43 -0000 >@@ -18,6 +18,7 @@ > import java.util.Map; > > import org.eclipse.jdt.core.IJavaElement; >+import org.eclipse.jdt.core.IJavaFile; > import org.eclipse.jdt.core.compiler.IProblem; > import org.eclipse.jdt.internal.compiler.parser.Scanner; > import org.eclipse.jface.text.IDocument; >@@ -123,11 +124,11 @@ > private DefaultCommentMapper commentMapper = null; > > /** >- * The Java element (an <code>org.eclipse.jdt.core.ICompilationUnit</code> or an <code>org.eclipse.jdt.core.IClassFile</code>) >- * this compilation unit was created from, or <code>null</code> if it was not created from a Java element. >+ * The Java file (an <code>org.eclipse.jdt.core.ICompilationUnit</code> or an <code>org.eclipse.jdt.core.IClassFile</code>) >+ * this compilation unit was created from, or <code>null</code> if it was not created from a Java file. > * @since 3.1 > */ >- private IJavaElement element = null; >+ private IJavaFile javaFile = null; > > /** > * The list of import declarations in textual order order; >@@ -492,7 +493,18 @@ > * @since 3.1 > */ > public IJavaElement getJavaElement() { >- return this.element; >+ return this.javaFile; >+ } >+ >+ /** >+ * The Java file (an <code>org.eclipse.jdt.core.ICompilationUnit</code> or an <code>org.eclipse.jdt.core.IClassFile</code>) >+ * this compilation unit was created from, or <code>null</code> if it was not created from a Java file. >+ * >+ * @return the Java file this compilation unit was created from, or <code>null</code> if none >+ * @since 3.3 >+ */ >+ public IJavaFile getJavaFile() { >+ return this.javaFile; > } > > /** >@@ -940,7 +952,18 @@ > * @since 3.1 > */ > void setJavaElement(IJavaElement element) { >- this.element = element; >+ this.javaFile = (IJavaFile) element; >+ } >+ >+ /** >+ * Sets the Java file (an <code>org.eclipse.jdt.core.ICompilationUnit</code> or an <code>org.eclipse.jdt.core.IClassFile</code>) >+ * this compilation unit was created from, or <code>null</code> if it was not created from a Java element. >+ * >+ * @param javaFile the Java file this compilation unit was created from >+ * @since 3.3 >+ */ >+ void setJavaFile(IJavaFile javaFile) { >+ this.javaFile = javaFile; > } > > /** >Index: model/org/eclipse/jdt/core/IJavaFile.java >=================================================================== >RCS file: model/org/eclipse/jdt/core/IJavaFile.java >diff -N model/org/eclipse/jdt/core/IJavaFile.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ model/org/eclipse/jdt/core/IJavaFile.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,95 @@ >+/******************************************************************************* >+ * Copyright (c) 2006 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Common Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/cpl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.jdt.core; >+ >+import org.eclipse.core.runtime.IProgressMonitor; >+ >+ >+/** >+ * Represents an entire Java file (either an <code>ICompilationUnit</code> >+ * or an <code>IClassFile</code>). >+ * >+ * <p> >+ * This interface is not intended to be implemented by clients. >+ * </p> >+ * >+ * @see ICompilationUnit >+ * @see IClassFile >+ * @since 3.3 >+ */ >+public interface IJavaFile extends IJavaElement, IParent, IOpenable, ISourceReference, ICodeAssist { >+ >+/** >+ * Finds the primary type of this Java file (that is, the type with the same name as the >+ * compilation unit, or the type of a class file), or <code>null</code> if no such a type exists. >+ * >+ * @return the found primary type of this Java file, or <code>null</code> if no such a type exists >+ */ >+IType findPrimaryType(); >+ >+/** >+ * Returns the smallest element within this Java file that >+ * includes the given source position (that is, a method, field, etc.), or >+ * <code>null</code> if there is no element other than the Java file >+ * itself at the given position, or if the given position is not >+ * within the source range of the source of this Java file. >+ * >+ * @param position a source position inside the Java file >+ * @return the innermost Java element enclosing a given source position or <code>null</code> >+ * if none (excluding the Java file). >+ * @throws JavaModelException if the Java file does not exist or if an >+ * exception occurs while accessing its corresponding resource >+ */ >+IJavaElement getElementAt(int position) throws JavaModelException; >+ >+/** >+ * Returns a shared working copy on this compilation unit or class file using the given working copy owner to create >+ * the buffer. If this is already a working copy of the given owner, the element itself is returned. >+ * This API can only answer an already existing working copy if it is based on the same >+ * original Java file AND was using the same working copy owner (that is, as defined by {@link Object#equals}). >+ * <p> >+ * The life time of a shared working copy is as follows: >+ * <ul> >+ * <li>The first call to {@link #getWorkingCopy(WorkingCopyOwner, IProgressMonitor)} >+ * creates a new working copy for this element</li> >+ * <li>Subsequent calls increment an internal counter.</li> >+ * <li>A call to {@link ICompilationUnit#discardWorkingCopy()} decrements the internal counter.</li> >+ * <li>When this counter is 0, the working copy is discarded. >+ * </ul> >+ * So users of this method must discard exactly once the working copy. >+ * <p> >+ * Note that the working copy owner will be used for the life time of the shared working copy, that is if the >+ * working copy is closed then reopened, this owner will be used. >+ * The buffer will be automatically initialized with the original's Java file content upon creation. >+ * <p> >+ * When the shared working copy instance is created, an ADDED IJavaElementDelta is reported on this >+ * working copy. >+ * </p><p> >+ * Since 2.1, a working copy can be created on a not-yet existing compilation >+ * unit. In particular, such a working copy can then be committed in order to create >+ * the corresponding compilation unit. >+ * </p><p> >+ * The problems of this working copy are reported to the {@link IProblemRequestor} configured by the >+ * {@link WorkingCopyOwner}. >+ * </p> >+ * >+ * @param owner the working copy owner that creates a buffer that is used to get the content >+ * of the working copy >+ * @param monitor a progress monitor used to report progress while opening this compilation unit >+ * or <code>null</code> if no progress should be reported >+ * @throws JavaModelException if the contents of this element can >+ * not be determined. >+ * @return a new working copy of this Java file using the given owner to create >+ * the buffer, or this Java file if it is already a working copy >+ */ >+ICompilationUnit getWorkingCopy(WorkingCopyOwner owner, IProgressMonitor monitor) throws JavaModelException; >+ >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 125504
:
46389
|
52107
|
52318
|
53826
|
54332
|
54351
|
54476