[249968] New Publishers framework ignore IStatus being returned
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 b0f48c0..1a822ee 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
@@ -853,7 +853,10 @@
 			if (taskStatus != null && !taskStatus.isOK())
 				tempMulti.addAll(taskStatus);
 			
-			executePublishers(kind, moduleList, monitor, info2);
+			// execute publishers
+			taskStatus = executePublishers(kind, moduleList, monitor, info2);
+			if (taskStatus != null && !taskStatus.isOK())
+				tempMulti.addAll(taskStatus);			
 			
 			if (monitor.isCanceled())
 				return Status.CANCEL_STATUS;
@@ -1063,13 +1066,15 @@
 	 *    org.eclipse.swt.widgets.Shell.class
 	 * @throws CoreException
 	 */
-	protected void executePublishers(int kind, List<IModule[]> modules, IProgressMonitor monitor, IAdaptable info) throws CoreException {
+	protected MultiStatus 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);
 		
 		if (size == 0)
-			return;
+			return null;
+		
+		MultiStatus multi = new MultiStatus(ServerPlugin.PLUGIN_ID, 0, Messages.taskPerforming, null);
 		
 		TaskModel taskModel = new TaskModel();
 		taskModel.putObject(TaskModel.TASK_SERVER, getServer());
@@ -1080,7 +1085,8 @@
 			monitor.subTask(NLS.bind(Messages.taskPerforming, pub.getName()));
 			try {
 				pub.setTaskModel(taskModel);
-				pub.execute(kind, ProgressUtil.getSubMonitorFor(monitor, 500), info);
+				IStatus pubStatus = pub.execute(kind, ProgressUtil.getSubMonitorFor(monitor, 500), info);
+				multi.add(pubStatus);
 			} catch (CoreException ce) {
 				Trace.trace(Trace.SEVERE, "Publisher failed", ce);
 				throw ce;
@@ -1088,8 +1094,9 @@
 			
 			// return early if the monitor has been canceled
 			if (monitor.isCanceled())
-				return;
+				return multi;
 		}
+		return multi;
 	}
 
 	/**