[153797] Workaround for launch config saving issues
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Server.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Server.java
index 9298f95..48169bf 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Server.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Server.java
@@ -1154,10 +1154,34 @@
try {
String serverId = launchConfigs[i].getAttribute(SERVER_ID, (String) null);
if (getId().equals(serverId)) {
- ILaunchConfigurationWorkingCopy wc = launchConfigs[i].getWorkingCopy();
+ final ILaunchConfigurationWorkingCopy wc = launchConfigs[i].getWorkingCopy();
setupLaunchConfiguration(wc, monitor);
- if (wc.isDirty())
- return wc.doSave();
+ if (wc.isDirty()) {
+ final ILaunchConfiguration[] lc = new ILaunchConfiguration[1];
+ Job job = new Job("Saving launch configuration") {
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ lc[0] = wc.doSave();
+ } catch (CoreException ce) {
+ Trace.trace(Trace.SEVERE, "Error configuring launch", ce);
+ }
+ return Status.OK_STATUS;
+ }
+ };
+ job.setSystem(true);
+ job.schedule();
+ try {
+ job.join();
+ } catch (Exception e) {
+ Trace.trace(Trace.SEVERE, "Error configuring launch", e);
+ }
+ if (job.getState() != Job.NONE) {
+ job.cancel();
+ lc[0] = wc.doSave();
+ }
+
+ return lc[0];
+ }
return launchConfigs[i];
}
} catch (CoreException e) {