[169570] publish by module
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/IServer.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/IServer.java
index 1113586..833dd4a 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/IServer.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/IServer.java
@@ -10,6 +10,8 @@
*******************************************************************************/
package org.eclipse.wst.server.core;
+import java.util.List;
+
import org.eclipse.core.runtime.*;
import org.eclipse.debug.core.ILaunch;
import org.eclipse.debug.core.ILaunchConfiguration;
@@ -318,7 +320,7 @@
* @param monitor a progress monitor, or <code>null</code> if progress
* reporting and cancellation are not desired
* @return status indicating what (if anything) went wrong
- * @see #publish(int, IModule[], IServer.IOperationListener)
+ * @see #publish(int, List, IAdaptable, IOperationListener)
*/
public IStatus publish(int kind, IProgressMonitor monitor);
@@ -345,13 +347,18 @@
* out all state and cleans up the module on the server before doing a
* full publish.
* </ul>
- * @param modules an array of modules, or <code>null</code> to publish all
- * modules
- * @param listener an operation listener to receive notification when this
+ * @param modules a list of modules to publish, or <code>null</code> to
+ * publish all modules
+ * @param info the IAdaptable (or <code>null</code>) provided by the
+ * caller in order to supply UI information for prompting the
+ * user if necessary. When this parameter is not
+ * <code>null</code>, it should minimally contain an adapter
+ * for the Shell class.
+ * @param listener an operation listener to receive notification when this
* operation is done, or <code>null</code> if notification is not
* required
*/
- public void publish(int kind, IModule[] modules, IOperationListener listener);
+ public void publish(int kind, List<IModule[]> modules, IAdaptable info, IOperationListener listener);
/**
* Returns whether this server is in a state that it can
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/PublishServerJob.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/PublishServerJob.java
index 31ada68..157d51d 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/PublishServerJob.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/PublishServerJob.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
+ * Copyright (c) 2005, 2008 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
@@ -10,14 +10,18 @@
*******************************************************************************/
package org.eclipse.wst.server.core.internal;
+import java.util.List;
+
import org.eclipse.core.resources.IResourceRuleFactory;
import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.ISchedulingRule;
import org.eclipse.core.runtime.jobs.MultiRule;
import org.eclipse.osgi.util.NLS;
+import org.eclipse.wst.server.core.IModule;
import org.eclipse.wst.server.core.IServer;
import org.eclipse.wst.server.core.ServerCore;
/**
@@ -26,18 +30,42 @@
public class PublishServerJob extends ChainedJob {
protected int kind;
protected boolean check;
+ protected List<IModule[]> modules;
+ protected IAdaptable info;
/**
* Create a new publishing job.
*
* @param server the server to publish to
* @param kind the kind of publish
- * @param check to check if autopublishing is already covering the publish
+ * @param info the IAdaptable (or <code>null</code>) provided by the
+ * caller in order to supply UI information for prompting the
+ * user if necessary. When this parameter is not
+ * <code>null</code>, it should minimally contain an adapter
+ * for the Shell class.
*/
- public PublishServerJob(IServer server, int kind, boolean check) {
+ public PublishServerJob(IServer server, int kind, IAdaptable info) {
+ this(server, kind, null, info);
+ }
+
+ /**
+ * Create a new publishing job.
+ *
+ * @param server the server to publish to
+ * @param kind the kind of publish
+ * @param modules a list of modules to publish, or <code>null</code> to
+ * publish all modules
+ * @param info the IAdaptable (or <code>null</code>) provided by the
+ * caller in order to supply UI information for prompting the
+ * user if necessary. When this parameter is not
+ * <code>null</code>, it should minimally contain an adapter
+ * for the Shell class.
+ */
+ public PublishServerJob(IServer server, int kind, List<IModule[]> modules, IAdaptable info) {
super(NLS.bind(Messages.publishing, server.getName()), server);
this.kind = kind;
- this.check = check;
+ this.modules = modules;
+ this.info = info;
IResourceRuleFactory ruleFactory = ResourcesPlugin.getWorkspace().getRuleFactory();
@@ -53,6 +81,19 @@
* Create a new publishing job.
*
* @param server the server to publish to
+ * @param kind the kind of publish
+ * @param check to check if auto-publishing is already covering the publish
+ */
+ public PublishServerJob(IServer server, int kind, boolean check) {
+ this(server, kind, null, null);
+ this.check = check;
+ }
+
+ /**
+ * Create a new publishing job.
+ *
+ * @param server the server to publish to
+ * @deprecated use one of the other constructors instead
*/
public PublishServerJob(IServer server) {
this(server, IServer.PUBLISH_INCREMENTAL, true);
@@ -62,14 +103,18 @@
* @see org.eclipse.core.runtime.jobs.Job#run(IProgressMonitor)
*/
protected IStatus run(IProgressMonitor monitor) {
- if (check) {
+ //if (!getServer().shouldPublish())
+ // return Status.OK_STATUS;
+
+ if (check && !ServerCore.isAutoPublishing()) {
// don't run if we're auto-publishing and there is no need for a publish.
// can't execute this code in shouldRun() because it will cancel the job
// instead of returning immediately
- if (!ServerCore.isAutoPublishing() || !getServer().shouldPublish())
return Status.OK_STATUS;
}
- return getServer().publish(kind, monitor);
+ getServer().publish(kind, modules, info, null); // TODO
+ return Status.OK_STATUS;
+ //return getServer().publish(kind, monitor);
}
}
\ No newline at end of file
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 204d854..4a1a6d8 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
@@ -111,7 +111,7 @@
// publish listeners
protected transient List<IPublishListener> publishListeners;
- // Server listeners
+ // server listeners
protected transient ServerNotificationManager notificationManager;
public class AutoPublishThread extends Thread {
@@ -141,7 +141,7 @@
if (getServerState() != IServer.STATE_STARTED)
return;
- PublishServerJob publishJob = new PublishServerJob(Server.this, IServer.PUBLISH_AUTO, false);
+ PublishServerJob publishJob = new PublishServerJob(Server.this, IServer.PUBLISH_AUTO, null);
publishJob.schedule();
}
}
@@ -950,19 +950,14 @@
}
}
- long time = System.currentTimeMillis();
- firePublishStarted();
- IStatus status = doPublish(kind, monitor);
- firePublishFinished(status);
- Trace.trace(Trace.PERFORMANCE, "Server.publish(): <" + (System.currentTimeMillis() - time) + "> " + getServerType().getId());
- return status;
+ return doPublish(kind, null, monitor, null);
}
/*
* Publish the given modules to the server.
* TODO: Implementation!
*/
- public void publish(int kind, IModule[] modules2, IOperationListener listener) {
+ public void publish(int kind, List<IModule[]> modules2, IAdaptable info, IOperationListener listener) {
if (getServerType() == null) {
listener.done(new Status(IStatus.ERROR, ServerPlugin.PLUGIN_ID, 0, Messages.errorMissingAdapter, null));
return;
@@ -987,22 +982,21 @@
}
}
- long time = System.currentTimeMillis();
- firePublishStarted();
- IStatus status = doPublish(kind, new NullProgressMonitor());
- firePublishFinished(status);
- Trace.trace(Trace.PERFORMANCE, "Server.publish(): <" + (System.currentTimeMillis() - time) + "> " + getServerType().getId());
- listener.done(status);
+ doPublish(kind, modules2, new NullProgressMonitor(), info);
}
- protected IStatus doPublish(int kind, IProgressMonitor monitor) {
+ protected IStatus doPublish(int kind, List<IModule[]> modules3, IProgressMonitor monitor, IAdaptable info) {
Trace.trace(Trace.FINEST, "-->-- Publishing to server: " + toString() + " -->--");
stopAutoPublish();
try {
+ long time = System.currentTimeMillis();
+ firePublishStarted();
+
getServerPublishInfo().startCaching();
- IStatus status = getBehaviourDelegate(monitor).publish(kind, monitor);
+ //IStatus status =
+ getBehaviourDelegate(monitor).publish(kind, modules3, monitor, info);
final List<IModule[]> modules2 = new ArrayList<IModule[]>();
visit(new IModuleVisitor() {
@@ -1019,7 +1013,9 @@
getServerPublishInfo().clearCache();
getServerPublishInfo().save();
- return status;
+ firePublishFinished(Status.OK_STATUS);
+ Trace.trace(Trace.PERFORMANCE, "Server.publish(): <" + (System.currentTimeMillis() - time) + "> " + getServerType().getId());
+ return Status.OK_STATUS;
} catch (Exception e) {
Trace.trace(Trace.SEVERE, "Error calling delegate publish() " + toString(), e);
return new Status(IStatus.ERROR, ServerPlugin.PLUGIN_ID, 0, Messages.errorPublishing, e);
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPublishInfo.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPublishInfo.java
index 6e1f519..9ce5aac 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPublishInfo.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPublishInfo.java
@@ -32,7 +32,6 @@
import org.eclipse.wst.server.core.model.IModuleFolder;
import org.eclipse.wst.server.core.model.IModuleResource;
import org.eclipse.wst.server.core.model.IModuleResourceDelta;
-import org.eclipse.wst.server.core.model.ServerBehaviourDelegate;
/**
* Helper to obtain and store the publishing information (what files
* were published and when) for a single server.
@@ -183,7 +182,7 @@
return mpi;
}
- public void addRemovedModules(List<IModule[]> moduleList, List<Integer> kindList) {
+ public void addRemovedModules(List<IModule[]> moduleList) {
int size = moduleList.size();
List<ModulePublishInfo> removed = new ArrayList<ModulePublishInfo>();
Iterator iterator = modulePublishInfo.keySet().iterator();
@@ -228,10 +227,8 @@
}
}
}
- if (module2 != null && module2.length > 0) {
+ if (module2 != null && module2.length > 0)
moduleList.add(module2);
- kindList.add(new Integer(ServerBehaviourDelegate.REMOVED));
- }
}
}
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerWorkingCopy.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerWorkingCopy.java
index fc230c9..270c14d 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerWorkingCopy.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerWorkingCopy.java
@@ -22,6 +22,8 @@
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.*;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.osgi.util.NLS;
import org.eclipse.wst.server.core.*;
import org.eclipse.wst.server.core.model.InternalInitializer;
@@ -670,6 +672,26 @@
return new Status(IStatus.ERROR, ServerPlugin.PLUGIN_ID, 0, Messages.errorPublishing, null);
}
+ public void publish(int kind, List<IModule[]> modules2, IAdaptable info, IOperationListener listener) {
+ if (server != null) {
+ server.publish(kind, modules2, info, listener);
+ return;
+ }
+ listener.done(new Status(IStatus.ERROR, ServerPlugin.PLUGIN_ID, 0, Messages.errorPublishing, null));
+ }
+
+ public ILaunch getLaunch() {
+ if (server != null)
+ return server.getLaunch();
+ return null;
+ }
+
+ public ILaunchConfiguration getLaunchConfiguration(boolean create, IProgressMonitor monitor) throws CoreException {
+ if (server != null)
+ return server.getLaunchConfiguration(create, monitor);
+ return null;
+ }
+
/**
* Sets the server restart state.
*
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/model/ServerBehaviourDelegate.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/model/ServerBehaviourDelegate.java
index bc2eaa7..3d72fea 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/model/ServerBehaviourDelegate.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/model/ServerBehaviourDelegate.java
@@ -20,6 +20,7 @@
import org.eclipse.wst.server.core.IModule;
import org.eclipse.wst.server.core.IServer;
import org.eclipse.wst.server.core.IServerWorkingCopy;
+import org.eclipse.wst.server.core.TaskModel;
import org.eclipse.wst.server.core.internal.*;
/**
* A server delegate provides the implementation for various
@@ -588,6 +589,109 @@
* Publish to the server.
*
* @param kind the publish kind
+ * @param modules
+ * @param monitor a progress monitor, or <code>null</code> if progress
+ * reporting and cancellation are not desired
+ * @param info
+ * @throws CoreException
+ */
+ public void publish(int kind, List<IModule[]> modules, IProgressMonitor monitor, IAdaptable info) throws CoreException {
+ info2 = info;
+ IStatus status = publish(kind, monitor);
+ if (status != null && status.getSeverity() != IStatus.OK && status.getSeverity() != IStatus.CANCEL)
+ throw new CoreException(status);
+ }
+
+ private IAdaptable info2;
+
+ /*public void publish2(int kind, List<IModule[]> modules, IProgressMonitor monitor, IAdaptable info) throws CoreException {
+ Trace.trace(Trace.FINEST, "-->-- Publishing to server: " + toString() + " -->--");
+
+ if (getServer().getServerType().hasRuntime() && getServer().getRuntime() == null)
+ throw new CoreException(new Status(IStatus.ERROR, ServerPlugin.PLUGIN_ID, 0, Messages.errorPublishNoRuntime, null));
+
+ final List<IModule[]> moduleList = getAllModules();
+ addRemovedModules(moduleList, null);
+
+ PublishOperation[] tasks = getTasks(kind, moduleList, null);
+ int size = 2000 + 3500 * moduleList.size() + 500 * tasks.length;
+
+ monitor = ProgressUtil.getMonitorFor(monitor);
+ monitor.beginTask(NLS.bind(Messages.publishing, getServer().getName()), size);
+
+ MultiStatus tempMulti = new MultiStatus(ServerPlugin.PLUGIN_ID, 0, "", null);
+
+ if (monitor.isCanceled())
+ return;
+
+ try {
+ Trace.trace(Trace.FINEST, "Starting publish");
+ publishStart(ProgressUtil.getSubMonitorFor(monitor, 1000));
+
+ if (monitor.isCanceled())
+ return;
+
+ // execute publishers
+ executePublishers(kind, modules, monitor, info);
+
+ if (monitor.isCanceled())
+ return;
+
+ // publish the server
+ publishServer(kind, ProgressUtil.getSubMonitorFor(monitor, 1000));
+
+ if (monitor.isCanceled())
+ return;
+
+ // publish modules
+ IspublishModules(kind, moduleList, monitor);
+
+ if (monitor.isCanceled())
+ return;
+
+ monitor.done();
+ } catch (CoreException ce) {
+ Trace.trace(Trace.INFO, "CoreException publishing to " + toString(), ce);
+ throw ce;
+ } catch (Exception e) {
+ Trace.trace(Trace.SEVERE, "Error publishing to " + toString(), e);
+ tempMulti.add(new Status(IStatus.ERROR, ServerPlugin.PLUGIN_ID, 0, Messages.errorPublishing, e));
+ } finally {
+ // end the publishing
+ try {
+ publishFinish(ProgressUtil.getSubMonitorFor(monitor, 500));
+ } catch (CoreException ce) {
+ Trace.trace(Trace.INFO, "CoreException publishing to " + toString(), ce);
+ tempMulti.add(ce.getStatus());
+ } catch (Exception e) {
+ Trace.trace(Trace.SEVERE, "Error stopping publish to " + toString(), e);
+ tempMulti.add(new Status(IStatus.ERROR, ServerPlugin.PLUGIN_ID, 0, Messages.errorPublishing, e));
+ }
+ }
+
+ Trace.trace(Trace.FINEST, "--<-- Done publishing --<--");
+
+ if (tempMulti.getChildren().length == 1)
+ throw new CoreException(tempMulti.getChildren()[0]);
+
+ MultiStatus multi = null;
+ if (tempMulti.getSeverity() == IStatus.OK)
+ return;
+ else if (tempMulti.getSeverity() == IStatus.INFO)
+ multi = new MultiStatus(ServerPlugin.PLUGIN_ID, 0, Messages.publishingStatusInfo, null);
+ else if (tempMulti.getSeverity() == IStatus.WARNING)
+ multi = new MultiStatus(ServerPlugin.PLUGIN_ID, 0, Messages.publishingStatusWarning, null);
+ else if (tempMulti.getSeverity() == IStatus.ERROR)
+ multi = new MultiStatus(ServerPlugin.PLUGIN_ID, 0, Messages.publishingStatusError, null);
+
+ if (multi != null)
+ multi.addAll(tempMulti);
+ }*/
+
+ /**
+ * Publish to the server.
+ *
+ * @param kind the publish kind
* @param monitor a progress monitor, or <code>null</code> if progress
* reporting and cancellation are not desired
* @return the publish status
@@ -615,11 +719,9 @@
deltaKindList.add(new Integer(ServerBehaviourDelegate.ADDED));
}
- addRemovedModules(moduleList, deltaKindList);
-
- while (moduleList.size() > deltaKindList.size()) {
+ addRemovedModules(moduleList, null);
+ while (deltaKindList.size() < moduleList.size())
deltaKindList.add(new Integer(ServerBehaviourDelegate.REMOVED));
- }
PublishOperation[] tasks = getTasks(kind, moduleList, deltaKindList);
int size = 2000 + 3500 * moduleList.size() + 500 * tasks.length;
@@ -644,7 +746,7 @@
if (taskStatus != null && !taskStatus.isOK())
tempMulti.addAll(taskStatus);
- executePublishers(kind, monitor, null);
+ executePublishers(kind, moduleList, monitor, info2);
if (monitor.isCanceled())
return Status.CANCEL_STATUS;
@@ -656,7 +758,7 @@
return Status.CANCEL_STATUS;
// publish modules
- publishModules(kind, moduleList, deltaKindList, tempMulti, monitor);
+ publishModules(kind, moduleList, null, tempMulti, monitor);
if (monitor.isCanceled())
return Status.CANCEL_STATUS;
@@ -731,32 +833,17 @@
IModule m = module[size - 1];
monitor.beginTask(NLS.bind(Messages.publishingModule, m.getName()), 1000);
- IStatus status = Status.OK_STATUS;
try {
- /*IModuleResource[] res = getResources(module);
- System.out.println("-----" + module[0].getName());
- printModule(res, "");*/
- int kind2 = kind;
- if (getServer().getModulePublishState(module) == IServer.PUBLISH_STATE_UNKNOWN)
- kind2 = IServer.PUBLISH_FULL;
- publishModule(kind2, deltaKind, module, monitor);
+ publishModule(kind, deltaKind, module, monitor);
+ return Status.OK_STATUS;
} catch (CoreException ce) {
- status = ce.getStatus();
+ return ce.getStatus();
} catch (Exception e) {
- status = new Status(IStatus.ERROR, ServerPlugin.PLUGIN_ID, 0, Messages.errorPublishing, e);
+ return new Status(IStatus.ERROR, ServerPlugin.PLUGIN_ID, 0, Messages.errorPublishing, e);
+ } finally {
+ monitor.done();
+ Trace.trace(Trace.FINEST, "Done publishing: " + module);
}
-
- /*Trace.trace(Trace.FINEST, "Delta:");
- IModuleResourceDelta[] delta = getServerPublishInfo().getDelta(parents, module);
- int size = delta.length;
- for (int i = 0; i < size; i++) {
- ((ModuleResourceDelta)delta[i]).trace("> ");
- }*/
-
- monitor.done();
-
- Trace.trace(Trace.FINEST, "Done publishing: " + module);
- return status;
}
/**
@@ -775,10 +862,10 @@
* Adds removed modules.
*
* @param moduleList a list of modules
- * @param kindList a list of publish kinds
+ * @param kindList deprecated, should be null
*/
protected void addRemovedModules(List<IModule[]> moduleList, List<Integer> kindList) {
- server.getServerPublishInfo().addRemovedModules(moduleList, kindList);
+ server.getServerPublishInfo().addRemovedModules(moduleList);
}
/**
@@ -806,7 +893,7 @@
* @param monitor a progress monitor, or <code>null</code> if progress
* reporting and cancellation are not desired
*/
- protected void publishModules(int kind, List modules, List deltaKind, MultiStatus multi, IProgressMonitor monitor) {
+ protected void publishModules(int kind, List modules, List deltaKind2, MultiStatus multi, IProgressMonitor monitor) {
if (modules == null)
return;
@@ -825,7 +912,20 @@
if (m.getProject() != null && !m.getProject().isAccessible())
continue;
- IStatus status = publishModule(kind, module, ((Integer)deltaKind.get(i)).intValue(), ProgressUtil.getSubMonitorFor(monitor, 3000));
+ int kind2 = kind;
+ if (getServer().getModulePublishState(module) == IServer.PUBLISH_STATE_UNKNOWN)
+ kind2 = IServer.PUBLISH_FULL;
+
+ int deltaKind = 0;
+ if (hasBeenPublished(module)) {
+ if (getPublishedResourceDelta(module).length == 0)
+ deltaKind = ServerBehaviourDelegate.NO_CHANGE;
+ else
+ deltaKind = ServerBehaviourDelegate.CHANGED;
+ } else
+ deltaKind = ServerBehaviourDelegate.ADDED;
+
+ IStatus status = publishModule(kind2, module, deltaKind, ProgressUtil.getSubMonitorFor(monitor, 3000));
if (status != null && !status.isOK())
multi.add(status);
}
@@ -857,7 +957,7 @@
* org.eclipse.swt.widgets.Shell.class
* @throws CoreException
*/
- protected void executePublishers(int kind, IProgressMonitor monitor, IAdaptable info) throws CoreException {
+ protected void executePublishers(int kind, List<IModule[]> modules, IProgressMonitor monitor, IAdaptable info) throws CoreException {
Publisher[] publishers = ((Server)getServer()).getEnabledPublishers();
int size = publishers.length;
Trace.trace(Trace.FINEST, "Executing publishers: " + size);
@@ -865,10 +965,15 @@
if (size == 0)
return;
+ TaskModel taskModel = new TaskModel();
+ taskModel.putObject(TaskModel.TASK_SERVER, getServer());
+ taskModel.putObject(TaskModel.TASK_MODULES, modules);
+
for (int i = 0; i < size; i++) {
Publisher pub = publishers[i];
monitor.subTask(NLS.bind(Messages.taskPerforming, pub.getName()));
try {
+ pub.setTaskModel(taskModel);
pub.execute(kind, ProgressUtil.getSubMonitorFor(monitor, 500), info);
} catch (CoreException ce) {
Trace.trace(Trace.SEVERE, "Publisher failed", ce);
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/actions/RunOnServerActionDelegate.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/actions/RunOnServerActionDelegate.java
index 69e410a..d1f2de9 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/actions/RunOnServerActionDelegate.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/actions/RunOnServerActionDelegate.java
@@ -181,6 +181,13 @@
shell2 = Display.getDefault().getActiveShell();
}
final Shell shell = shell2;
+ final IAdaptable info = new IAdaptable() {
+ public Object getAdapter(Class adapter) {
+ if (Shell.class.equals(adapter))
+ return shell;
+ return null;
+ }
+ };
// get a valid ModuleArtifact that we can use for launching
// TODO The ModuleArtifactComposite should be part of the RunOnServerWizard
@@ -414,7 +421,7 @@
}
}
- PublishServerJob publishJob = new PublishServerJob(server, IServer.PUBLISH_INCREMENTAL, false);
+ PublishServerJob publishJob = new PublishServerJob(server, IServer.PUBLISH_INCREMENTAL, info);
LaunchClientJob clientJob = new LaunchClientJob(server, modules, launchMode, moduleArtifact, launchableAdapter, client);
publishJob.setNextJob(clientJob);
@@ -425,7 +432,7 @@
} else
publishJob.schedule();
} else if (state != IServer.STATE_STOPPING) {
- PublishServerJob publishJob = new PublishServerJob(server);
+ PublishServerJob publishJob = new PublishServerJob(server, IServer.PUBLISH_INCREMENTAL, info);
StartServerJob startServerJob = new StartServerJob(server, launchMode);
LaunchClientJob clientJob = new LaunchClientJob(server, modules, launchMode, moduleArtifact, launchableAdapter, client);
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/actions/RunOnServerLaunchConfigurationDelegate.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/actions/RunOnServerLaunchConfigurationDelegate.java
index 1895632..893f112 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/actions/RunOnServerLaunchConfigurationDelegate.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/actions/RunOnServerLaunchConfigurationDelegate.java
@@ -11,6 +11,7 @@
package org.eclipse.wst.server.ui.internal.actions;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
@@ -94,7 +95,14 @@
shell2[0] = EclipseUtil.getShell();
}
});
- Shell shell = shell2[0];
+ final Shell shell = shell2[0];
+ final IAdaptable info = new IAdaptable() {
+ public Object getAdapter(Class adapter) {
+ if (Shell.class.equals(adapter))
+ return shell;
+ return null;
+ }
+ };
if (client == null) {
// if there is no client, use a dummy
@@ -209,7 +217,7 @@
}
}
- PublishServerJob publishJob = new PublishServerJob(server, IServer.PUBLISH_INCREMENTAL, false);
+ PublishServerJob publishJob = new PublishServerJob(server, IServer.PUBLISH_INCREMENTAL, info);
LaunchClientJob clientJob = new LaunchClientJob(server, modules, launchMode, moduleArtifact, launchableAdapter, client);
publishJob.setNextJob(clientJob);
@@ -220,7 +228,7 @@
} else
publishJob.schedule();
} else if (state != IServer.STATE_STOPPING) {
- PublishServerJob publishJob = new PublishServerJob(server);
+ PublishServerJob publishJob = new PublishServerJob(server, IServer.PUBLISH_INCREMENTAL, info);
StartServerJob startServerJob = new StartServerJob(server, launchMode);
LaunchClientJob clientJob = new LaunchClientJob(server, modules, launchMode, moduleArtifact, launchableAdapter, client);
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/PublishAction.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/PublishAction.java
index d6698e0..ae20677 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/PublishAction.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/PublishAction.java
@@ -10,6 +10,7 @@
**********************************************************************/
package org.eclipse.wst.server.ui.internal.view.servers;
+import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.wst.server.core.IServer;
@@ -44,14 +45,22 @@
publish(server, shell);
}
- public static void publish(IServer server, Shell shell) {
+ public static void publish(IServer server, final Shell shell) {
if (shell != null && !ServerUIPlugin.promptIfDirty(shell, server))
return;
if (!ServerUIPlugin.saveEditors())
return;
- PublishServerJob publishJob = new PublishServerJob(server, IServer.PUBLISH_INCREMENTAL, false);
+ final IAdaptable info = new IAdaptable() {
+ public Object getAdapter(Class adapter) {
+ if (Shell.class.equals(adapter))
+ return shell;
+ return null;
+ }
+ };
+
+ PublishServerJob publishJob = new PublishServerJob(server, IServer.PUBLISH_INCREMENTAL, info);
publishJob.setUser(true);
publishJob.schedule();
}
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/PublishCleanAction.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/PublishCleanAction.java
index 46d7b28..ccd2884 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/PublishCleanAction.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/PublishCleanAction.java
@@ -1,5 +1,5 @@
/**********************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
+ * Copyright (c) 2007, 2008 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
@@ -10,6 +10,7 @@
**********************************************************************/
package org.eclipse.wst.server.ui.internal.view.servers;
+import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
@@ -35,7 +36,7 @@
/**
* Return true if this server can currently be acted on.
* @return boolean
- * @param server org.eclipse.wst.server.core.IServer
+ * @param server a server
*/
public boolean accept(IServer server) {
return server.canPublish().isOK();
@@ -43,7 +44,7 @@
/**
* Perform action on this server.
- * @param server org.eclipse.wst.server.core.IServer
+ * @param server a server
*/
public void perform(IServer server) {
if (!ServerUIPlugin.promptIfDirty(shell, server))
@@ -52,8 +53,16 @@
if (!ServerUIPlugin.saveEditors())
return;
+ final IAdaptable info = new IAdaptable() {
+ public Object getAdapter(Class adapter) {
+ if (Shell.class.equals(adapter))
+ return shell;
+ return null;
+ }
+ };
+
if (MessageDialog.openConfirm(shell, Messages.defaultDialogTitle, Messages.dialogPublishClean)) {
- PublishServerJob publishJob = new PublishServerJob(server, IServer.PUBLISH_CLEAN, false);
+ PublishServerJob publishJob = new PublishServerJob(server, IServer.PUBLISH_CLEAN, info);
publishJob.setUser(true);
publishJob.schedule();
}
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/RemoveModuleAction.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/RemoveModuleAction.java
index fcbe0c9..94e8815 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/RemoveModuleAction.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/RemoveModuleAction.java
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.wst.server.ui.internal.view.servers;
+import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.wst.server.core.IModule;
@@ -54,7 +55,14 @@
server = wc.save(true, null);
if (server.getServerState() != IServer.STATE_STOPPED && ((Server)server).getAutoPublishSetting() != Server.AUTO_PUBLISH_DISABLE) {
- PublishServerJob publishJob = new PublishServerJob(server);
+ final IAdaptable info = new IAdaptable() {
+ public Object getAdapter(Class adapter) {
+ if (Shell.class.equals(adapter))
+ return shell;
+ return null;
+ }
+ };
+ PublishServerJob publishJob = new PublishServerJob(server, IServer.PUBLISH_INCREMENTAL, info);
publishJob.schedule();
}
} catch (Exception e) {
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/StartAction.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/StartAction.java
index d6fc6eb..05f50b6 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/StartAction.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/StartAction.java
@@ -12,6 +12,7 @@
import java.util.Iterator;
+import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
@@ -147,7 +148,7 @@
start(server, launchMode, shell);
}
- public static void start(IServer server, String launchMode, Shell shell) {
+ public static void start(IServer server, String launchMode, final Shell shell) {
if (server.getServerState() != IServer.STATE_STARTED) {
if (!ServerUIPlugin.saveEditors())
return;
@@ -158,8 +159,16 @@
return;
}
+ final IAdaptable info = new IAdaptable() {
+ public Object getAdapter(Class adapter) {
+ if (Shell.class.equals(adapter))
+ return shell;
+ return null;
+ }
+ };
+
try {
- PublishServerJob publishJob = new PublishServerJob(server, IServer.PUBLISH_INCREMENTAL, false);
+ PublishServerJob publishJob = new PublishServerJob(server, IServer.PUBLISH_INCREMENTAL, info);
StartServerJob startJob = new StartServerJob(server, launchMode);
if (((ServerType)server.getServerType()).startBeforePublish()) {
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/ModifyModulesWizard.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/ModifyModulesWizard.java
index 5785294..99bdb05 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/ModifyModulesWizard.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/ModifyModulesWizard.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
+ * Copyright (c) 2003, 2008 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
@@ -13,6 +13,7 @@
import java.util.List;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.wst.server.core.*;
import org.eclipse.wst.server.core.internal.PublishServerJob;
@@ -35,7 +36,15 @@
if (svr instanceof IServer) {
IServer server = (IServer) svr;
if (server.getServerState() != IServer.STATE_STOPPED && ((Server)server).getAutoPublishSetting() != Server.AUTO_PUBLISH_DISABLE) {
- PublishServerJob publishJob = new PublishServerJob(server);
+ IAdaptable info = null;
+ /*IAdaptable info = new IAdaptable() {
+ public Object getAdapter(Class adapter) {
+ if (Shell.class.equals(adapter))
+ return shell;
+ return null;
+ }
+ };*/
+ PublishServerJob publishJob = new PublishServerJob(server, IServer.PUBLISH_INCREMENTAL, info);
publishJob.schedule();
}
}