From bdc1cb98a78ad447f11603ab4f402cc72c7ebef2 Mon Sep 17 00:00:00 2001 From: Andrew Ferguson Date: Thu, 23 Aug 2007 15:59:38 +0000 Subject: [PATCH] 200958: apply fix --- ...vider1.java => AbstractDummyProvider.java} | 26 +---- .../provider/test/DummyProviderTraces.java | 49 ++++++++++ .../index/provider/test/Providers.java | 19 ++++ .../index/tests/IndexProviderManagerTest.java | 94 ++++++++++--------- core/org.eclipse.cdt.core.tests/plugin.xml | 17 +++- .../index/provider/IndexProviderManager.java | 2 +- 6 files changed, 138 insertions(+), 69 deletions(-) rename core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/index/provider/test/{DummyProvider1.java => AbstractDummyProvider.java} (69%) create mode 100644 core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/index/provider/test/DummyProviderTraces.java create mode 100644 core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/index/provider/test/Providers.java diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/index/provider/test/DummyProvider1.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/index/provider/test/AbstractDummyProvider.java similarity index 69% rename from core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/index/provider/test/DummyProvider1.java rename to core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/index/provider/test/AbstractDummyProvider.java index 199ef8f94a5..454c3a23d46 100644 --- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/index/provider/test/DummyProvider1.java +++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/index/provider/test/AbstractDummyProvider.java @@ -10,10 +10,6 @@ *******************************************************************************/ package org.eclipse.cdt.core.internal.index.provider.test; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - import org.eclipse.cdt.core.index.provider.IPDOMDescriptor; import org.eclipse.cdt.core.index.provider.IReadOnlyPDOMProvider; import org.eclipse.cdt.core.model.ICProject; @@ -24,30 +20,16 @@ import org.eclipse.core.runtime.CoreException; * Provides no pdom descriptors, used for testing the behaviour of IndexManager over * project lifecycles. */ -public class DummyProvider1 implements IReadOnlyPDOMProvider { - static List prjTrace= Collections.synchronizedList(new ArrayList()); - static List cfgTrace= Collections.synchronizedList(new ArrayList()); - - public static void reset() { - prjTrace.clear(); - cfgTrace.clear(); - } - - public static List getProjectsTrace() { - return prjTrace; - } - - public static List getCfgsTrace() { - return cfgTrace; - } +public class AbstractDummyProvider implements IReadOnlyPDOMProvider { + public AbstractDummyProvider() {} public IPDOMDescriptor[] getDescriptors(ICConfigurationDescription config) { - cfgTrace.add(config); + DummyProviderTraces.getInstance().getCfgsTrace(getClass()).add(config); return new IPDOMDescriptor[0]; } public boolean providesFor(ICProject project) throws CoreException { - prjTrace.add(project); + DummyProviderTraces.getInstance().getProjectsTrace(getClass()).add(project); return true; } } diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/index/provider/test/DummyProviderTraces.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/index/provider/test/DummyProviderTraces.java new file mode 100644 index 00000000000..89f17401ce0 --- /dev/null +++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/index/provider/test/DummyProviderTraces.java @@ -0,0 +1,49 @@ +/******************************************************************************* + * Copyright (c) 2007 Symbian Software Ltd. and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Andrew Ferguson (Symbian) - initial API and implementation + *******************************************************************************/ +package org.eclipse.cdt.core.internal.index.provider.test; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class DummyProviderTraces { + static DummyProviderTraces instance = new DummyProviderTraces(); + + public static DummyProviderTraces getInstance() { return instance; } + + private DummyProviderTraces() {} + + Map/**/ id2prjTrace= new HashMap(); + Map/**/ id2cfgTrace= new HashMap(); + + public List getProjectsTrace(Class provider) { + String key= provider.getName(); + if(!id2prjTrace.containsKey(key)) { + id2prjTrace.put(key, Collections.synchronizedList(new ArrayList())); + } + return (List) id2prjTrace.get(key); + } + + public List getCfgsTrace(Class provider) { + String key= provider.getName(); + if(!id2cfgTrace.containsKey(key)) { + id2cfgTrace.put(key, Collections.synchronizedList(new ArrayList())); + } + return (List) id2cfgTrace.get(key); + } + + public void reset(Class provider) { + getProjectsTrace(provider).clear(); + getCfgsTrace(provider).clear(); + } +} diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/index/provider/test/Providers.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/index/provider/test/Providers.java new file mode 100644 index 00000000000..4b0c4c8863f --- /dev/null +++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/index/provider/test/Providers.java @@ -0,0 +1,19 @@ +/******************************************************************************* + * Copyright (c) 2007 Symbian Software Ltd. and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Andrew Ferguson (Symbian) - initial API and implementation + *******************************************************************************/ +package org.eclipse.cdt.core.internal.index.provider.test; + +public class Providers { + public static class Dummy1 extends AbstractDummyProvider {} + public static class Dummy2 extends AbstractDummyProvider {} + public static class Dummy3 extends AbstractDummyProvider {} + public static class Dummy4 extends AbstractDummyProvider {} + public static class Dummy5 extends AbstractDummyProvider {} +} diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexProviderManagerTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexProviderManagerTest.java index 2f614597567..0859add59cf 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexProviderManagerTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexProviderManagerTest.java @@ -27,7 +27,8 @@ import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor; import org.eclipse.cdt.core.dom.IPDOMManager; import org.eclipse.cdt.core.index.IIndex; import org.eclipse.cdt.core.index.provider.IIndexProvider; -import org.eclipse.cdt.core.internal.index.provider.test.DummyProvider1; +import org.eclipse.cdt.core.internal.index.provider.test.DummyProviderTraces; +import org.eclipse.cdt.core.internal.index.provider.test.Providers; import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.ICProject; import org.eclipse.cdt.core.parser.util.ArrayUtil; @@ -67,6 +68,14 @@ import org.eclipse.core.runtime.QualifiedName; * Example usage and test for IIndexProvider */ public class IndexProviderManagerTest extends IndexTestBase { + final static DummyProviderTraces DPT= DummyProviderTraces.getInstance(); + final static Class DP1= Providers.Dummy1.class; + final static Class DP2= Providers.Dummy2.class; + final static Class DP3= Providers.Dummy3.class; + final static Class DP4= Providers.Dummy4.class; + final static Class DP5= Providers.Dummy5.class; + final static Class[] DPS= new Class[] {DP4, DP2, DP1, DP3, DP5}; + final CCorePlugin core= CCorePlugin.getDefault(); public IndexProviderManagerTest() { @@ -77,8 +86,10 @@ public class IndexProviderManagerTest extends IndexTestBase { return suite(IndexProviderManagerTest.class); } - public void testProvider_SimpleLifeCycle() throws Exception { - DummyProvider1.reset(); + public void testProvider_SimpleLifeCycle_200958() throws Exception { + for(int i=0; i + class="org.eclipse.cdt.core.internal.index.provider.test.Providers$Dummy1"> @@ -136,5 +136,18 @@ - + + + + + + + + + + diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/provider/IndexProviderManager.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/provider/IndexProviderManager.java index bd7754d983f..aadc4ed83eb 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/provider/IndexProviderManager.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/provider/IndexProviderManager.java @@ -64,7 +64,7 @@ public final class IndexProviderManager implements IElementChangedListener { IConfigurationElement[] ce = extension.getConfigurationElements(); for(int j=0; j