[384781] application.xml file is corrupted after importing an EAR project
diff --git a/plugins/org.eclipse.jst.j2ee/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.j2ee/META-INF/MANIFEST.MF index 33707a4..5fc3c25 100644 --- a/plugins/org.eclipse.jst.j2ee/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.jst.j2ee/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name.0 Bundle-SymbolicName: org.eclipse.jst.j2ee; singleton:=true -Bundle-Version: 1.1.218.qualifier +Bundle-Version: 1.1.219.qualifier Bundle-Activator: org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin Bundle-Vendor: %Bundle-Vendor.0 Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/EARComponentImportOperation.java b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/EARComponentImportOperation.java index 81ed616..b8eb27a 100644 --- a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/EARComponentImportOperation.java +++ b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/EARComponentImportOperation.java
@@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2003, 2007 IBM Corporation and others. + * Copyright (c) 2003, 2012 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 @@ -21,6 +21,7 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.SubProgressMonitor; +import org.eclipse.jem.util.UIContextDetermination; import org.eclipse.jem.util.logger.proxy.Logger; import org.eclipse.jst.j2ee.application.internal.operations.AddComponentToEnterpriseApplicationDataModelProvider; import org.eclipse.jst.j2ee.commonarchivecore.internal.EARFile; @@ -32,6 +33,7 @@ import org.eclipse.jst.j2ee.internal.archive.ArchiveWrapper; import org.eclipse.jst.j2ee.internal.archive.ComponentArchiveSaveAdapter; import org.eclipse.jst.j2ee.internal.archive.EARComponentArchiveSaveAdapter; +import org.eclipse.jst.j2ee.internal.common.classpath.J2EEComponentClasspathUpdater; import org.eclipse.jst.j2ee.project.facet.IJ2EEFacetProjectCreationDataModelProperties; import org.eclipse.wst.common.componentcore.datamodel.properties.ICreateReferenceComponentsDataModelProperties; import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetProjectCreationDataModelProperties; @@ -77,10 +79,16 @@ * the progress monitor to use to display progress */ protected void doExecute(IProgressMonitor monitor) throws ExecutionException { - super.doExecute(monitor); ExecutionException firstNestedException = null; - List modelsToImport = (List) model.getProperty(IEARComponentImportDataModelProperties.HANDLED_PROJECT_MODELS_LIST); + try { + if( UIContextDetermination.getCurrentContext() == UIContextDetermination.HEADLESS_CONTEXT ) { + J2EEComponentClasspathUpdater.getInstance().setSuspendPostChangeEvents(true); + } + + super.doExecute(monitor); + List modelsToImport = (List) model.getProperty(IEARComponentImportDataModelProperties.HANDLED_PROJECT_MODELS_LIST); + IDataModel importModel = null; // make sure the wars handle importing their own web libs for (int i = modelsToImport.size() - 1; i > 0; i--) { @@ -181,6 +189,10 @@ } resetDisposeImportModels(); monitor.worked(DISPOSE_WORK); + + if( UIContextDetermination.getCurrentContext() == UIContextDetermination.HEADLESS_CONTEXT ) { + J2EEComponentClasspathUpdater.getInstance().setSuspendPostChangeEvents(false); + } } if (firstNestedException != null) { throw firstNestedException;
diff --git a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/classpath/J2EEComponentClasspathUpdater.java b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/classpath/J2EEComponentClasspathUpdater.java index 4044a6f..8f2b36c 100644 --- a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/classpath/J2EEComponentClasspathUpdater.java +++ b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/classpath/J2EEComponentClasspathUpdater.java
@@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2003, 2007 IBM Corporation and others. + * Copyright (c) 2003, 2012 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 @@ -8,6 +8,7 @@ * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ + package org.eclipse.jst.j2ee.internal.common.classpath; import java.util.Arrays; @@ -73,6 +74,8 @@ private static J2EEComponentClasspathUpdater instance = null; + private static boolean suspendPostChangeEvents = false; + private static boolean updateDependencyGraph = true; private int pauseCount = 0; @@ -412,11 +415,12 @@ } break; case IResourceChangeEvent.POST_CHANGE: - scheduleJob = true; - event.getDelta().accept(this); - IResourceDelta[] d = event.getDelta().getAffectedChildren(); - findNode(d); - + if(!suspendPostChangeEvents) { + scheduleJob = true; + event.getDelta().accept(this); + IResourceDelta[] d = event.getDelta().getAffectedChildren(); + findNode(d); + } break; } } catch (CoreException e) { @@ -590,4 +594,12 @@ { updateDependencyGraph = value; } + + public void setSuspendPostChangeEvents(boolean suspendAction) { + J2EEComponentClasspathUpdater.suspendPostChangeEvents = suspendAction; + } + + public boolean isSuspendPostChangeEvents() { + return suspendPostChangeEvents; + } }