blob: 68ffe7f4bddf30acd0dbb2f49346456ad55db09b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2010 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
* 20100420 309846 ericdp@ca.ibm.com - Eric D. Peters, Remove dead code related to e.p. pluginProvidedJaxrsLibraries
*******************************************************************************/
package org.eclipse.jst.ws.jaxrs.core.jaxrslibraryregistry.internal;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.jst.ws.jaxrs.core.internal.JAXRSCorePlugin;
import org.eclipse.jst.ws.jaxrs.core.internal.Messages;
import org.eclipse.jst.ws.jaxrs.core.internal.jaxrsibraryregistry.ArchiveFile;
import org.eclipse.jst.ws.jaxrs.core.internal.jaxrsibraryregistry.JAXRSLibrary;
import org.eclipse.jst.ws.jaxrs.core.internal.jaxrsibraryregistry.JAXRSLibraryRegistryFactory;
import org.eclipse.jst.ws.jaxrs.core.internal.jaxrsibraryregistry.PluginProvidedJAXRSLibrary;
import org.eclipse.osgi.util.NLS;
/**
* Helper class used to create plugin-rovided JAXRS Libraries from the
* <code>org.eclipse.jst.ws.jaxrs.core.pluginProvidedJaxrsLibraries</code>
* extension-point. <br>
*
* @deprecated
*
* <p>
* <b>Provisional API - subject to change - do not use</b>
* </p>
*/
public final class PluginProvidedJAXRSLibraryCreationHelper2 {
private PluginProvidedJAXRSLibrary newLib;
private IConfigurationElement config_element;
private String relativeDestLocation = "WEB-INF/lib"; //$NON-NLS-1$
/**
* Key of the 'name' attribute of the extension point.
*/
public final static String NAME = "name"; //$NON-NLS-1$
/**
* Key of the 'archiveFilesDelegate' attribute of the extension point.
*/
public final static String DELEGATE = "archiveFilesDelegate"; //$NON-NLS-1$
/**
* Key of the 'label' attribute of the extension point.
*/
public final static String LABEL = "label"; //$NON-NLS-1$
/**
* Creates an instance with the specified IConfigurationElement instance.
*
* @param JAXRSLibrary
* IConfigurationElement instance
*/
public PluginProvidedJAXRSLibraryCreationHelper2(
IConfigurationElement JAXRSLibrary) {
this.config_element = JAXRSLibrary;
}
/**
* Add a jar file to the library
*
* @param pluginRootRelativePath
*/
@SuppressWarnings("unchecked")
public void addArchiveFile(String pluginRootRelativePath) {
ArchiveFile jar = createArchiveFile(pluginRootRelativePath);
if (!newLib.containsArchiveFile(jar.getSourceLocation()))
newLib.getArchiveFiles().add(jar);
}
@SuppressWarnings("unchecked")
public void addArchiveFileFromFullPath(String path) throws Exception {
ArchiveFile jar = createArchiveFileFromFullPath(path);
if (!newLib.containsArchiveFile(jar.getSourceLocation()))
newLib.getArchiveFiles().add(jar);
}
private ArchiveFile createArchiveFileFromFullPath(String path) {
ArchiveFile file = JAXRSLibraryRegistryFactory.eINSTANCE
.createArchiveFile();
file.setRelativeToWorkspace(false);
file.setSourceLocation(path);
file.setRelativeDestLocation(relativeDestLocation);
return file;
}
/**
* Creates a new PluginProvidedJAXRSLibrary from the JAXRSLibrary extension
* point.
*
* @return PluginProvidedJAXRSLibrary instance.
*/
public JAXRSLibrary create() {
newLib = JAXRSLibraryRegistryFactory.eINSTANCE
.createPluginProvidedJAXRSLibrary();
newLib.setPluginID(getPluginID());
newLib.setName(config_element.getAttribute(NAME));
String label = config_element.getAttribute(LABEL);
if (label != null && label.length() > 0) {
newLib.setLabel(label);
}
try {
addArchives();
return newLib;
} catch (Exception e) {
JAXRSCorePlugin
.log(
e,
NLS
.bind(
Messages.PluginProvidedJAXRSLibraryCreationHelper_ErrorCreating,
newLib.getName()));
}
return null;
}
/**
* Adds ArchiveFile instances to the specified JAXRSLibrary instance.
*
* @param newLib
* JAXRSLibrary instance
* @throws CoreException
* on core failure.
*/
private void addArchives() throws Exception {
PluginProvidedJAXRSLibraryArchiveFilesDelegate jarCol = null;
jarCol = (PluginProvidedJAXRSLibraryArchiveFilesDelegate) config_element
.createExecutableExtension(DELEGATE);
if (jarCol != null) {
jarCol.setCreationHelper(this);
jarCol.getArchiveFiles();
}
}
/**
* 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.
*/
private ArchiveFile createArchiveFile(String pluginRootRelativePath) {
ArchiveFile file = JAXRSLibraryRegistryFactory.eINSTANCE
.createArchiveFile();
file.setRelativeToWorkspace(false);
file.setSourceLocation(pluginRootRelativePath);
file.setRelativeDestLocation(relativeDestLocation);
return file;
}
/**
* Returns the plugin's ID.
*
* @return The plugin's ID
*/
private String getPluginID() {
return config_element.getDeclaringExtension().getContributor()
.getName();
}
}