tmf: Simple warning fixes in tmf.core and tests
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.core / src / org / eclipse / linuxtools / internal / tmf / core / component / TmfProviderManager.java
1 /*******************************************************************************
2 * Copyright (c) 2009, 2010 Ericsson
3 *
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *
9 * Contributors:
10 * Francois Chouinard - Initial API and implementation
11 *******************************************************************************/
12
13 package org.eclipse.linuxtools.internal.tmf.core.component;
14
15 import java.util.ArrayList;
16 import java.util.HashMap;
17 import java.util.List;
18 import java.util.Map;
19
20 import org.eclipse.linuxtools.tmf.core.component.TmfDataProvider;
21 import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
22
23 /**
24 * Singleton that keeps track of the event providers.
25 *
26 * @version 1.0
27 * @author Francois Chouinard
28 */
29 public class TmfProviderManager {
30
31 // ------------------------------------------------------------------------
32 // No constructor
33 // ------------------------------------------------------------------------
34
35 private TmfProviderManager() {}
36
37 // ------------------------------------------------------------------------
38 // Keeps track of the providers for each event type
39 // ------------------------------------------------------------------------
40
41 private static Map<Class<? extends ITmfEvent>, List<TmfDataProvider<? extends ITmfEvent>>> fProviders =
42 new HashMap<Class<? extends ITmfEvent>, List<TmfDataProvider<? extends ITmfEvent>>>();
43
44 /**
45 * Registers [provider] as a provider of [eventType]
46 *
47 * @param eventType The event type
48 * @param provider The data provider
49 */
50 public static <T extends ITmfEvent> void register(Class<T> eventType, TmfDataProvider<? extends ITmfEvent> provider) {
51 if (fProviders.get(eventType) == null)
52 fProviders.put(eventType, new ArrayList<TmfDataProvider<? extends ITmfEvent>>());
53 fProviders.get(eventType).add(provider);
54 }
55
56 /**
57 * Re-registers [provider] as a provider of [eventType]
58 *
59 * @param eventType The event type
60 * @param provider The data provider
61 */
62 public static <T extends ITmfEvent> void deregister(Class<T> eventType, TmfDataProvider<? extends ITmfEvent> provider) {
63 List<TmfDataProvider<? extends ITmfEvent>> list = fProviders.get(eventType);
64 if (list != null) {
65 list.remove(provider);
66 if (list.size() == 0)
67 fProviders.remove(eventType);
68 }
69 }
70
71 /**
72 * Returns the list of components that provide [eventType]
73 *
74 * @param eventType The event type
75 * @return the list of components that provide [eventType]
76 */
77 @SuppressWarnings("unchecked")
78 public static TmfDataProvider<? extends ITmfEvent>[] getProviders(Class<? extends ITmfEvent> eventType) {
79 List<TmfDataProvider<? extends ITmfEvent>> list = fProviders.get(eventType);
80 if (list == null)
81 list = new ArrayList<TmfDataProvider<? extends ITmfEvent>>();
82 TmfDataProvider<? extends ITmfEvent>[] result = new TmfDataProvider[list.size()];
83 return list.toArray(result);
84 }
85
86 /**
87 * Returns the list of components of type [providerType] that provide [eventType]
88 *
89 * @param eventType The event type
90 * @param providerType The data provider
91 * @return the list of components of type [providerType] that provide [eventType]
92 */
93 @SuppressWarnings("unchecked")
94 public static TmfDataProvider<? extends ITmfEvent>[] getProviders(Class<? extends ITmfEvent> eventType, Class<? extends TmfDataProvider<? extends ITmfEvent>> providerType) {
95 if (providerType == null) {
96 return getProviders(eventType);
97 }
98 TmfDataProvider<? extends ITmfEvent>[] list = getProviders(eventType);
99 List<TmfDataProvider<? extends ITmfEvent>> result = new ArrayList<TmfDataProvider<? extends ITmfEvent>>();
100 if (list != null) {
101 for (TmfDataProvider<? extends ITmfEvent> provider : list) {
102 if (provider.getClass() == providerType) {
103 result.add(provider);
104 }
105 }
106 }
107 TmfDataProvider<? extends ITmfEvent>[] array = new TmfDataProvider[result.size()];
108 return result.toArray(array);
109 }
110
111 }
This page took 0.038044 seconds and 6 git commands to generate.