Tweaks to get restart server up and running. We now always indicate that we
support the RESTART_SERVER capability (checking it was problematic, because it
had not been registered at the time of capability exchange).
Fixed an issue in MessageTransport where an NPE would occur if the exception's
message was null.
Review by: mmendez
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@7089 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/shell/remoteui/DevModeServiceRequestProcessor.java b/dev/core/src/com/google/gwt/dev/shell/remoteui/DevModeServiceRequestProcessor.java
index 82dfc81..36e1a16 100644
--- a/dev/core/src/com/google/gwt/dev/shell/remoteui/DevModeServiceRequestProcessor.java
+++ b/dev/core/src/com/google/gwt/dev/shell/remoteui/DevModeServiceRequestProcessor.java
@@ -72,11 +72,9 @@
c1Builder.setCapability(DevModeRequest.RequestType.CAPABILITY_EXCHANGE);
capabilityExchangeBuilder.addCapabilities(c1Builder);
- if (remoteUI.supportsRestartWebServer()) {
- CapabilityExchange.Capability.Builder c2Builder = CapabilityExchange.Capability.newBuilder();
- c2Builder.setCapability(DevModeRequest.RequestType.CAPABILITY_EXCHANGE);
- capabilityExchangeBuilder.addCapabilities(c2Builder);
- }
+ CapabilityExchange.Capability.Builder c2Builder = CapabilityExchange.Capability.newBuilder();
+ c2Builder.setCapability(DevModeRequest.RequestType.RESTART_WEB_SERVER);
+ capabilityExchangeBuilder.addCapabilities(c2Builder);
DevModeResponse.Builder devModeResponseBuilder = DevModeResponse.newBuilder();
devModeResponseBuilder.setResponseType(DevModeResponse.ResponseType.CAPABILITY_EXCHANGE);
@@ -91,7 +89,7 @@
private Response processRestartServer() {
if (!remoteUI.restartWebServer()) {
throw new IllegalStateException(
- "Unable to restart the web server. This server may not have the capability to be restarted.");
+ "Unable to restart the web server. It is still in the process of starting up. Wait a few seconds and try again.");
}
DevModeResponse.Builder devModeResponseBuilder = DevModeResponse.newBuilder();
diff --git a/dev/core/src/com/google/gwt/dev/shell/remoteui/MessageTransport.java b/dev/core/src/com/google/gwt/dev/shell/remoteui/MessageTransport.java
index 13bce3e..f6ef21b 100644
--- a/dev/core/src/com/google/gwt/dev/shell/remoteui/MessageTransport.java
+++ b/dev/core/src/com/google/gwt/dev/shell/remoteui/MessageTransport.java
@@ -351,7 +351,9 @@
} catch (Exception e) {
messageBuilder.setMessageType(Message.MessageType.FAILURE);
Message.Failure.Builder failureMessage = Message.Failure.newBuilder();
- failureMessage.setMessage(e.getLocalizedMessage());
+
+ failureMessage.setMessage(e.getLocalizedMessage() != null
+ ? e.getLocalizedMessage() : e.getClass().getName());
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw, true));
failureMessage.setStackTrace(sw.getBuffer().toString());
diff --git a/dev/core/src/com/google/gwt/dev/shell/remoteui/RemoteUI.java b/dev/core/src/com/google/gwt/dev/shell/remoteui/RemoteUI.java
index 1d81ada..5c5d6cf 100644
--- a/dev/core/src/com/google/gwt/dev/shell/remoteui/RemoteUI.java
+++ b/dev/core/src/com/google/gwt/dev/shell/remoteui/RemoteUI.java
@@ -72,20 +72,6 @@
}
@Override
- public TreeLogger getWebServerLogger(String serverName, byte[] serverIcon) {
- return getConsoleLogger();
- }
-
- @Override
- public void initialize(Type logLevel) {
- super.initialize(logLevel);
- viewerServiceClient = new ViewerServiceClient(transport);
- String devModeQueryParam = BrowserListener.getDevModeURLParams(BrowserListener.computeEndpointIdentifier(browserChannelPort));
- viewerServiceClient.initialize(clientId, devModeQueryParam, webServerPort);
- viewerServiceClient.checkCapabilities();
- }
-
- @Override
public ModuleHandle getModuleLogger(String userAgent, String remoteSocket,
String url, String tabKey, String moduleName, String sessionKey,
String agentTag, byte[] agentIcon, Type logLevel) {
@@ -140,6 +126,20 @@
return handle;
}
+ @Override
+ public TreeLogger getWebServerLogger(String serverName, byte[] serverIcon) {
+ return getConsoleLogger();
+ }
+
+ @Override
+ public void initialize(Type logLevel) {
+ super.initialize(logLevel);
+ viewerServiceClient = new ViewerServiceClient(transport);
+ String devModeQueryParam = BrowserListener.getDevModeURLParams(BrowserListener.computeEndpointIdentifier(browserChannelPort));
+ viewerServiceClient.initialize(clientId, devModeQueryParam, webServerPort);
+ viewerServiceClient.checkCapabilities();
+ }
+
public void onTermination(Exception e) {
getTopLogger().log(TreeLogger.INFO,
"Remote UI connection terminated due to exception: " + e);
@@ -157,20 +157,17 @@
}
public boolean restartWebServer() {
- if (!supportsRestartWebServer()) {
- return false;
- }
-
TreeLogger webServerLogger = getConsoleLogger();
- if (webServerLogger == null) {
- return false;
+ assert (webServerLogger != null);
+
+ RestartServerCallback callback = ((RestartServerCallback) getCallback(RestartServerEvent.getType()));
+ if (callback != null) {
+ callback.onRestartServer(webServerLogger);
+ return true;
+ } else {
+ // The server is still starting up
}
- ((RestartServerCallback) getCallback(RestartServerEvent.getType())).onRestartServer(webServerLogger);
- return true;
- }
-
- public boolean supportsRestartWebServer() {
- return hasCallback(RestartServerEvent.getType());
+ return false;
}
}