blob: c3d159c02d5faea6074958a1f5988a2ba8d41618 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2011 SAP AG 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:
* Kaloyan Raev (SAP AG) - initial API and implementation
*******************************************************************************/
package org.eclipse.libra.facet;
import static org.eclipse.libra.facet.OSGiBundleFacetUtils.JAVAX_PERSISTENCE_PACKAGE;
import static org.eclipse.libra.facet.OSGiBundleFacetUtils.JPA_FACET;
import static org.eclipse.libra.facet.OSGiBundleFacetUtils.META_PERSISTENCE_HEADER;
import static org.eclipse.libra.facet.OSGiBundleFacetUtils.isOSGiBundle;
import java.util.ArrayList;
import java.util.Arrays;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.libra.facet.internal.LibraFacetPlugin;
import org.eclipse.pde.core.project.IBundleProjectDescription;
import org.eclipse.pde.core.project.IBundleProjectService;
import org.eclipse.pde.core.project.IPackageImportDescription;
import org.eclipse.wst.common.project.facet.core.IDelegate;
import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
public class OSGiBundleFacetEventHandler implements IDelegate {
public void execute(IProject project, IProjectFacetVersion fv,
Object config, IProgressMonitor monitor) throws CoreException {
if (JPA_FACET.equals(fv.getProjectFacet().getId()) && isOSGiBundle(project)) {
IBundleProjectService bundleProjectService = LibraFacetPlugin.getDefault().getBundleProjectService();
IBundleProjectDescription bundleProjectDescription = bundleProjectService.getDescription(project);
// add the Meta-Persistence manifest header, if it already exists - keep its value
String metaPersistenceHeader = bundleProjectDescription.getHeader(META_PERSISTENCE_HEADER);
if (metaPersistenceHeader == null) {
metaPersistenceHeader = ""; //$NON-NLS-1$
}
bundleProjectDescription.setHeader(META_PERSISTENCE_HEADER, metaPersistenceHeader);
// remove the javax.persistence package import, if it already exists
ArrayList<IPackageImportDescription> imports = new ArrayList<IPackageImportDescription>();
imports.addAll(Arrays.asList(bundleProjectDescription.getPackageImports()));
for (IPackageImportDescription imp : imports) {
if (JAVAX_PERSISTENCE_PACKAGE.equals(imp.getName())) {
imports.remove(imp);
break;
}
}
// add the javax.persistence package import
IPackageImportDescription imp = bundleProjectService.newPackageImport(String.format(JAVAX_PERSISTENCE_PACKAGE, fv.getVersionString()), null, false);
imports.add(imp);
IPackageImportDescription[] newImports = imports.toArray(new IPackageImportDescription[imports.size()]);
bundleProjectDescription.setPackageImports(newImports);
// save the changes
bundleProjectDescription.apply(monitor);
}
}
}