From fad7ee195c8bb9bcb032baa85c7137be6bc8c53d Mon Sep 17 00:00:00 2001
From: Peter Powers <pmpowers@usgs.gov>
Date: Thu, 16 Dec 2021 12:50:14 -0700
Subject: [PATCH] servlet cleaning

---
 .../nshmp/www/services/RateService.java       |  2 -
 .../nshmp/www/services/ServicesUtil.java      | 37 +++++-------------
 .../nshmp/www/services/ServletUtil.java       | 39 -------------------
 3 files changed, 10 insertions(+), 68 deletions(-)

diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/services/RateService.java b/src/main/java/gov/usgs/earthquake/nshmp/www/services/RateService.java
index 54656ceb7..f70212593 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/services/RateService.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/services/RateService.java
@@ -27,7 +27,6 @@ import gov.usgs.earthquake.nshmp.www.meta.Status;
 import gov.usgs.earthquake.nshmp.www.services.ServicesUtil.Key;
 import gov.usgs.earthquake.nshmp.www.services.ServicesUtil.ServiceQueryData;
 import gov.usgs.earthquake.nshmp.www.services.ServicesUtil.ServiceRequestData;
-
 import io.micronaut.http.HttpRequest;
 import io.micronaut.http.HttpResponse;
 
@@ -82,7 +81,6 @@ public final class RateService {
     var service = query.service;
 
     try {
-      var timer = ServletUtil.timer();
 
       if (query.isNull()) {
         return handleDoGetUsage(request, service);
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServicesUtil.java b/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServicesUtil.java
index 064864558..800ad2d81 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServicesUtil.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServicesUtil.java
@@ -3,8 +3,6 @@ package gov.usgs.earthquake.nshmp.www.services;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
 import java.util.function.Function;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 import com.google.gson.GsonBuilder;
 
@@ -16,7 +14,6 @@ import gov.usgs.earthquake.nshmp.model.HazardModel;
 import gov.usgs.earthquake.nshmp.www.Response;
 import gov.usgs.earthquake.nshmp.www.WsUtils;
 import gov.usgs.earthquake.nshmp.www.meta.Status;
-
 import io.micronaut.http.HttpResponse;
 
 public class ServicesUtil {
@@ -36,25 +33,12 @@ public class ServicesUtil {
   static Hazard calcHazard(
       Function<HazardModel, CalcConfig> configFunction,
       Function<CalcConfig, Site> siteFunction) throws InterruptedException, ExecutionException {
-    // TODO reduce for singleton model
-    var futuresList = Stream.of(ServletUtil.model())
-        .map(model -> {
-          var config = configFunction.apply(model);
-          var site = siteFunction.apply(config);
-          return calcHazard(model, config, site);
-        })
-        .collect(Collectors.toList());
-
-    var hazardsFuture = CompletableFuture
-        .allOf(futuresList.toArray(new CompletableFuture[futuresList.size()]))
-        .thenApply(v -> {
-          return futuresList.stream()
-              .map(future -> future.join())
-              .collect(Collectors.toList());
-        });
-
-    var hazards = hazardsFuture.get().toArray(new Hazard[] {});
-    return Hazard.merge(hazards);
+
+    HazardModel model = ServletUtil.model();
+    CalcConfig config = configFunction.apply(model);
+    Site site = siteFunction.apply(config);
+    CompletableFuture<Hazard> future = calcHazard(model, config, site);
+    return future.get();
   }
 
   @Deprecated
@@ -129,11 +113,10 @@ public class ServicesUtil {
       HazardModel model,
       CalcConfig config,
       Site site) {
-    return CompletableFuture
-        .supplyAsync(
-            () -> HazardCalcs.hazard(
-                model, config, site, ServletUtil.CALC_EXECUTOR),
-            ServletUtil.TASK_EXECUTOR);
+
+    return CompletableFuture.supplyAsync(
+        () -> HazardCalcs.hazard(model, config, site, ServletUtil.CALC_EXECUTOR),
+        ServletUtil.TASK_EXECUTOR);
   }
 
 }
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServletUtil.java b/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServletUtil.java
index a6273aa43..d8af95013 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServletUtil.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServletUtil.java
@@ -10,14 +10,12 @@ import java.nio.file.FileSystemNotFoundException;
 import java.nio.file.FileSystems;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.time.format.DateTimeFormatter;
 import java.util.HashMap;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
 import javax.inject.Singleton;
 
-import com.google.common.base.Stopwatch;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
 import com.google.gson.Gson;
@@ -33,7 +31,6 @@ import gov.usgs.earthquake.nshmp.gmm.Imt;
 import gov.usgs.earthquake.nshmp.model.HazardModel;
 import gov.usgs.earthquake.nshmp.www.WsUtils;
 import gov.usgs.earthquake.nshmp.www.meta.MetaUtil;
-
 import io.micronaut.context.annotation.Value;
 import io.micronaut.context.event.ShutdownEvent;
 import io.micronaut.context.event.StartupEvent;
@@ -48,24 +45,15 @@ import io.micronaut.runtime.event.annotation.EventListener;
 public class ServletUtil {
 
   public static final Gson GSON;
-  public static final DateTimeFormatter DATE_FMT = DateTimeFormatter.ofPattern(
-      "yyyy-MM-dd'T'HH:mm:ssXXX");
 
   static final ListeningExecutorService CALC_EXECUTOR;
   static final ExecutorService TASK_EXECUTOR;
 
   static final int THREAD_COUNT;
 
-  /* Stateful flag to reject requests while a result is pending. */
-  static boolean uhtBusy = false;
-  static long hitCount = 0;
-  static long missCount = 0;
-
   @Value("${nshmp-haz.model-path}")
   private Path modelPath;
 
-  // private static List<HazardModel> HAZARD_MODELS = new ArrayList<>();
-
   private static HazardModel HAZARD_MODEL;
 
   static {
@@ -143,33 +131,6 @@ public class ServletUtil {
     }
   }
 
-  public static Timer timer() {
-    return new Timer();
-  }
-
-  /*
-   * Simple timer object. The servlet timer just runs. The calculation timer can
-   * be started later.
-   */
-  @Deprecated
-  public static final class Timer {
-    Stopwatch servlet = Stopwatch.createStarted();
-    Stopwatch calc = Stopwatch.createUnstarted();
-
-    public Timer start() {
-      calc.start();
-      return this;
-    }
-
-    public String servletTime() {
-      return servlet.toString();
-    }
-
-    public String calcTime() {
-      return calc.toString();
-    }
-  }
-
   private static class PathConverter implements JsonSerializer<Path> {
     @Override
     public JsonElement serialize(
-- 
GitLab