From 90846e6bfa87c27ceef67ade5c5e3eecd24784d6 Mon Sep 17 00:00:00 2001 From: Andrew Ferguson Date: Mon, 3 Mar 2008 11:37:36 +0000 Subject: [PATCH] 221109: Apply fix and add regression --- .../doctools/CommentOwnerManagerTests.java | 342 +++++++++++------- .../text/doctools/DocCommentOwnerManager.java | 48 +-- 2 files changed, 232 insertions(+), 158 deletions(-) diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/doctools/CommentOwnerManagerTests.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/doctools/CommentOwnerManagerTests.java index d442d4af5e7..99cc0ab0dde 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/doctools/CommentOwnerManagerTests.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/doctools/CommentOwnerManagerTests.java @@ -13,10 +13,15 @@ package org.eclipse.cdt.ui.tests.text.doctools; import junit.framework.Test; import junit.framework.TestSuite; -import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.testplugin.CProjectHelper; import org.eclipse.cdt.core.testplugin.util.BaseTestCase; import org.eclipse.cdt.ui.text.doctools.IDocCommentOwner; +import org.eclipse.cdt.ui.text.doctools.IDocCommentOwnershipListener; import org.eclipse.cdt.internal.ui.text.doctools.DocCommentOwnerManager; import org.eclipse.cdt.internal.ui.text.doctools.NullDocCommentOwner; @@ -30,14 +35,14 @@ public class CommentOwnerManagerTests extends BaseTestCase { IDocCommentOwner OWNER_3; DocCommentOwnerManager manager; - ICProject projectA, projectB, projectC; + IProject projectA, projectB, projectC; protected void setUp() throws Exception { manager= DocCommentOwnerManager.getInstance(); - projectA= CProjectHelper.createCCProject("projectA", null); - projectB= CProjectHelper.createCCProject("projectB", null); - projectC= CProjectHelper.createCCProject("projectC", null); + projectA= CProjectHelper.createCCProject("projectA", null).getProject(); + projectB= CProjectHelper.createCCProject("projectB", null).getProject(); + projectC= CProjectHelper.createCCProject("projectC", null).getProject(); IDocCommentOwner[] owners= manager.getRegisteredOwners(); OWNER_1= manager.getOwner("org.cdt.test.DCOM1"); @@ -47,13 +52,13 @@ public class CommentOwnerManagerTests extends BaseTestCase { protected void tearDown() throws Exception { if(projectA != null) { - CProjectHelper.delete(projectA); + CProjectHelper.delete(CoreModel.getDefault().create(projectA)); } if(projectB != null) { - CProjectHelper.delete(projectB); + CProjectHelper.delete(CoreModel.getDefault().create(projectB)); } if(projectC != null) { - CProjectHelper.delete(projectC); + CProjectHelper.delete(CoreModel.getDefault().create(projectC)); } } @@ -62,57 +67,57 @@ public class CommentOwnerManagerTests extends BaseTestCase { } public void testProjectLevel() throws Exception { - manager.setCommentOwner(projectA.getProject(), OWNER_3, true); - manager.setCommentOwner(projectB.getProject(), OWNER_2, true); - manager.setCommentOwner(projectC.getProject(), OWNER_1, true); + manager.setCommentOwner(projectA, OWNER_3, true); + manager.setCommentOwner(projectB, OWNER_2, true); + manager.setCommentOwner(projectC, OWNER_1, true); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject()).getID()); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getFolder("foo/bar")).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject()).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getFolder("foo/bar")).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject()).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getFolder("foo/bar")).getID()); - manager.setCommentOwner(projectA.getProject(), OWNER_2, true); - manager.setCommentOwner(projectB.getProject(), OWNER_1, true); - manager.setCommentOwner(projectC.getProject(), OWNER_3, true); + manager.setCommentOwner(projectA, OWNER_2, true); + manager.setCommentOwner(projectB, OWNER_1, true); + manager.setCommentOwner(projectC, OWNER_3, true); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getProject()).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getFolder("foo/bar")).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getProject()).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getFolder("foo/bar")).getID()); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getProject()).getID()); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getFolder("foo/bar")).getID()); - projectA.getProject().close(NPM); - projectB.getProject().close(NPM); - projectC.getProject().close(NPM); + projectA.close(NPM); + projectB.close(NPM); + projectC.close(NPM); - projectA.getProject().open(NPM); - projectB.getProject().open(NPM); - projectC.getProject().open(NPM); + projectA.open(NPM); + projectB.open(NPM); + projectC.open(NPM); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getProject()).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getFolder("foo/bar")).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getProject()).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getFolder("foo/bar")).getID()); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getProject()).getID()); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getFolder("foo/bar")).getID()); } public void testBoundaryConditions1() throws Exception { @@ -130,136 +135,199 @@ public class CommentOwnerManagerTests extends BaseTestCase { } public void testWorkspaceRootLevel() throws Exception { - manager.setCommentOwner(projectA.getProject(), null, true); - manager.setCommentOwner(projectB.getProject(), null, true); - manager.setCommentOwner(projectC.getProject(), null, true); + manager.setCommentOwner(projectA, null, true); + manager.setCommentOwner(projectB, null, true); + manager.setCommentOwner(projectC, null, true); manager.setWorkspaceCommentOwner(OWNER_1); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectA.getProject()).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectA).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectA.getFolder("foo/bar")).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getProject()).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getFolder("foo/bar")).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject()).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getFolder("foo/bar")).getID()); manager.setWorkspaceCommentOwner(OWNER_2); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getProject()).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getFolder("foo/bar")).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject()).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getFolder("foo/bar")).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectC.getProject()).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectC).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectC.getFolder("foo/bar")).getID()); manager.setWorkspaceCommentOwner(OWNER_3); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject()).getID()); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getFolder("foo/bar")).getID()); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectB.getProject()).getID()); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectB).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectB.getFolder("foo/bar")).getID()); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getProject()).getID()); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getFolder("foo/bar")).getID()); - manager.setCommentOwner(projectA.getProject(), OWNER_3, true); - manager.setCommentOwner(projectB.getProject(), OWNER_2, true); - manager.setCommentOwner(projectC.getProject(), OWNER_1, true); + manager.setCommentOwner(projectA, OWNER_3, true); + manager.setCommentOwner(projectB, OWNER_2, true); + manager.setCommentOwner(projectC, OWNER_1, true); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject()).getID()); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getFolder("foo/bar")).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject()).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getFolder("foo/bar")).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject()).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getFolder("foo/bar")).getID()); manager.setWorkspaceCommentOwner(NullDocCommentOwner.INSTANCE); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject()).getID()); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getFolder("foo/bar")).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject()).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getFolder("foo/bar")).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject()).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getFolder("foo/bar")).getID()); - manager.setCommentOwner(projectA.getProject(), null, true); + manager.setCommentOwner(projectA, null, true); - assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getProject()).getID()); - assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).getID()); + assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA).getID()); + assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID()); + assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getFolder("foo/bar")).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject()).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getFolder("foo/bar")).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject()).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getFolder("foo/bar")).getID()); - manager.setCommentOwner(projectC.getProject(), null, true); + manager.setCommentOwner(projectC, null, true); - assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getProject()).getID()); - assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).getID()); + assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA).getID()); + assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID()); + assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getFolder("foo/bar")).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject()).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getFolder("foo/bar")).getID()); - assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectC.getProject()).getID()); - assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).getID()); + assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectC).getID()); + assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID()); + assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectC.getFolder("foo/bar")).getID()); - manager.setCommentOwner(projectB.getProject(), null, true); + manager.setCommentOwner(projectB, null, true); - assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getProject()).getID()); - assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).getID()); + assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA).getID()); + assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID()); + assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getFolder("foo/bar")).getID()); - assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectB.getProject()).getID()); - assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).getID()); + assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectB).getID()); + assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID()); + assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectB.getFolder("foo/bar")).getID()); - assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectC.getProject()).getID()); - assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).getID()); + assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectC).getID()); + assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID()); + assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectC.getFolder("foo/bar")).getID()); manager.setWorkspaceCommentOwner(OWNER_1); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectA.getProject()).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectA).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectA.getFolder("foo/bar")).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getProject()).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getFolder("foo/bar")).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject()).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); - assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID()); + assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getFolder("foo/bar")).getID()); + } + + public void testDocListenerEvents_221109() { + TestListener tl= new TestListener(); + + manager.setCommentOwner(projectA, null, true); + manager.setCommentOwner(projectB, null, true); + manager.setCommentOwner(projectC, null, true); + manager.setWorkspaceCommentOwner(OWNER_1); + manager.addListener(tl); + + tl.reset(); + manager.setCommentOwner(projectA, OWNER_1, true); + assertEquals(0, tl.prjEvents); + assertEquals(0, tl.wkspcEvents); + + tl.reset(); + manager.setCommentOwner(projectA, OWNER_2, true); + assertEquals(1, tl.prjEvents); + assertEquals(0, tl.wkspcEvents); + + tl.reset(); + manager.setCommentOwner(projectA, OWNER_3, true); + assertEquals(1, tl.prjEvents); + assertEquals(0, tl.wkspcEvents); + + tl.reset(); + manager.setCommentOwner(projectA, OWNER_1, true); + assertEquals(1, tl.prjEvents); + assertEquals(0, tl.wkspcEvents); + + tl.reset(); + manager.setCommentOwner(ResourcesPlugin.getWorkspace().getRoot(), OWNER_2, true); + assertEquals(0, tl.prjEvents); + assertEquals(1, tl.wkspcEvents); + + tl.reset(); + manager.setWorkspaceCommentOwner(OWNER_3); + assertEquals(0, tl.prjEvents); + assertEquals(1, tl.wkspcEvents); + + tl.reset(); + manager.setWorkspaceCommentOwner(OWNER_3); + assertEquals(0, tl.prjEvents); + assertEquals(0, tl.wkspcEvents); + + manager.removeListener(tl); + } +} + +class TestListener implements IDocCommentOwnershipListener { + public int prjEvents, wkspcEvents; + public void ownershipChanged(IResource resource, + boolean submappingsRemoved, IDocCommentOwner oldOwner, + IDocCommentOwner newOwner) { + prjEvents++; + } + public void workspaceOwnershipChanged(IDocCommentOwner oldOwner, + IDocCommentOwner newOwner) { + wkspcEvents++; + } + public void reset() { + prjEvents= wkspcEvents= 0; } } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/doctools/DocCommentOwnerManager.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/doctools/DocCommentOwnerManager.java index f4c90c2c792..73d1fc198e1 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/doctools/DocCommentOwnerManager.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/doctools/DocCommentOwnerManager.java @@ -89,18 +89,21 @@ public class DocCommentOwnerManager { } /** - * @param owner the non-null doc-comment owner + * @param newOwner the non-null doc-comment owner */ - public void setWorkspaceCommentOwner(IDocCommentOwner owner) { - if(owner == null) + public void setWorkspaceCommentOwner(IDocCommentOwner newOwner) { + if(newOwner == null) throw new IllegalArgumentException(); - IDocCommentOwner old= fWorkspaceOwner; - fWorkspaceOwner= owner; + + if(!fWorkspaceOwner.getID().equals(newOwner.getID())) { + IDocCommentOwner oldOwner= fWorkspaceOwner; + fWorkspaceOwner= newOwner; - Preferences prefs= new InstanceScope().getNode(QUALIFIER).node(WORKSPACE_DOC_TOOL_NODE); - prefs.put(PREFKEY_WORKSPACE_DEFAULT, owner.getID()); - - fireWorkspaceOwnershipChanged(old, fWorkspaceOwner); + Preferences prefs= new InstanceScope().getNode(QUALIFIER).node(WORKSPACE_DOC_TOOL_NODE); + prefs.put(PREFKEY_WORKSPACE_DEFAULT, newOwner.getID()); + + fireWorkspaceOwnershipChanged(oldOwner, fWorkspaceOwner); + } } /** @@ -142,26 +145,29 @@ public class DocCommentOwnerManager { /** * @param resource a non-null resource to map a comment owner to - * @param owner the new owner to assign, or null to inherit the parent's mapping + * @param newOwner the new owner to assign, or null to inherit the parent's mapping * @param removeSubMappings if the resource is an {@link IContainer}, then remove any mappings * children have. This is currently unimplemented. */ /* * Note - this implementation currently ignores removeSubMappings. */ - public void setCommentOwner(IResource resource, IDocCommentOwner owner, boolean removeSubMappings) { + public void setCommentOwner(IResource resource, IDocCommentOwner newOwner, boolean removeSubMappings) { Assert.isNotNull(resource); if(ResourcesPlugin.getWorkspace().getRoot().equals(resource)) { - setWorkspaceCommentOwner(owner); + setWorkspaceCommentOwner(newOwner); return; } ProjectMap pm= getProjectMap(resource); - IDocCommentOwner old= getCommentOwner(resource); - pm.setCommentOwner(resource, owner); - IDocCommentOwner n3w= getCommentOwner(resource); - fireOwnershipChanged(resource, removeSubMappings, old, n3w); + IDocCommentOwner oldOwner= getCommentOwner(resource); + pm.setCommentOwner(resource, newOwner); + + IDocCommentOwner newLogicalOwner= getCommentOwner(resource); + if(!newLogicalOwner.getID().equals(oldOwner.getID())) { + fireOwnershipChanged(resource, removeSubMappings, oldOwner, newLogicalOwner); + } } /** @@ -186,7 +192,7 @@ public class DocCommentOwnerManager { * @param listener removes a listener from those registered for doc-comment ownership events */ public void removeListener(IDocCommentOwnershipListener listener) { - fListeners.add(listener); + fListeners.remove(listener); } /* @@ -243,15 +249,15 @@ public class DocCommentOwnerManager { return result; } - private void fireOwnershipChanged(IResource resource, boolean recursive, IDocCommentOwner old, IDocCommentOwner n3w) { + private void fireOwnershipChanged(IResource resource, boolean submappingsRemoved, IDocCommentOwner oldOwner, IDocCommentOwner newOwner) { for(Iterator i= fListeners.iterator(); i.hasNext();) { - ((IDocCommentOwnershipListener)i.next()).ownershipChanged(resource, recursive, old, n3w); + ((IDocCommentOwnershipListener)i.next()).ownershipChanged(resource, submappingsRemoved, oldOwner, newOwner); } } - private void fireWorkspaceOwnershipChanged(IDocCommentOwner old, IDocCommentOwner n3w) { + private void fireWorkspaceOwnershipChanged(IDocCommentOwner oldOwner, IDocCommentOwner newOwner) { for(Iterator i= fListeners.iterator(); i.hasNext();) { - ((IDocCommentOwnershipListener)i.next()).workspaceOwnershipChanged(old, n3w); + ((IDocCommentOwnershipListener)i.next()).workspaceOwnershipChanged(oldOwner, newOwner); } } }