Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/dnd/AddProjectToEARDropAssistant.java')
-rw-r--r--plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/dnd/AddProjectToEARDropAssistant.java619
1 files changed, 0 insertions, 619 deletions
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/dnd/AddProjectToEARDropAssistant.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/dnd/AddProjectToEARDropAssistant.java
deleted file mode 100644
index 890922b4a..000000000
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/dnd/AddProjectToEARDropAssistant.java
+++ /dev/null
@@ -1,619 +0,0 @@
-/***********************************************************************
- * Copyright (c) 2008 by SAP AG, Walldorf.
- * 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:
- * SAP AG - initial API and implementation
- * IBM - bug 281382 clean up
- ***********************************************************************/
-package org.eclipse.jst.jee.ui.internal.navigator.dnd;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.jdt.internal.core.JarPackageFragmentRoot;
-import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
-import org.eclipse.jface.util.LocalSelectionTransfer;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jst.j2ee.application.internal.operations.AddComponentToEnterpriseApplicationDataModelProvider;
-import org.eclipse.jst.j2ee.application.internal.operations.IAddComponentToEnterpriseApplicationDataModelProperties;
-import org.eclipse.jst.j2ee.application.internal.operations.RemoveComponentFromEnterpriseApplicationDataModelProvider;
-import org.eclipse.jst.j2ee.application.internal.operations.UpdateManifestDataModelProperties;
-import org.eclipse.jst.j2ee.application.internal.operations.UpdateManifestDataModelProvider;
-import org.eclipse.jst.j2ee.commonarchivecore.internal.helpers.ArchiveManifest;
-import org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualArchiveComponent;
-import org.eclipse.jst.j2ee.internal.common.J2EEVersionUtil;
-import org.eclipse.jst.j2ee.internal.dialogs.DependencyConflictResolveDialog;
-import org.eclipse.jst.j2ee.internal.plugin.IJ2EEModuleConstants;
-import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
-import org.eclipse.jst.j2ee.internal.provider.J2EEItemProvider;
-import org.eclipse.jst.j2ee.navigator.internal.plugin.J2EENavigatorPlugin;
-import org.eclipse.jst.j2ee.project.EarUtilities;
-import org.eclipse.jst.j2ee.project.JavaEEProjectUtilities;
-import org.eclipse.jst.j2ee.project.facet.EARFacetUtils;
-import org.eclipse.jst.jee.ui.internal.Messages;
-import org.eclipse.jst.jee.ui.internal.navigator.ear.AbstractEarNode;
-import org.eclipse.jst.jee.ui.internal.navigator.ear.BundledNode;
-import org.eclipse.jst.jee.ui.internal.navigator.ear.GroupEARProvider;
-import org.eclipse.jst.jee.ui.plugin.JEEUIPlugin;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.dnd.DropTargetEvent;
-import org.eclipse.swt.dnd.TransferData;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.navigator.CommonDropAdapter;
-import org.eclipse.ui.navigator.CommonDropAdapterAssistant;
-import org.eclipse.ui.part.PluginTransfer;
-import org.eclipse.ui.progress.IProgressService;
-import org.eclipse.wst.common.componentcore.ComponentCore;
-import org.eclipse.wst.common.componentcore.datamodel.properties.ICreateReferenceComponentsDataModelProperties;
-import org.eclipse.wst.common.componentcore.internal.operation.RemoveReferenceComponentsDataModelProvider;
-import org.eclipse.wst.common.componentcore.internal.resources.VirtualArchiveComponent;
-import org.eclipse.wst.common.componentcore.internal.util.IModuleConstants;
-import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
-import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
-import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
-import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
-
-/**
- * Handles drop of JEE resources on EAR project thus adding them as modules.
- *
- * @author Dimitar Giormov
- *
- */
-public class AddProjectToEARDropAssistant extends CommonDropAdapterAssistant {
-
- private static final Class IPROJECT_CLASS = IProject.class;
- private IVirtualComponent earComponent = null;
- private IProject earProject = null;
- private String libDir = null;
- private boolean resolveConflicts = false;
-
- public AddProjectToEARDropAssistant() {
- super();
- }
-
- @Override
- public boolean isSupportedType(TransferData aTransferType) {
- return LocalSelectionTransfer.getTransfer().isSupportedType(aTransferType);
- }
-
- @Override
- public IStatus handleDrop(CommonDropAdapter aDropAdapter, DropTargetEvent aDropTargetEvent, final Object aTarget) {
- if (LocalSelectionTransfer.getTransfer().isSupportedType(aDropAdapter.getCurrentTransfer())) {
- final IStructuredSelection selection = (IStructuredSelection) LocalSelectionTransfer.getTransfer().getSelection();
- IProgressService service = PlatformUI.getWorkbench().getProgressService();
- resolveConflicts = false;
- for (Iterator selectionIterator = selection.iterator(); selectionIterator.hasNext();) {
- Object sourceObject = selectionIterator.next();
- if (sourceObject instanceof IVirtualReference) {
- IVirtualReference reference = (IVirtualReference) sourceObject;
- /*
- * If a reference is moved from the root to the lib
- * directory check for conflicts with projects referenced by
- * the ear referencing the same lib
- */
- IPath libDirPath = null;
- if(libDir != null)
- libDirPath = new Path(libDir).makeRelative();
- if (libDir.length() > 0 && libDirPath != null && !libDirPath.equals(reference.getRuntimePath().makeRelative())) {
- if (hasConflictingProjectInMetaInf(reference)) {
- DependencyConflictResolveDialog dlg = new DependencyConflictResolveDialog(getShell(), DependencyConflictResolveDialog.DLG_TYPE_2);
- if (dlg.open() == DependencyConflictResolveDialog.BTN_ID_CANCEL) {
- return Status.CANCEL_STATUS;
- }
- resolveConflicts = true;
- }
- }
- } else {
- if (libDir.length() > 0){
- IProject projectToAdd = getProject(sourceObject);
- if (hasConflictingProjectInMetaInf(projectToAdd)) {
- DependencyConflictResolveDialog dlg = new DependencyConflictResolveDialog(getShell(), DependencyConflictResolveDialog.DLG_TYPE_2);
- if (dlg.open() == DependencyConflictResolveDialog.BTN_ID_CANCEL) {
- return Status.CANCEL_STATUS;
- }
- resolveConflicts = true;
- }
- }
- }
- }
- Job addProjectToEarJob = new Job(getJobTitle(earComponent)) {
- @Override
- protected IStatus run(IProgressMonitor monitor) {
-
- IStatus status = null;
-
- List<IVirtualComponent> componentsToAdd = new ArrayList<IVirtualComponent>();
- List<IVirtualComponent> componentsToRemove = new ArrayList<IVirtualComponent>();
-
- for (Iterator selectionIterator = selection.iterator(); selectionIterator.hasNext();) {
- Object sourceObject = selectionIterator.next();
-
- if (sourceObject instanceof JarPackageFragmentRoot) {
- JarPackageFragmentRoot jarPackageFragment = (JarPackageFragmentRoot) sourceObject;
-
- String type = VirtualArchiveComponent.LIBARCHIVETYPE + IPath.SEPARATOR;
- IVirtualComponent archive = ComponentCore.createArchiveComponent(earComponent.getProject(), type + jarPackageFragment.getPath().toString());
- componentsToAdd.add(archive);
- } else if (sourceObject instanceof IVirtualReference) {
- IVirtualReference reference = (IVirtualReference) sourceObject;
- if (resolveConflicts) {
- status = resolveConflicts(reference.getReferencedComponent());
- if (!status.isOK()) {
- return status;
- }
- }
- IVirtualComponent archive = reference.getReferencedComponent();
- componentsToRemove.add(archive);
- status = removeComponentsFromEar(componentsToRemove, reference.getRuntimePath().toString());
- if (!status.isOK())
- return status;
- componentsToAdd.add(archive);
- } else {
- IProject projectToAdd = getProject(sourceObject);
- if (resolveConflicts) {
- status = resolveConflicts(ComponentCore.createComponent(projectToAdd));
- if (!status.isOK()) {
- return status;
- }
- }
- componentsToAdd.add(ComponentCore.createComponent(projectToAdd));
- }
- }
-
- if (!componentsToAdd.isEmpty()) {
- status = addComponentsToEar(componentsToAdd, libDir);
- if (!status.isOK())
- return status;
- }
-
- return status;
- }
-
- };
- service.showInDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), addProjectToEarJob);
- addProjectToEarJob.setRule(ResourcesPlugin.getWorkspace().getRoot());
- addProjectToEarJob.schedule();
- }
- return Status.OK_STATUS;
- }
-
- @Override
- public IStatus validateDrop(Object target, int operation, TransferData transferType) {
- libDir = ""; //$NON-NLS-1$
- if (LocalSelectionTransfer.getTransfer().isSupportedType(transferType) || PluginTransfer.getInstance().isSupportedType(transferType)) {
- ISelection selection = LocalSelectionTransfer.getTransfer().getSelection();
- if (selection != null && !selection.isEmpty() && (selection instanceof IStructuredSelection)) {
- IStructuredSelection structuredSelection = (IStructuredSelection) selection;
- earProject = getProject(target);
- if (earProject == null) {
- return Status.CANCEL_STATUS;
- }
- earComponent = ComponentCore.createComponent(earProject);
- int earVersion = getEarVersion(earProject);
- if (target instanceof BundledNode && ((BundledNode) target).getBundledLibsDirectoryNode() == null) {
- libDir = EarUtilities.getEARLibDir(earComponent);
- }
-
- IStatus status = null;
- for (Iterator iterator = structuredSelection.iterator(); iterator.hasNext();) {
- Object next = iterator.next();
-
- //check if library is physically present in the Ear path
- if (IVirtualReference.class.isInstance(next)){
- IVirtualComponent referencedComponent = ((IVirtualReference)next).getReferencedComponent();
- if (referencedComponent.isBinary() && isPhysicallyAdded(referencedComponent)) {
- return Status.CANCEL_STATUS;
- }
- }
-
- if (next instanceof IVirtualReference) {
- return Status.OK_STATUS;
- }
-
- /*
- * Check if we try to add a JarPackageFragment that is
- * already referenced
- */
- if (next instanceof JarPackageFragmentRoot) {
- JarPackageFragmentRoot jar = (JarPackageFragmentRoot) next;
- for (IVirtualReference reference : earComponent.getReferences()) {
- if (reference.getArchiveName().equals(jar.getElementName())) {
- return Status.CANCEL_STATUS;
- }
- }
- return Status.OK_STATUS;
- }
-
- /*
- * Check if we try to add a module that is already
- * referenced by the ear but at the same time allow to
- * change its location from the root to the lib directory
- * and the opposite.
- */
- IProject projectToAdd = getProject(next);
- hasConflictingProjectInMetaInf(ComponentCore.createComponent(projectToAdd));
- try {
- for (IProject referencedProject : earProject.getReferencedProjects()) {
- if (referencedProject == projectToAdd) {
- return Status.CANCEL_STATUS;
- }
- }
- } catch (CoreException e) {
- String msg = e.getMessage() != null ? e.getMessage() : e.toString();
- status = J2EENavigatorPlugin.createErrorStatus(0, msg, e);
- }
-
- if ((status = validateProjectMayBeAdded(earProject, projectToAdd, earVersion)).isOK())
- return status;
- }
- }
-
- }
- return Status.CANCEL_STATUS;
- }
-
- private boolean isPhysicallyAdded(IVirtualComponent component) {
- IFile f = (IFile)component.getAdapter(IFile.class);
- return f == null ? false : true;
- }
-
- /**
- * @param target
- */
- private IStatus validateProjectMayBeAdded(IProject earProject, IProject projectToAdd, int earVersion) {
- if (earProject == null || projectToAdd == null || earVersion < 0)
- return J2EENavigatorPlugin.createErrorStatus(0, Messages.AddProjectToEARDropAssistant_Could_not_add_module_to_Enterprise_, null);
- else if (!earProject.isAccessible()) {
- return J2EENavigatorPlugin.createErrorStatus(0, NLS.bind(Messages.AddProjectToEARDropAssistant_The_project_0_cannot_be_accesse_, earProject.getName()), null);
- } else if (!projectToAdd.isAccessible()) {
- return J2EENavigatorPlugin.createErrorStatus(0, Messages.AddProjectToEARDropAssistant_The_dragged_project_cannot_be_added_, null);
- }
-
- IStatus isValid = validateProjectToAdd(projectToAdd, earVersion);
- if (!isValid.isOK()) {
- return isValid;
- }
-
- return Status.OK_STATUS;
- }
-
- /**
- *
- * @return -1 on error
- */
- protected final int getEarVersion(IProject earProject) {
- int earVersion = -1;
- IFacetedProject facetedProject = null;
- try {
- facetedProject = ProjectFacetsManager.create(earProject);
-
- if (facetedProject != null) {
- double double1 = Double.parseDouble(facetedProject.getProjectFacetVersion(EARFacetUtils.EAR_FACET).getVersionString());
- earVersion = (int) (double1 * 10);
- } else {
- JEEUIPlugin.logError("Could not acquire model elements for project \"" + earProject.getName() + "\".", null); //$NON-NLS-1$ //$NON-NLS-2$
- }
- } catch (CoreException e1) {
- String msg = e1.getMessage() != null ? e1.getMessage() : e1.toString();
- JEEUIPlugin.logError(msg, e1);
- }
-
- return earVersion;
- }
-
- /**
- * @param facetedProject
- * @return
- */
- protected final boolean hasEarFacet(IProject project) {
- IFacetedProject facetedProject = null;
- try {
- facetedProject = ProjectFacetsManager.create(project);
- } catch (CoreException e1) {
- String msg = e1.getMessage() != null ? e1.getMessage() : e1.toString();
- JEEUIPlugin.logError(msg, e1);
- }
- return facetedProject != null && facetedProject.hasProjectFacet(EARFacetUtils.EAR_FACET);
- }
-
- protected final String calculateValidProjectName(final String originalName) {
- IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
- String validName = originalName;
- int count = 1;
- while (root.getProject(validName).exists()) {
- validName = originalName + count++;
- }
- return validName;
- }
-
- protected String getJobTitle(IVirtualComponent earComponent) {
- return NLS.bind(Messages.AddModuleToEarDropAssistant_Adding_module_to_ea_, earComponent.getName());
- }
-
- protected IStatus validateProjectToAdd(IProject projectToAdd, int earVersion) {
- try {
- // check if the project to add is not an EAR itself
- IFacetedProject facetedProject = ProjectFacetsManager.create(projectToAdd);
- if (facetedProject == null) {
- facetedProject = ProjectFacetsManager.create(projectToAdd, true, new NullProgressMonitor());
- IProjectFacetVersion javafacetversion = ProjectFacetsManager.getProjectFacet(IModuleConstants.JST_JAVA).getDefaultVersion();
- facetedProject.installProjectFacet(javafacetversion, null, null);
- IProjectFacetVersion utilityfacetversion = ProjectFacetsManager.getProjectFacet(IModuleConstants.JST_UTILITY_MODULE).getDefaultVersion();
- facetedProject.installProjectFacet(utilityfacetversion, null, null);
- }
- if (facetedProject.hasProjectFacet(EARFacetUtils.EAR_FACET))
- return Status.CANCEL_STATUS;
-
- // check if the project to add is with Java EE version equal or
- // lesser than that of the EAR
- String verStr = J2EEProjectUtilities.getJ2EEProjectVersion(projectToAdd);
- if (verStr != null) {
- int version;
- if (JavaEEProjectUtilities.isApplicationClientProject(projectToAdd))
- version = J2EEVersionUtil.convertAppClientVersionStringToJ2EEVersionID(verStr);
- else if (JavaEEProjectUtilities.isEJBProject(projectToAdd))
- version = J2EEVersionUtil.convertEJBVersionStringToJ2EEVersionID(verStr);
- else if (JavaEEProjectUtilities.isDynamicWebProject(projectToAdd))
- version = J2EEVersionUtil.convertWebVersionStringToJ2EEVersionID(verStr);
- else if (JavaEEProjectUtilities.isJCAProject(projectToAdd))
- version = J2EEVersionUtil.convertConnectorVersionStringToJ2EEVersionID(verStr);
- else
- version = J2EEVersionUtil.convertVersionStringToInt(verStr);
-
- if (version > earVersion)
- return Status.CANCEL_STATUS;
- }
- } catch (CoreException e) {
- String msg = e.getMessage() != null ? e.getMessage() : e.toString();
- return J2EENavigatorPlugin.createErrorStatus(0, msg, e);
- }
- return Status.OK_STATUS;
-
- }
-
- protected static IProject getProject(Object element) {
- if (element == null)
- return null;
- IProject project = null;
- if (element instanceof IAdaptable)
- project = (IProject) ((IAdaptable) element).getAdapter(IPROJECT_CLASS);
- else
- project = (IProject) Platform.getAdapterManager().getAdapter(element, IPROJECT_CLASS);
-
- if (element instanceof AbstractEarNode) {
- project = ((AbstractEarNode) element).getEarProject();
- }
-
- if (element instanceof GroupEARProvider) {
- project = ((GroupEARProvider) element).getProject();
- }
-
- if (element instanceof IVirtualReference) {
- project = ((IVirtualReference) element).getReferencedComponent().getProject();
- }
-
- if (project == null) {
- if (element instanceof EObject) {
- project = ProjectUtilities.getProject((EObject) element);
- } else if (element instanceof J2EEItemProvider) {
- IFile associatedFile = ((J2EEItemProvider) element).getAssociatedFile();
- if (associatedFile != null)
- project = associatedFile.getProject();
- }
- }
- return project;
- }
-
- protected static String getDefaultURI(IVirtualComponent component) {
- IProject project = component.getProject();
- String name = component.getName();
-
- if (JavaEEProjectUtilities.isDynamicWebProject(project)) {
- name += IJ2EEModuleConstants.WAR_EXT;
- } else if (JavaEEProjectUtilities.isEARProject(project)) {
- name += IJ2EEModuleConstants.EAR_EXT;
- } else if (JavaEEProjectUtilities.isJCAProject(project)) {
- name += IJ2EEModuleConstants.RAR_EXT;
- } else {
- name += IJ2EEModuleConstants.JAR_EXT;
- }
- return name;
- }
-
- private boolean hasConflictingProjectInMetaInf(Object lib) {
- IProject libProj = null;
- if (lib instanceof IProject) {
- libProj = (IProject) lib;
- } else if (lib instanceof IVirtualComponent) {
- libProj = ((IVirtualComponent) lib).getProject();
- } else if (lib instanceof IVirtualReference){
- libProj = ((IVirtualReference) lib).getReferencedComponent().getProject();
- }
- if(libProj == null){
- return false;
- }
- IProject earProject = earComponent.getProject();
- try {
- IProject[] earRefProjects = earProject.getReferencedProjects();
- for (int i = 0; i < earRefProjects.length; i++) {
- if (!JavaEEProjectUtilities.isEARProject(earRefProjects[i]) && !earRefProjects[i].equals(libProj)) {
- IVirtualComponent cmp1 = ComponentCore.createComponent(earRefProjects[i]);
- if (cmp1 == null){
- continue;
- }
- IVirtualReference[] refs = cmp1.getReferences();
- for (int j = 0; j < refs.length; j++) {
- if (refs[j].getReferencedComponent().getProject().equals(libProj))
- return true;
- }
- }
- }
- return false;
- } catch (CoreException ce) {
- }
- return false;
- }
-
- protected IStatus addComponentsToEar(List<IVirtualComponent> components, String libDir) {
- IStatus status = null;
- IDataModel datamodel = DataModelFactory.createDataModel(new AddComponentToEnterpriseApplicationDataModelProvider());
-
- Map componentToURIMap = new HashMap();
- IVirtualComponent moduleComponent = null;
- for (Iterator itr = components.iterator(); itr.hasNext();) {
- moduleComponent = (IVirtualComponent) itr.next();
- componentToURIMap.put(moduleComponent, getDefaultURI(moduleComponent));
- }
- datamodel.setProperty(ICreateReferenceComponentsDataModelProperties.SOURCE_COMPONENT, earComponent);
- datamodel.setProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENT_LIST, components);
- datamodel.setProperty(IAddComponentToEnterpriseApplicationDataModelProperties.TARGET_COMPONENTS_TO_URI_MAP, componentToURIMap);
- String libDirPath = libDir;
- if(libDir != null && libDir.length() > 0)
- libDirPath = new Path(libDir).makeAbsolute().toString();
- datamodel.setProperty(IAddComponentToEnterpriseApplicationDataModelProperties.TARGET_COMPONENTS_DEPLOY_PATH, libDirPath);
- try {
- return datamodel.getDefaultOperation().execute(new NullProgressMonitor(), null);
- } catch (ExecutionException e) {
- String msg = e.getMessage() != null ? e.getMessage() : e.toString();
- JEEUIPlugin.logError(msg, e);
- }
- return status;
- }
-
- protected IStatus removeComponentsFromEar(List<IVirtualComponent> components, String libDir) {
- IStatus status = null;
- IDataModel datamodel = DataModelFactory.createDataModel(new RemoveComponentFromEnterpriseApplicationDataModelProvider());
- datamodel.setProperty(ICreateReferenceComponentsDataModelProperties.SOURCE_COMPONENT, earComponent);
- datamodel.setProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENT_LIST, components);
- try {
- status = datamodel.getDefaultOperation().execute(new NullProgressMonitor(), null);
- if (!status.isOK()) {
- return status;
- }
- } catch (ExecutionException e) {
- String msg = e.getMessage() != null ? e.getMessage() : e.toString();
- JEEUIPlugin.logError(msg, e);
- }
- return removeReferences(components, libDir, earComponent);
- }
-
- protected IStatus removeReferences(List<IVirtualComponent> components, String libDir, IVirtualComponent sourceComponent) {
- IVirtualReference[] refs = sourceComponent.getReferences();
- for (IVirtualReference ref : refs) {
- ref.getRuntimePath();
- }
- Map componentToURIMap = new HashMap();
- for (Iterator itr = components.iterator(); itr.hasNext();) {
- IVirtualComponent moduleComponent = (IVirtualComponent) itr.next();
- componentToURIMap.put(moduleComponent, getDefaultURI(moduleComponent));
- }
- final IDataModel model = DataModelFactory.createDataModel(new RemoveReferenceComponentsDataModelProvider());
- model.setProperty(IAddComponentToEnterpriseApplicationDataModelProperties.TARGET_COMPONENTS_TO_URI_MAP, componentToURIMap);
- model.setProperty(ICreateReferenceComponentsDataModelProperties.SOURCE_COMPONENT, sourceComponent);
- model.setProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENT_LIST, components);
- if (libDir.length() > 0) {
- model.setProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENTS_DEPLOY_PATH, new Path(libDir).makeAbsolute().toString());
- }
- try {
- return model.getDefaultOperation().execute(null, null);
- } catch (ExecutionException e) {
- String msg = e.getMessage() != null ? e.getMessage() : e.toString();
- JEEUIPlugin.logError(msg, e);
- }
- return Status.CANCEL_STATUS;
- }
-
- protected IStatus resolveConflicts(IVirtualComponent component) {
- IProject earProject = earComponent.getProject();
- try {
- IProject[] earRefProjects = earProject.getReferencedProjects();
- for (int i = 0; i < earRefProjects.length; i++) {
- if (!JavaEEProjectUtilities.isEARProject(earRefProjects[i])) {
- IVirtualComponent cmp1 = ComponentCore.createComponent(earRefProjects[i]);
- if(cmp1 == null){
- continue;
- }
- IVirtualReference[] refs = cmp1.getReferences();
- for (int j = 0; j < refs.length; j++) {
- if (refs[j].getReferencedComponent().equals(component)) {
- List<IVirtualComponent> components = new ArrayList<IVirtualComponent>();
- components.add(refs[j].getReferencedComponent());
- IStatus status = removeReferences(components, refs[j].getRuntimePath().toString(), refs[j].getEnclosingComponent());
- if (!status.isOK()) {
- return status;
- }
- try {
- removeManifestDependency(refs[j].getEnclosingComponent(), refs[j].getReferencedComponent());
- } catch (ExecutionException e) {
- String msg = e.getMessage() != null ? e.getMessage() : e.toString();
- JEEUIPlugin.logError(msg, e);
- }
- }
- }
- }
- }
- } catch (CoreException ce) {
- }
- // return false;
- return Status.OK_STATUS;
- }
-
- private void removeManifestDependency(final IVirtualComponent source, final IVirtualComponent target) throws ExecutionException {
- final String sourceProjName = source.getProject().getName();
- String targetProjName;
- if (target instanceof J2EEModuleVirtualArchiveComponent) {
- targetProjName = ((J2EEModuleVirtualArchiveComponent) target).getName();
- String[] pathSegments = targetProjName.split("" + IPath.SEPARATOR); //$NON-NLS-1$
- targetProjName = pathSegments[pathSegments.length - 1];
- } else {
- targetProjName = target.getProject().getName();
- }
- final IProgressMonitor monitor = new NullProgressMonitor();
- final IFile manifestmf = J2EEProjectUtilities.getManifestFile(source.getProject());
- final ArchiveManifest mf = J2EEProjectUtilities.readManifest(source.getProject());
- if (mf == null)
- return;
- final IDataModel updateManifestDataModel = DataModelFactory.createDataModel(new UpdateManifestDataModelProvider());
- updateManifestDataModel.setProperty(UpdateManifestDataModelProperties.PROJECT_NAME, sourceProjName);
- updateManifestDataModel.setBooleanProperty(UpdateManifestDataModelProperties.MERGE, false);
- updateManifestDataModel.setProperty(UpdateManifestDataModelProperties.MANIFEST_FILE, manifestmf);
- String[] cp = mf.getClassPathTokenized();
- List cpList = new ArrayList();
- String cpToRemove = (targetProjName.endsWith(IJ2EEModuleConstants.JAR_EXT)) ?
- targetProjName : targetProjName + IJ2EEModuleConstants.JAR_EXT;
- for (int i = 0; i < cp.length; i++) {
- if (!cp[i].equals(cpToRemove)) {
- cpList.add(cp[i]);
- }
- }
- updateManifestDataModel.setProperty(UpdateManifestDataModelProperties.JAR_LIST, cpList);
- updateManifestDataModel.getDefaultOperation().execute(monitor, null);
- }
-}

Back to the top