| /******************************************************************************* |
| * Copyright (c) 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 |
| * -------- -------- ----------------------------------------------------------- |
| * 20100303 291954 kchong@ca.ibm.com - Keith Chong, JAX-RS: Implement JAX-RS Facet |
| * 20100319 306595 ericdp@ca.ibm.com - Eric D. Peters, several install scenarios fail for both user library & non-user library |
| * 20100324 306937 ericdp@ca.ibm.com - Eric D. Peters, JAX-RS Properties page- NPE after pressing OK |
| * 20100407 304749 ericdp@ca.ibm.com - Eric D. Peters, JAX-RS Facet: install fails when choosing <None> runtime |
| * 20100622 317306 ericdp@ca.ibm.com - Eric D. Peters, JAX-RS Property page- RuntimeException when <None> runtime targeted |
| *******************************************************************************/ |
| package org.eclipse.jst.ws.jaxrs.core.internal.project.facet; |
| |
| import java.util.Iterator; |
| |
| import org.eclipse.core.resources.IProject; |
| import org.eclipse.core.resources.ResourcesPlugin; |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.core.runtime.IProgressMonitor; |
| import org.eclipse.jst.common.project.facet.core.libprov.LibraryInstallDelegate; |
| import org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderOperationConfig; |
| import org.eclipse.jst.j2ee.internal.common.classpath.WtpUserLibraryProviderInstallOperation; |
| import org.eclipse.jst.j2ee.project.EarUtilities; |
| import org.eclipse.jst.ws.jaxrs.core.internal.jaxrssharedlibraryconfig.SharedLibraryConfigurator; |
| import org.eclipse.jst.ws.jaxrs.core.internal.jaxrssharedlibraryconfig.SharedLibraryConfiguratorUtil; |
| import org.eclipse.wst.common.frameworks.datamodel.IDataModel; |
| import org.eclipse.wst.common.project.facet.core.runtime.IRuntime; |
| import org.eclipse.wst.server.core.IRuntimeType; |
| import org.eclipse.jst.server.core.FacetUtil; |
| |
| public class JAXRSUserLibraryProviderInstallOperation extends WtpUserLibraryProviderInstallOperation |
| { |
| |
| public JAXRSUserLibraryProviderInstallOperation() |
| { |
| // TODO Auto-generated constructor stub |
| } |
| |
| public void execute(final LibraryProviderOperationConfig libConfig, final IProgressMonitor monitor) |
| |
| throws CoreException |
| |
| { |
| super.execute(libConfig, monitor); |
| |
| JAXRSUserLibraryProviderInstallOperationConfig cfg = (JAXRSUserLibraryProviderInstallOperationConfig) libConfig; |
| // If config is null, we are on the properties page |
| IDataModel config = cfg.getModel(); |
| |
| IRuntime runtime = cfg.getFacetedProject().getPrimaryRuntime(); |
| IProject project = cfg.getFacetedProject().getProject(); |
| |
| String targetRuntimeID = ""; |
| if (!onPropertiesPage(config)) { |
| targetRuntimeID = config.getStringProperty(IJAXRSFacetInstallDataModelProperties.TARGETRUNTIME); |
| } else { |
| if (runtime != null) { |
| org.eclipse.wst.server.core.IRuntime iruntime = FacetUtil.getRuntime(runtime); |
| if (iruntime != null) |
| { |
| IRuntimeType rtType = iruntime.getRuntimeType(); |
| if (rtType != null) |
| { |
| targetRuntimeID = rtType.getId(); |
| } |
| } |
| } |
| } |
| |
| IProject[] ears = EarUtilities.getReferencingEARProjects(project); |
| SharedLibraryConfiguratorUtil.getInstance(); |
| java.util.List<SharedLibraryConfigurator> configurators = SharedLibraryConfiguratorUtil.getConfigurators(); |
| Iterator<SharedLibraryConfigurator> sharedLibConfiguratorIterator = configurators.iterator(); |
| |
| if (onPropertiesPage(config) || cfg.isDeploy() || (!cfg.isDeploy() && !cfg.isSharedLibrary())) |
| return; |
| |
| while (sharedLibConfiguratorIterator.hasNext()) |
| { |
| SharedLibraryConfigurator thisConfigurator = sharedLibConfiguratorIterator.next(); |
| if (targetRuntimeID.equals(thisConfigurator.getRuntimeID())) |
| { |
| IProject earProject = null; |
| Boolean addToEar = null; |
| if (!onPropertiesPage(config)) |
| { |
| earProject = getEARProject(config); |
| addToEar = getAddToEar(config); |
| } |
| else |
| { |
| if (ears.length > 0) |
| earProject = ears[0]; |
| else |
| return; |
| addToEar = new Boolean(true); |
| } |
| if (thisConfigurator.getIsSharedLibSupported(project, earProject, addToEar, ((LibraryInstallDelegate)config.getProperty(IJAXRSFacetInstallDataModelProperties.LIBRARY_PROVIDER_DELEGATE)).getLibraryProvider().getId())) // libref.getID() |
| { |
| thisConfigurator.installSharedLibs(project, earProject, monitor, cfg.getLibraryNames()); // libref.getID() |
| break; |
| } |
| } |
| } |
| } |
| |
| private boolean onPropertiesPage(IDataModel config) { |
| return config == null; |
| } |
| |
| private IProject getEARProject(IDataModel config) |
| { |
| String projName = config.getStringProperty(IJAXRSFacetInstallDataModelProperties.EARPROJECT_NAME); |
| if (projName == null || "".equals(projName)) |
| return null; |
| |
| IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projName); |
| return project; |
| } |
| |
| private boolean getAddToEar(IDataModel config) |
| { |
| return config.getBooleanProperty(IJAXRSFacetInstallDataModelProperties.ADD_TO_EAR); |
| } |
| |
| } |