Revision: 7089 Author: rda...@google.com Date: Fri Nov 20 15:40:44 2009 Log: 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 http://code.google.com/p/google-web-toolkit/source/detail?r=7089 Modified: /trunk/dev/core/src/com/google/gwt/dev/shell/remoteui/DevModeServiceRequestProcessor.java /trunk/dev/core/src/com/google/gwt/dev/shell/remoteui/MessageTransport.java /trunk/dev/core/src/com/google/gwt/dev/shell/remoteui/RemoteUI.java ======================================= --- /trunk/dev/core/src/com/google/gwt/dev/shell/remoteui/DevModeServiceRequestProcessor.java Mon Nov 9 09:33:19 2009 +++ /trunk/dev/core/src/com/google/gwt/dev/shell/remoteui/DevModeServiceRequestProcessor.java Fri Nov 20 15:40:44 2009 @@ -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(); ======================================= --- /trunk/dev/core/src/com/google/gwt/dev/shell/remoteui/MessageTransport.java Thu Nov 12 13:26:49 2009 +++ /trunk/dev/core/src/com/google/gwt/dev/shell/remoteui/MessageTransport.java Fri Nov 20 15:40:44 2009 @@ -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()); ======================================= --- /trunk/dev/core/src/com/google/gwt/dev/shell/remoteui/RemoteUI.java Thu Nov 19 12:24:42 2009 +++ /trunk/dev/core/src/com/google/gwt/dev/shell/remoteui/RemoteUI.java Fri Nov 20 15:40:44 2009 @@ -70,20 +70,6 @@ throw new RuntimeException(e); } } - - @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, @@ -139,6 +125,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, @@ -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; } } -- http://groups.google.com/group/Google-Web-Toolkit-Contributors