1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-09-09 11:33:20 +02:00

Match the changing API of the Resolver Model.

This commit is contained in:
Alain Magloire 2004-08-20 20:31:44 +00:00
parent 813491f8c3
commit abe7507cd5

View file

@ -10,6 +10,9 @@
***********************************************************************/ ***********************************************************************/
package org.eclipse.cdt.core.filetype.tests; package org.eclipse.cdt.core.filetype.tests;
import java.util.ArrayList;
import java.util.List;
import junit.extensions.TestSetup; import junit.extensions.TestSetup;
import junit.framework.Test; import junit.framework.Test;
import junit.framework.TestCase; import junit.framework.TestCase;
@ -25,9 +28,9 @@ import org.eclipse.cdt.core.filetype.ICLanguage;
import org.eclipse.cdt.core.filetype.IResolverChangeListener; import org.eclipse.cdt.core.filetype.IResolverChangeListener;
import org.eclipse.cdt.core.filetype.IResolverModel; import org.eclipse.cdt.core.filetype.IResolverModel;
import org.eclipse.cdt.core.filetype.ResolverChangeEvent; import org.eclipse.cdt.core.filetype.ResolverChangeEvent;
import org.eclipse.cdt.core.filetype.ResolverDelta;
import org.eclipse.cdt.core.internal.filetype.CFileType; import org.eclipse.cdt.core.internal.filetype.CFileType;
import org.eclipse.cdt.core.internal.filetype.CFileTypeAssociation; import org.eclipse.cdt.core.internal.filetype.CFileTypeAssociation;
import org.eclipse.cdt.core.internal.filetype.CFileTypeResolver;
import org.eclipse.cdt.core.internal.filetype.CLanguage; import org.eclipse.cdt.core.internal.filetype.CLanguage;
import org.eclipse.cdt.core.internal.filetype.ResolverModel; import org.eclipse.cdt.core.internal.filetype.ResolverModel;
import org.eclipse.cdt.testplugin.CTestPlugin; import org.eclipse.cdt.testplugin.CTestPlugin;
@ -113,8 +116,8 @@ public class ResolverTests extends TestCase {
protected void setUp() throws Exception { protected void setUp() throws Exception {
model = CCorePlugin.getDefault().getResolverModel(); model = CCorePlugin.getDefault().getResolverModel();
model.setResolver(null); //model.setResolver(null);
model.setResolver(project, null); //model.setResolver(project, null);
workspaceResolver = model.getResolver(); workspaceResolver = model.getResolver();
projectResolver = model.getResolver(project); projectResolver = model.getResolver(project);
@ -141,9 +144,9 @@ public class ResolverTests extends TestCase {
super(name); super(name);
} }
private ICFileTypeResolver createResolver() { // private ICFileTypeResolver createResolver() {
return new CFileTypeResolver(); // return new CFileTypeResolver();
} // }
public final void testInternalCtors() { public final void testInternalCtors() {
ICLanguage lang = null; ICLanguage lang = null;
@ -359,8 +362,9 @@ public class ResolverTests extends TestCase {
public final void testWorkspaceFileTypeResolution() { public final void testWorkspaceFileTypeResolution() {
// Reset the resolver // Reset the resolver
model.setResolver(null); //model.setResolver(null);
workspaceResolver = model.getResolver(); workspaceResolver = model.getResolver();
//workspaceResolver = new WorkspaceResolver();
// Validate that we are using the default resolver set... // Validate that we are using the default resolver set...
doTestFileTypeResolution(workspaceResolver, "file.c", ICFileTypeConstants.FT_C_SOURCE); //$NON-NLS-1$ doTestFileTypeResolution(workspaceResolver, "file.c", ICFileTypeConstants.FT_C_SOURCE); //$NON-NLS-1$
@ -374,15 +378,25 @@ public class ResolverTests extends TestCase {
// Set up a new resolver just for the tests // Set up a new resolver just for the tests
// This one will only recognize '*.c', '*.h', and '*.sam' // This one will only recognize '*.c', '*.h', and '*.sam'
ICFileTypeResolver resolver = createResolver(); //ICFileTypeResolver resolver = createResolver();
ICFileTypeResolver resolver = workspaceResolver.createWorkingCopy();
resolver.removeAssociations(workspaceResolver.getFileTypeAssociations());
resolver.addAssociation(model.createAssocation("*.sam", model.getFileTypeById(ICFileTypeConstants.FT_C_SOURCE))); //$NON-NLS-1$ ICFileTypeAssociation[] assocs = new ICFileTypeAssociation[1];
resolver.addAssociation(model.createAssocation("*.shari", model.getFileTypeById(ICFileTypeConstants.FT_C_HEADER))); //$NON-NLS-1$
resolver.addAssociation(model.createAssocation("*.delainey", model.getFileTypeById(ICFileTypeConstants.FT_ASM_SOURCE))); //$NON-NLS-1$ assocs[0] =model.createAssocation("*.sam", model.getFileTypeById(ICFileTypeConstants.FT_C_SOURCE)); //$NON-NLS-1$
resolver.addAssociations(assocs);
assocs[0] = model.createAssocation("*.shari", model.getFileTypeById(ICFileTypeConstants.FT_C_HEADER)); //$NON-NLS-1$
resolver.addAssociations(assocs);
assocs[0] = model.createAssocation("*.delainey", model.getFileTypeById(ICFileTypeConstants.FT_ASM_SOURCE)); //$NON-NLS-1$
resolver.addAssociations(assocs);
// Set the workspace to use the new resolver // Set the workspace to use the new resolver
model.setResolver(resolver); //model.setResolver(resolver);
workspaceResolver = model.getResolver(); //workspaceResolver = model.getResolver();
workspaceResolver = resolver;
// Test the known types // Test the known types
doTestFileTypeResolution(workspaceResolver, "file.sam", ICFileTypeConstants.FT_C_SOURCE); //$NON-NLS-1$ doTestFileTypeResolution(workspaceResolver, "file.sam", ICFileTypeConstants.FT_C_SOURCE); //$NON-NLS-1$
@ -400,7 +414,7 @@ public class ResolverTests extends TestCase {
doTestFileTypeResolution(workspaceResolver, "file.s", ICFileTypeConstants.FT_UNKNOWN); //$NON-NLS-1$ doTestFileTypeResolution(workspaceResolver, "file.s", ICFileTypeConstants.FT_UNKNOWN); //$NON-NLS-1$
// Reset the resolver // Reset the resolver
model.setResolver(null); //model.setResolver(null);
workspaceResolver = model.getResolver(); workspaceResolver = model.getResolver();
// Validate that we are back to using the default resolver set... // Validate that we are back to using the default resolver set...
@ -417,11 +431,12 @@ public class ResolverTests extends TestCase {
public final void testProjectFileTypeResolution() { public final void testProjectFileTypeResolution() {
// Reset the resolver(s) // Reset the resolver(s)
model.setResolver(null); //model.setResolver(null);
workspaceResolver = model.getResolver(); workspaceResolver = model.getResolver();
model.setResolver(project, null); //model.setResolver(project, null);
projectResolver = model.getResolver(project); //projectResolver = model.getResolver(project);
projectResolver = model.createCustomResolver(project, workspaceResolver);
// Validate that we are using the default resolver set... // Validate that we are using the default resolver set...
doTestFileTypeResolution(projectResolver, "file.c", ICFileTypeConstants.FT_C_SOURCE); //$NON-NLS-1$ doTestFileTypeResolution(projectResolver, "file.c", ICFileTypeConstants.FT_C_SOURCE); //$NON-NLS-1$
@ -434,15 +449,24 @@ public class ResolverTests extends TestCase {
// Set up a new resolver just for the tests // Set up a new resolver just for the tests
// This one will only recognize '*.c', '*.h', and '*.sam' // This one will only recognize '*.c', '*.h', and '*.sam'
ICFileTypeResolver resolver = createResolver(); //ICFileTypeResolver resolver = createResolver();
ICFileTypeResolver resolver = workspaceResolver.createWorkingCopy();
resolver.removeAssociations(projectResolver.getFileTypeAssociations());
ICFileTypeAssociation[] assocs = new ICFileTypeAssociation[1];
resolver.addAssociation(model.createAssocation("*.sam", model.getFileTypeById(ICFileTypeConstants.FT_C_SOURCE))); //$NON-NLS-1$ assocs[0] = model.createAssocation("*.sam", model.getFileTypeById(ICFileTypeConstants.FT_C_SOURCE)); //$NON-NLS-1$
resolver.addAssociation(model.createAssocation("*.shari", model.getFileTypeById(ICFileTypeConstants.FT_C_HEADER))); //$NON-NLS-1$ resolver.addAssociations(assocs);
resolver.addAssociation(model.createAssocation("*.delainey", model.getFileTypeById(ICFileTypeConstants.FT_ASM_SOURCE))); //$NON-NLS-1$
assocs[0] = model.createAssocation("*.shari", model.getFileTypeById(ICFileTypeConstants.FT_C_HEADER)); //$NON-NLS-1$
resolver.addAssociations(assocs);
assocs[0] = model.createAssocation("*.delainey", model.getFileTypeById(ICFileTypeConstants.FT_ASM_SOURCE)); //$NON-NLS-1$
resolver.addAssociations(assocs);
// Set the workspace to use the new resolver // Set the workspace to use the new resolver
model.setResolver(project, resolver); //model.setResolver(project, resolver);
projectResolver = model.getResolver(project); //projectResolver = model.getResolver(project);
projectResolver = resolver;
// Test the known types // Test the known types
doTestFileTypeResolution(projectResolver, "file.sam", ICFileTypeConstants.FT_C_SOURCE); //$NON-NLS-1$ doTestFileTypeResolution(projectResolver, "file.sam", ICFileTypeConstants.FT_C_SOURCE); //$NON-NLS-1$
@ -460,8 +484,9 @@ public class ResolverTests extends TestCase {
doTestFileTypeResolution(projectResolver, "file.s", ICFileTypeConstants.FT_UNKNOWN); //$NON-NLS-1$ doTestFileTypeResolution(projectResolver, "file.s", ICFileTypeConstants.FT_UNKNOWN); //$NON-NLS-1$
// Reset the resolver // Reset the resolver
model.setResolver(project, null); //model.setResolver(project, null);
projectResolver = model.getResolver(project); //projectResolver = model.getResolver(project);
projectResolver = model.createCustomResolver(project, workspaceResolver);
// Validate that we are back to using the default resolver set... // Validate that we are back to using the default resolver set...
doTestFileTypeResolution(projectResolver, "file.c", ICFileTypeConstants.FT_C_SOURCE); //$NON-NLS-1$ doTestFileTypeResolution(projectResolver, "file.c", ICFileTypeConstants.FT_C_SOURCE); //$NON-NLS-1$
@ -546,11 +571,12 @@ public class ResolverTests extends TestCase {
// Languages // Languages
ICLanguage langIn = new CLanguage(LANG_TEST, "Test Language"); //$NON-NLS-1$ ICLanguage langIn = new CLanguage(LANG_TEST, "Test Language"); //$NON-NLS-1$
ICLanguage[] langIns = new ICLanguage[]{langIn}; //$NON-NLS-1$
result = ((ResolverModel) model).removeLanguage(langIn); result = ((ResolverModel) model).removeLanguages(langIns);
assertFalse(result); assertFalse(result);
result = ((ResolverModel) model).addLanguage(langIn); result = ((ResolverModel) model).addLanguages(langIns);
assertTrue(result); assertTrue(result);
ICLanguage langOut = model.getLanguageById(LANG_TEST); ICLanguage langOut = model.getLanguageById(LANG_TEST);
@ -560,15 +586,18 @@ public class ResolverTests extends TestCase {
// File types // File types
ICFileType th = new CFileType(FT_TEST_HEADER, langIn, "Test Language Header", ICFileType.TYPE_HEADER); //$NON-NLS-1$ ICFileType th = new CFileType(FT_TEST_HEADER, langIn, "Test Language Header", ICFileType.TYPE_HEADER); //$NON-NLS-1$
ICFileType[] ths = new ICFileType[] {th};
ICFileType ts = new CFileType(FT_TEST_SOURCE, langIn, "Test Language Source", ICFileType.TYPE_SOURCE); //$NON-NLS-1$ ICFileType ts = new CFileType(FT_TEST_SOURCE, langIn, "Test Language Source", ICFileType.TYPE_SOURCE); //$NON-NLS-1$
ICFileType[] tss = new ICFileType[] {ts};
ICFileType tu = new CFileType(FT_TEST_WHASAT, langIn, "Test Language Unknown", ICFileType.TYPE_UNKNOWN); //$NON-NLS-1$ ICFileType tu = new CFileType(FT_TEST_WHASAT, langIn, "Test Language Unknown", ICFileType.TYPE_UNKNOWN); //$NON-NLS-1$
ICFileType[] tus = new ICFileType[] {tu};
// -- header // -- header
result = ((ResolverModel) model).removeFileType(th); result = ((ResolverModel) model).removeFileTypes(ths);
assertFalse(result); assertFalse(result);
result = ((ResolverModel) model).addFileType(th); result = ((ResolverModel) model).addFileTypes(ths);
assertTrue(result); assertTrue(result);
ICFileType thOut = model.getFileTypeById(FT_TEST_HEADER); ICFileType thOut = model.getFileTypeById(FT_TEST_HEADER);
@ -577,10 +606,10 @@ public class ResolverTests extends TestCase {
// -- source // -- source
result = ((ResolverModel) model).removeFileType(ts); result = ((ResolverModel) model).removeFileTypes(tss);
assertFalse(result); assertFalse(result);
result = ((ResolverModel) model).addFileType(ts); result = ((ResolverModel) model).addFileTypes(tss);
assertTrue(result); assertTrue(result);
ICFileType tsOut = model.getFileTypeById(FT_TEST_SOURCE); ICFileType tsOut = model.getFileTypeById(FT_TEST_SOURCE);
@ -589,10 +618,10 @@ public class ResolverTests extends TestCase {
// -- unknown // -- unknown
result = ((ResolverModel) model).removeFileType(tu); result = ((ResolverModel) model).removeFileTypes(tus);
assertFalse(result); assertFalse(result);
result = ((ResolverModel) model).addFileType(tu); result = ((ResolverModel) model).addFileTypes(tus);
assertTrue(result); assertTrue(result);
ICFileType tuOut = model.getFileTypeById(FT_TEST_WHASAT); ICFileType tuOut = model.getFileTypeById(FT_TEST_WHASAT);
@ -602,15 +631,18 @@ public class ResolverTests extends TestCase {
// File type associations // File type associations
ICFileTypeAssociation tha = new CFileTypeAssociation("*.aest", th); //$NON-NLS-1$ ICFileTypeAssociation tha = new CFileTypeAssociation("*.aest", th); //$NON-NLS-1$
ICFileTypeAssociation[] thas = new ICFileTypeAssociation[] { tha };
ICFileTypeAssociation tsa = new CFileTypeAssociation("*.test", th); //$NON-NLS-1$ ICFileTypeAssociation tsa = new CFileTypeAssociation("*.test", th); //$NON-NLS-1$
ICFileTypeAssociation[] tsas = new ICFileTypeAssociation[] {tsa};
ICFileTypeAssociation tua = new CFileTypeAssociation("*.zest", th); //$NON-NLS-1$ ICFileTypeAssociation tua = new CFileTypeAssociation("*.zest", th); //$NON-NLS-1$
ICFileTypeAssociation[] tuas = new ICFileTypeAssociation[] { tua };
// -- header // -- header
result = workspaceResolver.removeAssociation(tha); result = workspaceResolver.removeAssociations(thas);
assertFalse(result); assertFalse(result);
result = workspaceResolver.addAssociation(tha); result = workspaceResolver.addAssociations(thas);
assertTrue(result); assertTrue(result);
ICFileType thaOut = workspaceResolver.getFileType("file.aest"); //$NON-NLS-1$ ICFileType thaOut = workspaceResolver.getFileType("file.aest"); //$NON-NLS-1$
@ -619,10 +651,10 @@ public class ResolverTests extends TestCase {
// -- source // -- source
result = workspaceResolver.removeAssociation(tsa); result = workspaceResolver.removeAssociations(tsas);
assertFalse(result); assertFalse(result);
result = workspaceResolver.addAssociation(tsa); result = workspaceResolver.addAssociations(tsas);
assertTrue(result); assertTrue(result);
ICFileType tsaOut = workspaceResolver.getFileType("file.test"); //$NON-NLS-1$ ICFileType tsaOut = workspaceResolver.getFileType("file.test"); //$NON-NLS-1$
@ -632,10 +664,10 @@ public class ResolverTests extends TestCase {
// -- unknown // -- unknown
result = workspaceResolver.removeAssociation(tua); result = workspaceResolver.removeAssociations(tuas);
assertFalse(result); assertFalse(result);
result = workspaceResolver.addAssociation(tua); result = workspaceResolver.addAssociations(tuas);
assertTrue(result); assertTrue(result);
ICFileType tuaOut = workspaceResolver.getFileType("file.zest"); //$NON-NLS-1$ ICFileType tuaOut = workspaceResolver.getFileType("file.zest"); //$NON-NLS-1$
@ -649,22 +681,26 @@ public class ResolverTests extends TestCase {
// Languages // Languages
ICLanguage lang = model.getLanguageById(LANG_TEST); ICLanguage lang = model.getLanguageById(LANG_TEST);
ICLanguage[] langs = new ICLanguage[] { lang };
ICFileType fth = model.getFileTypeById(FT_TEST_HEADER); ICFileType fth = model.getFileTypeById(FT_TEST_HEADER);
ICFileType[] fths = new ICFileType[] { fth };
ICFileType fts = model.getFileTypeById(FT_TEST_SOURCE); ICFileType fts = model.getFileTypeById(FT_TEST_SOURCE);
ICFileType[] ftss = new ICFileType[] { fts };
ICFileType ftu = model.getFileTypeById(FT_TEST_WHASAT); ICFileType ftu = model.getFileTypeById(FT_TEST_WHASAT);
ICFileType[] ftus = new ICFileType[] { ftu };
// Test two file types // Test two file types
result = ((ResolverModel) model).removeFileType(fth); result = ((ResolverModel) model).removeFileTypes(fths);
assertTrue(result); assertTrue(result);
result = ((ResolverModel) model).removeFileType(fth); result = ((ResolverModel) model).removeFileTypes(fths);
assertFalse(result); assertFalse(result);
result = ((ResolverModel) model).removeFileType(fts); result = ((ResolverModel) model).removeFileTypes(ftss);
assertTrue(result); assertTrue(result);
result = ((ResolverModel) model).removeFileType(fts); result = ((ResolverModel) model).removeFileTypes(ftss);
assertFalse(result); assertFalse(result);
// Removing the language should remove the // Removing the language should remove the
@ -673,13 +709,13 @@ public class ResolverTests extends TestCase {
assertNotNull(lang); assertNotNull(lang);
assertEquals(LANG_TEST, lang.getId()); assertEquals(LANG_TEST, lang.getId());
result = ((ResolverModel) model).removeLanguage(lang); result = ((ResolverModel) model).removeLanguages(langs);
assertTrue(result); assertTrue(result);
result = ((ResolverModel) model).removeLanguage(lang); result = ((ResolverModel) model).removeLanguages(langs);
assertFalse(result); assertFalse(result);
result = ((ResolverModel) model).removeFileType(ftu); result = ((ResolverModel) model).removeFileTypes(ftus);
assertFalse(result); assertFalse(result);
// File type associations // File type associations
@ -688,256 +724,271 @@ public class ResolverTests extends TestCase {
assertNotNull(assocs); assertNotNull(assocs);
assertTrue(assocs.length > 3); assertTrue(assocs.length > 3);
List list = new ArrayList();
for (int i = 0; i < assocs.length; i++) { for (int i = 0; i < assocs.length; i++) {
if (assocs[i].getType().getLanguage().getId().equals(LANG_TEST)) { if (assocs[i].getType().getLanguage().getId().equals(LANG_TEST)) {
workspaceResolver.removeAssociation(assocs[i]); list.add (assocs[i]);
//workspaceResolver.removeAssociation(assocs[i]);
} }
} }
assocs = (ICFileTypeAssociation[]) list.toArray(new ICFileTypeAssociation[list.size()]);
workspaceResolver.removeAssociations(assocs);
} }
class TestModelListener implements IResolverChangeListener { class TestModelListener implements IResolverChangeListener {
private ResolverChangeEvent[] fEvents; private ResolverChangeEvent fEvent;
public TestModelListener() { public TestModelListener() {
model.addResolverChangeListener(this); model.addResolverChangeListener(this);
} }
public void resolverChanged(ResolverChangeEvent[] events) { public void resolverChanged(ResolverChangeEvent event) {
fEvents = events; fEvent = event;
model.removeResolverChangeListener(this); model.removeResolverChangeListener(this);
this.notifyAll(); this.notifyAll();
} }
public ResolverChangeEvent[] getEvents() { public ResolverChangeEvent getEvent() {
return fEvents; return fEvent;
} }
} }
public final void testChangeNotifications() { public final void testChangeNotifications() {
ResolverModel rawModel = ((ResolverModel) model); ResolverModel rawModel = ((ResolverModel) model);
ResolverChangeEvent[] events = null; ResolverChangeEvent event = null;
ICLanguage lang = new CLanguage(LANG_TEST, "Test Language"); //$NON-NLS-1$ ICLanguage lang = new CLanguage(LANG_TEST, "Test Language"); //$NON-NLS-1$
ICLanguage[] langs = new ICLanguage[] { lang };
ICFileType type = new CFileType("?", model.getLanguageById("?"), "?", ICFileType.TYPE_UNKNOWN); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ ICFileType type = new CFileType("?", model.getLanguageById("?"), "?", ICFileType.TYPE_UNKNOWN); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
ICFileType[] types = new ICFileType[] { type };
TestModelListener listener = null; TestModelListener listener = null;
ResolverDelta[] deltas = null;
// Add language // Add language
try { try {
listener = new TestModelListener(); listener = new TestModelListener();
synchronized (listener) { synchronized (listener) {
assertTrue(rawModel.addLanguage(lang)); assertTrue(rawModel.addLanguages(langs));
listener.wait(3); listener.wait(3);
} }
} catch (InterruptedException e) { } catch (InterruptedException e) {
assertTrue(e.getMessage(), false); assertTrue(e.getMessage(), false);
} }
events = listener.getEvents(); event = listener.getEvent();
assertNotNull(events); assertNotNull(event);
assertEquals(1, events.length); deltas = event.getDeltas();
assertNotNull(events[0].getContainer()); assertEquals(1, deltas.length);
assertEquals(ResolverChangeEvent.ELEMENT_LANGUAGE, events[0].getElementType()); assertNotNull(event.getResolver());
assertEquals(ResolverChangeEvent.EVENT_ADD, events[0].getEventType()); assertNotNull(event.getResolver().getContainer());
assertNotNull(events[0].getElement()); assertEquals(ResolverDelta.ELEMENT_LANGUAGE, deltas[0].getElementType());
//assertNull(deltas[0].getAssociation()); assertEquals(ResolverDelta.EVENT_ADD, deltas[0].getEventType());
assertNotNull(events[0].getElement()); assertNotNull(deltas[0].getElement());
//assertNull(deltas[0].getFileType()); assertNull(deltas[0].getAssociation());
assertNull(deltas[0].getFileType());
//assertNull(deltas[0].getProject()); //assertNull(deltas[0].getProject());
// Repeated addition should not result in a change event // Repeated addition should not result in a change event
try { try {
listener = new TestModelListener(); listener = new TestModelListener();
synchronized (listener) { synchronized (listener) {
assertFalse(rawModel.addLanguage(lang)); assertFalse(rawModel.addLanguages(langs));
listener.wait(3); listener.wait(3);
} }
} catch (InterruptedException e) { } catch (InterruptedException e) {
assertTrue(e.getMessage(), false); assertTrue(e.getMessage(), false);
} }
assertNull(listener.getEvents()); assertNull(listener.getEvent());
// Remove language // Remove language
try { try {
listener = new TestModelListener(); listener = new TestModelListener();
synchronized (listener) { synchronized (listener) {
assertTrue(rawModel.removeLanguage(lang)); assertTrue(rawModel.removeLanguages(langs));
listener.wait(3); listener.wait(3);
} }
} catch (InterruptedException e) { } catch (InterruptedException e) {
assertTrue(e.getMessage(), false); assertTrue(e.getMessage(), false);
} }
events = listener.getEvents(); event = listener.getEvent();
assertNotNull(events); assertNotNull(event);
assertEquals(1, events.length); deltas = event.getDeltas();
assertNotNull(events[0].getContainer()); assertEquals(1, deltas.length);
assertEquals(ResolverChangeEvent.ELEMENT_LANGUAGE, events[0].getElementType()); assertNotNull(event.getResolver());
assertEquals(ResolverChangeEvent.EVENT_REMOVE, events[0].getEventType()); assertNotNull(event.getResolver().getContainer());
assertNotNull(events[0].getElement()); assertEquals(ResolverDelta.ELEMENT_LANGUAGE, deltas[0].getElementType());
//assertNull(deltas[0].getAssociation()); assertEquals(ResolverDelta.EVENT_REMOVE, deltas[0].getEventType());
//assertNotNull(deltas[0].getLanguage()); //assertNotNull(deltas[0].getElement());
//assertNull(deltas[0].getFileType()); assertNull(deltas[0].getAssociation());
assertNotNull(deltas[0].getLanguage());
assertNull(deltas[0].getFileType());
//assertNull(deltas[0].getProject()); //assertNull(deltas[0].getProject());
// Repeated removal should not result in a change event // Repeated removal should not result in a change event
try { try {
listener = new TestModelListener(); listener = new TestModelListener();
synchronized (listener) { synchronized (listener) {
assertFalse(rawModel.removeLanguage(lang)); assertFalse(rawModel.removeLanguages(langs));
listener.wait(3); listener.wait(3);
} }
} catch (InterruptedException e) { } catch (InterruptedException e) {
assertTrue(e.getMessage(), false); assertTrue(e.getMessage(), false);
} }
assertNull(listener.getEvents()); assertNull(listener.getEvent());
// Add file type // Add file type
try { try {
listener = new TestModelListener(); listener = new TestModelListener();
synchronized (listener) { synchronized (listener) {
assertTrue(rawModel.addFileType(type)); assertTrue(rawModel.addFileTypes(types));
listener.wait(3); listener.wait(3);
} }
} catch (InterruptedException e) { } catch (InterruptedException e) {
assertTrue(e.getMessage(), false); assertTrue(e.getMessage(), false);
} }
events = listener.getEvents(); event = listener.getEvent();
assertNotNull(events); assertNotNull(event);
deltas = event.getDeltas();
assertEquals(1, events.length); assertEquals(1, deltas.length);
assertNotNull(events[0].getContainer()); assertNotNull(event.getResolver());
assertEquals(ResolverChangeEvent.ELEMENT_FILETYPE, events[0].getElementType()); assertNotNull(event.getResolver().getContainer());
assertEquals(ResolverChangeEvent.EVENT_ADD, events[0].getEventType()); assertEquals(ResolverDelta.ELEMENT_FILETYPE, deltas[0].getElementType());
assertNotNull(events[0].getElement()); assertEquals(ResolverDelta.EVENT_ADD, deltas[0].getEventType());
//assertNull(deltas[0].getAssociation()); assertNotNull(deltas[0].getElement());
//assertNull(deltas[0].getLanguage()); assertNull(deltas[0].getAssociation());
//assertNotNull(deltas[0].getFileType()); assertNull(deltas[0].getLanguage());
assertNotNull(deltas[0].getFileType());
//assertNull(deltas[0].getProject()); //assertNull(deltas[0].getProject());
// Repeated addition should not result in a change event // Repeated addition should not result in a change event
try { try {
listener = new TestModelListener(); listener = new TestModelListener();
synchronized (listener) { synchronized (listener) {
assertFalse(rawModel.addFileType(type)); assertFalse(rawModel.addFileTypes(types));
listener.wait(3); listener.wait(3);
} }
} catch (InterruptedException e) { } catch (InterruptedException e) {
assertTrue(e.getMessage(), false); assertTrue(e.getMessage(), false);
} }
assertNull(listener.getEvents()); assertNull(listener.getEvent());
// Remove file type // Remove file type
try { try {
listener = new TestModelListener(); listener = new TestModelListener();
synchronized (listener) { synchronized (listener) {
assertTrue(rawModel.removeFileType(type)); assertTrue(rawModel.removeFileTypes(types));
listener.wait(3); listener.wait(3);
} }
} catch (InterruptedException e) { } catch (InterruptedException e) {
assertTrue(e.getMessage(), false); assertTrue(e.getMessage(), false);
} }
events = listener.getEvents(); event = listener.getEvent();
assertNotNull(events); assertNotNull(event);
deltas = event.getDeltas();
assertEquals(1, events.length); assertEquals(1, deltas.length);
assertNotNull(events[0].getContainer()); assertNotNull(event.getResolver());
assertEquals(ResolverChangeEvent.ELEMENT_FILETYPE, events[0].getElementType()); assertNotNull(event.getResolver().getContainer());
assertEquals(ResolverChangeEvent.EVENT_REMOVE, events[0].getEventType()); assertEquals(ResolverDelta.ELEMENT_FILETYPE, deltas[0].getElementType());
assertNotNull(events[0].getElement()); assertEquals(ResolverDelta.EVENT_REMOVE, deltas[0].getEventType());
//assertNull(deltas[0].getAssociation()); assertNotNull(deltas[0].getElement());
//assertNull(deltas[0].getLanguage()); assertNull(deltas[0].getAssociation());
//assertNotNull(deltas[0].getFileType()); assertNull(deltas[0].getLanguage());
assertNotNull(deltas[0].getFileType());
//assertNull(deltas[0].getProject()); //assertNull(deltas[0].getProject());
// Repeated removal should not result in a change event // Repeated removal should not result in a change event
try { try {
listener = new TestModelListener(); listener = new TestModelListener();
synchronized (listener) { synchronized (listener) {
assertFalse(rawModel.removeFileType(type)); assertFalse(rawModel.removeFileTypes(types));
listener.wait(3); listener.wait(3);
} }
} catch (InterruptedException e) { } catch (InterruptedException e) {
assertTrue(e.getMessage(), false); assertTrue(e.getMessage(), false);
} }
assertNull(listener.getEvents()); assertNull(listener.getEvent());
// Test setting workspace resolver
ICFileTypeResolver testResolver = createResolver();
try {
listener = new TestModelListener();
synchronized (listener) {
model.setResolver(testResolver);
listener.wait(3);
}
} catch (InterruptedException e) {
assertTrue(e.getMessage(), false);
}
events = listener.getEvents();
assertNotNull(events);
assertTrue(events.length > 1);
assertNotNull(events[0].getContainer());
assertEquals(ResolverChangeEvent.ELEMENT_RESOLVER, events[0].getElementType());
assertEquals(ResolverChangeEvent.EVENT_SET, events[0].getEventType());
assertNotNull(events[0].getElement());
//assertNull(deltas[0].getAssociation());
//assertNull(deltas[0].getLanguage());
//assertNull(deltas[0].getFileType());
//assertNull(deltas[0].getProject());
// Test resetting workspace resolver
try {
listener = new TestModelListener();
synchronized (listener) {
model.setResolver(null);
listener.wait(3);
}
} catch (InterruptedException e) {
assertTrue(e.getMessage(), false);
}
events = listener.getEvents();
assertNotNull(events);
assertTrue(events.length > 1);
assertNotNull(events[0].getContainer());
assertEquals(ResolverChangeEvent.ELEMENT_RESOLVER, events[0].getElementType());
assertEquals(ResolverChangeEvent.EVENT_SET, events[0].getEventType());
assertNotNull(events[0].getElement());
//assertNull(deltas[0].getAssociation());
//assertNull(deltas[0].getLanguage());
//assertNull(deltas[0].getFileType());
//assertNull(deltas[0].getProject());
// // Test setting workspace resolver
// ICFileTypeResolver testResolver = createResolver();
//
// try {
// listener = new TestModelListener();
// synchronized (listener) {
// model.setResolver(testResolver);
// listener.wait(3);
// }
// } catch (InterruptedException e) {
// assertTrue(e.getMessage(), false);
// }
//
// events = listener.getEvents();
// assertNotNull(events);
//
// assertTrue(events.length > 1);
// assertNotNull(events[0].getContainer());
// assertEquals(ResolverChangeEvent.ELEMENT_RESOLVER, events[0].getElementType());
// assertEquals(ResolverChangeEvent.EVENT_SET, events[0].getEventType());
// assertNotNull(events[0].getElement());
// //assertNull(deltas[0].getAssociation());
// //assertNull(deltas[0].getLanguage());
// //assertNull(deltas[0].getFileType());
// //assertNull(deltas[0].getProject());
//
// // Test resetting workspace resolver
// try {
// listener = new TestModelListener();
// synchronized (listener) {
// model.setResolver(null);
// listener.wait(3);
// }
// } catch (InterruptedException e) {
// assertTrue(e.getMessage(), false);
// }
//
// events = listener.getEvents();
// assertNotNull(events);
//
//
// assertTrue(events.length > 1);
// assertNotNull(events[0].getContainer());
// assertEquals(ResolverChangeEvent.ELEMENT_RESOLVER, events[0].getElementType());
// assertEquals(ResolverChangeEvent.EVENT_SET, events[0].getEventType());
// assertNotNull(events[0].getElement());
// //assertNull(deltas[0].getAssociation());
// //assertNull(deltas[0].getLanguage());
// //assertNull(deltas[0].getFileType());
// //assertNull(deltas[0].getProject());
//
// Test setting project resolver // Test setting project resolver
try { try {
listener = new TestModelListener(); listener = new TestModelListener();
synchronized (listener) { synchronized (listener) {
model.setResolver(project, testResolver); //model.setResolver(project, testResolver);
model.createCustomResolver(project, null);
listener.wait(3); listener.wait(3);
} }
} catch (InterruptedException e) { } catch (InterruptedException e) {
assertTrue(e.getMessage(), false); assertTrue(e.getMessage(), false);
} }
events = listener.getEvents(); event = listener.getEvent();
assertNotNull(events); assertNotNull(event);
assertTrue(events.length > 1); deltas = event.getDeltas();
assertNotNull(events[0].getContainer()); //assertTrue(deltas.length >= 1);
assertEquals(ResolverChangeEvent.ELEMENT_RESOLVER, events[0].getElementType()); assertNotNull(event.getResolver().getContainer());
assertEquals(ResolverChangeEvent.EVENT_SET, events[0].getEventType()); assertTrue(event.resolverHasChanged());
assertNotNull(events[0].getElement()); //assertEquals(ResolverChangeEvent.ELEMENT_RESOLVER, events[0].getElementType());
//assertEquals(ResolverChangeEvent.EVENT_SET, events[0].getEventType());
//assertNotNull(events[0].getElement());
//assertNull(deltas[0].getAssociation()); //assertNull(deltas[0].getAssociation());
//assertNull(deltas[0].getLanguage()); //assertNull(deltas[0].getLanguage());
//assertNull(deltas[0].getFileType()); //assertNull(deltas[0].getFileType());
@ -947,21 +998,24 @@ public class ResolverTests extends TestCase {
try { try {
listener = new TestModelListener(); listener = new TestModelListener();
synchronized (listener) { synchronized (listener) {
model.setResolver(project, null); //model.setResolver(project, null);
model.removeCustomResolver(project);
listener.wait(3); listener.wait(3);
} }
} catch (InterruptedException e) { } catch (InterruptedException e) {
assertTrue(e.getMessage(), false); assertTrue(e.getMessage(), false);
} }
events = listener.getEvents(); event = listener.getEvent();
assertNotNull(events); assertNotNull(event);
assertTrue(events.length > 1); deltas = event.getDeltas();
assertNotNull(events[0].getContainer()); //assertTrue(deltas.length >= 1);
assertEquals(ResolverChangeEvent.ELEMENT_RESOLVER, events[0].getElementType()); assertNotNull(event.getResolver().getContainer());
assertEquals(ResolverChangeEvent.EVENT_SET, events[0].getEventType()); assertTrue(event.resolverHasChanged());
assertNotNull(events[0].getElement()); //assertEquals(ResolverChangeEvent.ELEMENT_RESOLVER, events[0].getElementType());
//assertEquals(ResolverChangeEvent.EVENT_SET, events[0].getEventType());
//assertNotNull(events[0].getElement());
//assertNull(deltas[0].getAssociation()); //assertNull(deltas[0].getAssociation());
//assertNull(deltas[0].getLanguage()); //assertNull(deltas[0].getLanguage());
//assertNull(deltas[0].getFileType()); //assertNull(deltas[0].getFileType());