Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/BasicExtensionFactory.java')
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/BasicExtensionFactory.java309
1 files changed, 0 insertions, 309 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/BasicExtensionFactory.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/BasicExtensionFactory.java
deleted file mode 100644
index fd0b823b4..000000000
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/BasicExtensionFactory.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Oracle 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:
- * Cameron Bateman/Oracle - initial API and implementation
- *
- ********************************************************************************/
-
-package org.eclipse.jst.jsf.designtime.internal;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jst.jsf.core.internal.JSFCorePlugin;
-import org.eclipse.jst.jsf.designtime.el.IInstancePerProjectResolver;
-import org.osgi.framework.Bundle;
-
-/**
- * @author cbateman
- * @param <EXTENSIONTYPE>
- *
- */
-public class BasicExtensionFactory<EXTENSIONTYPE>
-{
- private final Bundle _bundle;
- private final String _extName;
- private Map<String, ExtensionData<EXTENSIONTYPE>> _registeredResolvers;
- private final String _elementName;
- private final ExtensionDataFactory _extensionDataFactory;
- private final boolean _alwaysPerProject;
-
- /**
- * @param bundle
- * @param extName
- * @param elementName
- * @param alwaysPerProject
- */
- public BasicExtensionFactory(final Bundle bundle, final String extName,
- final String elementName, final boolean alwaysPerProject)
- {
- _bundle = bundle;
- _extName = extName;
- _elementName = elementName;
- _extensionDataFactory = new ExtensionDataFactory<EXTENSIONTYPE>();
- _alwaysPerProject = alwaysPerProject;
- }
-
- /**
- * @return the resolvers. Lazily initialized.
- */
- public final Map<String, ExtensionData<EXTENSIONTYPE>> getExtensions()
- {
- if (_registeredResolvers == null)
- {
- _registeredResolvers = loadRegisteredExtensions();
- }
-
- return _registeredResolvers;
- }
-
- /**
- * @return the map of extensions by id.
- */
- protected Map<String, ExtensionData<EXTENSIONTYPE>> loadRegisteredExtensions()
- {
- final Map<String, ExtensionData<EXTENSIONTYPE>> resolvers = new HashMap<String, ExtensionData<EXTENSIONTYPE>>();
-
- final IExtensionPoint point = Platform.getExtensionRegistry()
- .getExtensionPoint(_bundle.getSymbolicName(), _extName);
-
- final IExtension[] extensions = point.getExtensions();
-
- for (final IExtension extension : extensions)
- {
- final IConfigurationElement[] elements = extension
- .getConfigurationElements();
-
- for (final IConfigurationElement element : elements)
- {
- if (_elementName.equals(element.getName())
- && element.getAttribute("class") != null //$NON-NLS-1$
- && element.getAttribute("id") != null) //$NON-NLS-1$
- {
- final ExtensionData extData = processExtension(element, _alwaysPerProject);
-
- if (extData != null)
- {
- resolvers.put(extData.getId(), extData);
- }
- }
- }
- }
- return resolvers;
- }
-
- /**
- * @param element
- * @param alwaysPerProject
- * @return the extension data for the extension or null if can't be created
- */
- protected ExtensionData processExtension(final IConfigurationElement element, final boolean alwaysPerProject)
- {
- return _extensionDataFactory.createExtensionData(element, alwaysPerProject);
- }
-
- /**
- * @author cbateman
- *
- * @param <EXTENSIONTYPE>
- */
- protected static class ExtensionDataFactory<EXTENSIONTYPE>
- {
- ExtensionData createExtensionData(final IConfigurationElement element,
- final boolean alwaysPerProject)
- {
- if (isPerProjectExtension(element, alwaysPerProject))
- {
- return new PerProjectExtensionData<EXTENSIONTYPE>(element);
- }
- return new SingleInstanceExtensionData<EXTENSIONTYPE>(element);
- }
-
- static boolean isPerProjectExtension(final IConfigurationElement element, final boolean alwaysPerProject)
- {
- if (alwaysPerProject)
- {
- return true;
- }
- final String flag = element.getAttribute("instancePerProject"); //$NON-NLS-1$
- // must check for null for backward compatibility, since
- // this attribute wasn't part of the original.
- if (flag != null)
- {
- return Boolean.valueOf(flag).booleanValue();
- }
- return false;
- }
- }
-
- /**
- * @param <EXTENSIONTYPE>
- */
- protected static class PerProjectExtensionData<EXTENSIONTYPE> extends
- ExtensionData<EXTENSIONTYPE>
- {
- private Map<IProject, EXTENSIONTYPE> _extensions;
-
- /**
- * @param element
- */
- protected PerProjectExtensionData(IConfigurationElement element)
- {
- super(element);
- }
-
- @Override
- public EXTENSIONTYPE getInstance(final IProject project)
- {
- if (!project.isAccessible())
- {
- _extensions.remove(project);
- return null;
- }
-
- if (_extensions == null)
- {
- _extensions = new HashMap<IProject, EXTENSIONTYPE>();
- }
-
- EXTENSIONTYPE instance = _extensions.get(project);
-
- if (instance == null)
- {
- try
- {
- instance = createInstance();
- if (instance instanceof IInstancePerProjectResolver)
- {
- ((IInstancePerProjectResolver) instance)
- .setProject(project);
- }
- _extensions.put(project, instance);
- }
- catch (Exception e)
- {
- JSFCorePlugin.log(e,
- "Instantiating extension class for id: " + getId()); //$NON-NLS-1$
- }
- }
- return instance;
- }
-
- @Override
- public EXTENSIONTYPE removeInstance(IProject project)
- {
- if (_extensions != null)
- {
- return _extensions.remove(project);
- }
- return null;
- }
- }
-
- /**
- * @param <EXTENSIONTYPE>
- *
- */
- protected static class SingleInstanceExtensionData<EXTENSIONTYPE> extends
- ExtensionData<EXTENSIONTYPE>
- {
- private EXTENSIONTYPE _instance;
-
- /**
- * @param element
- */
- protected SingleInstanceExtensionData(IConfigurationElement element)
- {
- super(element);
- }
-
- @Override
- public EXTENSIONTYPE getInstance(final IProject project)
- {
- if (_instance == null)
- {
- try
- {
- _instance = createInstance();
- }
- catch (CoreException e)
- {
- JSFCorePlugin.log(e,
- "Instantiating extension class for id: " + getId()); //$NON-NLS-1$
- }
- }
- return _instance;
- }
-
- @Override
- public EXTENSIONTYPE removeInstance(IProject project)
- {
- final EXTENSIONTYPE removedItem = _instance;
- _instance = null;
- return removedItem;
- }
- }
-
- /**
- * Extension data
- *
- * @param <EXTENSIONTYPE>
- *
- */
- public abstract static class ExtensionData<EXTENSIONTYPE>
- {
- private final IConfigurationElement _element;
-
- /**
- * @param element
- */
- protected ExtensionData(final IConfigurationElement element)
- {
- super();
- _element = element;
- }
-
- /**
- * @return the unique id of the variable resolver extension
- */
- public String getId()
- {
- return _element.getAttribute("id"); //$NON-NLS-1$
- }
-
- /**
- * @param project
- * @return the instance. project may be ignored if there is only one
- * global instance for this factory.
- */
- public abstract EXTENSIONTYPE getInstance(final IProject project);
-
- /**
- * @param project
- * @return the extension for the project, removing from any internal
- * caching. May return null if getInstance was never called for
- * project.
- */
- public abstract EXTENSIONTYPE removeInstance(final IProject project);
-
- /**
- * @return the resolver
- * @throws CoreException
- */
- protected EXTENSIONTYPE createInstance() throws CoreException
- {
- return (EXTENSIONTYPE) _element.createExecutableExtension("class"); //$NON-NLS-1$
- }
- }
-}

Back to the top