Skip to content
Snippets Groups Projects
Commit e61cedc9 authored by Powers, Peter M.'s avatar Powers, Peter M.
Browse files

updated lib and ws-utils and refactored

parent e26caa4b
No related branches found
No related tags found
2 merge requests!593Production Release | nshm-haz,!585App work
...@@ -10,7 +10,7 @@ micronautRxVersion = 2.1.1 ...@@ -10,7 +10,7 @@ micronautRxVersion = 2.1.1
micronautPluginVersion = 3.1.1 micronautPluginVersion = 3.1.1
nodePluginVersion = 3.0.1 nodePluginVersion = 3.0.1
nodeVersion = 16.3.0 nodeVersion = 16.3.0
nshmpLibVersion = 0.8.2 nshmpLibVersion = 0.8.3
nshmpWsUtilsVersion = 0.1.7 nshmpWsUtilsVersion = 0.1.7
shadowVersion = 7.1.2 shadowVersion = 7.1.2
spotbugsVersion = 4.7.0 spotbugsVersion = 4.7.0
......
...@@ -98,26 +98,6 @@ public final class Metadata { ...@@ -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) { public static String errorMessage(String url, Throwable e, boolean trace) {
Error error = new Error(url, e, trace); Error error = new Error(url, e, trace);
return ServletUtil.GSON.toJson(error); return ServletUtil.GSON.toJson(error);
......
...@@ -24,16 +24,14 @@ import gov.usgs.earthquake.nshmp.gmm.Imt; ...@@ -24,16 +24,14 @@ import gov.usgs.earthquake.nshmp.gmm.Imt;
import gov.usgs.earthquake.nshmp.model.HazardModel; import gov.usgs.earthquake.nshmp.model.HazardModel;
import gov.usgs.earthquake.nshmp.model.SourceType; import gov.usgs.earthquake.nshmp.model.SourceType;
import gov.usgs.earthquake.nshmp.www.HazardController; 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.WsUtils;
import gov.usgs.earthquake.nshmp.www.meta.DoubleParameter; import gov.usgs.earthquake.nshmp.www.meta.DoubleParameter;
import gov.usgs.earthquake.nshmp.www.meta.Metadata; import gov.usgs.earthquake.nshmp.www.meta.Metadata;
import gov.usgs.earthquake.nshmp.www.meta.Parameter; 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.ServiceQueryData;
import gov.usgs.earthquake.nshmp.www.services.ServicesUtil.ServiceRequestData; import gov.usgs.earthquake.nshmp.www.services.ServicesUtil.ServiceRequestData;
import gov.usgs.earthquake.nshmp.www.services.SourceServices.SourceModel; import gov.usgs.earthquake.nshmp.www.services.SourceServices.SourceModel;
import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpRequest;
import io.micronaut.http.HttpResponse; import io.micronaut.http.HttpResponse;
import jakarta.inject.Singleton; import jakarta.inject.Singleton;
...@@ -53,8 +51,13 @@ public final class HazardService { ...@@ -53,8 +51,13 @@ public final class HazardService {
public static HttpResponse<String> handleDoGetMetadata(HttpRequest<?> request) { public static HttpResponse<String> handleDoGetMetadata(HttpRequest<?> request) {
var url = request.getUri().getPath(); var url = request.getUri().getPath();
try { try {
var usage = new RequestMetadata(ServletUtil.model());// SourceServices.ResponseData(); var usage = new RequestMetadata(ServletUtil.model());
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); var svcResponse = ServletUtil.GSON.toJson(response);
return HttpResponse.ok(svcResponse); return HttpResponse.ok(svcResponse);
} catch (Exception e) { } catch (Exception e) {
...@@ -82,7 +85,7 @@ public final class HazardService { ...@@ -82,7 +85,7 @@ public final class HazardService {
} }
} }
static Response<RequestData, ResponseData> process( static ResponseBody<RequestData, ResponseData> process(
HttpRequest<?> request, HttpRequest<?> request,
RequestData data) RequestData data)
throws InterruptedException, ExecutionException { throws InterruptedException, ExecutionException {
...@@ -322,7 +325,7 @@ public final class HazardService { ...@@ -322,7 +325,7 @@ public final class HazardService {
return this; return this;
} }
Response<RequestData, ResponseData> build() { ResponseBody<RequestData, ResponseData> build() {
var hazards = new ArrayList<HazardResponse>(); var hazards = new ArrayList<HazardResponse>();
for (Imt imt : totalMap.keySet()) { for (Imt imt : totalMap.keySet()) {
...@@ -347,7 +350,12 @@ public final class HazardService { ...@@ -347,7 +350,12 @@ public final class HazardService {
Object server = Metadata.serverData(ServletUtil.THREAD_COUNT, timer); Object server = Metadata.serverData(ServletUtil.THREAD_COUNT, timer);
var response = new ResponseData(new ResponseMetadata(server), List.copyOf(hazards)); 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();
} }
} }
......
...@@ -24,15 +24,13 @@ import gov.usgs.earthquake.nshmp.gmm.Imt; ...@@ -24,15 +24,13 @@ import gov.usgs.earthquake.nshmp.gmm.Imt;
import gov.usgs.earthquake.nshmp.model.HazardModel; import gov.usgs.earthquake.nshmp.model.HazardModel;
import gov.usgs.earthquake.nshmp.model.SourceType; import gov.usgs.earthquake.nshmp.model.SourceType;
import gov.usgs.earthquake.nshmp.www.HazardController; 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.WsUtils;
import gov.usgs.earthquake.nshmp.www.meta.DoubleParameter; import gov.usgs.earthquake.nshmp.www.meta.DoubleParameter;
import gov.usgs.earthquake.nshmp.www.meta.Metadata; import gov.usgs.earthquake.nshmp.www.meta.Metadata;
import gov.usgs.earthquake.nshmp.www.meta.Parameter; 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.ServiceQueryData;
import gov.usgs.earthquake.nshmp.www.services.SourceServices.SourceModel; import gov.usgs.earthquake.nshmp.www.services.SourceServices.SourceModel;
import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpRequest;
import io.micronaut.http.HttpResponse; import io.micronaut.http.HttpResponse;
import jakarta.inject.Singleton; import jakarta.inject.Singleton;
...@@ -53,7 +51,12 @@ public final class HazardService2 { ...@@ -53,7 +51,12 @@ public final class HazardService2 {
var url = request.getUri().getPath(); var url = request.getUri().getPath();
try { try {
var usage = new RequestMetadata(ServletUtil.model());// SourceServices.ResponseData(); 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); var svcResponse = ServletUtil.GSON.toJson(response);
return HttpResponse.ok(svcResponse); return HttpResponse.ok(svcResponse);
} catch (Exception e) { } catch (Exception e) {
...@@ -75,7 +78,7 @@ public final class HazardService2 { ...@@ -75,7 +78,7 @@ public final class HazardService2 {
// var data = new RequestData(query); // 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); String svcResponse = ServletUtil.GSON.toJson(response);
return HttpResponse.ok(svcResponse); return HttpResponse.ok(svcResponse);
...@@ -84,7 +87,7 @@ public final class HazardService2 { ...@@ -84,7 +87,7 @@ public final class HazardService2 {
} }
} }
static Response<RequestData, ResponseData> process( static ResponseBody<RequestData, ResponseData> process(
HttpRequest<?> request, HttpRequest<?> request,
RequestData data) throws InterruptedException, ExecutionException { RequestData data) throws InterruptedException, ExecutionException {
...@@ -323,7 +326,7 @@ public final class HazardService2 { ...@@ -323,7 +326,7 @@ public final class HazardService2 {
return this; return this;
} }
Response<RequestData, ResponseData> build() { ResponseBody<RequestData, ResponseData> build() {
var hazards = new ArrayList<HazardResponse>(); var hazards = new ArrayList<HazardResponse>();
for (Imt imt : totalMap.keySet()) { for (Imt imt : totalMap.keySet()) {
...@@ -348,7 +351,12 @@ public final class HazardService2 { ...@@ -348,7 +351,12 @@ public final class HazardService2 {
Object server = Metadata.serverData(ServletUtil.THREAD_COUNT, timer); Object server = Metadata.serverData(ServletUtil.THREAD_COUNT, timer);
var response = new ResponseData(new ResponseMetadata(server), List.copyOf(hazards)); 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();
} }
} }
......
...@@ -16,16 +16,14 @@ import gov.usgs.earthquake.nshmp.calc.Site; ...@@ -16,16 +16,14 @@ import gov.usgs.earthquake.nshmp.calc.Site;
import gov.usgs.earthquake.nshmp.geo.Location; import gov.usgs.earthquake.nshmp.geo.Location;
import gov.usgs.earthquake.nshmp.model.HazardModel; import gov.usgs.earthquake.nshmp.model.HazardModel;
import gov.usgs.earthquake.nshmp.www.RateController; 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.WsUtils;
import gov.usgs.earthquake.nshmp.www.meta.DoubleParameter; import gov.usgs.earthquake.nshmp.www.meta.DoubleParameter;
import gov.usgs.earthquake.nshmp.www.meta.Metadata; import gov.usgs.earthquake.nshmp.www.meta.Metadata;
import gov.usgs.earthquake.nshmp.www.meta.Metadata.DefaultParameters; 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.Key;
import gov.usgs.earthquake.nshmp.www.services.ServicesUtil.ServiceQueryData; 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.ServicesUtil.ServiceRequestData;
import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpRequest;
import io.micronaut.http.HttpResponse; import io.micronaut.http.HttpResponse;
import jakarta.inject.Singleton; import jakarta.inject.Singleton;
...@@ -60,8 +58,8 @@ public final class RateService { ...@@ -60,8 +58,8 @@ public final class RateService {
public static HttpResponse<String> handleDoGetUsage(HttpRequest<?> request, Service service) { public static HttpResponse<String> handleDoGetUsage(HttpRequest<?> request, Service service) {
try { try {
var response = metadata(request, service); var response = metadata(request, service);
var svcResponse = ServletUtil.GSON.toJson(response); var json = ServletUtil.GSON.toJson(response);
return HttpResponse.ok(svcResponse); return HttpResponse.ok(json);
} catch (Exception e) { } catch (Exception e) {
return ServicesUtil.handleError(e, service.name, request.getUri().getPath()); return ServicesUtil.handleError(e, service.name, request.getUri().getPath());
} }
...@@ -96,22 +94,26 @@ public final class RateService { ...@@ -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 parameters = service == Service.RATE ? new RateParameters() : new ProbabilityParameters();
var usage = new Usage(service, parameters); var usage = new Usage(service, parameters);
var url = request.getUri().getPath(); 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, HttpRequest<?> request,
Service service, Service service,
RequestData data) throws InterruptedException, ExecutionException { RequestData data) throws InterruptedException, ExecutionException {
var timer = Stopwatch.createStarted(); var timer = Stopwatch.createStarted();
var rates = calc(service, data); var rates = calc(service, data);
var responseData = new ResponseData(new ResponseMetadata(service, data), rates, timer); var responseData = new ResponseData(new ResponseMetadata(service, data), rates, timer);
return Response.<RequestData, ResponseData> builder() return ResponseBody.<RequestData, ResponseData> success()
.success()
.name(service.name) .name(service.name)
.request(data) .request(data)
.response(responseData) .response(responseData)
......
...@@ -11,10 +11,8 @@ import gov.usgs.earthquake.nshmp.calc.Hazard; ...@@ -11,10 +11,8 @@ import gov.usgs.earthquake.nshmp.calc.Hazard;
import gov.usgs.earthquake.nshmp.calc.HazardCalcs; import gov.usgs.earthquake.nshmp.calc.HazardCalcs;
import gov.usgs.earthquake.nshmp.calc.Site; import gov.usgs.earthquake.nshmp.calc.Site;
import gov.usgs.earthquake.nshmp.model.HazardModel; 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.WsUtils;
import gov.usgs.earthquake.nshmp.www.meta.Status;
import io.micronaut.http.HttpResponse; import io.micronaut.http.HttpResponse;
public class ServicesUtil { public class ServicesUtil {
...@@ -24,7 +22,12 @@ public class ServicesUtil { ...@@ -24,7 +22,12 @@ public class ServicesUtil {
String name, String name,
String url) { String url) {
var msg = e.getMessage() + " (see logs)"; 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 gson = new GsonBuilder().setPrettyPrinting().create();
var response = gson.toJson(svcResponse); var response = gson.toJson(svcResponse);
e.printStackTrace(); e.printStackTrace();
......
package gov.usgs.earthquake.nshmp.www.services; package gov.usgs.earthquake.nshmp.www.services;
import gov.usgs.earthquake.nshmp.model.Models; 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.SourceLogicTreesController;
import gov.usgs.earthquake.nshmp.www.meta.Status;
import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpRequest;
import io.micronaut.http.HttpResponse; import io.micronaut.http.HttpResponse;
import jakarta.inject.Singleton; import jakarta.inject.Singleton;
...@@ -25,7 +23,12 @@ public class SourceLogicTreesService { ...@@ -25,7 +23,12 @@ public class SourceLogicTreesService {
try { try {
var trees = Models.trees(ServletUtil.model()); 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)); return HttpResponse.ok(ServletUtil.GSON.toJson(response));
} catch (Exception e) { } catch (Exception e) {
return ServicesUtil.handleError(e, NAME, url); return ServicesUtil.handleError(e, NAME, url);
...@@ -39,7 +42,12 @@ public class SourceLogicTreesService { ...@@ -39,7 +42,12 @@ public class SourceLogicTreesService {
try { try {
var tree = Models.tree(ServletUtil.model(), id); var tree = Models.tree(ServletUtil.model(), id);
var requestData = new RequestData(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)); return HttpResponse.ok(ServletUtil.GSON.toJson(response));
} catch (Exception e) { } catch (Exception e) {
return ServicesUtil.handleError(e, NAME, url); return ServicesUtil.handleError(e, NAME, url);
......
...@@ -11,11 +11,9 @@ import gov.usgs.earthquake.nshmp.gmm.Gmm; ...@@ -11,11 +11,9 @@ import gov.usgs.earthquake.nshmp.gmm.Gmm;
import gov.usgs.earthquake.nshmp.gmm.Imt; import gov.usgs.earthquake.nshmp.gmm.Imt;
import gov.usgs.earthquake.nshmp.gmm.NehrpSiteClass; import gov.usgs.earthquake.nshmp.gmm.NehrpSiteClass;
import gov.usgs.earthquake.nshmp.model.HazardModel; 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.WsUtils;
import gov.usgs.earthquake.nshmp.www.meta.Metadata; 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.HttpRequest;
import io.micronaut.http.HttpResponse; import io.micronaut.http.HttpResponse;
import jakarta.inject.Singleton; import jakarta.inject.Singleton;
...@@ -48,10 +46,14 @@ public class SourceServices { ...@@ -48,10 +46,14 @@ public class SourceServices {
public static HttpResponse<String> handleDoGetUsage(HttpRequest<?> request) { public static HttpResponse<String> handleDoGetUsage(HttpRequest<?> request) {
var url = request.getUri().getPath(); var url = request.getUri().getPath();
try { try {
var response = new Response<>( var response = ResponseBody.usage()
Status.USAGE, NAME, url, new ResponseData(), url); .name(NAME)
var jsonString = GSON.toJson(response); .url(url)
return HttpResponse.ok(jsonString); .request(url)
.response(new ResponseData())
.build();
var json = GSON.toJson(response);
return HttpResponse.ok(json);
} catch (Exception e) { } catch (Exception e) {
return ServicesUtil.handleError(e, NAME, url); return ServicesUtil.handleError(e, NAME, url);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment