1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

221109: Apply fix and add regression

This commit is contained in:
Andrew Ferguson 2008-03-03 11:37:36 +00:00
parent 6a00c11154
commit 90846e6bfa
2 changed files with 232 additions and 158 deletions

View file

@ -13,10 +13,15 @@ package org.eclipse.cdt.ui.tests.text.doctools;
import junit.framework.Test; import junit.framework.Test;
import junit.framework.TestSuite; 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.CProjectHelper;
import org.eclipse.cdt.core.testplugin.util.BaseTestCase; import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
import org.eclipse.cdt.ui.text.doctools.IDocCommentOwner; 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.DocCommentOwnerManager;
import org.eclipse.cdt.internal.ui.text.doctools.NullDocCommentOwner; import org.eclipse.cdt.internal.ui.text.doctools.NullDocCommentOwner;
@ -30,14 +35,14 @@ public class CommentOwnerManagerTests extends BaseTestCase {
IDocCommentOwner OWNER_3; IDocCommentOwner OWNER_3;
DocCommentOwnerManager manager; DocCommentOwnerManager manager;
ICProject projectA, projectB, projectC; IProject projectA, projectB, projectC;
protected void setUp() throws Exception { protected void setUp() throws Exception {
manager= DocCommentOwnerManager.getInstance(); manager= DocCommentOwnerManager.getInstance();
projectA= CProjectHelper.createCCProject("projectA", null); projectA= CProjectHelper.createCCProject("projectA", null).getProject();
projectB= CProjectHelper.createCCProject("projectB", null); projectB= CProjectHelper.createCCProject("projectB", null).getProject();
projectC= CProjectHelper.createCCProject("projectC", null); projectC= CProjectHelper.createCCProject("projectC", null).getProject();
IDocCommentOwner[] owners= manager.getRegisteredOwners(); IDocCommentOwner[] owners= manager.getRegisteredOwners();
OWNER_1= manager.getOwner("org.cdt.test.DCOM1"); OWNER_1= manager.getOwner("org.cdt.test.DCOM1");
@ -47,13 +52,13 @@ public class CommentOwnerManagerTests extends BaseTestCase {
protected void tearDown() throws Exception { protected void tearDown() throws Exception {
if(projectA != null) { if(projectA != null) {
CProjectHelper.delete(projectA); CProjectHelper.delete(CoreModel.getDefault().create(projectA));
} }
if(projectB != null) { if(projectB != null) {
CProjectHelper.delete(projectB); CProjectHelper.delete(CoreModel.getDefault().create(projectB));
} }
if(projectC != null) { 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 { public void testProjectLevel() throws Exception {
manager.setCommentOwner(projectA.getProject(), OWNER_3, true); manager.setCommentOwner(projectA, OWNER_3, true);
manager.setCommentOwner(projectB.getProject(), OWNER_2, true); manager.setCommentOwner(projectB, OWNER_2, true);
manager.setCommentOwner(projectC.getProject(), OWNER_1, true); manager.setCommentOwner(projectC, OWNER_1, true);
assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject()).getID()); assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA).getID());
assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).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).getID());
assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).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).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).getID()); assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getFolder("foo/bar")).getID());
manager.setCommentOwner(projectA.getProject(), OWNER_2, true); manager.setCommentOwner(projectA, OWNER_2, true);
manager.setCommentOwner(projectB.getProject(), OWNER_1, true); manager.setCommentOwner(projectB, OWNER_1, true);
manager.setCommentOwner(projectC.getProject(), OWNER_3, true); manager.setCommentOwner(projectC, OWNER_3, true);
assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getProject()).getID()); assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA).getID());
assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).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).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).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).getID());
assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).getID()); assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getFolder("foo/bar")).getID());
projectA.getProject().close(NPM); projectA.close(NPM);
projectB.getProject().close(NPM); projectB.close(NPM);
projectC.getProject().close(NPM); projectC.close(NPM);
projectA.getProject().open(NPM); projectA.open(NPM);
projectB.getProject().open(NPM); projectB.open(NPM);
projectC.getProject().open(NPM); projectC.open(NPM);
assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getProject()).getID()); assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA).getID());
assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).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).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).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).getID());
assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).getID()); assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getFolder("foo/bar")).getID());
} }
public void testBoundaryConditions1() throws Exception { public void testBoundaryConditions1() throws Exception {
@ -130,136 +135,199 @@ public class CommentOwnerManagerTests extends BaseTestCase {
} }
public void testWorkspaceRootLevel() throws Exception { public void testWorkspaceRootLevel() throws Exception {
manager.setCommentOwner(projectA.getProject(), null, true); manager.setCommentOwner(projectA, null, true);
manager.setCommentOwner(projectB.getProject(), null, true); manager.setCommentOwner(projectB, null, true);
manager.setCommentOwner(projectC.getProject(), null, true); manager.setCommentOwner(projectC, null, true);
manager.setWorkspaceCommentOwner(OWNER_1); manager.setWorkspaceCommentOwner(OWNER_1);
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectA.getProject()).getID()); assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectA).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).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).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).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).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).getID()); assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getFolder("foo/bar")).getID());
manager.setWorkspaceCommentOwner(OWNER_2); manager.setWorkspaceCommentOwner(OWNER_2);
assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getProject()).getID()); assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA).getID());
assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).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).getID());
assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).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).getID());
assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).getID()); assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectC.getFolder("foo/bar")).getID());
manager.setWorkspaceCommentOwner(OWNER_3); manager.setWorkspaceCommentOwner(OWNER_3);
assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject()).getID()); assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA).getID());
assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).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).getID());
assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).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).getID());
assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).getID()); assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectC.getFolder("foo/bar")).getID());
manager.setCommentOwner(projectA.getProject(), OWNER_3, true); manager.setCommentOwner(projectA, OWNER_3, true);
manager.setCommentOwner(projectB.getProject(), OWNER_2, true); manager.setCommentOwner(projectB, OWNER_2, true);
manager.setCommentOwner(projectC.getProject(), OWNER_1, true); manager.setCommentOwner(projectC, OWNER_1, true);
assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject()).getID()); assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA).getID());
assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).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).getID());
assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).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).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).getID()); assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getFolder("foo/bar")).getID());
manager.setWorkspaceCommentOwner(NullDocCommentOwner.INSTANCE); manager.setWorkspaceCommentOwner(NullDocCommentOwner.INSTANCE);
assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject()).getID()); assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA).getID());
assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_3.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).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).getID());
assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).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).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).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).getID());
assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID());
assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).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).getID());
assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).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).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).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).getID());
assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID());
assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).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).getID());
assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_2.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).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).getID());
assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID());
assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).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).getID());
assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID());
assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).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).getID());
assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID());
assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).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).getID());
assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID());
assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).getID()); assertEquals(NullDocCommentOwner.INSTANCE.getID(), manager.getCommentOwner(projectC.getFolder("foo/bar")).getID());
manager.setWorkspaceCommentOwner(OWNER_1); manager.setWorkspaceCommentOwner(OWNER_1);
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectA.getProject()).getID()); assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectA).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectA.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectA.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectA.getProject().getFolder("foo/bar")).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).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectB.getProject().getFolder("foo/bar")).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).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFile("foo/bar/baz")).getID()); assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getFile("foo/bar/baz")).getID());
assertEquals(OWNER_1.getID(), manager.getCommentOwner(projectC.getProject().getFolder("foo/bar")).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;
} }
} }

View file

@ -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) { public void setWorkspaceCommentOwner(IDocCommentOwner newOwner) {
if(owner == null) if(newOwner == null)
throw new IllegalArgumentException(); 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); Preferences prefs= new InstanceScope().getNode(QUALIFIER).node(WORKSPACE_DOC_TOOL_NODE);
prefs.put(PREFKEY_WORKSPACE_DEFAULT, owner.getID()); prefs.put(PREFKEY_WORKSPACE_DEFAULT, newOwner.getID());
fireWorkspaceOwnershipChanged(old, fWorkspaceOwner); fireWorkspaceOwnershipChanged(oldOwner, fWorkspaceOwner);
}
} }
/** /**
@ -142,26 +145,29 @@ public class DocCommentOwnerManager {
/** /**
* @param resource a non-null resource to map a comment owner to * @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 * @param removeSubMappings if the resource is an {@link IContainer}, then remove any mappings
* children have. <em>This is currently unimplemented.</em> * children have. <em>This is currently unimplemented.</em>
*/ */
/* /*
* Note - this implementation currently ignores removeSubMappings. * 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); Assert.isNotNull(resource);
if(ResourcesPlugin.getWorkspace().getRoot().equals(resource)) { if(ResourcesPlugin.getWorkspace().getRoot().equals(resource)) {
setWorkspaceCommentOwner(owner); setWorkspaceCommentOwner(newOwner);
return; return;
} }
ProjectMap pm= getProjectMap(resource); ProjectMap pm= getProjectMap(resource);
IDocCommentOwner old= getCommentOwner(resource); IDocCommentOwner oldOwner= getCommentOwner(resource);
pm.setCommentOwner(resource, owner); pm.setCommentOwner(resource, newOwner);
IDocCommentOwner n3w= getCommentOwner(resource);
fireOwnershipChanged(resource, removeSubMappings, old, n3w); 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 * @param listener removes a listener from those registered for doc-comment ownership events
*/ */
public void removeListener(IDocCommentOwnershipListener listener) { public void removeListener(IDocCommentOwnershipListener listener) {
fListeners.add(listener); fListeners.remove(listener);
} }
/* /*
@ -243,15 +249,15 @@ public class DocCommentOwnerManager {
return result; 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();) { 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();) { for(Iterator i= fListeners.iterator(); i.hasNext();) {
((IDocCommentOwnershipListener)i.next()).workspaceOwnershipChanged(old, n3w); ((IDocCommentOwnershipListener)i.next()).workspaceOwnershipChanged(oldOwner, newOwner);
} }
} }
} }