/******************************************************************************* * Copyright (c) 2012 IBM Corporation * 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.jst.j2ee.internal.actions; import static org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin.PLUGIN_ID; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Set; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtension; import org.eclipse.core.runtime.IExtensionPoint; import org.eclipse.core.runtime.IExtensionRegistry; import org.eclipse.core.runtime.Platform; /** * Contains the logic for processing the <code>org.eclipse.jst.j2ee.ui.newjavaeeactionfilter</code> * extension point. * */ public final class NewJavaEEActionFilterExtensionPoint { public static final String EXTENSION_POINT_ID = "newJavaEEActionFilter"; //$NON-NLS-1$ public static final String New_JavaEE_Wizard_Id = "newJavaEEWizardId"; //$NON-NLS-1$ public static final String Filter_Wizard= "filterWizard"; //$NON-NLS-1$ private static Set<String> extensions = null; public static boolean hasFilter( final String newjavaeewizardId ) { readExtensions(); return extensions.contains(newjavaeewizardId); } private static synchronized void readExtensions() { if( extensions != null ) { return; } extensions = new HashSet<String>(); for( IConfigurationElement element : getTopLevelElements( findExtensions( PLUGIN_ID, EXTENSION_POINT_ID ) ) ) { if( element.getName().equals( New_JavaEE_Wizard_Id ) ) { readExtension( element ); } } } private static void readExtension( final IConfigurationElement config ) { String newActionId; newActionId = findRequiredAttribute( config, Filter_Wizard ); extensions.add( newActionId ); } private static Collection<IConfigurationElement> getTopLevelElements( final Collection<IExtension> extensions ) { final List<IConfigurationElement> elements = new ArrayList<IConfigurationElement>(); for( IExtension extension : extensions ) { for( IConfigurationElement element : extension.getConfigurationElements() ) { elements.add( element ); } } return elements; } private static Collection<IExtension> findExtensions(final String pluginId, final String extensionPointId) { final IExtensionRegistry registry = Platform.getExtensionRegistry(); final IExtensionPoint point = registry.getExtensionPoint(pluginId, extensionPointId); if (point == null) { throw new RuntimeException(); } final List<IExtension> extensions = new ArrayList<IExtension>(); for (IExtension extension : point.getExtensions()) { extensions.add(extension); } return extensions; } private static String findRequiredAttribute(final IConfigurationElement el, final String attribute) { final String val = el.getAttribute(attribute); return val; } }