/******************************************************************************* * Copyright (c) 2011, 2012 Andrew Gvozdev 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 Gvozdev - Initial API and implementation *******************************************************************************/ package org.eclipse.cdt.core.language.settings.providers; import java.util.ArrayList; import java.util.List; import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; import org.eclipse.core.runtime.Assert; /** * Mock Language Settings Provider that keeps count how many times it has been registered. */ public class MockListenerRegisterer extends LanguageSettingsSerializableProvider implements ILanguageSettingsEditableProvider, ICListenerAgent { private static MockListenerManager mockListenerManager = new MockListenerManager(); private static class MockListenerManager { private class ListenerCount { private MockListenerRegisterer listener; private int count; public ListenerCount(MockListenerRegisterer l, int cnt) { listener = l; count = cnt; } } private List<ListenerCount> register = new ArrayList<ListenerCount>(); public void registerListener(MockListenerRegisterer listener) { for (ListenerCount lc : register) { if (lc.listener == listener) { lc.count++; return; } } register.add(new ListenerCount(listener, 1)); } public void unregisterListener(MockListenerRegisterer listener) { for (ListenerCount lc : register) { if (lc.listener == listener) { lc.count--; Assert.isTrue(lc.count>=0); return; } } // attempt to unregister non-registered listener Assert.isTrue(false); } /** * Note that that count includes all listeners with that id. */ public int getCount(String id) { int count = 0; for (ListenerCount lc : register) { if (lc.listener.getId().equals(id)) { count = count + lc.count; } } return count; } } public MockListenerRegisterer() { super(); } public MockListenerRegisterer(String id, String name) { super(id, name); } @Override public void registerListener(ICConfigurationDescription cfgDescription) { mockListenerManager.registerListener(this); } @Override public void unregisterListener() { mockListenerManager.unregisterListener(this); } @Override public MockListenerRegisterer cloneShallow() throws CloneNotSupportedException { return (MockListenerRegisterer) super.cloneShallow(); } @Override public MockListenerRegisterer clone() throws CloneNotSupportedException { return (MockListenerRegisterer) super.clone(); } public static int getCount(String id) { return mockListenerManager.getCount(id); } }