blob: 6ff0c091f78925430791b2768ff619013d900b9e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013, 2014 École Polytechnique de Montréal
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Geneviève Bastien - Initial API and implementation
*******************************************************************************/
package org.eclipse.tracecompass.internal.tmf.core.analysis;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.InvalidRegistryObjectException;
import org.eclipse.core.runtime.Platform;
import org.eclipse.tracecompass.internal.tmf.core.Activator;
import org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModuleSource;
/**
* Utility class for accessing TMF analysis module extensions from the
* platform's extensions registry and returning the module sources.
*
* @author Geneviève Bastien
*/
public final class TmfAnalysisModuleSources {
/** Extension point ID */
public static final String TMF_ANALYSIS_TYPE_ID = "org.eclipse.linuxtools.tmf.core.analysis"; //$NON-NLS-1$
/** Extension point element 'module' */
public static final String SOURCE_ELEM = "source"; //$NON-NLS-1$
/** Extension point attribute 'class' */
public static final String CLASS_ATTR = "class"; //$NON-NLS-1$
private TmfAnalysisModuleSources() {
}
/**
* Return the analysis module sources advertised in the extension point, in
* iterable format.
*
* @return List of {@link IAnalysisModuleSource}
*/
public static Iterable<IAnalysisModuleSource> getSources() {
List<IAnalysisModuleSource> sources = new ArrayList<>();
// Get the sources element from the extension point
IConfigurationElement[] config = Platform.getExtensionRegistry().getConfigurationElementsFor(TMF_ANALYSIS_TYPE_ID);
for (IConfigurationElement ce : config) {
String elementName = ce.getName();
if (elementName.equals(SOURCE_ELEM)) {
try {
IAnalysisModuleSource source = (IAnalysisModuleSource) ce.createExecutableExtension(CLASS_ATTR);
if (source != null) {
sources.add(source);
}
} catch (InvalidRegistryObjectException e) {
Activator.logError("Error creating module source", e); //$NON-NLS-1$
} catch (CoreException e) {
Activator.logError("Error creating module source", e); //$NON-NLS-1$
}
}
}
return sources;
}
}