1 /*******************************************************************************
2 * Copyright (c) 2009, 2010 Ericsson
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
10 * Francois Chouinard - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.linuxtools
.internal
.tmf
.core
.component
;
15 import java
.util
.ArrayList
;
16 import java
.util
.HashMap
;
17 import java
.util
.List
;
20 import org
.eclipse
.linuxtools
.tmf
.core
.component
.TmfDataProvider
;
21 import org
.eclipse
.linuxtools
.tmf
.core
.event
.ITmfEvent
;
24 * Singleton that keeps track of the event providers.
27 * @author Francois Chouinard
29 public class TmfProviderManager
{
31 // ------------------------------------------------------------------------
33 // ------------------------------------------------------------------------
35 private TmfProviderManager() {}
37 // ------------------------------------------------------------------------
38 // Keeps track of the providers for each event type
39 // ------------------------------------------------------------------------
41 private static Map
<Class
<?
extends ITmfEvent
>, List
<TmfDataProvider
<?
extends ITmfEvent
>>> fProviders
=
42 new HashMap
<Class
<?
extends ITmfEvent
>, List
<TmfDataProvider
<?
extends ITmfEvent
>>>();
45 * Registers [provider] as a provider of [eventType]
47 * @param eventType The event type
48 * @param provider The data provider
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
);
57 * Re-registers [provider] as a provider of [eventType]
59 * @param eventType The event type
60 * @param provider The data provider
62 public static <T
extends ITmfEvent
> void deregister(Class
<T
> eventType
, TmfDataProvider
<?
extends ITmfEvent
> provider
) {
63 List
<TmfDataProvider
<?
extends ITmfEvent
>> list
= fProviders
.get(eventType
);
65 list
.remove(provider
);
67 fProviders
.remove(eventType
);
72 * Returns the list of components that provide [eventType]
74 * @param eventType The event type
75 * @return the list of components that provide [eventType]
77 @SuppressWarnings("unchecked")
78 public static TmfDataProvider
<?
extends ITmfEvent
>[] getProviders(Class
<?
extends ITmfEvent
> eventType
) {
79 List
<TmfDataProvider
<?
extends ITmfEvent
>> list
= fProviders
.get(eventType
);
81 list
= new ArrayList
<TmfDataProvider
<?
extends ITmfEvent
>>();
82 TmfDataProvider
<?
extends ITmfEvent
>[] result
= new TmfDataProvider
[list
.size()];
83 return list
.toArray(result
);
87 * Returns the list of components of type [providerType] that provide [eventType]
89 * @param eventType The event type
90 * @param providerType The data provider
91 * @return the list of components of type [providerType] that provide [eventType]
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
);
98 TmfDataProvider
<?
extends ITmfEvent
>[] list
= getProviders(eventType
);
99 List
<TmfDataProvider
<?
extends ITmfEvent
>> result
= new ArrayList
<TmfDataProvider
<?
extends ITmfEvent
>>();
101 for (TmfDataProvider
<?
extends ITmfEvent
> provider
: list
) {
102 if (provider
.getClass() == providerType
) {
103 result
.add(provider
);
107 TmfDataProvider
<?
extends ITmfEvent
>[] array
= new TmfDataProvider
[result
.size()];
108 return result
.toArray(array
);
This page took 0.038044 seconds and 6 git commands to generate.