diff options
Diffstat (limited to 'plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/WTPResourceFactoryRegistry.java')
-rw-r--r-- | plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/WTPResourceFactoryRegistry.java | 175 |
1 files changed, 0 insertions, 175 deletions
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/WTPResourceFactoryRegistry.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/WTPResourceFactoryRegistry.java deleted file mode 100644 index 89fe0821d..000000000 --- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/WTPResourceFactoryRegistry.java +++ /dev/null @@ -1,175 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 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.wst.common.componentcore.internal.impl; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.ISafeRunnable; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.SafeRunner; -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.jem.util.RegistryReader; -import org.eclipse.wst.common.componentcore.internal.ModulecorePlugin; -import org.eclipse.wst.common.internal.emf.resource.FileNameResourceFactoryRegistry; -import org.eclipse.wst.common.internal.emf.resource.ResourceFactoryDescriptor; -import org.eclipse.wst.common.internal.emf.utilities.DefaultOverridableResourceFactoryRegistry; - -/** - * <p> - * The following class is experimental until fully documented. - * </p> - */ -public class WTPResourceFactoryRegistry extends FileNameResourceFactoryRegistry { - - public static final WTPResourceFactoryRegistry INSTANCE = new WTPResourceFactoryRegistry(); - - private final static boolean LOG_WARNINGS = false; - - - private WTPResourceFactoryRegistry() { - new ResourceFactoryRegistryReader().readRegistry(); - } - - public Resource.Factory delegatedGetFactory(URI uri) { - if (WTPResourceFactoryRegistry.INSTANCE == this) - return super.delegatedGetFactory(uri); - return WTPResourceFactoryRegistry.INSTANCE.getFactory(uri); - } - - public synchronized Resource.Factory getFactory(URI uri) { - - Resource.Factory resourceFactory = null; - if(uri != null && uri.lastSegment() != null) { - ResourceFactoryDescriptor descriptor = getDescriptor(uri); - - if(descriptor != null) { - resourceFactory = getFactory(descriptor); - } - } - if(resourceFactory == null) - resourceFactory = super.getFactory(uri); - return resourceFactory; - } - - - /** - * Register a file name representing the last segment of a URI with the corresponding - * Resource.Factory. - */ - public synchronized void registerLastFileSegment(String aSimpleFileName, Resource.Factory aFactory) { - - if(LOG_WARNINGS) { - /* the third entry in the array is this stack frame, we walk back from there. */ - StackTraceElement[] stackTrace = (new Exception()).getStackTrace(); - if(stackTrace.length > 4) { - StringBuffer warningMessage = new StringBuffer("WTPResourceFactoryRegistry.registerLastFileSegment() was called explicitly from " + stackTrace[3]); - warningMessage.append("\nThis happened around: \n"); - for (int i = 4; (i < stackTrace.length) && i < 8; i++) { - warningMessage.append("\tnear ").append(stackTrace[i]).append('\n'); - } - warningMessage.append(".\nClients should use the org.eclipse.wst.common.modulecore.resourceFactories extension point instead."); - ModulecorePlugin.log(IStatus.INFO, 0, warningMessage.toString(), null); - } - } - - super.registerLastFileSegment(aSimpleFileName, aFactory); - - } - - /** - * Declares a subclass to create Resource.Factory(ies) from an extension. - */ - private class ConfigurationResourceFactoryDescriptor extends ResourceFactoryDescriptor implements IResourceFactoryExtPtConstants { - - private String shortSegment; - private final IConfigurationElement element; - - public ConfigurationResourceFactoryDescriptor(IConfigurationElement ext) throws CoreException { - Assert.isNotNull(ext); - element = ext; - init(); - } - - private void init() throws CoreException { - shortSegment = element.getAttribute(ATT_SHORT_SEGMENT); - if(shortSegment == null || shortSegment.trim().length() == 0) - throw new CoreException( - ModulecorePlugin.createErrorStatus(0, - "The shortSegment attribute of " + TAG_RESOURCE_FACTORY + //$NON-NLS-1$ - " must specify a valid, non-null, non-empty value in " + //$NON-NLS-1$ - element.getNamespaceIdentifier(), null)); - - } - - public boolean isEnabledFor(URI fileURI) { - /* shortSegment must be non-null for the descriptor to be created, - * a validation check in init() verifies this requirement */ - if(fileURI != null && fileURI.lastSegment() != null) - return shortSegment.equals(fileURI.lastSegment()); - return false; - } - - public Resource.Factory createFactory() { - - final Resource.Factory[] factory = new Resource.Factory[1]; - - SafeRunner.run(new ISafeRunnable() { - - public void run() throws Exception { - factory[0] = (Resource.Factory) element.createExecutableExtension(ATT_CLASS); - } - - public void handleException(Throwable exception) { - ModulecorePlugin.log(ModulecorePlugin.createErrorStatus(0, exception.getMessage(), exception)); - } - }); - - return factory[0] != null ? factory[0] : DefaultOverridableResourceFactoryRegistry.GLOBAL_FACTORY; - - } - - public String getShortSegment() { - return shortSegment; - } - } - - - private class ResourceFactoryRegistryReader extends RegistryReader implements IResourceFactoryExtPtConstants { - - public ResourceFactoryRegistryReader() { - super(Platform.getPluginRegistry(), ModulecorePlugin.PLUGIN_ID, EXTPT_RESOURCE_FACTORIES); - } - - public boolean readElement(final IConfigurationElement element) { - - if(element != null && TAG_RESOURCE_FACTORY.equals(element.getName())) { - final boolean[] success = new boolean[] { true }; - SafeRunner.run(new ISafeRunnable() { - - public void run() throws Exception { - addDescriptor(new ConfigurationResourceFactoryDescriptor(element)); - } - - public void handleException(Throwable exception) { - ModulecorePlugin.log(ModulecorePlugin.createErrorStatus(0, exception.getMessage(), exception)); - success[0] = false; - } - }); - return success[0]; - } else { - return false; - } - } - } -} |