From e61cedc9d43683985b67c8e29629f64fa6adb774 Mon Sep 17 00:00:00 2001 From: Peter Powers <pmpowers@usgs.gov> Date: Wed, 5 Jan 2022 13:07:57 -0700 Subject: [PATCH] updated lib and ws-utils and refactored --- gradle.properties | 2 +- .../earthquake/nshmp/www/meta/Metadata.java | 20 ---------------- .../nshmp/www/services/HazardService.java | 24 ++++++++++++------- .../nshmp/www/services/HazardService2.java | 24 ++++++++++++------- .../nshmp/www/services/RateService.java | 22 +++++++++-------- .../nshmp/www/services/ServicesUtil.java | 11 +++++---- .../www/services/SourceLogicTreesService.java | 18 ++++++++++---- .../nshmp/www/services/SourceServices.java | 16 +++++++------ 8 files changed, 74 insertions(+), 63 deletions(-) diff --git a/gradle.properties b/gradle.properties index e2120f61b..a2ff82549 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ micronautRxVersion = 2.1.1 micronautPluginVersion = 3.1.1 nodePluginVersion = 3.0.1 nodeVersion = 16.3.0 -nshmpLibVersion = 0.8.2 +nshmpLibVersion = 0.8.3 nshmpWsUtilsVersion = 0.1.7 shadowVersion = 7.1.2 spotbugsVersion = 4.7.0 diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/meta/Metadata.java b/src/main/java/gov/usgs/earthquake/nshmp/www/meta/Metadata.java index fd844d51d..1120be850 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/meta/Metadata.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/meta/Metadata.java @@ -98,26 +98,6 @@ public final class Metadata { } } - public static String busyMessage(String url, long hits, long misses) { - Busy busy = new Busy(url, hits, misses); - return ServletUtil.GSON.toJson(busy); - } - - static final String BUSY_MESSAGE = "Server busy. Please try again later. " + - "We apologize for any inconvenience while we increase capacity."; - - private static class Busy { - - final String status = Status.BUSY.toString(); - final String request; - final String message; - - private Busy(String request, long hits, long misses) { - this.request = request; - this.message = BUSY_MESSAGE + String.format(" (%s,%s)", hits, misses); - } - } - public static String errorMessage(String url, Throwable e, boolean trace) { Error error = new Error(url, e, trace); return ServletUtil.GSON.toJson(error); diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java b/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java index 32468d638..8872903e3 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java @@ -24,16 +24,14 @@ 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.HazardController; -import gov.usgs.earthquake.nshmp.www.Response; +import gov.usgs.earthquake.nshmp.www.ResponseBody; import gov.usgs.earthquake.nshmp.www.WsUtils; import gov.usgs.earthquake.nshmp.www.meta.DoubleParameter; import gov.usgs.earthquake.nshmp.www.meta.Metadata; import gov.usgs.earthquake.nshmp.www.meta.Parameter; -import gov.usgs.earthquake.nshmp.www.meta.Status; import gov.usgs.earthquake.nshmp.www.services.ServicesUtil.ServiceQueryData; import gov.usgs.earthquake.nshmp.www.services.ServicesUtil.ServiceRequestData; import gov.usgs.earthquake.nshmp.www.services.SourceServices.SourceModel; - import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; import jakarta.inject.Singleton; @@ -53,8 +51,13 @@ public final class HazardService { public static HttpResponse<String> handleDoGetMetadata(HttpRequest<?> request) { var url = request.getUri().getPath(); try { - var usage = new RequestMetadata(ServletUtil.model());// SourceServices.ResponseData(); - var response = new Response<>(Status.USAGE, NAME, url, usage, url); + var usage = new RequestMetadata(ServletUtil.model()); + var response = ResponseBody.usage() + .name(NAME) + .url(url) + .request(url) + .response(usage) + .build(); var svcResponse = ServletUtil.GSON.toJson(response); return HttpResponse.ok(svcResponse); } catch (Exception e) { @@ -82,7 +85,7 @@ public final class HazardService { } } - static Response<RequestData, ResponseData> process( + static ResponseBody<RequestData, ResponseData> process( HttpRequest<?> request, RequestData data) throws InterruptedException, ExecutionException { @@ -322,7 +325,7 @@ public final class HazardService { return this; } - Response<RequestData, ResponseData> build() { + ResponseBody<RequestData, ResponseData> build() { var hazards = new ArrayList<HazardResponse>(); for (Imt imt : totalMap.keySet()) { @@ -347,7 +350,12 @@ public final class HazardService { Object server = Metadata.serverData(ServletUtil.THREAD_COUNT, timer); var response = new ResponseData(new ResponseMetadata(server), List.copyOf(hazards)); - return new Response<>(Status.SUCCESS, NAME, request, response, url); + return ResponseBody.<RequestData, ResponseData> success() + .name(NAME) + .url(url) + .request(request) + .response(response) + .build(); } } diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService2.java b/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService2.java index 3e58e39dd..9dddf3208 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService2.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService2.java @@ -24,15 +24,13 @@ 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.HazardController; -import gov.usgs.earthquake.nshmp.www.Response; +import gov.usgs.earthquake.nshmp.www.ResponseBody; import gov.usgs.earthquake.nshmp.www.WsUtils; import gov.usgs.earthquake.nshmp.www.meta.DoubleParameter; import gov.usgs.earthquake.nshmp.www.meta.Metadata; import gov.usgs.earthquake.nshmp.www.meta.Parameter; -import gov.usgs.earthquake.nshmp.www.meta.Status; import gov.usgs.earthquake.nshmp.www.services.ServicesUtil.ServiceQueryData; import gov.usgs.earthquake.nshmp.www.services.SourceServices.SourceModel; - import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; import jakarta.inject.Singleton; @@ -53,7 +51,12 @@ public final class HazardService2 { var url = request.getUri().getPath(); try { var usage = new RequestMetadata(ServletUtil.model());// SourceServices.ResponseData(); - var response = new Response(Status.USAGE, NAME, url, usage, url); + var response = ResponseBody.usage() + .name(NAME) + .url(url) + .request(url) + .response(usage) + .build(); var svcResponse = ServletUtil.GSON.toJson(response); return HttpResponse.ok(svcResponse); } catch (Exception e) { @@ -75,7 +78,7 @@ public final class HazardService2 { // var data = new RequestData(query); - Response<RequestData, ResponseData> response = process(request, args); + ResponseBody<RequestData, ResponseData> response = process(request, args); String svcResponse = ServletUtil.GSON.toJson(response); return HttpResponse.ok(svcResponse); @@ -84,7 +87,7 @@ public final class HazardService2 { } } - static Response<RequestData, ResponseData> process( + static ResponseBody<RequestData, ResponseData> process( HttpRequest<?> request, RequestData data) throws InterruptedException, ExecutionException { @@ -323,7 +326,7 @@ public final class HazardService2 { return this; } - Response<RequestData, ResponseData> build() { + ResponseBody<RequestData, ResponseData> build() { var hazards = new ArrayList<HazardResponse>(); for (Imt imt : totalMap.keySet()) { @@ -348,7 +351,12 @@ public final class HazardService2 { Object server = Metadata.serverData(ServletUtil.THREAD_COUNT, timer); var response = new ResponseData(new ResponseMetadata(server), List.copyOf(hazards)); - return new Response<>(Status.SUCCESS, NAME, request, response, url); + return ResponseBody.<RequestData, ResponseData> success() + .name(NAME) + .url(url) + .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 e0772386a..84024d73e 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 @@ -16,16 +16,14 @@ 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.RateController; -import gov.usgs.earthquake.nshmp.www.Response; +import gov.usgs.earthquake.nshmp.www.ResponseBody; import gov.usgs.earthquake.nshmp.www.WsUtils; import gov.usgs.earthquake.nshmp.www.meta.DoubleParameter; import gov.usgs.earthquake.nshmp.www.meta.Metadata; import gov.usgs.earthquake.nshmp.www.meta.Metadata.DefaultParameters; -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; import jakarta.inject.Singleton; @@ -60,8 +58,8 @@ public final class RateService { public static HttpResponse<String> handleDoGetUsage(HttpRequest<?> request, Service service) { try { var response = metadata(request, service); - var svcResponse = ServletUtil.GSON.toJson(response); - return HttpResponse.ok(svcResponse); + var json = ServletUtil.GSON.toJson(response); + return HttpResponse.ok(json); } catch (Exception e) { return ServicesUtil.handleError(e, service.name, request.getUri().getPath()); } @@ -96,22 +94,26 @@ public final class RateService { } } - static Response<String, Usage> metadata(HttpRequest<?> request, Service service) { + static ResponseBody<String, Usage> metadata(HttpRequest<?> request, Service service) { var parameters = service == Service.RATE ? new RateParameters() : new ProbabilityParameters(); var usage = new Usage(service, parameters); var url = request.getUri().getPath(); - return new Response<>(Status.USAGE, service.name, url, usage, url); + return ResponseBody.<String, Usage> usage() + .name(service.name) + .url(url) + .request(url) + .response(usage) + .build(); } - static Response<RequestData, ResponseData> processRequest( + static ResponseBody<RequestData, ResponseData> processRequest( HttpRequest<?> request, Service service, RequestData data) throws InterruptedException, ExecutionException { var timer = Stopwatch.createStarted(); var rates = calc(service, data); var responseData = new ResponseData(new ResponseMetadata(service, data), rates, timer); - return Response.<RequestData, ResponseData> builder() - .success() + return ResponseBody.<RequestData, ResponseData> success() .name(service.name) .request(data) .response(responseData) 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 a3e6d6a37..583b7528d 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 @@ -11,10 +11,8 @@ import gov.usgs.earthquake.nshmp.calc.Hazard; import gov.usgs.earthquake.nshmp.calc.HazardCalcs; import gov.usgs.earthquake.nshmp.calc.Site; import gov.usgs.earthquake.nshmp.model.HazardModel; -import gov.usgs.earthquake.nshmp.www.Response; +import gov.usgs.earthquake.nshmp.www.ResponseBody; import gov.usgs.earthquake.nshmp.www.WsUtils; -import gov.usgs.earthquake.nshmp.www.meta.Status; - import io.micronaut.http.HttpResponse; public class ServicesUtil { @@ -24,7 +22,12 @@ public class ServicesUtil { String name, String url) { var msg = e.getMessage() + " (see logs)"; - var svcResponse = new Response<>(Status.ERROR, name, url, msg, url); + var svcResponse = ResponseBody.error() + .name(name) + .url(url) + .request(url) + .response(msg) + .build(); var gson = new GsonBuilder().setPrettyPrinting().create(); var response = gson.toJson(svcResponse); e.printStackTrace(); 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 823445be9..638850fcf 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 @@ -1,10 +1,8 @@ package gov.usgs.earthquake.nshmp.www.services; import gov.usgs.earthquake.nshmp.model.Models; -import gov.usgs.earthquake.nshmp.www.Response; +import gov.usgs.earthquake.nshmp.www.ResponseBody; import gov.usgs.earthquake.nshmp.www.SourceLogicTreesController; -import gov.usgs.earthquake.nshmp.www.meta.Status; - import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; import jakarta.inject.Singleton; @@ -25,7 +23,12 @@ public class SourceLogicTreesService { try { var trees = Models.trees(ServletUtil.model()); - var response = new Response<>(Status.SUCCESS, NAME, url, trees, url); + var response = ResponseBody.success() + .name(NAME) + .url(url) + .request(url) + .response(trees) + .build(); return HttpResponse.ok(ServletUtil.GSON.toJson(response)); } catch (Exception e) { return ServicesUtil.handleError(e, NAME, url); @@ -39,7 +42,12 @@ public class SourceLogicTreesService { try { var tree = Models.tree(ServletUtil.model(), id); var requestData = new RequestData(id); - var response = new Response<>(Status.SUCCESS, NAME, requestData, tree, url); + var response = ResponseBody.success() + .name(NAME) + .url(url) + .request(requestData) + .response(tree) + .build(); return HttpResponse.ok(ServletUtil.GSON.toJson(response)); } catch (Exception e) { return ServicesUtil.handleError(e, NAME, url); 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 7db7d76b5..bc692eb6c 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 @@ -11,11 +11,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.Response; +import gov.usgs.earthquake.nshmp.www.ResponseBody; import gov.usgs.earthquake.nshmp.www.WsUtils; import gov.usgs.earthquake.nshmp.www.meta.Metadata; -import gov.usgs.earthquake.nshmp.www.meta.Status; - import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; import jakarta.inject.Singleton; @@ -48,10 +46,14 @@ public class SourceServices { public static HttpResponse<String> handleDoGetUsage(HttpRequest<?> request) { var url = request.getUri().getPath(); try { - var response = new Response<>( - Status.USAGE, NAME, url, new ResponseData(), url); - var jsonString = GSON.toJson(response); - return HttpResponse.ok(jsonString); + var response = ResponseBody.usage() + .name(NAME) + .url(url) + .request(url) + .response(new ResponseData()) + .build(); + var json = GSON.toJson(response); + return HttpResponse.ok(json); } catch (Exception e) { return ServicesUtil.handleError(e, NAME, url); } -- GitLab