Revision: 8497
          
http://languagetool.svn.sourceforge.net/languagetool/?rev=8497&view=rev
Author:   dnaber
Date:     2012-12-03 22:40:47 +0000 (Mon, 03 Dec 2012)
Log Message:
-----------
try harder to keep the HTTP checkbox in the tray menu in sync with whether the 
server is actually running or not (before, it was checked even when starting 
the server failed)

Modified Paths:
--------------
    trunk/JLanguageTool/src/main/java/org/languagetool/gui/Main.java
    trunk/JLanguageTool/src/main/java/org/languagetool/server/Server.java
    
trunk/JLanguageTool/src/test/java/org/languagetool/server/HTTPServerLoadTest.java
    
trunk/JLanguageTool/src/test/java/org/languagetool/server/HTTPServerTest.java

Modified: trunk/JLanguageTool/src/main/java/org/languagetool/gui/Main.java
===================================================================
--- trunk/JLanguageTool/src/main/java/org/languagetool/gui/Main.java    
2012-12-03 22:16:40 UTC (rev 8496)
+++ trunk/JLanguageTool/src/main/java/org/languagetool/gui/Main.java    
2012-12-03 22:40:47 UTC (rev 8497)
@@ -73,7 +73,7 @@
   private LanguageComboBox languageBox;
   private LanguageDetectionCheckbox autoDetectBox;
   private Cursor prevCursor;
-  private CheckboxMenuItem enableHttpsServerItem;
+  private CheckboxMenuItem enableHttpServerItem;
 
   private HTTPServer httpServer;
 
@@ -259,10 +259,11 @@
   private PopupMenu makePopupMenu() {
     final PopupMenu popup = new PopupMenu();
     final ActionListener rmbListener = new TrayActionRMBListener();
-    enableHttpsServerItem = new 
CheckboxMenuItem(StringTools.getLabel(messages.getString("tray_menu_enable_server")));
-    enableHttpsServerItem.setState(config.getRunServer());
-    enableHttpsServerItem.addItemListener(new TrayActionItemListener());
-    popup.add(enableHttpsServerItem);
+    // Enable or disable embedded HTTP server:
+    enableHttpServerItem = new 
CheckboxMenuItem(StringTools.getLabel(messages.getString("tray_menu_enable_server")));
+    enableHttpServerItem.setState(httpServer != null && 
httpServer.isRunning());
+    enableHttpServerItem.addItemListener(new TrayActionItemListener());
+    popup.add(enableHttpServerItem);
     // Check clipboard text:
     final MenuItem checkClipboardItem =
             new 
MenuItem(StringTools.getLabel(messages.getString("guiMenuCheckClipboard")));
@@ -388,24 +389,22 @@
         final HTTPServerConfig serverConfig = new 
HTTPServerConfig(config.getServerPort(), false);
         httpServer = new HTTPServer(serverConfig, true);
          httpServer.run();
-        if (enableHttpsServerItem != null) {
-          enableHttpsServerItem.setState(true);
+        if (enableHttpServerItem != null) {
+          enableHttpServerItem.setState(httpServer.isRunning());
         }
       } catch (PortBindingException e) {
-        final String message = e.getMessage();
-        JOptionPane.showMessageDialog(null, message, "Error", 
JOptionPane.ERROR_MESSAGE);
-        return false;
+        JOptionPane.showMessageDialog(null, e.getMessage(), "Error", 
JOptionPane.ERROR_MESSAGE);
       }
-      return true;
-    } else {
-      return false;
     }
+    return httpServer != null && httpServer.isRunning();
   }
 
   private void stopServer() {
     if (httpServer != null) {
       httpServer.stop();
-      enableHttpsServerItem.setState(false);
+      if (enableHttpServerItem != null) {
+        enableHttpServerItem.setState(httpServer.isRunning());
+      }
       httpServer = null;
     }
   }
@@ -637,8 +636,8 @@
         if (e.getStateChange() == ItemEvent.SELECTED) {
           config.setRunServer(true);
           final boolean serverStarted = maybeStartServer();
+          enableHttpServerItem.setState(serverStarted);
           config.setRunServer(serverStarted);
-          enableHttpsServerItem.setState(serverStarted);
           config.saveConfiguration(language);
           if (configDialog != null) {
             configDialog.setRunServer(true);

Modified: trunk/JLanguageTool/src/main/java/org/languagetool/server/Server.java
===================================================================
--- trunk/JLanguageTool/src/main/java/org/languagetool/server/Server.java       
2012-12-03 22:16:40 UTC (rev 8496)
+++ trunk/JLanguageTool/src/main/java/org/languagetool/server/Server.java       
2012-12-03 22:40:47 UTC (rev 8497)
@@ -45,6 +45,8 @@
   protected String host;
   protected HttpServer server;
 
+  private boolean isRunning;
+
   /**
    * Start the server.
    */
@@ -52,20 +54,30 @@
     final String hostName = host != null ? host : "localhost";
     System.out.println("Starting server on " + getProtocol() + "://" + 
hostName + ":" + port  + "...");
     server.start();
+    isRunning = true;
     System.out.println("Server started");
   }
 
   /**
-   * Stop the server.
+   * Stop the server. Once stopped, a server cannot be used again.
    */
   public void stop() {
     if (server != null) {
       System.out.println("Stopping server");
       server.stop(0);
+      isRunning = false;
       System.out.println("Server stopped");
     }
   }
 
+  /**
+   * @return whether the server is running
+   * @since 2.0
+   */
+  public boolean isRunning() {
+    return isRunning;
+  }
+
   protected static boolean usageRequested(String[] args) {
     return args.length == 1 && (args[0].equals("-h") || 
args[0].equals("--help"));
   }

Modified: 
trunk/JLanguageTool/src/test/java/org/languagetool/server/HTTPServerLoadTest.java
===================================================================
--- 
trunk/JLanguageTool/src/test/java/org/languagetool/server/HTTPServerLoadTest.java
   2012-12-03 22:16:40 UTC (rev 8496)
+++ 
trunk/JLanguageTool/src/test/java/org/languagetool/server/HTTPServerLoadTest.java
   2012-12-03 22:40:47 UTC (rev 8497)
@@ -8,6 +8,9 @@
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
 /**
  * Test HTTP server access from multiple threads.
  */
@@ -22,8 +25,10 @@
   public void testHTTPServer() throws Exception {
     final long startTime = System.currentTimeMillis();
     final HTTPServer server = new HTTPServer();
+    assertFalse(server.isRunning());
     try {
       server.run();
+      assertTrue(server.isRunning());
       final ExecutorService executorService = 
Executors.newFixedThreadPool(THREAD_COUNT);
       final List<Future> futures = new ArrayList<Future>();
       for (int i = 0; i < THREAD_COUNT; i++) {
@@ -35,6 +40,7 @@
       }
     } finally {
       server.stop();
+      assertFalse(server.isRunning());
       final long runtime = System.currentTimeMillis() - startTime;
       System.out.println("Running with " + THREAD_COUNT + " threads in " + 
runtime + "ms");
     }

Modified: 
trunk/JLanguageTool/src/test/java/org/languagetool/server/HTTPServerTest.java
===================================================================
--- 
trunk/JLanguageTool/src/test/java/org/languagetool/server/HTTPServerTest.java   
    2012-12-03 22:16:40 UTC (rev 8496)
+++ 
trunk/JLanguageTool/src/test/java/org/languagetool/server/HTTPServerTest.java   
    2012-12-03 22:40:47 UTC (rev 8497)
@@ -43,11 +43,14 @@
   @Test
   public void testHTTPServer() throws Exception {
     final HTTPServer server = new HTTPServer();
+    assertFalse(server.isRunning());
     try {
       server.run();
+      assertTrue(server.isRunning());
       runTests();
     } finally {
       server.stop();
+      assertFalse(server.isRunning());
     }
   }
 

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
Languagetool-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/languagetool-commits

Reply via email to