/******************************************************************************* * 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; } }