blob: 730210c551652a815b80eb870cb338336cb028ca [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 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
* yyyymmdd bug Email and other contact information
* -------- -------- -----------------------------------------------------------
* 20091021 291954 ericdp@ca.ibm.com - Eric D. Peters, JAX-RS: Implement JAX-RS Facet
*******************************************************************************/
package org.eclipse.jst.ws.jaxrs.core.jaxrslibraryregistry.internal;
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.ws.jaxrs.core.internal.jaxrsibraryregistry.ArchiveFile;
import org.eclipse.jst.ws.jaxrs.core.internal.jaxrsibraryregistry.JAXRSLibraryRegistryFactory;
import org.osgi.framework.Bundle;
/**
* Abstract delegate class used by jaxrsLibraries ext-pt to return collection of
* ArchiveFiles to PluginProvidedJAXRSLibraryCreationHelper.
*
* Caller must first setConfigurationElement(IConfigurationElement element)
* before a call to getArchiveFiles().
*
* <p>
* <b>Provisional API - subject to change</b>
* </p>
*
* @deprecated along with the jaxrslibraries extension-point
*/
public abstract class JAXRSLibraryArchiveFilesDelegate {
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.ws.jaxrs.core.internal.JAXRSLibraryregistry.ArchiveFile</code>
* instances.
*
* @return A Collection of
* <code>org.eclipse.jst.ws.jaxrs.core.internal.JAXRSLibraryregistry.ArchiveFile</code>
* instances
*/
@SuppressWarnings("unchecked")
public abstract Collection getArchiveFiles();
/**
* Sets the IConfigurationElement instance to be subsequently used to get
* the plugin ID and the name defined for the JAXRS Library.
*
* @param extPtElement
* IConfigurationElement instance
*/
public final void setConfigurationElement(IConfigurationElement extPtElement) {
this.extPtElement = extPtElement;
}
/**
* Constructs an instance.
*/
public JAXRSLibraryArchiveFilesDelegate() {
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 = JAXRSLibraryRegistryFactory.eINSTANCE
.createArchiveFile();
file.setRelativeToWorkspace(false);
file.setSourceLocation(relativePathFileName);
file.setRelativeDestLocation(relativeDestLocation);
return file;
}
/**
* Returns the JAXRSLibrary ID as set on the extension point.
*
* @return JAXRSLibrary ID
*/
protected String getLibID() {
if (libID == null) {
StringBuffer buf = new StringBuffer(getPluginID());
buf
.append("/").append(extPtElement.getAttribute(PluginProvidedJAXRSLibraryCreationHelper.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;
}
}