diff --git a/build.gradle b/build.gradle index c78af92822950c89b84ac6a4f23fcbf49817f2bb..ad66494967dbba109806bf2ee858f6050a3d2577 100644 --- a/build.gradle +++ b/build.gradle @@ -10,6 +10,7 @@ plugins { id "eclipse-wtp" id "jacoco" id "maven-publish" + id("io.micronaut.application") version "${micronautAppVersion}" } apply from: "${projectDir}/gradle/app-version.gradle" @@ -95,3 +96,12 @@ test { excludeTestsMatching "gov.usgs.earthquake.nshmp.model.NshmTests" } } + +graalvmNative.toolchainDetection = false +micronaut { + runtime("lambda_java") + processing { + incremental(true) + annotations("gov.usgs.earthquake.nshmp.www.*") + } +} diff --git a/gradle.properties b/gradle.properties index 8118a497abd267e2f0c8b0e72d3647bbb19841cb..16974b50fae880645864579e4917a5f250a21ca0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,22 +1,18 @@ -awsEc2Version = 1.11.619 -awsLambdaCoreVersion = 1.1.0 -awsLambdaVersion = 1.11.461 -awsS3Version = 1.11.579 +awsSsmVersion = 2.29.52 githooksVersion = 1.2.0 gitVersionVersion = 0.15.0 grgitVersion = 4.1.1 jacksonVersion = 2.9.0 jgitVersion = 6.7.0.202309050840-r junitVersion = 5.8.2 -micronautVersion = 3.2.3 -micronautRxVersion = 2.1.1 +micronautAppVersion = 3.7.10 +micronautVersion = 3.10.1 nodePluginVersion = 3.0.1 nodeVersion = 16.3.0 -nshmpLibVersion = 1.5.4 +nshmpLibVersion = 1.5.6 nshmpUtilsJavaVersion = 0.4.0 openApiVersion = 4.0.0 shadowVersion = 7.1.2 -spotbugsVersion = 4.7.0 +spotbugsVersion = 4.7.3 spotlessVersion = 6.0.4 -swaggerParserVersion = 2.0.30 -swaggerVersion = 2.1.7 +swaggerParserVersion = 2.1.21 diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle index 68834b9a1653ec5b71ff357f9e6b3992ac472423..b1a32d9ec88a43ac67e8ca337f0af7bc540c378d 100644 --- a/gradle/dependencies.gradle +++ b/gradle/dependencies.gradle @@ -12,31 +12,21 @@ dependencies { implementation "org.eclipse.jgit:org.eclipse.jgit:${jgitVersion}" // AWS - implementation "com.amazonaws:aws-lambda-java-core:${awsLambdaCoreVersion}" - implementation "com.amazonaws:aws-java-sdk-lambda:${awsLambdaVersion}" - implementation "com.amazonaws:aws-java-sdk-s3:${awsS3Version}" - implementation "com.amazonaws:aws-java-sdk-ec2:${awsEc2Version}" + implementation "software.amazon.awssdk:ssm:${awsSsmVersion}" // Micronaut - annotationProcessor platform("io.micronaut:micronaut-bom:${micronautVersion}") - annotationProcessor "io.micronaut:micronaut-inject-java" - annotationProcessor "io.micronaut:micronaut-validation" - implementation platform("io.micronaut:micronaut-bom:${micronautVersion}") - implementation "io.micronaut:micronaut-http-client" - implementation "io.micronaut:micronaut-inject" - implementation "io.micronaut:micronaut-validation" - implementation "io.micronaut:micronaut-runtime" - implementation "io.micronaut:micronaut-http-server-netty" - implementation "io.projectreactor:reactor-core" - implementation "io.micronaut.rxjava3:micronaut-rxjava3:${micronautRxVersion}" - implementation "com.fasterxml.jackson.module:jackson-module-parameter-names:${jacksonVersion}" - runtimeOnly "ch.qos.logback:logback-classic" + annotationProcessor("io.micronaut:micronaut-http-validation") + implementation("io.micronaut:micronaut-jackson-databind") + implementation("io.micronaut.crac:micronaut-crac") + implementation("jakarta.annotation:jakarta.annotation-api") + implementation("io.micronaut.aws:micronaut-function-aws-api-proxy") + runtimeOnly("ch.qos.logback:logback-classic") // Swagger - annotationProcessor("io.micronaut.openapi:micronaut-openapi:${openApiVersion}") + annotationProcessor("io.micronaut.openapi:micronaut-openapi") implementation("io.micronaut.openapi:micronaut-openapi") - implementation("io.swagger.core.v3:swagger-annotations:${swaggerVersion}") - implementation("io.swagger.core.v3:swagger-models:${swaggerVersion}") + implementation("io.swagger.core.v3:swagger-annotations") + implementation("io.swagger.core.v3:swagger-models") implementation("io.swagger.parser.v3:swagger-parser:${swaggerParserVersion}") // junit diff --git a/nshms.yml b/nshms.yml index 8e2c8e74f1c8e2f2a43ec3db58efe1c40e74a7ba..f60efbace57bf38edc4c23e2eead30dbda8b31e0 100644 --- a/nshms.yml +++ b/nshms.yml @@ -4,29 +4,18 @@ nshms: # Alaska 2007 NSHM - - repo: nshm-alaska - tag: 2.2.3 + repo: 'nshm-alaska' + tag: '2.2.3' year: 2007 deployment: - baseHref: /ws/nshmp/alaska-2007/dynamic + baseHref: '/ws/nshmp/alaska-2007/dynamic' + type: 'LAMBDA' environments: - development: - cpu: 2 - memory: 4 - min: 1 - max: 3 - staging: - cpu: 2 - memory: 4 - min: 1 - max: 3 - # production: - # cpu: 2 - # memory: 4 - # min: 1 - # max: 5 - label: 2007 Alaska Dynamic Services - model: ALASKA_2007 + - 'development' + - 'staging' + # - production + label: '2007 Alaska Dynamic Services' + model: 'ALASKA_2007' test: site: latitude: 61.2 @@ -35,29 +24,18 @@ nshms: # Alaska 2023 NSHM - - repo: nshm-alaska - tag: 3.b.9 + repo: 'nshm-alaska' + tag: '3.b.9' year: 2023 deployment: - baseHref: /ws/nshmp/alaska-2023/dynamic + baseHref: '/ws/nshmp/alaska-2023/dynamic' + type: 'LAMBDA' environments: - development: - cpu: 4 - memory: 32 - min: 1 - max: 3 - staging: - cpu: 8 - memory: 32 - min: 1 - max: 3 - production: - cpu: 8 - memory: 32 - min: 1 - max: 10 - label: 2023 Alaska Dynamic Services (beta) - model: ALASKA_2023 + - 'development' + - 'staging' + - 'production' + label: '2023 Alaska Dynamic Services (beta)' + model: 'ALASKA_2023' test: site: latitude: 61.2 @@ -66,29 +44,18 @@ nshms: # CONUS 2018 NSHM - - repo: nshm-conus - tag: 5.2.3 + repo: 'nshm-conus' + tag: '5.2.3' year: 2018 deployment: - baseHref: /ws/nshmp/conus-2018/dynamic + baseHref: '/ws/nshmp/conus-2018/dynamic' + type: 'LAMBDA' environments: - development: - cpu: 4 - memory: 32 - min: 1 - max: 3 - staging: - cpu: 8 - memory: 32 - min: 1 - max: 3 - production: - cpu: 16 - memory: 32 - min: 1 - max: 15 - label: 2018 Conterminous U.S. Dynamic Services - model: CONUS_2018 + - 'development' + - 'staging' + - 'production' + label: '2018 Conterminous U.S. Dynamic Services' + model: 'CONUS_2018' test: site: latitude: 37.75 @@ -97,29 +64,18 @@ nshms: # CONUS 2023 NSHM - - repo: nshm-conus - tag: 6.1.0 + repo: 'nshm-conus' + tag: '6.1.0' year: 2023 deployment: - baseHref: /ws/nshmp/conus-2023/dynamic + baseHref: '/ws/nshmp/conus-2023/dynamic' + type: 'LAMBDA' environments: - development: - cpu: 4 - memory: 32 - min: 1 - max: 3 - staging: - cpu: 8 - memory: 32 - min: 1 - max: 3 - production: - cpu: 16 - memory: 32 - min: 1 - max: 15 - label: 2023 Conterminous U.S. Dynamic Services - model: CONUS_2023 + - 'development' + - 'staging' + - 'production' + label: '2023 Conterminous U.S. Dynamic Services' + model: 'CONUS_2023' test: site: latitude: 37.75 @@ -128,29 +84,18 @@ nshms: # Hawaii 2021 NSHM - - repo: nshm-hawaii - tag: 2.0.2 + repo: 'nshm-hawaii' + tag: '2.0.2' year: 2021 deployment: - baseHref: /ws/nshmp/hawaii-2021/dynamic + baseHref: '/ws/nshmp/hawaii-2021/dynamic' + type: 'LAMBDA' environments: - development: - cpu: 2 - memory: 4 - min: 1 - max: 3 - staging: - cpu: 4 - memory: 4 - min: 1 - max: 3 - production: - cpu: 8 - memory: 8 - min: 1 - max: 10 - label: 2021 Hawaii Dynamic Services - model: HAWAII_2021 + - 'development' + - 'staging' + - 'production' + label: '2021 Hawaii Dynamic Services' + model: 'HAWAII_2021' test: site: latitude: 21.3 @@ -159,29 +104,18 @@ nshms: # PRVI 2025 NSHM - - repo: nshm-prvi - tag: 2.a.1 + repo: 'nshm-prvi' + tag: '2.a.1' year: 2025 deployment: - baseHref: /ws/nshmp/prvi-2025/dynamic + baseHref: '/ws/nshmp/prvi-2025/dynamic' + type: 'LAMBDA' environments: - development: - cpu: 4 - memory: 32 - min: 1 - max: 3 - staging: - cpu: 8 - memory: 32 - min: 1 - max: 3 - # production: - # cpu: 8 - # memory: 16 - # min: 1 - # max: 10 - label: 2025 PRVI Dynamic Services - model: PRVI_2025 + - 'development' + - 'staging' + # - production: + label: '2025 PRVI Dynamic Services' + model: 'PRVI_2025' test: site: latitude: 18.47 diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/HazVersion.java b/src/main/java/gov/usgs/earthquake/nshmp/www/HazVersion.java index 38d88f8ce479870063b8b581583b9e5a397b97c9..538964aa5be6630bb36ebd924d8f5930ba95b470 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/HazVersion.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/HazVersion.java @@ -12,6 +12,8 @@ import gov.usgs.earthquake.nshmp.internal.LibVersion; public class HazVersion implements AppVersion { + private static final String MODEL_FILE = "model-version.json"; + public static VersionInfo[] appVersions(Path modelPath) { var versions = new ArrayList<VersionInfo>(); versions.add(new HazVersion().getVersionInfo()); @@ -44,21 +46,28 @@ public class HazVersion implements AppVersion { */ private static VersionInfo getNshmVersion(Path modelPath) { try { - var git = Git.open(modelPath.toFile()); - var repo = git.getRepository(); - var url = repo - .getConfig() - .getString("remote", "origin", "url") - .split(".git")[0]; - var slash = url.split("/"); - var projectName = slash[slash.length - 1]; + var resource = HazVersion.class.getResource("/version/" + MODEL_FILE); + + if (resource != null) { + return AppVersion.versionInfo(resource); + } else { + var git = Git.open(modelPath.toFile()); + var repo = git.getRepository(); + var url = repo + .getConfig() + .getString("remote", "origin", "url") + .split(".git")[0]; + var slash = url.split("/"); + var projectName = slash[slash.length - 1]; + + return VersionInfo.builder() + .projectName(projectName) + .url(url) + .version(git.describe().call()) + .gitHash(repo.getRefDatabase().findRef("HEAD").getObjectId().name()) + .build(); + } - return VersionInfo.builder() - .projectName(projectName) - .url(url) - .version(git.describe().call()) - .gitHash(repo.getRefDatabase().findRef("HEAD").getObjectId().name()) - .build(); } catch (Exception e) { return null; } diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/PrimingResource.java b/src/main/java/gov/usgs/earthquake/nshmp/www/PrimingResource.java new file mode 100644 index 0000000000000000000000000000000000000000..e8713d7a3dec7198bd526795469e294d9707fa01 --- /dev/null +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/PrimingResource.java @@ -0,0 +1,75 @@ +package gov.usgs.earthquake.nshmp.www; + +import java.nio.file.Path; + +import org.crac.Context; +import org.crac.Resource; + +import software.amazon.awssdk.services.ssm.SsmClient; +import software.amazon.awssdk.services.ssm.model.ParameterType; +import software.amazon.awssdk.services.ssm.model.PutParameterRequest; +import software.amazon.awssdk.services.ssm.model.SsmException; + +import com.amazonaws.serverless.proxy.internal.testutils.MockLambdaContext; +import com.amazonaws.serverless.proxy.model.AwsProxyRequest; + +import gov.usgs.earthquake.nshmp.gmm.Gmm; + +import io.micronaut.context.annotation.Value; +import io.micronaut.crac.OrderedResource; +import io.micronaut.function.aws.proxy.MicronautLambdaHandler; +import jakarta.inject.Singleton; + +/** + * Prime application for AWS Lambda snapstart. + */ +@Singleton +public class PrimingResource implements OrderedResource { + + @Value("${nshmp-haz.model-path}") + private Path modelPath; + + @Override + public void beforeCheckpoint(Context<? extends Resource> context) throws Exception { + ServletUtil.model(ServletUtil.loadModel(modelPath)); + updateParameter(); + + try (MicronautLambdaHandler handler = new MicronautLambdaHandler()) { + handler.handleRequest( + getAwsProxyRequest("/hazard"), + new MockLambdaContext()); + } + } + + @Override + public void afterRestore(Context<? extends Resource> context) throws Exception { + // Reset executors on restore as Shutdown event does not fire on AWS lambda + ServletUtil.resetExecutors(); + } + + private static AwsProxyRequest getAwsProxyRequest(String path) { + final AwsProxyRequest awsProxyRequest = new AwsProxyRequest(); + awsProxyRequest.setHttpMethod("GET"); + awsProxyRequest.setPath(path); + return awsProxyRequest; + } + + private void updateParameter() throws SsmException { + var parameterName = System.getenv("IMT_PARAMETER_NAME"); + + if (parameterName == null) { + throw new RuntimeException("IMT_PARAMETER_NAME not found"); + } + + var client = SsmClient.create(); + + var parameterRequest = PutParameterRequest.builder() + .name(parameterName) + .type(ParameterType.STRING) + .value(ServletUtil.GSON2.toJson(Gmm.supportedImts(ServletUtil.model().gmms()))) + .overwrite(true) + .build(); + + client.putParameter(parameterRequest); + } +} 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 18bd54070b8a59c1e14cef3f8d6420219adae510..b44aaaa6feef89af9af27fb38c2bb75854d1c6cb 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/ServletUtil.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/ServletUtil.java @@ -11,6 +11,7 @@ import java.nio.file.FileSystems; import java.nio.file.Path; import java.nio.file.Paths; import java.util.HashMap; +import java.util.Optional; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -51,8 +52,8 @@ public class ServletUtil { public static final Gson GSON; public static final Gson GSON2; - public static final ListeningExecutorService CALC_EXECUTOR; - public static final ExecutorService TASK_EXECUTOR; + public static ListeningExecutorService CALC_EXECUTOR; + public static ExecutorService TASK_EXECUTOR; public static final int THREAD_COUNT; @@ -61,9 +62,13 @@ public class ServletUtil { private static HazardModel HAZARD_MODEL; + private static Optional<String> awsRuntime = + Optional.ofNullable(System.getenv("AWS_LAMBDA_RUNTIME_API")); + static { THREAD_COUNT = getRuntime().availableProcessors(); - CALC_EXECUTOR = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(THREAD_COUNT)); + CALC_EXECUTOR = + MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(THREAD_COUNT)); TASK_EXECUTOR = Executors.newSingleThreadExecutor(); GSON = new GsonBuilder() .registerTypeAdapter(Imt.class, new WsUtils.EnumSerializer<Imt>()) @@ -85,7 +90,22 @@ public class ServletUtil { .serializeNulls() .setPrettyPrinting() .create(); + } + + /** + * Reset executors on AWS Lambda SnapStart restore + */ + static void resetExecutors() { + CALC_EXECUTOR.shutdown(); + TASK_EXECUTOR.shutdown(); + CALC_EXECUTOR = + MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(THREAD_COUNT)); + TASK_EXECUTOR = Executors.newSingleThreadExecutor(); + } + + static void model(HazardModel model) { + HAZARD_MODEL = model; } public static HazardModel model() { @@ -100,10 +120,12 @@ public class ServletUtil { @EventListener void startup(StartupEvent event) { - HAZARD_MODEL = loadModel(modelPath); + if (!awsRuntime.isPresent()) { + HAZARD_MODEL = loadModel(modelPath); + } } - private HazardModel loadModel(Path path) { + static HazardModel loadModel(Path path) { URL url; URI uri; String uriString; diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/SwaggerController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/SwaggerController.java index 18fd6f3030f0ee6df671d8f58aa3522a66cc7c3f..2068cc2e0521d02c2443870daf33a2e4f16f52ea 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/SwaggerController.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/SwaggerController.java @@ -1,6 +1,7 @@ package gov.usgs.earthquake.nshmp.www; import java.util.List; +import java.util.Optional; import org.slf4j.LoggerFactory; @@ -43,7 +44,7 @@ public class SwaggerController { } catch (Exception e) { return ServletUtil.error( LoggerFactory.getLogger("Swagger"), - e, "Swagger", request.getUri().toString()); + e, "Swagger", request.getUri().getPath()); } } @@ -52,20 +53,20 @@ public class SwaggerController { HazardModel model) { var openApi = new OpenAPIV3Parser().read("META-INF/swagger/nshmp-haz.yml"); var bounds = model.bounds(); - SwaggerUtils.addLocationBounds(openApi, bounds.min, bounds.max); var components = openApi.getComponents(); var schemas = components.getSchemas(); SwaggerUtils.siteClassSchema(schemas, List.copyOf(model.siteClasses().keySet())); SwaggerUtils.imtSchema(schemas, List.copyOf(model.config().hazard.imts)); + var boundsInfo = SwaggerUtils.locationBoundsInfo(bounds.min, bounds.max, Optional.empty()); FeaturesService.featureTypeSchema(schemas); openApi.servers(null); openApi.getInfo().setTitle(model.name() + " Web Services"); openApi.getInfo().setDescription( "National Seismic Hazard Model (NSHM) hazard calculations and queries for the " + - model.name() + " hazard model."); + model.name() + " hazard model.\n\n" + + boundsInfo); return openApi; } - } diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/SwaggerUIController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/SwaggerUIController.java new file mode 100644 index 0000000000000000000000000000000000000000..d18a7ff4e6ced31aba7e4df911a4d12513869713 --- /dev/null +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/SwaggerUIController.java @@ -0,0 +1,120 @@ +package gov.usgs.earthquake.nshmp.www; + +import java.io.BufferedInputStream; +import java.io.IOException; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.util.Optional; + +import org.apache.commons.io.IOUtils; + +import io.micronaut.core.io.scan.ClassPathResourceLoader; +import io.micronaut.http.HttpResponse; +import io.micronaut.http.MediaType; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.PathVariable; +import io.micronaut.http.annotation.Produces; +import io.swagger.v3.oas.annotations.Hidden; +import jakarta.annotation.Nullable; +import jakarta.inject.Inject; + +/** + * Handle Swagger static resources. + */ +@Controller( + value = "/", + produces = { + MediaType.APPLICATION_YAML, + MediaType.TEXT_HTML, + MediaType.IMAGE_PNG, + MediaType.TEXT_PLAIN, + "font/woff", + "font/woff2", + "font/ttf", + "image/svg+xml", + "text/css", + "text/javascript", + }) +public class SwaggerUIController { + private static final String SWAGGER_UI_RESOURCE_LOCATION = "classpath:swagger/"; + private final ClassPathResourceLoader loader; + + public SwaggerUIController(ClassPathResourceLoader loader) { + this.loader = loader; + } + + @Inject + private NshmpMicronautServlet servlet; + + @Get("{/path:.*}{.ext:png}") + @Produces(MediaType.IMAGE_PNG) + @Hidden + public byte[] getSwaggerPngImages( + @PathVariable @Nullable String path, + @PathVariable @Nullable String ext) throws IOException { + Optional<URL> resource = loader.getResource(SWAGGER_UI_RESOURCE_LOCATION + path + "." + ext); + return IOUtils.toByteArray(resource.orElseThrow().openStream()); + } + + @Get("{/path:.*}{.ext:b64}") + @Produces(MediaType.TEXT_PLAIN) + @Hidden + public HttpResponse<String> getSwaggerBase64Images( + @PathVariable @Nullable String path, + @PathVariable @Nullable String ext) throws IOException { + return HttpResponse.ok(getResourceString(SWAGGER_UI_RESOURCE_LOCATION + path + "." + ext)) + .contentType(MediaType.TEXT_PLAIN); + } + + @Get("{/path:.*}{.ext:css|js}") + @Produces({ "text/css", "text/javascript" }) + @Hidden + public String getSwaggerLibrary( + @PathVariable @Nullable String path, + @PathVariable @Nullable String ext) throws IOException { + return getResourceString(SWAGGER_UI_RESOURCE_LOCATION + path + "." + ext); + } + + @Get("{/path:.*}{.ext:svg}") + @Produces("image/svg+xml") + @Hidden + public String getSwaggerSvgImages( + @PathVariable @Nullable String path, + @PathVariable @Nullable String ext) throws IOException { + return getResourceString(SWAGGER_UI_RESOURCE_LOCATION + path + "." + ext); + } + + @Get("{/path:.*}{.ext:eot}") + @Produces("application/vnd.ms-fontobject") + @Hidden + public String getSwaggerEotFont( + @PathVariable @Nullable String path, + @PathVariable @Nullable String ext) throws IOException { + return getResourceString(SWAGGER_UI_RESOURCE_LOCATION + path + "." + ext); + } + + @Get("{/path:.*}{.ext:woff|woff2|ttf|otf}") + @Produces("font/*") + @Hidden + public String getSwaggerFont( + @PathVariable @Nullable String path, + @PathVariable @Nullable String ext) throws IOException { + return getResourceString(SWAGGER_UI_RESOURCE_LOCATION + path + "." + ext); + } + + @Get("/") + @Produces(MediaType.TEXT_HTML) + @Hidden + public String getSwaggerIndexPage() throws IOException { + return getResourceString("classpath:swagger/index.html"); + } + + private String getResourceString(String path) throws IOException { + Optional<URL> resource = loader.getResource(path); + + return IOUtils.toString( + (BufferedInputStream) resource.orElseThrow().getContent(), + StandardCharsets.UTF_8); + } +} diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/DisaggController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/DisaggController.java index ae7cb13e77582ee9cb78da46c58325cedd516a6d..1d7c49c58a2f408c68fd0057062ffbdfe64bed69 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/DisaggController.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/DisaggController.java @@ -69,7 +69,7 @@ public class DisaggController { return ServletUtil.error( DisaggService.LOG, e, DisaggService.NAME, - http.getUri().toString()); + http.getUri().getPath()); } } @@ -118,7 +118,7 @@ public class DisaggController { return ServletUtil.error( DisaggService.LOG, e, DisaggService.NAME, - http.getUri().toString()); + http.getUri().getPath()); } } @@ -162,7 +162,7 @@ public class DisaggController { return ServletUtil.error( DisaggService.LOG, e, DisaggService.NAME, - http.getUri().toString()); + http.getUri().getPath()); } } 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 a0bdb002b8be81bd0a4f31bf275aea0b632de2a5..290cabec9fcd621881b2fe0899c6e426e237c403 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 @@ -79,7 +79,7 @@ public final class DisaggService { } static HttpResponse<String> getMetadata(HttpRequest<?> request) { - var url = request.getUri().toString(); + var url = request.getUri().getPath(); var usage = new Metadata(ServletUtil.model()); var response = ResponseBody.usage() .name(NAME) @@ -103,7 +103,7 @@ public final class DisaggService { .build(); var body = ResponseBody.success() .name(NAME) - .url(request.http.getUri().toString()) + .url(request.http.getUri().getPath()) .metadata(new ResponseMetadata(HazVersion.appVersions(ServletUtil.model().root()))) .request(request) .response(response) @@ -123,7 +123,7 @@ public final class DisaggService { .build(); var body = ResponseBody.success() .name(NAME) - .url(request.http.getUri().toString()) + .url(request.http.getUri().getPath()) .metadata(new ResponseMetadata(HazVersion.appVersions(ServletUtil.model().root()))) .request(request) .response(response) diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/HazardController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/HazardController.java index 261b62b69b173fd23e98c07eaab8fc17050737c7..15c4de0d62f79441ff0542301824af19d44e893a 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/HazardController.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/HazardController.java @@ -58,12 +58,13 @@ public class HazardController { @Get(produces = MediaType.APPLICATION_JSON) public HttpResponse<String> doGetMetadata(HttpRequest<?> http) { try { - return HazardService.getMetadata(http); + var response = HazardService.getMetadata(http); + return response; } catch (Exception e) { return ServletUtil.error( HazardService.LOG, e, HazardService.NAME, - http.getUri().toString()); + http.getUri().getPath()); } } @@ -110,7 +111,7 @@ public class HazardController { return ServletUtil.error( HazardService.LOG, e, HazardService.NAME, - http.getUri().toString()); + http.getUri().getPath()); } } 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 42830d66d40218da8e34f8686dbcc699787f5754..f36cd7984287d7e7af3f2e85abcf43728e7ba56b 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 @@ -63,7 +63,7 @@ public final class HazardService { private static final String TOTAL_KEY = "Total"; public static HttpResponse<String> getMetadata(HttpRequest<?> request) { - var url = request.getUri().toString(); + var url = request.getUri().getPath(); var usage = new Metadata(ServletUtil.model()); var body = ResponseBody.usage() .name(NAME) @@ -87,7 +87,7 @@ public final class HazardService { .build(); var body = ResponseBody.success() .name(NAME) - .url(request.http.getUri().toString()) + .url(request.http.getUri().getPath().toString()) .metadata(new ResponseMetadata(HazVersion.appVersions(ServletUtil.model().root()))) .request(request) .response(response) @@ -136,6 +136,7 @@ public final class HazardService { Metadata(HazardModel model) { this.model = new SourceModel(model); + longitude = new DoubleParameter( "Longitude", "°", diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeatureCollectionService.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeatureCollectionService.java index ed865dace6fcb6a3c5cf826117c50c9523f52591..566def814a753bc8b15929135482d8d07cdaabb4 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeatureCollectionService.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeatureCollectionService.java @@ -31,7 +31,7 @@ public class FeatureCollectionService { } else { var response = ResponseBody.<RequestData, JsonElement> success() .name(name) - .url(http.getUri().toString()) + .url(http.getUri().getPath()) .metadata(new ResponseMetadata(HazVersion.appVersions(ServletUtil.model().root()))) .request(requestData) .response(fc.toJsonTree()) diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesController.java index 5276a2afd111e695de7c1297fc7cd54c6d5dcd44..6ca2ed7f1307daa3ca51c0a42bdd6aa8ac16f68e 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesController.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesController.java @@ -62,7 +62,7 @@ public class FeaturesController { return ServletUtil.error( FeaturesService.LOG, e, FeaturesService.NAME, - http.getUri().toString()); + http.getUri().getPath()); } } diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesService.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesService.java index a7ce6e5423567449f4550aba80e8bbaf84d12b24..1477b2204e4c5aa44e9bf77cf85c9b2cca7dc71b 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesService.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesService.java @@ -91,7 +91,7 @@ public class FeaturesService { private static HttpResponse<String> processResponse( HttpRequest<?> request, RequestData requestData) { - var url = request.getUri().toString(); + var url = request.getUri().getPath(); var features = requestData.featureType == FeatureType.ALL ? Models.features(ServletUtil.model(), Optional.empty()) @@ -120,7 +120,7 @@ public class FeaturesService { } private static HttpResponse<String> metadata(HttpRequest<?> request) { - var url = request.getUri().toString(); + var url = request.getUri().getPath(); var metadata = new Metadata(ServletUtil.model()); var response = ResponseBody.usage() .name(NAME) diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/LogicTreesController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/LogicTreesController.java index 2f941ff14789f3fe25383dea32c0bb8b150c654b..7b2eb74eb1b7c7d6c5668fd6ddf43a2c044ea7a7 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/LogicTreesController.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/LogicTreesController.java @@ -58,7 +58,7 @@ public class LogicTreesController { return ServletUtil.error( LogicTreesService.LOG, e, LogicTreesService.NAME, - http.getUri().toString()); + http.getUri().getPath()); } } @@ -82,7 +82,7 @@ public class LogicTreesController { return ServletUtil.error( LogicTreesService.LOG, e, LogicTreesService.NAME, - http.getUri().toString()); + http.getUri().getPath()); } } @@ -106,7 +106,7 @@ public class LogicTreesController { return ServletUtil.error( LogicTreesService.LOG, e, LogicTreesService.NAME, - http.getUri().toString()); + http.getUri().getPath()); } } diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/LogicTreesService.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/LogicTreesService.java index 3d961d8bd07493b2bb00e95a939e0779720c1c90..ce64d2d41838c4d665860481d190a1f86d9bd631 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/LogicTreesService.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/LogicTreesService.java @@ -27,7 +27,7 @@ public class LogicTreesService { static final Logger LOG = LoggerFactory.getLogger(LogicTreesService.class); public static HttpResponse<String> getMetadata(HttpRequest<?> request) { - var url = request.getUri().toString(); + var url = request.getUri().getPath(); var metadata = new Metadata(ServletUtil.model()); var response = ResponseBody.usage() .name(NAME) @@ -40,7 +40,7 @@ public class LogicTreesService { } public static HttpResponse<String> getFeatureTree(HttpRequest<?> request, Integer id) { - var url = request.getUri().toString(); + var url = request.getUri().getPath(); var featureTree = Models.features(ServletUtil.model(), id); var requestData = new RequestData(id); var response = ResponseBody.success() @@ -54,7 +54,7 @@ public class LogicTreesService { } public static HttpResponse<String> getMfdTree(HttpRequest<?> request, Integer id) { - var url = request.getUri().toString(); + var url = request.getUri().getPath(); var mfdTree = Models.tree(ServletUtil.model(), id); var requestData = new RequestData(id); var response = ResponseBody.success() diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/MapController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/MapController.java index dffe697935206db22071c661dbfaeb25e47d3657..dc9b524e63153c422fae639c32a61a8fb9fb3a8a 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/MapController.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/MapController.java @@ -69,7 +69,7 @@ public class MapController { LOG, e, NAME, - http.getUri().toString()); + http.getUri().getPath()); } } diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/MfdsController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/MfdsController.java index 3d87c87bb4dd583ed65f3528671a0d2511829333..d095575e0cc5e414cb83df199a222c249c3d0198 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/MfdsController.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/MfdsController.java @@ -64,7 +64,7 @@ public class MfdsController { return ServletUtil.error( LogicTreesService.LOG, e, LogicTreesService.NAME, - http.getUri().toString()); + http.getUri().getPath()); } } @@ -90,7 +90,7 @@ public class MfdsController { return ServletUtil.error( LogicTreesService.LOG, e, LogicTreesService.NAME, - http.getUri().toString()); + http.getUri().getPath()); } } @@ -118,7 +118,7 @@ public class MfdsController { return ServletUtil.error( LogicTreesService.LOG, e, LogicTreesService.NAME, - http.getUri().toString()); + http.getUri().getPath()); } } diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/MfdsService.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/MfdsService.java index 4acad3ac39db553762e4cfc548e9c39368173128..b445bb90d3422a6038f0138000e1047110c1b032 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/MfdsService.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/MfdsService.java @@ -32,7 +32,7 @@ public class MfdsService { static final Logger LOG = LoggerFactory.getLogger(LogicTreesService.class); public static HttpResponse<String> getMetadata(HttpRequest<?> request) { - var url = request.getUri().toString(); + var url = request.getUri().getPath(); var metadata = new Metadata(ServletUtil.model()); var response = ResponseBody.usage() .name(NAME) @@ -49,7 +49,7 @@ public class MfdsService { TectonicSetting setting, Optional<SourceType> type) { - var url = request.getUri().toString(); + var url = request.getUri().getPath(); var mfd = Models.mfd(ServletUtil.model(), setting, type); var requestData = new RequestData(setting, type.orElse(null)); var response = ResponseBody.success() diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/ProbabilityController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/ProbabilityController.java index 33dbd1b172b7d58bbcaab09b6675a442fb536cd1..75a430010a7e6a32e104acf0be23d3c50d15b376 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/ProbabilityController.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/ProbabilityController.java @@ -57,7 +57,7 @@ public class ProbabilityController { return ServletUtil.error( RateService.LOG, e, RateService.NAME_PROBABILITY, - http.getUri().toString()); + http.getUri().getPath()); } } @@ -98,7 +98,7 @@ public class ProbabilityController { return ServletUtil.error( RateService.LOG, e, RateService.NAME_PROBABILITY, - http.getUri().toString()); + http.getUri().getPath()); } } diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/RateController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/RateController.java index 8dffb0c1fd894303271ee5ac796ea16a9c2ea78d..1ad8fa730622f2cf06cfbbceb64b6a522d5d2fcf 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/RateController.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/RateController.java @@ -57,7 +57,7 @@ public class RateController { return ServletUtil.error( RateService.LOG, e, RateService.NAME_RATE, - http.getUri().toString()); + http.getUri().getPath()); } } @@ -93,7 +93,7 @@ public class RateController { return ServletUtil.error( RateService.LOG, e, RateService.NAME_RATE, - http.getUri().toString()); + http.getUri().getPath()); } } diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/RateService.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/RateService.java index 0907b014c71b1bb890cc9b372d119b58e8222774..59246530d7358c50a78d24ac760eb1e7bc0a6424 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/RateService.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/RateService.java @@ -68,7 +68,7 @@ public final class RateService { .build(); var body = ResponseBody.success() .name(NAME_RATE) - .url(request.http.getUri().toString()) + .url(request.http.getUri().getPath()) .metadata(new ResponseMetadata(HazVersion.appVersions(ServletUtil.model().root()))) .request(request) .response(response) @@ -87,7 +87,7 @@ public final class RateService { .build(); var body = ResponseBody.success() .name(NAME_PROBABILITY) - .url(request.http.getUri().toString()) + .url(request.http.getUri().getPath()) .metadata(new ResponseMetadata(HazVersion.appVersions(ServletUtil.model().root()))) .request(request) .response(response) @@ -332,7 +332,7 @@ public final class RateService { } public static HttpResponse<String> getRateMetadata(HttpRequest<?> request) { - var url = request.getUri().toString(); + var url = request.getUri().getPath(); var usage = new Metadata(ServletUtil.model()); var body = ResponseBody.usage() .name(NAME_RATE) @@ -346,7 +346,7 @@ public final class RateService { } public static HttpResponse<String> getProbMetadata(HttpRequest<?> request) { - var url = request.getUri().toString(); + var url = request.getUri().getPath(); var usage = new ProbMetadata(ServletUtil.model()); var body = ResponseBody.usage() .name(NAME_PROBABILITY) diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/SourceController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/SourceController.java index 2bd63ae10a410fcd0de8e2ee2bc7b482f935322a..0b308c4d2e098c80ff32026a2c7f473a1fb3eca2 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/SourceController.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/SourceController.java @@ -62,7 +62,7 @@ public class SourceController { return ServletUtil.error( SourceService.LOG, e, SourceService.NAME, - http.getUri().toString()); + http.getUri().getPath()); } } diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/SourceService.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/SourceService.java index dd1bc2ed9c11a4fa753979ede1db8dec5070aaff..2cae2b306756b9ecc17b371e5afe3d9c5a22b422 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/SourceService.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/SourceService.java @@ -35,7 +35,7 @@ public class SourceService { static final Logger LOG = LoggerFactory.getLogger(SourceService.class); static HttpResponse<String> getMetadata(HttpRequest<?> request) { - var url = request.getUri().toString(); + var url = request.getUri().getPath(); var response = ResponseBody.usage() .name(NAME) .url(url) diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/TestSitesController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/TestSitesController.java index 45fa30f2fff3a988bf69c2a7f4a33afd00c44434..bf17b3b87b0c4660f624c4e1fc93829d1230f267 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/TestSitesController.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/TestSitesController.java @@ -69,7 +69,7 @@ public class TestSitesController { LOG, e, NAME, - http.getUri().toString()); + http.getUri().getPath()); } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 7d46c279404717ec0d3f06223a13cb1da59b93a3..29a0525818e39ee57642751ee9c753fa1cef04fe 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -21,4 +21,4 @@ nshmp-haz: # To specify the model to use: # java -jar build/libs/nshmp-haz.jar --model=<path/to/model> # - model-path: ${model:nshms/nshm-conus-2018} + model-path: ${MODEL:nshms/nshm-conus-2018} diff --git a/src/main/resources/swagger/drupal/images/logo.png b/src/main/resources/swagger/drupal/images/logo.png deleted file mode 100644 index 78674a8aa97bedf4cd56b9329f3bf57fb239db8d..0000000000000000000000000000000000000000 Binary files a/src/main/resources/swagger/drupal/images/logo.png and /dev/null differ diff --git a/src/main/resources/swagger/index.html b/src/main/resources/swagger/index.html index a7147399886512ea6788996a24578940ebd41063..731ca4ee91b264df6c59181bc80ab3109d2d33a3 100644 --- a/src/main/resources/swagger/index.html +++ b/src/main/resources/swagger/index.html @@ -99,7 +99,7 @@ <img aria-hidden="true" class="usa-banner__header-flag" - src="uswds/img/us_flag_small.png" + src="uswds/img/us_flag_small.svg" alt="" /> </div> @@ -198,7 +198,7 @@ <div class="tmp-container"> <div class="header-search"> <a class="logo-header" href="https://earthquake.usgs.gov/nshmp/" title="Home"> - <img class="img" src="drupal/images/logo.png" alt="Home" /> + <img class="img" src="usgs-logo.svg" alt="Home" /> </a> </div> </div> @@ -289,49 +289,6 @@ </ul> </div> <!-- /.footer-utl-links --> - - <!-- .footer-social-links --> - <div class="footer-social-links"> - <ul class="social"> - <li class="follow">Follow</li> - <li class="twitter"> - <a href="https://twitter.com/usgs" target="_blank"> - <i class="fa fa-twitter-square"><span class="only">Twitter</span></i> - </a> - </li> - - <li class="facebook"> - <a href="https://facebook.com/usgeologicalsurvey" target="_blank"> - <i class="fa fa-facebook-square"><span class="only">Facebook</span></i> - </a> - </li> - - <li class="github"> - <a href="https://github.com/usgs" target="_blank"> - <i class="fa fa-github"><span class="only">GitHub</span></i> - </a> - </li> - - <li class="flickr"> - <a href="https://flickr.com/usgeologicalsurvey" target="_blank"> - <i class="fa fa-flickr"><span class="only">Flickr</span></i> - </a> - </li> - - <li class="youtube"> - <a href="http://youtube.com/usgs" target="_blank"> - <i class="fa fa-youtube-play"><span class="only">YouTube</span></i> - </a> - </li> - - <li class="instagram"> - <a href="https://instagram.com/usgs" target="_blank"> - <i class="fa fa-instagram"><span class="only">Instagram</span></i> - </a> - </li> - </ul> - </div> - <!-- /.footer-social-links --> </div> </footer> <!-- END USGS Footer Template- --> diff --git a/src/main/resources/swagger/uswds/img/us_flag_small.png b/src/main/resources/swagger/uswds/img/us_flag_small.png deleted file mode 100644 index 7d61cd6c4c38b69f815536e62a9b90235a579620..0000000000000000000000000000000000000000 Binary files a/src/main/resources/swagger/uswds/img/us_flag_small.png and /dev/null differ diff --git a/src/main/resources/swagger/uswds/img/us_flag_small.svg b/src/main/resources/swagger/uswds/img/us_flag_small.svg new file mode 100644 index 0000000000000000000000000000000000000000..1fa0d25538d7d2bbadd5f270b1c016f9e2b1cd58 --- /dev/null +++ b/src/main/resources/swagger/uswds/img/us_flag_small.svg @@ -0,0 +1 @@ +<svg width="64" height="44" version="1.1" xmlns="http://www.w3.org/2000/svg" desc="Created with imagetracer.js version 1.2.6" ><path fill="rgb(30,51,177)" stroke="rgb(30,51,177)" stroke-width="1" opacity="1" d="M 8 0 L 16 0 Q 14 6 20 4 Q 18 -2 24 0 L 24 4 Q 18 2 20 8 L 28 8 Q 26 2 32 4 L 32 12 L 16 12 L 16 20 L 20 20 Q 18 14 24 16 Q 22 22 28 20 Q 26 14 32 16 Q 34 22 28 20 L 28 28 L 20 28 Q 22 22 16 24 Q 18 30 12 28 Q 14 22 8 24 Q 10 30 4 28 Q 6 22 0 24 L 0 20 L 4 20 Q 2 26 8 24 L 8 16.5 L 12 16 L 12 8 Q 6 6 8 12 L 0 12 L 0 4 L 4 4 Q 2 10 8 8 L 8 0 Z M 12 4 Q 10 10 16 8 Q 18 2 12 4 Z M 12 20 Q 10 26 16 24 Q 18 18 12 20 Z M 20 20 Q 18 26 24 24 Q 26 18 20 20 Z " /><path fill="rgb(218,62,31)" stroke="rgb(218,62,31)" stroke-width="1" opacity="1" d="M 36 0 L 51.5 0 L 52 4 L 36.5 4 L 36 0 Z " /><path fill="rgb(218,62,31)" stroke="rgb(218,62,31)" stroke-width="1" opacity="1" d="M 56 0 L 64 0 L 64 4 L 56 4 L 56 0 Z " /><path fill="rgb(218,62,31)" stroke="rgb(218,62,31)" stroke-width="1" opacity="1" d="M 36 8 L 55.5 8 L 56 12 L 36.5 12 L 36 8 Z " /><path fill="rgb(218,62,31)" stroke="rgb(218,62,31)" stroke-width="1" opacity="1" d="M 60 8 Q 66 6 64 12 Q 58 14 60 8 Z " /><path fill="rgb(218,62,31)" stroke="rgb(218,62,31)" stroke-width="1" opacity="1" d="M 36 16 L 44 16 L 44 20 L 36 20 L 36 16 Z " /><path fill="rgb(218,62,31)" stroke="rgb(218,62,31)" stroke-width="1" opacity="1" d="M 52 16 L 64 16 L 64 20 L 52 20 L 52 16 Z " /><path fill="rgb(218,62,31)" stroke="rgb(218,62,31)" stroke-width="1" opacity="1" d="M 36 24 Q 42 22 40 28 Q 34 30 36 24 Z " /><path fill="rgb(218,62,31)" stroke="rgb(218,62,31)" stroke-width="1" opacity="1" d="M 44 24 L 63.5 24 L 64 28 L 44.5 28 L 44 24 Z " /><path fill="rgb(218,62,31)" stroke="rgb(218,62,31)" stroke-width="1" opacity="1" d="M 0 32 L 12 32 L 12 36 L 0 36 L 0 32 Z " /><path fill="rgb(218,62,31)" stroke="rgb(218,62,31)" stroke-width="1" opacity="1" d="M 20 32 L 35.5 32 L 36 36 L 20.5 36 L 20 32 Z " /><path fill="rgb(218,62,31)" stroke="rgb(218,62,31)" stroke-width="1" opacity="1" d="M 40 32 Q 46 30 44 36 Q 38 38 40 32 Z " /><path fill="rgb(218,62,31)" stroke="rgb(218,62,31)" stroke-width="1" opacity="1" d="M 48 32 L 56 32 L 56 36 L 48 36 L 48 32 Z " /><path fill="rgb(218,62,31)" stroke="rgb(218,62,31)" stroke-width="1" opacity="1" d="M 60 32 Q 66 30 64 36 Q 58 38 60 32 Z " /><path fill="rgb(218,62,31)" stroke="rgb(218,62,31)" stroke-width="1" opacity="1" d="M 0 40 L 8 40 L 8 44 L 0 44 L 0 40 Z " /><path fill="rgb(218,62,31)" stroke="rgb(218,62,31)" stroke-width="1" opacity="1" d="M 12 40 Q 18 38 16 44 Q 10 46 12 40 Z " /><path fill="rgb(218,62,31)" stroke="rgb(218,62,31)" stroke-width="1" opacity="1" d="M 20 40 L 28 40 L 28 44 L 20 44 L 20 40 Z " /><path fill="rgb(218,62,31)" stroke="rgb(218,62,31)" stroke-width="1" opacity="1" d="M 32 40 Q 38 38 36 44 Q 30 46 32 40 Z " /><path fill="rgb(218,62,31)" stroke="rgb(218,62,31)" stroke-width="1" opacity="1" d="M 40 40 L 55.5 40 L 56 44 L 40.5 44 L 40 40 Z " /><path fill="rgb(218,62,31)" stroke="rgb(218,62,31)" stroke-width="1" opacity="1" d="M 60 40 Q 66 38 64 44 Q 58 46 60 40 Z " /><path fill="rgb(219,63,31)" stroke="rgb(219,63,31)" stroke-width="1" opacity="1" d="M 32 0 Q 38 -2 36 4 Q 30 6 32 0 Z " /><path fill="rgb(219,63,31)" stroke="rgb(219,63,31)" stroke-width="1" opacity="1" d="M 52 0 Q 58 -2 56 4 Q 50 6 52 0 Z " /><path fill="rgb(219,63,31)" stroke="rgb(219,63,31)" stroke-width="1" opacity="1" d="M 32 8 Q 38 6 36 12 Q 30 14 32 8 Z " /><path fill="rgb(219,63,31)" stroke="rgb(219,63,31)" stroke-width="1" opacity="1" d="M 56 8 Q 62 6 60 12 Q 54 14 56 8 Z " /><path fill="rgb(219,63,31)" stroke="rgb(219,63,31)" stroke-width="1" opacity="1" d="M 32 16 Q 38 14 36 20 Q 30 22 32 16 Z " /><path fill="rgb(219,63,31)" stroke="rgb(219,63,31)" stroke-width="1" opacity="1" d="M 44 16 L 52 16 L 52 20 L 44 20 L 44 16 Z " /><path fill="rgb(219,63,31)" stroke="rgb(219,63,31)" stroke-width="1" opacity="1" d="M 32 24 Q 38 22 36 28 Q 30 30 32 24 Z " /><path fill="rgb(219,63,31)" stroke="rgb(219,63,31)" stroke-width="1" opacity="1" d="M 40 24 Q 46 22 44 28 Q 38 30 40 24 Z " /><path fill="rgb(219,63,31)" stroke="rgb(219,63,31)" stroke-width="1" opacity="1" d="M 12 32 L 20 32 L 20 36 L 12 36 L 12 32 Z " /><path fill="rgb(219,63,31)" stroke="rgb(219,63,31)" stroke-width="1" opacity="1" d="M 36 32 Q 42 30 40 36 Q 34 38 36 32 Z " /><path fill="rgb(219,63,31)" stroke="rgb(219,63,31)" stroke-width="1" opacity="1" d="M 44 32 Q 50 30 48 36 Q 42 38 44 32 Z " /><path fill="rgb(219,63,31)" stroke="rgb(219,63,31)" stroke-width="1" opacity="1" d="M 56 32 Q 62 30 60 36 Q 54 38 56 32 Z " /><path fill="rgb(219,63,31)" stroke="rgb(219,63,31)" stroke-width="1" opacity="1" d="M 8 40 Q 14 38 12 44 Q 6 46 8 40 Z " /><path fill="rgb(219,63,31)" stroke="rgb(219,63,31)" stroke-width="1" opacity="1" d="M 16 40 Q 22 38 20 44 Q 14 46 16 40 Z " /><path fill="rgb(219,63,31)" stroke="rgb(219,63,31)" stroke-width="1" opacity="1" d="M 28 40 Q 34 38 32 44 Q 26 46 28 40 Z " /><path fill="rgb(219,63,31)" stroke="rgb(219,63,31)" stroke-width="1" opacity="1" d="M 36 40 Q 42 38 40 44 Q 34 46 36 40 Z " /><path fill="rgb(219,63,31)" stroke="rgb(219,63,31)" stroke-width="1" opacity="1" d="M 56 40 Q 62 38 60 44 Q 54 46 56 40 Z " /><path fill="rgb(30,52,178)" stroke="rgb(30,52,178)" stroke-width="1" opacity="1" d="M 4 0 Q 10 -2 8 4 Q 2 6 4 0 Z " /><path fill="rgb(30,52,178)" stroke="rgb(30,52,178)" stroke-width="1" opacity="1" d="M 28 0 Q 34 -2 32 4 Q 26 2 28 8 L 24 8 L 24 4 Q 30 6 28 0 Z " /><path fill="rgb(30,52,178)" stroke="rgb(30,52,178)" stroke-width="1" opacity="1" d="M 8 8 Q 14 6 12 12 Q 6 14 8 8 Z " /><path fill="rgb(30,52,178)" stroke="rgb(30,52,178)" stroke-width="1" opacity="1" d="M 0 12 L 4 12 L 4 20 L 0 20 L 0 12 Z " /><path fill="rgb(30,52,178)" stroke="rgb(30,52,178)" stroke-width="1" opacity="1" d="M 28 12 Q 34 10 32 16 Q 26 14 28 20 Q 34 18 32 24 L 28 24 L 28 20 Q 22 22 24 16 Q 30 18 28 12 Z " /><path fill="rgb(29,51,177)" stroke="rgb(29,51,177)" stroke-width="1" opacity="1" d="M 0 0 Q 6 -2 4 4 Q -2 6 0 0 Z " /><path fill="rgb(29,51,177)" stroke="rgb(29,51,177)" stroke-width="1" opacity="1" d="M 16 0 Q 22 -2 20 4 Q 14 6 16 0 Z " /><path fill="rgb(29,51,177)" stroke="rgb(29,51,177)" stroke-width="1" opacity="1" d="M 24 0 Q 30 -2 28 4 Q 22 6 24 0 Z " /><path fill="rgb(29,51,177)" stroke="rgb(29,51,177)" stroke-width="1" opacity="1" d="M 4 12 L 8 12 L 8 20 L 4 20 L 4 12 Z " /><path fill="rgb(29,51,177)" stroke="rgb(29,51,177)" stroke-width="1" opacity="1" d="M 20 12 Q 26 10 24 16 L 20 16 Q 22 22 16 20 L 16 16 Q 22 18 20 12 Z " /><path fill="rgb(29,51,177)" stroke="rgb(29,51,177)" stroke-width="1" opacity="1" d="M 0 24 Q 6 22 4 28 Q -2 30 0 24 Z " /><path fill="rgb(29,51,177)" stroke="rgb(29,51,177)" stroke-width="1" opacity="1" d="M 8 24 Q 14 22 12 28 Q 6 30 8 24 Z " /><path fill="rgb(29,51,177)" stroke="rgb(29,51,177)" stroke-width="1" opacity="1" d="M 16 24 Q 22 22 20 28 Q 14 30 16 24 Z " /><path fill="rgb(29,51,177)" stroke="rgb(29,51,177)" stroke-width="1" opacity="1" d="M 28 24 Q 34 22 32 28 Q 26 30 28 24 Z " /><path fill="rgb(255,255,255)" stroke="rgb(255,255,255)" stroke-width="1" opacity="1" d="M 4 4 Q 10 2 8 8 Q 2 10 4 4 Z " /><path fill="rgb(255,255,255)" stroke="rgb(255,255,255)" stroke-width="1" opacity="1" d="M 12 4 Q 18 2 16 8 Q 10 10 12 4 Z " /><path fill="rgb(255,255,255)" stroke="rgb(255,255,255)" stroke-width="1" opacity="1" d="M 20 4 Q 26 2 24 8 Q 18 10 20 4 Z " /><path fill="rgb(255,255,255)" stroke="rgb(255,255,255)" stroke-width="1" opacity="1" d="M 32 4 L 63.5 4 L 64 8 L 32.5 8 L 32 4 Z " /><path fill="rgb(255,255,255)" stroke="rgb(255,255,255)" stroke-width="1" opacity="1" d="M 8 12 Q 14 10 12 16 Q 6 18 8 12 Z " /><path fill="rgb(255,255,255)" stroke="rgb(255,255,255)" stroke-width="1" opacity="1" d="M 16 12 Q 22 10 20 16 Q 14 18 16 12 Z " /><path fill="rgb(255,255,255)" stroke="rgb(255,255,255)" stroke-width="1" opacity="1" d="M 24 12 Q 30 10 28 16 Q 22 18 24 12 Z " /><path fill="rgb(255,255,255)" stroke="rgb(255,255,255)" stroke-width="1" opacity="1" d="M 32 12 L 63.5 12 L 64 16 L 32.5 16 L 32 12 Z " /><path fill="rgb(255,255,255)" stroke="rgb(255,255,255)" stroke-width="1" opacity="1" d="M 4 20 Q 10 18 8 24 Q 2 26 4 20 Z " /><path fill="rgb(255,255,255)" stroke="rgb(255,255,255)" stroke-width="1" opacity="1" d="M 12 20 Q 18 18 16 24 Q 10 26 12 20 Z " /><path fill="rgb(255,255,255)" stroke="rgb(255,255,255)" stroke-width="1" opacity="1" d="M 20 20 Q 26 18 24 24 Q 18 26 20 20 Z " /><path fill="rgb(255,255,255)" stroke="rgb(255,255,255)" stroke-width="1" opacity="1" d="M 32 20 L 63.5 20 L 64 24 L 32.5 24 L 32 20 Z " /><path fill="rgb(255,255,255)" stroke="rgb(255,255,255)" stroke-width="1" opacity="1" d="M 0 28 L 63.5 28 L 64 32 L 0.5 32 L 0 28 Z " /><path fill="rgb(255,255,255)" stroke="rgb(255,255,255)" stroke-width="1" opacity="1" d="M 0 36 L 63.5 36 L 64 40 L 0.5 40 L 0 36 Z " /></svg> \ No newline at end of file diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateActual.java b/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateActual.java index 8996fb07eab4d24e9aa3d09ff4f3f2248ab08e11..2b6f778b333de48edfbf57ab0b06a73bc2ee836f 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateActual.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateActual.java @@ -6,10 +6,6 @@ import java.util.concurrent.ExecutionException; import gov.usgs.earthquake.nshmp.model.NshmTestUtils.Nshm; import gov.usgs.earthquake.nshmp.model.NshmTestUtils.NshmModel; -import gov.usgs.earthquake.nshmp.www.Application; - -import io.micronaut.context.ApplicationContext; -import io.micronaut.runtime.Micronaut; /** * Generate actual results to compare to expected results. @@ -29,12 +25,13 @@ class GenerateActual { NshmTestUtils.writeExpecteds(nshmModel, Optional.of(NshmTests.DATA_PATH)); nshmModel.exec.shutdown(); - // Generate web - ApplicationContext context = Micronaut - .build("--model=" + nshm.modelPath()) - .mainClass(Application.class) - .start(); - NshmTestUtils.writeWebExpecteds(nshm, Optional.of(NshmTests.WEB_DATA_PATH)); - context.close(); + // // Generate web + // ApplicationContext context = Micronaut + // .build("--model=" + nshm.modelPath()) + // .mainClass(Application.class) + // .start(); + // NshmTestUtils.writeWebExpecteds(nshm, + // Optional.of(NshmTests.WEB_DATA_PATH)); + // context.close(); } } diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java index 656649be1cb13202e679be92b7a3731e67f4a326..12312f75fa77701c6a4e9b07037f8d456fe3e087 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java @@ -122,7 +122,7 @@ class NshmTestUtils { if (dataPath.isEmpty()) { context = Optional.of(Micronaut - .build("--model=" + nshm.modelPath()) + .build("--MODEL=" + nshm.modelPath()) .mainClass(Application.class) .start()); } diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java index d4280e285c7f4cc5e74ae506d150132bd2903ec5..e3fe8d7211509c08828a3256b656e8441e700842 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java @@ -135,7 +135,7 @@ class NshmTests { final void testAlaska2007() throws IOException, InterruptedException, ExecutionException { Nshm nshm = NSHMS.get("nshm-alaska-2007"); NshmTestUtils.testNshm(nshm, getDataPath(nshm)); - NshmTestUtils.testWebNshm(nshm, getWebDataPath(nshm)); + // NshmTestUtils.testWebNshm(nshm, getWebDataPath(nshm)); } /** @@ -149,7 +149,7 @@ class NshmTests { final void testAlaska2023() throws IOException, InterruptedException, ExecutionException { Nshm nshm = NSHMS.get("nshm-alaska-2023"); NshmTestUtils.testNshm(nshm, getDataPath(nshm)); - NshmTestUtils.testWebNshm(nshm, getWebDataPath(nshm)); + // NshmTestUtils.testWebNshm(nshm, getWebDataPath(nshm)); } /** @@ -163,7 +163,7 @@ class NshmTests { final void testConus2018() throws IOException, InterruptedException, ExecutionException { Nshm nshm = NSHMS.get("nshm-conus-2018"); NshmTestUtils.testNshm(nshm, getDataPath(nshm)); - NshmTestUtils.testWebNshm(nshm, getWebDataPath(nshm)); + // NshmTestUtils.testWebNshm(nshm, getWebDataPath(nshm)); } /** @@ -177,7 +177,7 @@ class NshmTests { final void testConus2023() throws IOException, InterruptedException, ExecutionException { Nshm nshm = NSHMS.get("nshm-conus-2023"); NshmTestUtils.testNshm(nshm, getDataPath(nshm)); - NshmTestUtils.testWebNshm(nshm, getWebDataPath(nshm)); + // NshmTestUtils.testWebNshm(nshm, getWebDataPath(nshm)); } /** @@ -191,7 +191,7 @@ class NshmTests { final void testHawaii2021() throws IOException, InterruptedException, ExecutionException { Nshm nshm = NSHMS.get("nshm-hawaii-2021"); NshmTestUtils.testNshm(nshm, getDataPath(nshm)); - NshmTestUtils.testWebNshm(nshm, getWebDataPath(nshm)); + // NshmTestUtils.testWebNshm(nshm, getWebDataPath(nshm)); } /** diff --git a/ws.Dockerfile b/ws.Dockerfile index 3a61732e451a3b758fd1b946e4412165512b957a..02146842ded64764469e5e630f3be5d2fbb5f764 100644 --- a/ws.Dockerfile +++ b/ws.Dockerfile @@ -72,4 +72,4 @@ ENTRYPOINT java \ -jar \ nshmp-haz.jar \ "-Dmicronaut.server.context-path=${CONTEXT_PATH}" \ - --model="${MODELS_DIRECTORY}"; + --MODEL="${MODELS_DIRECTORY}";