/******************************************************************************* * Copyright (c) 2001, 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 *******************************************************************************/ /* * Created on Oct 29, 2003 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package org.eclipse.jst.j2ee.core.internal.plugin; import java.util.SortedSet; import java.util.TreeSet; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.jem.util.RegistryReader; import org.eclipse.jem.util.logger.proxy.Logger; import org.eclipse.jst.j2ee.internal.EjbModuleExtensionHelper; import org.eclipse.jst.j2ee.internal.IEJBModelExtenderProvider; import org.eclipse.wst.common.frameworks.internal.enablement.Identifiable; import org.eclipse.wst.common.frameworks.internal.enablement.IdentifiableComparator; /** * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class EclipseEJBModelExtenderProvider extends RegistryReader implements IEJBModelExtenderProvider { private SortedSet extensionHelpers; /* * static final String EXTENSION_NAME = "e"; //$NON-NLS-1$ static final * String ELEMENT_J2EEMODULE_EXTENSION = "j2eeModuleExtensionHelper"; * //$NON-NLS-1$ static final String MODULE_EXTENSION_CLASS = * "extensionClass"; //$NON-NLS-1$ */ private static EclipseEJBModelExtenderProvider INSTANCE = null; public static class Descriptor implements Identifiable { public static final String EJB_MODEL_EXTENDER = "ejbModelExtender"; //$NON-NLS-1$ public static final String ATT_ID = "id"; //$NON-NLS-1$ public static final String ATT_EJB_EXTENSION_CLASS = "extensionClass"; //$NON-NLS-1$ private static int loadOrderCounter = 0; private final String id; private final int loadOrder; private IConfigurationElement element; private EjbModuleExtensionHelper instance; public Descriptor(IConfigurationElement element) { Assert.isLegal(EJB_MODEL_EXTENDER.equals(element.getName()), "Invalid IConfigurationElement used to create EclipseEJBModelExtenderProvider.Descriptor."); //$NON-NLS-1$ this.element = element; this.id = this.element.getAttribute(ATT_ID); this.loadOrder = loadOrderCounter++; } public String getID() { return this.id; } /* * (non-Javadoc) * * @see org.eclipse.wst.common.frameworks.internal.enablement.Identifiable#getLoadOrder() */ public int getLoadOrder() { return loadOrder; } public EjbModuleExtensionHelper getInstance() { try { if (instance == null) instance = (EjbModuleExtensionHelper) element .createExecutableExtension(ATT_EJB_EXTENSION_CLASS); } catch (CoreException e) { Logger.getLogger().logError(e); } return instance; } } protected EclipseEJBModelExtenderProvider() { super(J2EECorePlugin.PLUGIN_ID, Descriptor.EJB_MODEL_EXTENDER); } public static EclipseEJBModelExtenderProvider getInstance() { if (INSTANCE == null) { INSTANCE = new EclipseEJBModelExtenderProvider(); INSTANCE.readRegistry(); } return INSTANCE; } /** * readElement() - parse and deal w/ an extension like: <earModuleExtension * extensionClass = "com.ibm.etools.web.plugin.WebModuleExtensionImpl"/> */ @Override public boolean readElement(IConfigurationElement element) { if (!element.getName().equals(Descriptor.EJB_MODEL_EXTENDER)) return false; addModuleExtension(new Descriptor(element)); return true; } /** * @param descriptor */ private void addModuleExtension(Descriptor descriptor) { getExtensionHelpers().add(descriptor); } /* * (non-Javadoc) * * @see org.eclipse.jst.j2ee.internal.core.moduleextension.helper.IEJBModelExtenderProvider#getEJBModuleExtension(java.lang.Object) */ public EjbModuleExtensionHelper getEJBModuleExtension(Object context) { //IProject project = null; // TODO MDE Get the project using Project Utilities (add depend to emf.workbench ?) if (getExtensionHelpers().isEmpty()) return null; Descriptor descriptor = (Descriptor) getExtensionHelpers().first(); if(descriptor != null) return descriptor.getInstance(); return null; } /* * (non-Javadoc) * * @see org.eclipse.jst.j2ee.internal.core.moduleextension.helper.IEJBModelExtenderProvider#hasEJBModuleExtension(java.lang.Object) */ public boolean hasEJBModuleExtension(Object context) { return false; } /** * @return Returns the extensionHelpers. */ protected SortedSet getExtensionHelpers() { if (extensionHelpers == null) extensionHelpers = new TreeSet(IdentifiableComparator.getInstance()); return extensionHelpers; } }