Fixes 472132 - TimeoutException in AbstractJmxServerCommand.execute (89) during redeployment
Signed-off-by: GianMaria Romanato <gm.romanato@gmail.com>
diff --git a/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/DefaultServerDeployer.java b/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/DefaultServerDeployer.java
index ad6e43d..b914f48 100644
--- a/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/DefaultServerDeployer.java
+++ b/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/DefaultServerDeployer.java
@@ -21,6 +21,7 @@
import org.eclipse.core.resources.IFile;
import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.ui.statushandlers.StatusManager;
import org.eclipse.virgo.ide.facet.core.FacetCorePlugin;
import org.eclipse.virgo.ide.facet.core.FacetUtils;
import org.eclipse.virgo.ide.manifest.core.BundleManifestCorePlugin;
@@ -248,7 +249,7 @@
} catch (IOException e) {
StatusUtil.error("Failed execution of deployer command " + serverCommand, e);
} catch (TimeoutException e) {
- StatusUtil.error("Failed execution of deployer command " + serverCommand, e);
+ StatusUtil.error("Failed execution of deployer command " + serverCommand, e, StatusManager.SHOW);
}
return null;
}
diff --git a/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/utils/StatusUtil.java b/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/utils/StatusUtil.java
index 376328e..a91d060 100644
--- a/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/utils/StatusUtil.java
+++ b/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/utils/StatusUtil.java
@@ -24,10 +24,20 @@
*/
public class StatusUtil {
public static void error(String message, Exception e) {
- StatusManager.getManager().handle( new Status(IStatus.ERROR, ServerCorePlugin.PLUGIN_ID,
- "An IO Exception occurred.", e));
+ error(message, e, StatusManager.LOG);
}
-
+ /**
+ * @param message
+ * the message to be reported
+ * @param e
+ * the cause
+ * @param style
+ * a bitmask of style bits as enumerated on {@link StatusManager}
+ */
+ public static void error(String message, Exception e, int style) {
+ StatusManager.getManager().handle(
+ new Status(IStatus.ERROR, ServerCorePlugin.PLUGIN_ID, "An IO Exception occurred.", e), style);
+ }
public static void error(Exception e) {
if (e instanceof IOException) {
error("An IO Exception occurred.", e);
diff --git a/org.eclipse.virgo.ide.runtime.ui/src/org/eclipse/virgo/ide/runtime/internal/ui/editor/ServerDeployEditorSection.java b/org.eclipse.virgo.ide.runtime.ui/src/org/eclipse/virgo/ide/runtime/internal/ui/editor/ServerDeployEditorSection.java
index ae77534..e77cc9e 100644
--- a/org.eclipse.virgo.ide.runtime.ui/src/org/eclipse/virgo/ide/runtime/internal/ui/editor/ServerDeployEditorSection.java
+++ b/org.eclipse.virgo.ide.runtime.ui/src/org/eclipse/virgo/ide/runtime/internal/ui/editor/ServerDeployEditorSection.java
@@ -16,6 +16,7 @@
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
@@ -115,11 +116,13 @@
if (updating) {
return;
}
+ getManagedForm().getMessageManager().removeMessages(port);
int newPort = -1;
try {
newPort = Integer.valueOf(port.getText());
} catch (NumberFormatException nfe) {
- setErrorMessage(port.getText() + " is not a valid port number");
+ getManagedForm().getMessageManager().addMessage("MALFORMED-PORT", "Port must be a positive number",
+ null, IMessageProvider.ERROR, port);
return;
}
setErrorMessage(null);
@@ -138,14 +141,20 @@
if (updating) {
return;
}
- int newTimeout = -1;
+ getManagedForm().getMessageManager().removeMessages(timeout);
+ Integer newTimeout = null;
try {
newTimeout = Integer.valueOf(timeout.getText());
} catch (NumberFormatException nfe) {
- setErrorMessage(timeout.getText() + " is not a valid timeout");
+ getManagedForm().getMessageManager().addMessage("MALFORMED-TIMEOUT",
+ "Timeout must be a positive number", null, IMessageProvider.ERROR, timeout);
return;
}
- setErrorMessage(null);
+ if (newTimeout < 5) {
+ getManagedForm().getMessageManager().addMessage("INVALID-TIMEOUT", "Timeout cannot be less than 5",
+ null, IMessageProvider.ERROR, timeout);
+ return;
+ }
updating = true;
execute(new ModifyDeployerTimeoutCommand(serverWorkingCopy, newTimeout));
updating = false;
@@ -217,6 +226,8 @@
@Override
public IStatus[] getSaveStatus() {
+ // this errors should never happen as the port and timeout controls now prevent the user
+ // from entering invalid values.
try {
Integer.valueOf(port.getText());
} catch (NumberFormatException nfe) {