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 207292 Details for
Bug 362711
possibly incorrect JDT POST_CHANGE event fired when a file is replaced
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Patch with updated tests
bug362711.patch (text/plain), 12.52 KB, created by
Jay Arthanareeswaran
on 2011-11-21 05:27:33 EST
(
hide
)
Description:
Patch with updated tests
Filename:
MIME Type:
Creator:
Jay Arthanareeswaran
Created:
2011-11-21 05:27:33 EST
Size:
12.52 KB
patch
obsolete
>diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveElementsTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveElementsTests.java >index eec97ac..8ecb0b9 100644 >--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveElementsTests.java >+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveElementsTests.java >@@ -2452,7 +2452,7 @@ > try { > TestProgressMonitor monitor = TestProgressMonitor.getInstance(); > monitor.setCancelledCounter(1); >- movePositive(typeSource.getMethods(), new IJavaElement[] {typeDest}, null, null, false, monitor); >+ movePositive(typeSource.getMethods(), new IJavaElement[] {typeDest}, null, null, false, true, monitor); > } catch (OperationCanceledException e) { > isCanceled = true; > } >@@ -2488,7 +2488,7 @@ > try { > TestProgressMonitor monitor = TestProgressMonitor.getInstance(); > monitor.setCancelledCounter(1); >- movePositive(typeSource.getMethods(), new IJavaElement[] {typeDest}, null, null, false, monitor); >+ movePositive(typeSource.getMethods(), new IJavaElement[] {typeDest}, null, null, false, true, monitor); > } catch (OperationCanceledException e) { > isCanceled = true; > } >diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveResourcesTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveResourcesTests.java >index 3d4d1ec..2b68fd0 100644 >--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveResourcesTests.java >+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveResourcesTests.java >@@ -80,7 +80,13 @@ > } > IJavaElementDelta destDelta = this.deltaListener.getDeltaFor(container, true); > assertTrue("Destination container not changed", destDelta != null && destDelta.getKind() == IJavaElementDelta.CHANGED); >- IJavaElementDelta[] deltas = destDelta.getAddedChildren(); >+ IJavaElementDelta[] deltas = null; >+ if (force) { >+ deltas = destDelta.getChangedChildren(); >+ } >+ else { >+ deltas = destDelta.getAddedChildren(); >+ } > // FIXME: not strong enough > boolean found = false; > for (int i = 0; i < deltas.length; i++) { >@@ -809,25 +815,38 @@ > * existing CU. > */ > public void testMoveCU03() throws CoreException { >- this.createFolder("/P/src/p1"); >- this.createFile( >- "/P/src/p1/X.java", >- "package p1;\n" + >- "public class X {\n" + >- "}" >- ); >- ICompilationUnit cuSource = getCompilationUnit("/P/src/p1/X.java"); >+ try { >+ this.createFolder("/P/src/p1"); >+ this.createFile( >+ "/P/src/p1/X.java", >+ "package p1;\n" + >+ "public class X {\n" + >+ "}" >+ ); >+ ICompilationUnit cuSource = getCompilationUnit("/P/src/p1/X.java"); > >- this.createFolder("/P/src/p2"); >- this.createFile( >- "/P/src/p2/X.java", >- "package p2;\n" + >- "public class X {\n" + >- "}" >- ); >- IPackageFragment pkgDest = getPackage("/P/src/p2"); >- >- movePositive(cuSource, pkgDest, null, null, true); >+ this.createFolder("/P/src/p2"); >+ this.createFile( >+ "/P/src/p2/X.java", >+ "package p2;\n" + >+ "public class X {\n" + >+ "}" >+ ); >+ IPackageFragment pkgDest = getPackage("/P/src/p2"); >+ startDeltas(); >+ movePositive(new IJavaElement[] {cuSource}, new IJavaElement[] {pkgDest}, null, null, true, false, null); >+ assertDeltas( >+ "Incorrect delta", >+ "P[*]: {CHILDREN}\n" >+ + " src[*]: {CHILDREN}\n" >+ + " p1[*]: {CHILDREN}\n" >+ + " X.java[-]: {MOVED_TO(X.java [in p2 [in src [in P]]])}\n" >+ + " p2[*]: {CHILDREN}\n" >+ + " X.java[*]: {CONTENT | PRIMARY RESOURCE}"); >+ } >+ finally { >+ stopDeltas(); >+ } > } > /** > * Ensures that a CU can be moved to a different package, >@@ -853,25 +872,39 @@ > * be renamed, overwriting an existing resource. > */ > public void testMoveCU05() throws CoreException { >- this.createFolder("/P/src/p1"); >- this.createFile( >- "/P/src/p1/X.java", >- "package p1;\n" + >- "public class X {\n" + >- "}" >- ); >- ICompilationUnit cuSource = getCompilationUnit("/P/src/p1/X.java"); >+ try { >+ this.createFolder("/P/src/p1"); >+ this.createFile( >+ "/P/src/p1/X.java", >+ "package p1;\n" + >+ "public class X {\n" + >+ "}" >+ ); >+ ICompilationUnit cuSource = getCompilationUnit("/P/src/p1/X.java"); > >- this.createFolder("/P/src/p2"); >- this.createFile( >- "/P/src/p2/Y.java", >- "package p2;\n" + >- "public class Y {\n" + >- "}" >- ); >- IPackageFragment pkgDest = getPackage("/P/src/p2"); >- >- movePositive(cuSource, pkgDest, null, "Y.java", true); >+ this.createFolder("/P/src/p2"); >+ this.createFile( >+ "/P/src/p2/Y.java", >+ "package p2;\n" + >+ "public class Y {\n" + >+ "}" >+ ); >+ IPackageFragment pkgDest = getPackage("/P/src/p2"); >+ startDeltas(); >+ movePositive(new IJavaElement[] {cuSource}, new IJavaElement[] {pkgDest}, null, new String[]{"Y.java"}, true, false, null); >+ assertDeltas( >+ "Incorrect delta", >+ "P[*]: {CHILDREN}\n" >+ + " src[*]: {CHILDREN}\n" >+ + " p1[*]: {CHILDREN}\n" >+ + " X.java[-]: {MOVED_TO(Y.java [in p2 [in src [in P]]])}\n" >+ + " p2[*]: {CHILDREN}\n" >+ + " Y.java[*]: {CHILDREN | FINE GRAINED | PRIMARY RESOURCE}\n" >+ + " Y[+]: {MOVED_FROM(X [in X.java [in p1 [in src [in P]]]])}"); >+ } >+ finally { >+ stopDeltas(); >+ } > } > /** > * Ensures that a CU cannot be moved to a different package, replacing an >diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveTests.java >index b1066ae..c03e393 100644 >--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveTests.java >+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveTests.java >@@ -253,12 +253,15 @@ > public void movePositive(IJavaElement[] elements, IJavaElement[] destinations, IJavaElement[] siblings, String[] names, boolean force) throws JavaModelException { > movePositive(elements, destinations, siblings, names, force, null); > } >+public void movePositive(IJavaElement[] elements, IJavaElement[] destinations, IJavaElement[] siblings, String[] names, boolean force, IProgressMonitor monitor) throws JavaModelException { >+ movePositive(elements, destinations, siblings, names, force, true, null); >+} > /** > * Moves the elements to the containers with optional renaming > * and forcing. The operation should succeed, so any exceptions > * encountered are thrown. > */ >-public void movePositive(IJavaElement[] elements, IJavaElement[] destinations, IJavaElement[] siblings, String[] names, boolean force, IProgressMonitor monitor) throws JavaModelException { >+public void movePositive(IJavaElement[] elements, IJavaElement[] destinations, IJavaElement[] siblings, String[] names, boolean force, boolean checkDelta, IProgressMonitor monitor) throws JavaModelException { > // if forcing, ensure that a name collision exists > int i; > if (force) { >@@ -275,7 +278,7 @@ > } > > try { >- startDeltas(); >+ if(checkDelta) startDeltas(); > > // move > getJavaModel().move(elements, destinations, siblings, names, force, monitor); >@@ -341,24 +344,26 @@ > } > } > } >- IJavaElementDelta destDelta = null; >- if (isMainType(element, destinations[i]) && names != null && names[i] != null) { //moved/renamed main type to same cu >- destDelta = this.deltaListener.getDeltaFor(moved.getParent()); >- assertTrue("Renamed compilation unit as result of main type not added", destDelta != null && destDelta.getKind() == IJavaElementDelta.ADDED); >- assertTrue("flag should be F_MOVED_FROM", (destDelta.getFlags() & IJavaElementDelta.F_MOVED_FROM) > 0); >- assertTrue("moved from handle should be original", destDelta.getMovedFromElement().equals(element.getParent())); >- } else { >- destDelta = this.deltaListener.getDeltaFor(destinations[i], true); >- assertTrue("Destination container not changed", destDelta != null && destDelta.getKind() == IJavaElementDelta.CHANGED); >- IJavaElementDelta[] deltas = destDelta.getAddedChildren(); >- assertTrue("Added children not correct for element copy", deltas[i].getElement().equals(moved)); >- assertTrue("should be K_ADDED", deltas[i].getKind() == IJavaElementDelta.ADDED); >- IJavaElementDelta sourceDelta= this.deltaListener.getDeltaFor(element, false); >- assertTrue("should be K_REMOVED", sourceDelta.getKind() == IJavaElementDelta.REMOVED); >+ if(checkDelta) { >+ IJavaElementDelta destDelta = null; >+ if (isMainType(element, destinations[i]) && names != null && names[i] != null) { //moved/renamed main type to same cu >+ destDelta = this.deltaListener.getDeltaFor(moved.getParent()); >+ assertTrue("Renamed compilation unit as result of main type not added", destDelta != null && destDelta.getKind() == IJavaElementDelta.ADDED); >+ assertTrue("flag should be F_MOVED_FROM", (destDelta.getFlags() & IJavaElementDelta.F_MOVED_FROM) > 0); >+ assertTrue("moved from handle should be original", destDelta.getMovedFromElement().equals(element.getParent())); >+ } else { >+ destDelta = this.deltaListener.getDeltaFor(destinations[i], true); >+ assertTrue("Destination container not changed", destDelta != null && destDelta.getKind() == IJavaElementDelta.CHANGED); >+ IJavaElementDelta[] deltas = destDelta.getAddedChildren(); >+ assertTrue("Added children not correct for element copy", deltas[i].getElement().equals(moved)); >+ assertTrue("should be K_ADDED", deltas[i].getKind() == IJavaElementDelta.ADDED); >+ IJavaElementDelta sourceDelta= this.deltaListener.getDeltaFor(element, false); >+ assertTrue("should be K_REMOVED", sourceDelta.getKind() == IJavaElementDelta.REMOVED); >+ } > } > } > } finally { >- stopDeltas(); >+ if(checkDelta) stopDeltas(); > } > } > } >diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/RenameTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/RenameTests.java >index f08ed7a..92b80fa 100644 >--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/RenameTests.java >+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/RenameTests.java >@@ -115,9 +115,9 @@ > assertTrue("moved from handle should be original", destDelta.getMovedFromElement().equals(e.getParent())); > } else { > assertTrue("Destination container not changed", destDelta != null && deltaChildrenChanged(destDelta)); >- IJavaElementDelta[] deltas = destDelta.getAddedChildren(); >+ IJavaElementDelta[] deltas = force ? destDelta.getChangedChildren() : destDelta.getAddedChildren(); > assertTrue("Added children not correct for element rename", deltas.length > i && deltas[i].getElement().equals(renamed)); >- assertTrue("kind should be K_ADDED", deltas[i].getKind() == IJavaElementDelta.ADDED); >+ assertTrue("kind should be K_ADDED", deltas[i].getKind() == (force? IJavaElementDelta.CHANGED : IJavaElementDelta.ADDED)); > deltas = destDelta.getRemovedChildren(); > assertTrue("Removed children not correct for element rename", deltas.length > i && deltas[i].getElement().equals(e)); > assertTrue("kind should be K_REMOVED", deltas[i].getKind() == IJavaElementDelta.REMOVED); >@@ -364,11 +364,12 @@ > > assertDeltas( > "Unexpected deltas", >- "P[*]: {CHILDREN}\n" + >- " src[*]: {CHILDREN}\n" + >- " <default>[*]: {CHILDREN}\n" + >- " X.java[-]: {MOVED_TO(Y.java [in <default> [in src [in P]]])}\n" + >- " Y.java[+]: {MOVED_FROM(X.java [in <default> [in src [in P]]])}" >+ "P[*]: {CHILDREN}\n" + >+ " src[*]: {CHILDREN}\n" + >+ " <default>[*]: {CHILDREN}\n" + >+ " X.java[-]: {MOVED_TO(Y.java [in <default> [in src [in P]]])}\n" + >+ " Y.java[*]: {CHILDREN | FINE GRAINED | PRIMARY RESOURCE}\n" + >+ " Y[+]: {MOVED_FROM(X [in X.java [in <default> [in src [in P]]]])}" > ); > } > /* >diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CopyResourceElementsOperation.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CopyResourceElementsOperation.java >index 291378c..79a2395 100644 >--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CopyResourceElementsOperation.java >+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CopyResourceElementsOperation.java >@@ -357,7 +357,12 @@ > } > > // register the correct change deltas >- prepareDeltas(source, destCU, isMove()); >+ boolean overWrite = this.force && destFile.exists(); >+ if (overWrite) >+ getDeltaFor(dest.getJavaProject()).changed(destCU, IJavaElementDelta.F_CONTENT); >+ else >+ prepareDeltas(source, destCU, isMove()); >+ > if (newCUName != null) { > //the main type has been renamed > String oldName = Util.getNameWithoutJavaLikeExtension(source.getElementName());
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 362711
:
206448
| 207292