/*******************************************************************************
* This file is part of the PDT Extensions eclipse plugin.
*
* (c) Robert Gruendler <r.gruendler@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
******************************************************************************/
package org.pdtextensions.core.ui;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.Platform;
import org.pdtextensions.core.ui.extension.INamespaceResolver;
public class ExtensionManager {
private static final String NAMESPACE_RESOLVER_ID = "org.pdtextensions.core.ui.namespaceresolver";
private static ExtensionManager instance;
private List<INamespaceResolver> resolvers;
private ExtensionManager() {
}
public static ExtensionManager getDefault() {
if (instance == null)
return instance = new ExtensionManager();
return instance;
}
public List<INamespaceResolver> getNamespaceResolvers() {
if (resolvers != null) {
return resolvers;
}
resolvers = new ArrayList<INamespaceResolver>();
IConfigurationElement[] config = Platform.getExtensionRegistry()
.getConfigurationElementsFor(NAMESPACE_RESOLVER_ID);
try {
for (IConfigurationElement element : config) {
final Object extension = element.createExecutableExtension("class");
if (extension instanceof INamespaceResolver) {
resolvers.add((INamespaceResolver) extension);
}
}
} catch (Exception e1) {
e1.printStackTrace();
}
return resolvers;
}
}