/******************************************************************************* * Copyright (c) 2005 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.bpel.model.reordering.extensions; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.eclipse.bpel.model.BPELPlugin; import org.eclipse.bpel.model.reordering.IExtensibilityElementListHandler; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.Platform; /** * @author Original Contribution IBM * @author Michal Chmielewski (michal.chmielewski@oracle.com) * @date Aug 6, 2007 */ @SuppressWarnings("nls") public class ExtensionFactory { /** */ static public final ExtensionFactory INSTANCE = new ExtensionFactory(); private static final String ATTRIBUTE_CLASS = "class"; /** */ public static final String ID_EXTENSION_REORDERING = "extensions_reordering"; /** * @param type * @return ? */ public List<IExtensibilityElementListHandler> createHandlers(String type) { List<IExtensibilityElementListHandler> handlers = new ArrayList<IExtensibilityElementListHandler>(); for (IConfigurationElement element : findExtensionConfigurationElementsByID(type)) { IExtensibilityElementListHandler handler = _createExtensibilityElementListHandler(element); if(handler != null) { handlers.add(handler); } } return handlers; } private IExtensibilityElementListHandler _createExtensibilityElementListHandler(IConfigurationElement element) { if (element == null) { return null; } IExtensibilityElementListHandler classifier = null; try { classifier = (IExtensibilityElementListHandler)(element.createExecutableExtension(ATTRIBUTE_CLASS)); } catch (Exception e) { classifier = null; } return classifier; } private List<IConfigurationElement> findExtensionConfigurationElementsByID(String extensionpointID) { IConfigurationElement[] elements = Platform.getExtensionRegistry().getConfigurationElementsFor(BPELPlugin.PLUGIN_ID, extensionpointID); if (elements == null) { return Collections.emptyList(); } List<IConfigurationElement> elementsFound = new ArrayList<IConfigurationElement>(); for (IConfigurationElement nextElement : elements) { if (nextElement.getName().equals(extensionpointID)) { elementsFound.add(nextElement); } } return elementsFound; } }