21
21
import org.eclipse.core.runtime.Platform;
22
22
import org.eclipse.linuxtools.binutils.Activator;
26
25
* This class is on charge of managing "org.eclipse.linuxtools.binutils.crossCompilerBinutils" extension point.
27
27
* @author Xavier Raynaud <xavier.raynaud@st.com>
30
30
public class STBinutilsFactoryManager {
32
public static final STBinutilsFactoryManager sharedInstance = new STBinutilsFactoryManager();
35
* Map of CPU/ISTBinutilsFactory
37
private final Map<String, ISTBinutilsFactory> map = new HashMap<String, ISTBinutilsFactory>();
42
private DefaultBinutilsFactory defaultFactory;
45
* Private constructor: this class is implemented as a Singleton
47
private STBinutilsFactoryManager() {
51
* Try to find an extension point matching the given cpu;
52
* Then test availability of the tools.
53
* If no match, return default binutils factory
55
private ISTBinutilsFactory getBinutilsFactoryImpl(String cpu) {
57
IExtensionRegistry reg = Platform.getExtensionRegistry();
58
IExtensionPoint ep = reg.getExtensionPoint("org.eclipse.linuxtools.binutils.crossCompilerBinutils");
59
IExtension[] exts = ep.getExtensions();
60
for (IExtension extension : exts) {
61
IConfigurationElement[] elems = extension.getConfigurationElements();
62
for (IConfigurationElement configurationElement : elems) {
63
String s = configurationElement.getAttribute("CPU");
65
ISTBinutilsFactory factory = (ISTBinutilsFactory) configurationElement.createExecutableExtension("binutilsFactory");
66
if (factory.testAvailability()) return factory;
70
} catch (CoreException e) {
71
Activator.getDefault().getLog().log(e.getStatus());
73
if (defaultFactory == null) defaultFactory = new DefaultBinutilsFactory();
74
return defaultFactory;
78
* Get a ISTBinutilsFactory matching the given cpu id
79
* Returns the default one if no match.
81
public ISTBinutilsFactory getBinutilsFactory(String cpu) {
82
ISTBinutilsFactory factory = map.get(cpu);
83
if (factory == null) {
84
factory = getBinutilsFactoryImpl(cpu);
85
map.put(cpu, factory);
32
public static final STBinutilsFactoryManager sharedInstance = new STBinutilsFactoryManager();
35
* Map of CPU/ISTBinutilsFactory
37
private final Map<String, ISTBinutilsFactory> map = new HashMap<String, ISTBinutilsFactory>();
42
private DefaultBinutilsFactory defaultFactory;
45
* Private constructor: this class is implemented as a Singleton
47
private STBinutilsFactoryManager() {
51
* Try to find an extension point matching the given cpu; Then test availability of the tools. If no match, return
52
* default binutils factory
54
private ISTBinutilsFactory getBinutilsFactoryImpl(String cpu) {
56
IExtensionRegistry reg = Platform.getExtensionRegistry();
57
IExtensionPoint ep = reg.getExtensionPoint("org.eclipse.linuxtools.binutils.crossCompilerBinutils"); //$NON-NLS-1$
58
IExtension[] exts = ep.getExtensions();
59
for (IExtension extension : exts) {
60
IConfigurationElement[] elems = extension.getConfigurationElements();
61
for (IConfigurationElement configurationElement : elems) {
62
String s = configurationElement.getAttribute("CPU"); //$NON-NLS-1$
64
ISTBinutilsFactory factory = (ISTBinutilsFactory) configurationElement
65
.createExecutableExtension("binutilsFactory"); //$NON-NLS-1$
66
if (factory.testAvailability())
71
} catch (CoreException e) {
72
Activator.getDefault().getLog().log(e.getStatus());
74
if (defaultFactory == null)
75
defaultFactory = new DefaultBinutilsFactory();
76
return defaultFactory;
80
* Get a ISTBinutilsFactory matching the given cpu id Returns the default one if no match.
82
public ISTBinutilsFactory getBinutilsFactory(String cpu) {
83
ISTBinutilsFactory factory = map.get(cpu);
84
if (factory == null) {
85
factory = getBinutilsFactoryImpl(cpu);
86
map.put(cpu, factory);