From 9ce6575d64718b01a0f44a1e85dc7d9e737d3f2c Mon Sep 17 00:00:00 2001
From: Brandon Clayton <bclayton@usgs.gov>
Date: Wed, 20 Apr 2022 12:53:28 -0600
Subject: [PATCH] add metadata to builder

---
 .../gov/usgs/earthquake/nshmp/www/ServletUtil.java |  1 +
 .../earthquake/nshmp/www/hazard/DisaggService.java |  5 +++++
 .../earthquake/nshmp/www/hazard/HazardService.java |  4 ++++
 .../earthquake/nshmp/www/services/RateService.java | 14 +++++++++-----
 .../www/services/SourceLogicTreesService.java      |  4 ++++
 .../nshmp/www/services/SourceServices.java         |  3 +++
 6 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/ServletUtil.java b/src/main/java/gov/usgs/earthquake/nshmp/www/ServletUtil.java
index 449c5ec3a..acf6f397b 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/ServletUtil.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/ServletUtil.java
@@ -166,6 +166,7 @@ public class ServletUtil {
     var svcResponse = ResponseBody.error()
         .name(name)
         .url(url)
+        .metadata(new ResponseMetadata(HazVersion.appVersions()))
         .request(url)
         .response(msg)
         .build();
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/DisaggService.java b/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/DisaggService.java
index a4e527bf7..8a41630ea 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/DisaggService.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/DisaggService.java
@@ -28,7 +28,9 @@ import gov.usgs.earthquake.nshmp.calc.Site;
 import gov.usgs.earthquake.nshmp.geo.Location;
 import gov.usgs.earthquake.nshmp.gmm.Imt;
 import gov.usgs.earthquake.nshmp.model.HazardModel;
+import gov.usgs.earthquake.nshmp.www.HazVersion;
 import gov.usgs.earthquake.nshmp.www.ResponseBody;
+import gov.usgs.earthquake.nshmp.www.ResponseMetadata;
 import gov.usgs.earthquake.nshmp.www.ServletUtil;
 import gov.usgs.earthquake.nshmp.www.hazard.HazardService.Metadata;
 import gov.usgs.earthquake.nshmp.www.meta.Parameter;
@@ -73,6 +75,7 @@ public final class DisaggService {
     var response = ResponseBody.usage()
         .name(NAME)
         .url(url)
+        .metadata(new ResponseMetadata(HazVersion.appVersions()))
         .request(url)
         .response(usage)
         .build();
@@ -93,6 +96,7 @@ public final class DisaggService {
     var body = ResponseBody.success()
         .name(NAME)
         .url(request.http.getUri().toString())
+        .metadata(new ResponseMetadata(HazVersion.appVersions()))
         .request(request)
         .response(response)
         .build();
@@ -113,6 +117,7 @@ public final class DisaggService {
     var body = ResponseBody.success()
         .name(NAME)
         .url(request.http.getUri().toString())
+        .metadata(new ResponseMetadata(HazVersion.appVersions()))
         .request(request)
         .response(response)
         .build();
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/HazardService.java b/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/HazardService.java
index e87db5fef..c324da5cf 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/HazardService.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/HazardService.java
@@ -34,7 +34,9 @@ import gov.usgs.earthquake.nshmp.geo.Location;
 import gov.usgs.earthquake.nshmp.gmm.Imt;
 import gov.usgs.earthquake.nshmp.model.HazardModel;
 import gov.usgs.earthquake.nshmp.model.SourceType;
+import gov.usgs.earthquake.nshmp.www.HazVersion;
 import gov.usgs.earthquake.nshmp.www.ResponseBody;
+import gov.usgs.earthquake.nshmp.www.ResponseMetadata;
 import gov.usgs.earthquake.nshmp.www.ServletUtil;
 import gov.usgs.earthquake.nshmp.www.meta.DoubleParameter;
 import gov.usgs.earthquake.nshmp.www.meta.Parameter;
@@ -92,6 +94,7 @@ public final class HazardService {
     var body = ResponseBody.usage()
         .name(NAME)
         .url(url)
+        .metadata(new ResponseMetadata(HazVersion.appVersions()))
         .request(url)
         .response(usage)
         .build();
@@ -112,6 +115,7 @@ public final class HazardService {
     var body = ResponseBody.success()
         .name(NAME)
         .url(request.http.getUri().toString())
+        .metadata(new ResponseMetadata(HazVersion.appVersions()))
         .request(request)
         .response(response)
         .build();
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 c0bcb47fd..b4ce06c52 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
@@ -18,8 +18,10 @@ import gov.usgs.earthquake.nshmp.calc.EqRate;
 import gov.usgs.earthquake.nshmp.calc.Site;
 import gov.usgs.earthquake.nshmp.geo.Location;
 import gov.usgs.earthquake.nshmp.model.HazardModel;
+import gov.usgs.earthquake.nshmp.www.HazVersion;
 import gov.usgs.earthquake.nshmp.www.RateController;
 import gov.usgs.earthquake.nshmp.www.ResponseBody;
+import gov.usgs.earthquake.nshmp.www.ResponseMetadata;
 import gov.usgs.earthquake.nshmp.www.ServicesUtil.Key;
 import gov.usgs.earthquake.nshmp.www.ServicesUtil.ServiceQueryData;
 import gov.usgs.earthquake.nshmp.www.ServicesUtil.ServiceRequestData;
@@ -107,6 +109,7 @@ public final class RateService {
     return ResponseBody.<String, Usage> usage()
         .name(service.name)
         .url(url)
+        .metadata(new ResponseMetadata(HazVersion.appVersions()))
         .request(url)
         .response(usage)
         .build();
@@ -118,10 +121,11 @@ public final class RateService {
       RequestData data) throws InterruptedException, ExecutionException {
     var timer = Stopwatch.createStarted();
     var rates = calc(service, data);
-    var responseData = new ResponseData(new ResponseMetadata(service, data), rates, timer);
+    var responseData = new ResponseData(new ServiceResponseMetadata(service, data), rates, timer);
     return ResponseBody.<RequestData, ResponseData> success()
         .name(service.name)
         .request(data)
+        .metadata(new ResponseMetadata(HazVersion.appVersions()))
         .response(responseData)
         .url(request.getUri().getPath())
         .build();
@@ -249,7 +253,7 @@ public final class RateService {
     }
   }
 
-  private static final class ResponseMetadata {
+  private static final class ServiceResponseMetadata {
     final double latitude;
     final double longitude;
     final double distance;
@@ -258,7 +262,7 @@ public final class RateService {
     final String xlabel = "Magnitude (Mw)";
     final String ylabel;
 
-    ResponseMetadata(Service service, RequestData request) {
+    ServiceResponseMetadata(Service service, RequestData request) {
       var isProbability = service == Service.PROBABILITY;
       this.longitude = request.longitude;
       this.latitude = request.latitude;
@@ -270,10 +274,10 @@ public final class RateService {
 
   private static final class ResponseData {
     final Object server;
-    final ResponseMetadata metadata;
+    final ServiceResponseMetadata metadata;
     final List<Sequence> data;
 
-    ResponseData(ResponseMetadata metadata, EqRate rates, Stopwatch timer) {
+    ResponseData(ServiceResponseMetadata metadata, EqRate rates, Stopwatch timer) {
       server = ServletUtil.serverData(ServletUtil.THREAD_COUNT, timer);
       this.metadata = metadata;
       this.data = buildSequence(rates);
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/services/SourceLogicTreesService.java b/src/main/java/gov/usgs/earthquake/nshmp/www/services/SourceLogicTreesService.java
index 01e2d4c21..5525e3964 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/services/SourceLogicTreesService.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/services/SourceLogicTreesService.java
@@ -4,7 +4,9 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import gov.usgs.earthquake.nshmp.model.Models;
+import gov.usgs.earthquake.nshmp.www.HazVersion;
 import gov.usgs.earthquake.nshmp.www.ResponseBody;
+import gov.usgs.earthquake.nshmp.www.ResponseMetadata;
 import gov.usgs.earthquake.nshmp.www.ServletUtil;
 import gov.usgs.earthquake.nshmp.www.SourceLogicTreesController;
 
@@ -33,6 +35,7 @@ public class SourceLogicTreesService {
       var response = ResponseBody.success()
           .name(NAME)
           .url(url)
+          .metadata(new ResponseMetadata(HazVersion.appVersions()))
           .request(url)
           .response(trees)
           .build();
@@ -52,6 +55,7 @@ public class SourceLogicTreesService {
       var response = ResponseBody.success()
           .name(NAME)
           .url(url)
+          .metadata(new ResponseMetadata(HazVersion.appVersions()))
           .request(requestData)
           .response(tree)
           .build();
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/services/SourceServices.java b/src/main/java/gov/usgs/earthquake/nshmp/www/services/SourceServices.java
index 03704247e..f72a1546e 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/services/SourceServices.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/services/SourceServices.java
@@ -17,7 +17,9 @@ import gov.usgs.earthquake.nshmp.gmm.Gmm;
 import gov.usgs.earthquake.nshmp.gmm.Imt;
 import gov.usgs.earthquake.nshmp.gmm.NehrpSiteClass;
 import gov.usgs.earthquake.nshmp.model.HazardModel;
+import gov.usgs.earthquake.nshmp.www.HazVersion;
 import gov.usgs.earthquake.nshmp.www.ResponseBody;
+import gov.usgs.earthquake.nshmp.www.ResponseMetadata;
 import gov.usgs.earthquake.nshmp.www.ServletUtil;
 import gov.usgs.earthquake.nshmp.www.WsUtils;
 import gov.usgs.earthquake.nshmp.www.meta.Parameter;
@@ -59,6 +61,7 @@ public class SourceServices {
       var response = ResponseBody.usage()
           .name(NAME)
           .url(url)
+          .metadata(new ResponseMetadata(HazVersion.appVersions()))
           .request(url)
           .response(new ResponseData())
           .build();
-- 
GitLab