package com.sap.furcas.parsergenerator.impl; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.Platform; import com.sap.furcas.parsergenerator.TCSParserGenerator; import com.sap.furcas.parsergenerator.TCSParserGeneratorFactory; import com.sap.furcas.runtime.common.exceptions.ParserGeneratorInvocationException; public class TCSParserGeneratorFactoryImpl implements TCSParserGeneratorFactory { private final String extensionPointId = "com.sap.furcas.parsergenerator.tcsparsergenerator"; @Override public TCSParserGenerator createTCSParserGenerator() throws ParserGeneratorInvocationException { IConfigurationElement[] configurationElements = Platform.getExtensionRegistry().getConfigurationElementsFor(extensionPointId); if(configurationElements.length != 1){ throw new ParserGeneratorInvocationException("Expected to find 1 TCSParsergenerator but found "+configurationElements.length); } for (IConfigurationElement configurationElement : configurationElements) { Object object; try { object = configurationElement.createExecutableExtension("class"); if (object instanceof TCSParserGenerator) { return ((TCSParserGenerator) object); } } catch (CoreException e) { throw new ParserGeneratorInvocationException(e); } } throw new AssertionError("Cannot happen"); } }