JAL-3253-applet JAL-3423
authorhansonr <hansonr@STO24954W.ad.stolaf.edu>
Wed, 28 Aug 2019 16:44:19 +0000 (11:44 -0500)
committerhansonr <hansonr@STO24954W.ad.stolaf.edu>
Wed, 28 Aug 2019 16:44:19 +0000 (11:44 -0500)
CacheableInputBox direct update mode for testing removes need for wait.

JalviewJS complete PASS on Windows

(other than the usual three Xref fails)

src/jalview/io/cache/JvCacheableInputBox.java
test/jalview/io/cache/JvCacheableInputBoxTest.java

index 9ec3a9f..e02a396 100644 (file)
@@ -237,65 +237,76 @@ public class JvCacheableInputBox<E>
       @Override
       public void run()
       {
-        int cacheLimit = Integer.parseInt(appCache.getCacheLimit(cacheKey));
-        String userInput = getUserInput();
-        if (userInput != null && !userInput.isEmpty())
-        {
-          LinkedHashSet<String> foundCache = appCache
-                  .getAllCachedItemsFor(cacheKey);
-          // remove old cache item so as to place current input at the top of
-          // the result
-          foundCache.remove(userInput);
-          foundCache.add(userInput);
-          appCache.putCache(cacheKey, foundCache);
-        }
+        updateCacheNow();
+      }
+    });
+  }
 
-        String lastSearch = userInput;
-        if (comboBox.getItemCount() > 0)
-        {
-          comboBox.removeAllItems();
-        }
-        Set<String> cacheItems = appCache.getAllCachedItemsFor(cacheKey);
-        List<String> reversedCacheItems = new ArrayList<>();
-        reversedCacheItems.addAll(cacheItems);
-        cacheItems = null;
-        Collections.reverse(reversedCacheItems);
-        if (lastSearch.isEmpty())
-        {
-          comboBox.addItem("");
-        }
+  /**
+   * For TestNG
+   * 
+   * @author Bob Hanson 2019.08.28
+   */
+  public void updateCacheNow()
+  {
+    int cacheLimit = Integer.parseInt(appCache.getCacheLimit(cacheKey));
+    String userInput = getUserInput();
+    if (userInput != null && !userInput.isEmpty())
+    {
+      LinkedHashSet<String> foundCache = appCache
+              .getAllCachedItemsFor(cacheKey);
+      // remove old cache item so as to place current input at the top of
+      // the result
+      foundCache.remove(userInput);
+      foundCache.add(userInput);
+      appCache.putCache(cacheKey, foundCache);
+    }
 
-        if (reversedCacheItems != null && !reversedCacheItems.isEmpty())
+    String lastSearch = userInput;
+    if (comboBox.getItemCount() > 0)
+    {
+      comboBox.removeAllItems();
+    }
+    Set<String> cacheItems = appCache.getAllCachedItemsFor(cacheKey);
+    List<String> reversedCacheItems = new ArrayList<>();
+    reversedCacheItems.addAll(cacheItems);
+    cacheItems = null;
+    Collections.reverse(reversedCacheItems);
+    if (lastSearch.isEmpty())
+    {
+      comboBox.addItem("");
+    }
+
+    if (reversedCacheItems != null && !reversedCacheItems.isEmpty())
+    {
+      LinkedHashSet<String> foundCache = appCache
+              .getAllCachedItemsFor(cacheKey);
+      boolean prune = reversedCacheItems.size() > cacheLimit;
+      int count = 1;
+      boolean limitExceeded = false;
+      for (String cacheItem : reversedCacheItems)
+      {
+        limitExceeded = (count++ > cacheLimit);
+        if (prune)
         {
-          LinkedHashSet<String> foundCache = appCache
-                  .getAllCachedItemsFor(cacheKey);
-          boolean prune = reversedCacheItems.size() > cacheLimit;
-          int count = 1;
-          boolean limitExceeded = false;
-          for (String cacheItem : reversedCacheItems)
+          if (limitExceeded)
           {
-            limitExceeded = (count++ > cacheLimit);
-            if (prune)
-            {
-              if (limitExceeded)
-              {
-                foundCache.remove(cacheItem);
-              }
-              else
-              {
-                comboBox.addItem(cacheItem);
-              }
-            }
-            else
-            {
-              comboBox.addItem(cacheItem);
-            }
+            foundCache.remove(cacheItem);
           }
-          appCache.putCache(cacheKey, foundCache);
+          else
+          {
+            comboBox.addItem(cacheItem);
+          }
+        }
+        else
+        {
+          comboBox.addItem(cacheItem);
         }
-        setSelectedItem(lastSearch.isEmpty() ? "" : lastSearch);
       }
-    });
+      appCache.putCache(cacheKey, foundCache);
+    }
+    setSelectedItem(lastSearch.isEmpty() ? "" : lastSearch);
+
   }
 
   /**
index fb0cf07..73aae61 100644 (file)
@@ -31,17 +31,18 @@ public class JvCacheableInputBoxTest
     String testInput = "TestInput";
     cacheBox.addItem(testInput);
     cacheBox.setSelectedItem(testInput);
+    cacheBox.updateCacheNow();
 
-    try
-    {
-      // This delay is essential to prevent the
-      // assertion below from executing before
-      // swing thread finishes updating the combo-box
-      Thread.sleep(100);
-    } catch (InterruptedException e)
-    {
-      e.printStackTrace();
-    }
+    // try
+    // {
+    // // This delay is essential to prevent the
+    // // assertion below from executing before
+    // // swing thread finishes updating the combo-box
+    // Thread.sleep(100);
+    // } catch (InterruptedException e)
+    // {
+    // e.printStackTrace();
+    // }
     userInput = cacheBox.getUserInput();
     Assert.assertEquals(testInput, userInput);
   }
@@ -52,20 +53,20 @@ public class JvCacheableInputBoxTest
     String testInput = "TestInput";
     cacheBox.addItem(testInput);
     cacheBox.setSelectedItem(testInput);
-    cacheBox.updateCache();
-    synchronized (this)
-    {
-    try
-    {
-        wait(100);
-      // This delay is to let
-      // cacheBox.updateCache() finish updating the cache
-      Thread.sleep(200);
-    } catch (InterruptedException e)
-    {
-      e.printStackTrace();
-    }
-    }
+    cacheBox.updateCacheNow();
+    // synchronized (this)
+    // {
+    // try
+    // {
+    // wait(100);
+    // // This delay is to let
+    // // cacheBox.updateCache() finish updating the cache
+    // Thread.sleep(200);
+    // } catch (InterruptedException e)
+    // {
+    // e.printStackTrace();
+    // }
+    // }
     LinkedHashSet<String> foundCache = appCache
             .getAllCachedItemsFor(TEST_CACHE_KEY);
     Assert.assertTrue(foundCache.contains(testInput));