Bug 413925 - application.xml generated before clean
diff --git a/org.eclipse.m2e.wtp/src/org/eclipse/m2e/wtp/MavenDeploymentDescriptorManagement.java b/org.eclipse.m2e.wtp/src/org/eclipse/m2e/wtp/MavenDeploymentDescriptorManagement.java
index c3deb9e..1f2ff88 100644
--- a/org.eclipse.m2e.wtp/src/org/eclipse/m2e/wtp/MavenDeploymentDescriptorManagement.java
+++ b/org.eclipse.m2e.wtp/src/org/eclipse/m2e/wtp/MavenDeploymentDescriptorManagement.java
@@ -9,9 +9,10 @@
package org.eclipse.m2e.wtp;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.util.Arrays;
+import java.io.InputStream;
import java.util.Collections;
import java.util.Set;
@@ -27,11 +28,9 @@
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
import org.eclipse.m2e.core.MavenPlugin;
@@ -44,9 +43,11 @@
import org.eclipse.m2e.wtp.earmodules.EarModule;
import org.eclipse.m2e.wtp.internal.Messages;
import org.eclipse.osgi.util.NLS;
-import org.eclipse.ui.dialogs.IOverwriteQuery;
-import org.eclipse.ui.internal.ide.filesystem.FileSystemStructureProvider;
-import org.eclipse.ui.wizards.datatransfer.ImportOperation;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IPageLayout;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.navigator.CommonNavigator;
/**
@@ -72,13 +73,6 @@
}
}
- private static final IOverwriteQuery OVERWRITE_ALL_QUERY = new IOverwriteQuery() {
- @Override
- public String queryOverwrite(String pathString) {
- return IOverwriteQuery.ALL;
- }
- };
-
/**
* Executes ear:generate-application-xml goal to generate application.xml (and jboss-app.xml if needed). Existing
* files will be overwritten.
@@ -173,27 +167,45 @@
IFolder metaInfFolder = targetFolder.getFolder("/META-INF/"); //$NON-NLS-1$
- if(files != null && files.length > 0) {
- //We generated something
- try {
- ImportOperation op = new ImportOperation(metaInfFolder.getFullPath(), generatedDescriptorLocation,
- new FileSystemStructureProvider(), OVERWRITE_ALL_QUERY, Arrays.asList(files));
- op.setCreateContainerStructure(false);
- op.setOverwriteResources(true);
-
- op.run(monitor);
-
- } catch(InvocationTargetException ex) {
- IStatus status = new Status(IStatus.ERROR, MavenWtpPlugin.ID, IStatus.ERROR, ex.getMessage(), ex);
- throw new CoreException(status);
- } catch(InterruptedException ex) {
- throw new OperationCanceledException(ex.getMessage());
- }
- }
- targetFolder.refreshLocal(IResource.DEPTH_INFINITE, monitor);
+ if (files != null && files.length > 0) {
+ for (File file:files) {
+ if (!metaInfFolder.exists()) {
+ metaInfFolder.create(true, true, monitor);
+ }
+ InputStream is = null;
+ try {
+ is = new FileInputStream(file);
+ IFile targetResource = metaInfFolder.getFile(file.getName());
+ targetResource.create(is, true, monitor);
+ } catch (FileNotFoundException ex) {
+ IStatus status = new Status(IStatus.ERROR, MavenWtpPlugin.ID, IStatus.ERROR, ex.getMessage(), ex);
+ throw new CoreException(status);
+ } finally {
+ if (is != null) {
+ try {
+ is.close();
+ } catch (IOException ex) {
+ // ignore
+ }
+ }
+ }
+ }
+ }
deleteDirectory(generatedDescriptorLocation);
+ Display.getDefault().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ if (PlatformUI.isWorkbenchRunning()) {
+ IViewPart view = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(IPageLayout.ID_PROJECT_EXPLORER);
+ if (view instanceof CommonNavigator) {
+ CommonNavigator navigator = (CommonNavigator) view;
+ navigator.getCommonViewer().refresh();
+ }
+ }
+ }
+ });
}
private IFolder getEarResourcesDir(IProject project, MavenProject mavenProject, IProgressMonitor monitor)