| /******************************************************************************* |
| * Copyright (c) 2005 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: |
| * Gerry Kessler - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.jst.jsf.core.jsflibraryregistry; |
| |
| import java.util.Collection; |
| |
| import org.eclipse.core.runtime.IConfigurationElement; |
| import org.eclipse.core.runtime.IPath; |
| import org.eclipse.core.runtime.Path; |
| import org.eclipse.core.runtime.Platform; |
| import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.ArchiveFile; |
| import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibraryRegistryFactory; |
| import org.osgi.framework.Bundle; |
| |
| /** |
| * Abstract delegate class used by jsfLibraries ext-pt to return collection of |
| * ArchiveFiles to PluginProvidedJSFLibraryCreationHelper. |
| * |
| * Caller must first setConfigurationElement(IConfigurationElement element) |
| * before a call to getArchiveFiles(). |
| * |
| * <p><b>Provisional API - subject to change</b></p> |
| * |
| * @deprecated along with the jsflibraries extension-point |
| */ |
| public abstract class JSFLibraryArchiveFilesDelegate { |
| private IConfigurationElement extPtElement; |
| private String libID = null; |
| private IPath pluginPath = null; |
| private String pluginID; |
| private String relativeDestLocation = "WEB-INF/lib"; //$NON-NLS-1$ |
| |
| /** |
| * Returns a Collection of <code>org.eclipse.jst.jsf.core.internal.jsflibraryregistry.ArchiveFile</code> |
| * instances. |
| * |
| * @return A Collection of <code>org.eclipse.jst.jsf.core.internal.jsflibraryregistry.ArchiveFile</code> |
| * instances |
| */ |
| public abstract Collection getArchiveFiles(); |
| |
| /** |
| * Sets the IConfigurationElement instance to be subsequently used to get |
| * the plugin ID and the name defined for the JSF Library. |
| * |
| * @param extPtElement IConfigurationElement instance |
| */ |
| public final void setConfigurationElement(IConfigurationElement extPtElement){ |
| this.extPtElement = extPtElement; |
| } |
| |
| /** |
| * Constructs an instance. |
| */ |
| public JSFLibraryArchiveFilesDelegate() { |
| super(); |
| } |
| |
| /** |
| * Sets the relative destination location subsequently used to set the |
| * corresponding property on each created ArchiveFile. |
| * |
| * @param relPath Relative destination location for ArchiveFile instances |
| */ |
| protected void setRelativeDestinationLocation(String relPath){ |
| relativeDestLocation = relPath; |
| } |
| |
| /** |
| * Returns ArchiveFile where the location is set relative to the plugin. |
| * As long as the ArchiveFile is on the local machine somewhere, it should |
| * be locatable. |
| * |
| * @param relativePathFileName Relative location of the ArchiveFile |
| * @return ArchiveFile instance. |
| */ |
| protected ArchiveFile createArchiveFile(String relativePathFileName){ |
| ArchiveFile file = JSFLibraryRegistryFactory.eINSTANCE.createArchiveFile(); |
| file.setRelativeToWorkspace(false); |
| file.setSourceLocation(relativePathFileName); |
| file.setRelativeDestLocation(relativeDestLocation); |
| return file; |
| } |
| |
| // protected ArchiveFile createArchiveFileWithAbsolutePath(String fullPath){ |
| // ArchiveFile file = JSFLibraryRegistryFactory.eINSTANCE.createArchiveFile(); |
| // file.setRelativeToWorkspace(false); |
| // file.setSourceLocation(fullPath); |
| // file.setRelativeDestLocation(relativeDestLocation); |
| // return file; |
| // } |
| |
| /** |
| * Returns the JSFLibrary ID as set on the extension point. |
| * |
| * @return JSFLibrary ID |
| */ |
| protected String getLibID(){ |
| if (libID == null){ |
| StringBuffer buf = new StringBuffer(getPluginID()); |
| buf.append("/").append(extPtElement.getAttribute(PluginProvidedJSFLibraryCreationHelper.NAME)); //$NON-NLS-1$ |
| libID = buf.toString(); |
| } |
| return libID; |
| } |
| |
| /** |
| * Returns the plugin's path. |
| * |
| * @return The plugin's path. |
| */ |
| protected IPath getPluginPath(){ |
| if (pluginPath == null){ |
| Bundle bundle = Platform.getBundle(getPluginID()); |
| pluginPath = new Path(bundle.getLocation()); |
| } |
| return pluginPath; |
| } |
| |
| /** |
| * Returns the plugin's ID. |
| * |
| * @return The plugin's ID. |
| */ |
| private String getPluginID() { |
| if (pluginID == null){ |
| pluginID = extPtElement.getDeclaringExtension().getContributor().getName(); |
| } |
| return pluginID; |
| } |
| |
| } |