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 91214 Details for
Bug 220565
adapt to new API ICompilationUnit.applyEdits
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Improved change after Martin's feedback
220565v2.txt (text/plain), 25.58 KB, created by
Jerome Lanneluc
on 2008-02-29 12:57:06 EST
(
hide
)
Description:
Improved change after Martin's feedback
Filename:
MIME Type:
Creator:
Jerome Lanneluc
Created:
2008-02-29 12:57:06 EST
Size:
25.58 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.jdt.core >Index: model/org/eclipse/jdt/internal/core/CreatePackageDeclarationOperation.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreatePackageDeclarationOperation.java,v >retrieving revision 1.27 >diff -u -r1.27 CreatePackageDeclarationOperation.java >--- model/org/eclipse/jdt/internal/core/CreatePackageDeclarationOperation.java 6 Mar 2007 02:38:49 -0000 1.27 >+++ model/org/eclipse/jdt/internal/core/CreatePackageDeclarationOperation.java 29 Feb 2008 17:54:00 -0000 >@@ -29,7 +29,6 @@ > import org.eclipse.jdt.core.dom.StructuralPropertyDescriptor; > import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; > import org.eclipse.jdt.internal.core.util.Messages; >-import org.eclipse.jface.text.IDocument; > > /** > * <p>This operation adds/replaces a package declaration in an existing compilation unit. >@@ -56,7 +55,7 @@ > protected StructuralPropertyDescriptor getChildPropertyDescriptor(ASTNode parent) { > return CompilationUnit.PACKAGE_PROPERTY; > } >-protected ASTNode generateElementAST(ASTRewrite rewriter, IDocument document, ICompilationUnit cu) throws JavaModelException { >+protected ASTNode generateElementAST(ASTRewrite rewriter, ICompilationUnit cu) throws JavaModelException { > //look for an existing package declaration > IJavaElement[] children = getCompilationUnit().getChildren(); > for (int i = 0; i < children.length; i++) { >Index: model/org/eclipse/jdt/internal/core/JavaModelOperation.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModelOperation.java,v >retrieving revision 1.70 >diff -u -r1.70 JavaModelOperation.java >--- model/org/eclipse/jdt/internal/core/JavaModelOperation.java 26 Feb 2008 10:11:45 -0000 1.70 >+++ model/org/eclipse/jdt/internal/core/JavaModelOperation.java 29 Feb 2008 17:54:01 -0000 >@@ -19,7 +19,7 @@ > import org.eclipse.core.runtime.jobs.ISchedulingRule; > import org.eclipse.jdt.core.*; > import org.eclipse.jdt.internal.core.util.Messages; >-import org.eclipse.jface.text.IDocument; >+import org.eclipse.text.edits.TextEdit; > > /** > * Defines behavior common to all Java Model operations >@@ -190,6 +190,18 @@ > protected void removeReconcileDelta(ICompilationUnit workingCopy) { > JavaModelManager.getJavaModelManager().getDeltaProcessor().reconcileDeltas.remove(workingCopy); > } >+ protected void applyTextEdit(ICompilationUnit cu, TextEdit edits) throws JavaModelException { >+ try { >+ cu.applyTextEdit(edits, this.progressMonitor); >+ } catch (JavaModelException e) { >+ if (e.getJavaModelStatus().getCode() == IJavaModelStatusConstants.BAD_TEXT_EDIT_LOCATION) { >+ // content changed under us >+ throw new JavaModelException(e.getException(), IJavaModelStatusConstants.INVALID_CONTENTS); >+ } else { >+ throw e; >+ } >+ } >+ } > /** > * @see IProgressMonitor > */ >@@ -421,15 +433,6 @@ > } > return stack; > } >- /* >- * Returns the existing document for the given cu, or a DocumentAdapter if none. >- */ >- protected IDocument getDocument(ICompilationUnit cu) throws JavaModelException { >- IBuffer buffer = cu.getBuffer(); >- if (buffer instanceof IDocument) >- return (IDocument) buffer; >- return new DocumentAdapter(buffer); >- } > /** > * Returns the element to which this operation applies, > * or <code>null</code> if not applicable. >Index: model/org/eclipse/jdt/internal/core/CreateTypeOperation.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateTypeOperation.java,v >retrieving revision 1.29 >diff -u -r1.29 CreateTypeOperation.java >--- model/org/eclipse/jdt/internal/core/CreateTypeOperation.java 8 Apr 2005 20:30:28 -0000 1.29 >+++ model/org/eclipse/jdt/internal/core/CreateTypeOperation.java 29 Feb 2008 17:54:00 -0000 >@@ -21,7 +21,6 @@ > import org.eclipse.jdt.core.dom.SimpleName; > import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; > import org.eclipse.jdt.internal.core.util.Messages; >-import org.eclipse.jface.text.IDocument; > > /** > * <p>This operation creates a class or interface. >@@ -40,8 +39,8 @@ > public CreateTypeOperation(IJavaElement parentElement, String source, boolean force) { > super(parentElement, source, force); > } >-protected ASTNode generateElementAST(ASTRewrite rewriter, IDocument document, ICompilationUnit cu) throws JavaModelException { >- ASTNode node = super.generateElementAST(rewriter, document, cu); >+protected ASTNode generateElementAST(ASTRewrite rewriter, ICompilationUnit cu) throws JavaModelException { >+ ASTNode node = super.generateElementAST(rewriter, cu); > if (!(node instanceof AbstractTypeDeclaration)) > throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.INVALID_CONTENTS)); > return node; >Index: model/org/eclipse/jdt/internal/core/CreateImportOperation.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateImportOperation.java,v >retrieving revision 1.31 >diff -u -r1.31 CreateImportOperation.java >--- model/org/eclipse/jdt/internal/core/CreateImportOperation.java 6 Mar 2007 02:38:49 -0000 1.31 >+++ model/org/eclipse/jdt/internal/core/CreateImportOperation.java 29 Feb 2008 17:54:00 -0000 >@@ -33,7 +33,6 @@ > import org.eclipse.jdt.core.dom.StructuralPropertyDescriptor; > import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; > import org.eclipse.jdt.internal.core.util.Messages; >-import org.eclipse.jface.text.IDocument; > > /** > * <p>This operation adds an import declaration to an existing compilation unit. >@@ -76,7 +75,7 @@ > protected StructuralPropertyDescriptor getChildPropertyDescriptor(ASTNode parent) { > return CompilationUnit.IMPORTS_PROPERTY; > } >-protected ASTNode generateElementAST(ASTRewrite rewriter, IDocument document, ICompilationUnit cu) throws JavaModelException { >+protected ASTNode generateElementAST(ASTRewrite rewriter, ICompilationUnit cu) throws JavaModelException { > // ensure no duplicate > Iterator imports = this.cuAST.imports().iterator(); > boolean onDemand = this.importName.endsWith(".*"); //$NON-NLS-1$ >Index: model/org/eclipse/jdt/internal/core/CreateMethodOperation.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateMethodOperation.java,v >retrieving revision 1.26 >diff -u -r1.26 CreateMethodOperation.java >--- model/org/eclipse/jdt/internal/core/CreateMethodOperation.java 3 May 2005 14:09:04 -0000 1.26 >+++ model/org/eclipse/jdt/internal/core/CreateMethodOperation.java 29 Feb 2008 17:54:00 -0000 >@@ -27,7 +27,6 @@ > import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; > import org.eclipse.jdt.internal.core.util.Messages; > import org.eclipse.jdt.internal.core.util.Util; >-import org.eclipse.jface.text.IDocument; > > /** > * <p>This operation creates an instance method. >@@ -74,8 +73,8 @@ > } > return this.parameterTypes; > } >-protected ASTNode generateElementAST(ASTRewrite rewriter, IDocument document, ICompilationUnit cu) throws JavaModelException { >- ASTNode node = super.generateElementAST(rewriter, document, cu); >+protected ASTNode generateElementAST(ASTRewrite rewriter, ICompilationUnit cu) throws JavaModelException { >+ ASTNode node = super.generateElementAST(rewriter, cu); > if (node.getNodeType() != ASTNode.METHOD_DECLARATION) > throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.INVALID_CONTENTS)); > return node; >Index: model/org/eclipse/jdt/internal/core/CreateInitializerOperation.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateInitializerOperation.java,v >retrieving revision 1.25 >diff -u -r1.25 CreateInitializerOperation.java >--- model/org/eclipse/jdt/internal/core/CreateInitializerOperation.java 8 Apr 2005 20:30:28 -0000 1.25 >+++ model/org/eclipse/jdt/internal/core/CreateInitializerOperation.java 29 Feb 2008 17:54:00 -0000 >@@ -19,7 +19,6 @@ > import org.eclipse.jdt.core.dom.SimpleName; > import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; > import org.eclipse.jdt.internal.core.util.Messages; >-import org.eclipse.jface.text.IDocument; > > /** > * <p>This operation creates a initializer in a type. >@@ -47,8 +46,8 @@ > public CreateInitializerOperation(IType parentElement, String source) { > super(parentElement, source, false); > } >-protected ASTNode generateElementAST(ASTRewrite rewriter, IDocument document, ICompilationUnit cu) throws JavaModelException { >- ASTNode node = super.generateElementAST(rewriter, document, cu); >+protected ASTNode generateElementAST(ASTRewrite rewriter, ICompilationUnit cu) throws JavaModelException { >+ ASTNode node = super.generateElementAST(rewriter, cu); > if (node.getNodeType() != ASTNode.INITIALIZER) > throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.INVALID_CONTENTS)); > return node; >Index: model/org/eclipse/jdt/internal/core/CreateFieldOperation.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateFieldOperation.java,v >retrieving revision 1.29 >diff -u -r1.29 CreateFieldOperation.java >--- model/org/eclipse/jdt/internal/core/CreateFieldOperation.java 29 Mar 2006 03:08:48 -0000 1.29 >+++ model/org/eclipse/jdt/internal/core/CreateFieldOperation.java 29 Feb 2008 17:54:00 -0000 >@@ -25,7 +25,6 @@ > import org.eclipse.jdt.core.dom.VariableDeclarationFragment; > import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; > import org.eclipse.jdt.internal.core.util.Messages; >-import org.eclipse.jface.text.IDocument; > > /** > * <p>This operation creates a field declaration in a type. >@@ -48,8 +47,8 @@ > public CreateFieldOperation(IType parentElement, String source, boolean force) { > super(parentElement, source, force); > } >-protected ASTNode generateElementAST(ASTRewrite rewriter, IDocument document, ICompilationUnit cu) throws JavaModelException { >- ASTNode node = super.generateElementAST(rewriter, document, cu); >+protected ASTNode generateElementAST(ASTRewrite rewriter, ICompilationUnit cu) throws JavaModelException { >+ ASTNode node = super.generateElementAST(rewriter, cu); > if (node.getNodeType() != ASTNode.FIELD_DECLARATION) > throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.INVALID_CONTENTS)); > return node; >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.246 >diff -u -r1.246 CompilationUnit.java >--- model/org/eclipse/jdt/internal/core/CompilationUnit.java 27 Feb 2008 14:50:26 -0000 1.246 >+++ model/org/eclipse/jdt/internal/core/CompilationUnit.java 29 Feb 2008 17:54:00 -0000 >@@ -32,6 +32,7 @@ > import org.eclipse.jdt.internal.core.util.Util; > > import org.eclipse.jface.text.BadLocationException; >+import org.eclipse.jface.text.IDocument; > > import org.eclipse.text.edits.MalformedTreeException; > import org.eclipse.text.edits.TextEdit; >@@ -68,14 +69,13 @@ > * @see ICompilationUnit#applyTextEdit(TextEdit, IProgressMonitor) > */ > public UndoEdit applyTextEdit(TextEdit edit, IProgressMonitor monitor) throws JavaModelException { >- IBuffer buffer= getBuffer(); >+ IBuffer buffer = getBuffer(); > if (buffer instanceof IBuffer.ITextEditCapability) { > return ((IBuffer.ITextEditCapability) buffer).applyTextEdit(edit, monitor); > } else if (buffer != null) { >- DocumentAdapter document= new DocumentAdapter(buffer); >+ IDocument document = buffer instanceof IDocument ? (IDocument) buffer : new DocumentAdapter(buffer); > try { > UndoEdit undoEdit= edit.apply(document); >- buffer.setContents(document.get()); > return undoEdit; > } catch (MalformedTreeException e) { > throw new JavaModelException(e, IJavaModelStatusConstants.BAD_TEXT_EDIT_LOCATION); >Index: model/org/eclipse/jdt/internal/core/CreateTypeMemberOperation.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateTypeMemberOperation.java,v >retrieving revision 1.35 >diff -u -r1.35 CreateTypeMemberOperation.java >--- model/org/eclipse/jdt/internal/core/CreateTypeMemberOperation.java 29 Mar 2006 03:08:48 -0000 1.35 >+++ model/org/eclipse/jdt/internal/core/CreateTypeMemberOperation.java 29 Feb 2008 17:54:00 -0000 >@@ -32,8 +32,6 @@ > import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; > import org.eclipse.jdt.core.formatter.IndentManipulation; > import org.eclipse.jdt.internal.compiler.parser.ScannerHelper; >-import org.eclipse.jface.text.IDocument; >-import org.eclipse.jface.text.TextUtilities; > > /** > * Implements functionality common to >@@ -76,9 +74,9 @@ > return TypeDeclaration.BODY_DECLARATIONS_PROPERTY; > } > } >-protected ASTNode generateElementAST(ASTRewrite rewriter, IDocument document, ICompilationUnit cu) throws JavaModelException { >+protected ASTNode generateElementAST(ASTRewrite rewriter, ICompilationUnit cu) throws JavaModelException { > if (this.createdNode == null) { >- this.source = removeIndentAndNewLines(this.source, document, cu); >+ this.source = removeIndentAndNewLines(this.source, cu); > ASTParser parser = ASTParser.newParser(AST.JLS3); > parser.setSource(this.source.toCharArray()); > parser.setProject(getCompilationUnit().getJavaProject()); >@@ -120,7 +118,7 @@ > // return a string place holder (instead of the created node) so has to not lose comments and formatting > return rewriter.createStringPlaceholder(this.source, this.createdNode.getNodeType()); > } >-private String removeIndentAndNewLines(String code, IDocument document, ICompilationUnit cu) { >+private String removeIndentAndNewLines(String code, ICompilationUnit cu) throws JavaModelException { > IJavaProject project = cu.getJavaProject(); > Map options = project.getOptions(true/*inherit JavaCore options*/); > int tabWidth = IndentManipulation.getTabWidth(options); >@@ -135,7 +133,7 @@ > while (lastNonWhiteSpace > 0) > if (!ScannerHelper.isWhitespace(code.charAt(--lastNonWhiteSpace))) > break; >- String lineDelimiter = TextUtilities.getDefaultLineDelimiter(document); >+ String lineDelimiter = cu.findRecommendedLineSeparator(); > return IndentManipulation.changeIndent(code.substring(firstNonWhiteSpace, lastNonWhiteSpace+1), indent, tabWidth, indentWidth, "", lineDelimiter); //$NON-NLS-1$ > } > /* >@@ -199,7 +197,7 @@ > //check for name collisions > try { > ICompilationUnit cu = getCompilationUnit(); >- generateElementAST(null, getDocument(cu), cu); >+ generateElementAST(null, cu); > } catch (JavaModelException jme) { > return jme.getJavaModelStatus(); > } >Index: model/org/eclipse/jdt/internal/core/CopyElementsOperation.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CopyElementsOperation.java,v >retrieving revision 1.35 >diff -u -r1.35 CopyElementsOperation.java >--- model/org/eclipse/jdt/internal/core/CopyElementsOperation.java 6 Mar 2007 02:38:49 -0000 1.35 >+++ model/org/eclipse/jdt/internal/core/CopyElementsOperation.java 29 Feb 2008 17:54:00 -0000 >@@ -188,7 +188,7 @@ > } > > if (createElementInCUOperation && isMove() && !isRenamingMainType(element, destination)) { >- DeleteElementsOperation deleteOp = new DeleteElementsOperation(new IJavaElement[] { element }, this.force); >+ JavaModelOperation deleteOp = new DeleteElementsOperation(new IJavaElement[] { element }, this.force); > executeNestedOperation(deleteOp, 1); > } > } >Index: model/org/eclipse/jdt/internal/core/DeleteElementsOperation.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeleteElementsOperation.java,v >retrieving revision 1.44 >diff -u -r1.44 DeleteElementsOperation.java >--- model/org/eclipse/jdt/internal/core/DeleteElementsOperation.java 27 Apr 2007 15:51:38 -0000 1.44 >+++ model/org/eclipse/jdt/internal/core/DeleteElementsOperation.java 29 Feb 2008 17:54:00 -0000 >@@ -29,8 +29,6 @@ > import org.eclipse.jdt.core.dom.CompilationUnit; > import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; > import org.eclipse.jdt.internal.core.util.Messages; >-import org.eclipse.jface.text.BadLocationException; >-import org.eclipse.jface.text.IDocument; > import org.eclipse.text.edits.TextEdit; > > /** >@@ -74,16 +72,11 @@ > ASTNode node = ((JavaElement) elementToRemove).findNode(astCU); > if (node == null) > Assert.isTrue(false, "Failed to locate " + elementToRemove.getElementName() + " in " + cu.getElementName()); //$NON-NLS-1$//$NON-NLS-2$ >- IDocument document = getDocument(cu); > AST ast = astCU.getAST(); > ASTRewrite rewriter = ASTRewrite.create(ast); > rewriter.remove(node, null); >- TextEdit edits = rewriter.rewriteAST(document, null); >- try { >- edits.apply(document); >- } catch (BadLocationException e) { >- throw new JavaModelException(e, IJavaModelStatusConstants.INVALID_CONTENTS); >- } >+ TextEdit edits = rewriter.rewriteAST(); >+ applyTextEdit(cu, edits); > } > > private void initASTParser() { >Index: model/org/eclipse/jdt/internal/core/CreateElementInCUOperation.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateElementInCUOperation.java,v >retrieving revision 1.37 >diff -u -r1.37 CreateElementInCUOperation.java >--- model/org/eclipse/jdt/internal/core/CreateElementInCUOperation.java 3 Apr 2007 09:33:48 -0000 1.37 >+++ model/org/eclipse/jdt/internal/core/CreateElementInCUOperation.java 29 Feb 2008 17:54:00 -0000 >@@ -10,8 +10,6 @@ > *******************************************************************************/ > package org.eclipse.jdt.internal.core; > >-import java.util.Map; >- > import org.eclipse.core.resources.IResource; > import org.eclipse.core.resources.IWorkspace; > import org.eclipse.core.runtime.jobs.ISchedulingRule; >@@ -29,8 +27,6 @@ > import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; > import org.eclipse.jdt.core.dom.rewrite.ListRewrite; > import org.eclipse.jdt.internal.core.util.Util; >-import org.eclipse.jface.text.BadLocationException; >-import org.eclipse.jface.text.IDocument; > import org.eclipse.text.edits.TextEdit; > > /** >@@ -93,14 +89,6 @@ > super(null, new IJavaElement[]{parentElement}); > initializeDefaultPosition(); > } >- protected void apply(ASTRewrite rewriter, IDocument document, Map options) throws JavaModelException { >- TextEdit edits = rewriter.rewriteAST(document, options); >- try { >- edits.apply(document); >- } catch (BadLocationException e) { >- throw new JavaModelException(e, IJavaModelStatusConstants.INVALID_CONTENTS); >- } >- } > /** > * Only allow cancelling if this operation is not nested. > */ >@@ -168,7 +156,7 @@ > /* > * Returns an AST node for the element being created. > */ >- protected abstract ASTNode generateElementAST(ASTRewrite rewriter, IDocument document, ICompilationUnit cu) throws JavaModelException; >+ protected abstract ASTNode generateElementAST(ASTRewrite rewriter, ICompilationUnit cu) throws JavaModelException; > /* > * Generates a new AST for this operation and applies it to the given cu > */ >@@ -177,14 +165,14 @@ > > AST ast = this.cuAST.getAST(); > ASTRewrite rewriter = ASTRewrite.create(ast); >- IDocument document = getDocument(cu); >- ASTNode child = generateElementAST(rewriter, document, cu); >+ ASTNode child = generateElementAST(rewriter, cu); > if (child != null) { > ASTNode parent = ((JavaElement) getParentElement()).findNode(this.cuAST); > if (parent == null) > parent = this.cuAST; > insertASTNode(rewriter, parent, child); >- apply(rewriter, document, cu.getJavaProject().getOptions(true)); >+ TextEdit edits = rewriter.rewriteAST(); >+ applyTextEdit(cu, edits); > } > worked(1); > } >Index: model/org/eclipse/jdt/internal/core/CopyResourceElementsOperation.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CopyResourceElementsOperation.java,v >retrieving revision 1.106 >diff -u -r1.106 CopyResourceElementsOperation.java >--- model/org/eclipse/jdt/internal/core/CopyResourceElementsOperation.java 26 Feb 2008 10:11:46 -0000 1.106 >+++ model/org/eclipse/jdt/internal/core/CopyResourceElementsOperation.java 29 Feb 2008 17:54:00 -0000 >@@ -29,8 +29,6 @@ > import org.eclipse.jdt.internal.compiler.util.SuffixConstants; > import org.eclipse.jdt.internal.core.util.Messages; > import org.eclipse.jdt.internal.core.util.Util; >-import org.eclipse.jface.text.BadLocationException; >-import org.eclipse.jface.text.IDocument; > import org.eclipse.text.edits.TextEdit; > > /** >@@ -228,7 +226,7 @@ > private void processCompilationUnitResource(ICompilationUnit source, PackageFragment dest) throws JavaModelException { > String newCUName = getNewNameFor(source); > String destName = (newCUName != null) ? newCUName : source.getElementName(); >- ASTRewrite rewrite = updateContent(source, dest, newCUName); // null if unchanged >+ TextEdit edit = updateContent(source, dest, newCUName); // null if unchanged > > // TODO (frederic) remove when bug 67606 will be fixed (bug 67823) > // store encoding (fix bug 66898) >@@ -265,7 +263,7 @@ > flags |= IResource.KEEP_HISTORY; > sourceResource.move(destFile.getFullPath(), flags, getSubProgressMonitor(1)); > } else { >- if (rewrite != null) flags |= IResource.KEEP_HISTORY; >+ if (edit != null) flags |= IResource.KEEP_HISTORY; > sourceResource.copy(destFile.getFullPath(), flags, getSubProgressMonitor(1)); > } > setAttribute(HAS_MODIFIED_RESOURCE_ATTR, TRUE); >@@ -279,10 +277,10 @@ > } > > // update new resource content >- if (rewrite != null){ >+ if (edit != null){ > boolean wasReadOnly = destFile.isReadOnly(); > try { >- saveContent(dest, destName, rewrite, sourceEncoding, destFile); >+ saveContent(dest, destName, edit, sourceEncoding, destFile); > } catch (CoreException e) { > if (e instanceof JavaModelException) throw (JavaModelException) e; > throw new JavaModelException(e); >@@ -308,8 +306,8 @@ > // update new resource content > // in case we do a saveas on the same resource we have to simply update the contents > // see http://dev.eclipse.org/bugs/show_bug.cgi?id=9351 >- if (rewrite != null){ >- saveContent(dest, destName, rewrite, sourceEncoding, destFile); >+ if (edit != null){ >+ saveContent(dest, destName, edit, sourceEncoding, destFile); > } > } > } >@@ -462,13 +460,8 @@ > AST ast = astCU.getAST(); > ASTRewrite rewrite = ASTRewrite.create(ast); > updatePackageStatement(astCU, newFragName, rewrite); >- IDocument document = getDocument(cu); >- TextEdit edits = rewrite.rewriteAST(document, null); >- try { >- edits.apply(document); >- } catch (BadLocationException e) { >- throw new JavaModelException(e, IJavaModelStatusConstants.INVALID_CONTENTS); >- } >+ TextEdit edits = rewrite.rewriteAST(); >+ applyTextEdit(cu, edits); > cu.save(null, false); > } > } >@@ -523,7 +516,7 @@ > throw new JavaModelException(ce); > } > } >- private void saveContent(PackageFragment dest, String destName, ASTRewrite rewrite, String sourceEncoding, IFile destFile) throws JavaModelException { >+ private void saveContent(PackageFragment dest, String destName, TextEdit edits, String sourceEncoding, IFile destFile) throws JavaModelException { > try { > // TODO (frederic) remove when bug 67606 will be fixed (bug 67823) > // fix bug 66898 >@@ -534,17 +527,11 @@ > // use no encoding > } > // when the file was copied, its read-only flag was preserved -> temporary set it to false >- // note this doesn't interfer with repository providers as this is a new resource that cannot be under >+ // note this doesn't interfere with repository providers as this is a new resource that cannot be under > // version control yet > Util.setReadOnly(destFile, false); > ICompilationUnit destCU = dest.getCompilationUnit(destName); >- IDocument document = getDocument(destCU); >- TextEdit edits = rewrite.rewriteAST(document, null); >- try { >- edits.apply(document); >- } catch (BadLocationException e) { >- throw new JavaModelException(e, IJavaModelStatusConstants.INVALID_CONTENTS); >- } >+ applyTextEdit(destCU, edits); > destCU.save(getSubProgressMonitor(1), this.force); > } > /** >@@ -553,7 +540,7 @@ > * > * @return an AST rewrite or null if no rewrite needed > */ >- private ASTRewrite updateContent(ICompilationUnit cu, PackageFragment dest, String newName) throws JavaModelException { >+ private TextEdit updateContent(ICompilationUnit cu, PackageFragment dest, String newName) throws JavaModelException { > String[] currPackageName = ((PackageFragment) cu.getParent()).names; > String[] destPackageName = dest.names; > if (Util.equalArraysOrNull(currPackageName, destPackageName) && newName == null) { >@@ -567,7 +554,7 @@ > ASTRewrite rewrite = ASTRewrite.create(ast); > updateTypeName(cu, astCU, cu.getElementName(), newName, rewrite); > updatePackageStatement(astCU, destPackageName, rewrite); >- return rewrite; >+ return rewrite.rewriteAST(); > } > } > private void updatePackageStatement(CompilationUnit astCU, String[] pkgName, ASTRewrite rewriter) 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 220565
:
91201
| 91214