From 15c82f203641c5d3dfd404f507779c72ff94ba81 Mon Sep 17 00:00:00 2001
From: bclayton-usgs <bclayton@usgs.gov>
Date: Wed, 26 Feb 2020 08:53:42 -0700
Subject: [PATCH] update to latest Micronaut version

---
 build.gradle                                  | 22 +++++++++++--------
 gradle.properties                             |  4 ++++
 micronaut-cli.yml                             |  5 +++++
 .../nshmp/www/BasinTermController.java        |  9 +-------
 .../nshmp/www/FaultSectionsController.java    |  6 +----
 .../earthquake/nshmp/www/GmmController.java   |  7 +-----
 .../nshmp/www/UtilitiesController.java        |  4 +---
 src/resources/logback.xml                     |  8 +++----
 8 files changed, 30 insertions(+), 35 deletions(-)
 create mode 100644 gradle.properties
 create mode 100644 micronaut-cli.yml

diff --git a/build.gradle b/build.gradle
index e3816df..c986793 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,7 +1,7 @@
 plugins {
   id "application"
   id "java"
-  id "com.github.johnrengelman.shadow" version "5.0.0"
+  id "com.github.johnrengelman.shadow" version "5.2.0"
   id "net.ltgt.apt-eclipse" version "0.21"
   id "eclipse-wtp"
   id "jacoco"
@@ -25,23 +25,23 @@ dependencies {
   implementation project(":nshmp-lib")
 
   // micronaut
-  annotationProcessor platform("io.micronaut:micronaut-bom:1.3.2")
+  annotationProcessor platform("io.micronaut:micronaut-bom:${mnVersion}")
   annotationProcessor "io.micronaut:micronaut-inject-java"
   annotationProcessor "io.micronaut:micronaut-validation"
-  implementation platform("io.micronaut:micronaut-bom:1.3.2")
+  implementation platform("io.micronaut:micronaut-bom:${mnVersion}")
   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 "com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.0"
+  implementation "com.fasterxml.jackson.module:jackson-module-parameter-names:${jacksonVersion}"
   runtimeOnly "io.micronaut:micronaut-runtime-osx"
-  runtimeOnly "ch.qos.logback:logback-classic:1.2.3"
+  runtimeOnly "ch.qos.logback:logback-classic:${logbackVersion}"
 
   // junit
-  testAnnotationProcessor "io.micronaut:micronaut-inject-java:1.3.2"
-  testImplementation platform("io.micronaut:micronaut-bom:1.3.2")
-  testImplementation "org.junit.jupiter:junit-jupiter:5.5.2"
+  testAnnotationProcessor "io.micronaut:micronaut-inject-java:${mnVersion}"
+  testImplementation platform("io.micronaut:micronaut-bom:${mnVersion}")
+  testImplementation "org.junit.jupiter:junit-jupiter:${junitVersion}"
   testImplementation "org.junit.jupiter:junit-jupiter-api"
   testImplementation "io.micronaut.test:micronaut-test-junit5"
   testImplementation "io.micronaut.test:micronaut-test-spock"
@@ -98,11 +98,15 @@ shadowJar {
   mergeServiceFiles()
 }
 
-run.jvmArgs("-noverify", "-XX:TieredStopAtLevel=1", "-Dcom.sun.management.jmxremote")
 tasks.withType(JavaCompile){
+  options.encoding = "UTF-8"
   options.compilerArgs.add("-parameters")
 }
 
+tasks.withType(JavaExec) {
+  jvmArgs('-noverify', '-XX:TieredStopAtLevel=1', '-Dcom.sun.management.jmxremote')
+}
+
 /* Add HTML reports to SpotBugs */
 tasks.withType(com.github.spotbugs.SpotBugsTask) {
   ignoreFailures = false // TODO remove when nshmp-lib is updated
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000..a8d9a98
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,4 @@
+jacksonVersion = 2.9.0
+junitVersion = 5.5.2
+logbackVersion = 1.2.3
+mnVersion = 1.3.2
diff --git a/micronaut-cli.yml b/micronaut-cli.yml
new file mode 100644
index 0000000..19ad91f
--- /dev/null
+++ b/micronaut-cli.yml
@@ -0,0 +1,5 @@
+profile: service
+defaultPackage: gov.usgs.earthquake.nshmp.www
+---
+testFramework: junit
+sourceLanguage: java
diff --git a/src/main/gov/usgs/earthquake/nshmp/www/BasinTermController.java b/src/main/gov/usgs/earthquake/nshmp/www/BasinTermController.java
index 858f62d..c55d0a6 100644
--- a/src/main/gov/usgs/earthquake/nshmp/www/BasinTermController.java
+++ b/src/main/gov/usgs/earthquake/nshmp/www/BasinTermController.java
@@ -29,7 +29,6 @@ import gov.usgs.earthquake.nshmp.www.basin.BasinValues;
 import gov.usgs.earthquake.nshmp.www.basin.BasinValues.BasinValue;
 import gov.usgs.earthquake.nshmp.www.basin.Basins;
 import gov.usgs.earthquake.nshmp.www.basin.Basins.BasinRegion;
-import gov.usgs.earthquake.nshmp.www.clients.BasinTermClient;
 import gov.usgs.earthquake.nshmp.www.meta.EnumParameter;
 import gov.usgs.earthquake.nshmp.www.meta.ParamType;
 import gov.usgs.earthquake.nshmp.www.meta.Status;
@@ -56,7 +55,7 @@ import io.micronaut.http.annotation.QueryValue;
  * @author U.S. Geological Survey
  */
 @Controller("/basin")
-public class BasinTermController implements BasinTermClient {
+public class BasinTermController {
 
   @Inject
   private NshmpMicronautServlet servlet;
@@ -80,7 +79,6 @@ public class BasinTermController implements BasinTermClient {
    * @param longitude The longitude of interest
    * @param latitude The latitude of interest
    */
-  @Override
   @Get(uri = "{?longitude,latitude}", produces = MediaType.APPLICATION_JSON)
   public HttpResponse<String> doGet(
       HttpRequest<?> request,
@@ -121,7 +119,6 @@ public class BasinTermController implements BasinTermClient {
    * @param latitude The latitude in degrees
    * @param model The basin model
    */
-  @Override
   @Get(uri = "{/longitude}{/latitude}", produces = MediaType.APPLICATION_JSON)
   public HttpResponse<String> doGetSlash(
       HttpRequest<?> request,
@@ -141,7 +138,6 @@ public class BasinTermController implements BasinTermClient {
    * @param longitude The longitude of interest
    * @param latitude The latitude of interest
    */
-  @Override
   @Get(uri = "/data{?basin,raw}", produces = MediaType.APPLICATION_JSON)
   public HttpResponse<String> doGet(
       HttpRequest<?> request,
@@ -180,7 +176,6 @@ public class BasinTermController implements BasinTermClient {
    * @param latitude The latitude in degrees
    * @param model The basin model
    */
-  @Override
   @Get(uri = "/data{/basin}{/raw}", produces = MediaType.APPLICATION_JSON)
   public HttpResponse<String> doGetSlash(
       HttpRequest<?> request,
@@ -196,7 +191,6 @@ public class BasinTermController implements BasinTermClient {
    *
    * @see Basins
    */
-  @Override
   @Get(uri = "/geojson", produces = MediaType.APPLICATION_JSON)
   public HttpResponse<String> doGet(HttpRequest<?> request) {
     UrlHelper urlHelper = servlet.urlHelper(request);
@@ -221,7 +215,6 @@ public class BasinTermController implements BasinTermClient {
    * @param query The query
    * @return
    */
-  @Override
   @Post(consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON)
   public HttpResponse<String> doPost(HttpRequest<?> request, @Body @Nullable Query query) {
     if (query == null) {
diff --git a/src/main/gov/usgs/earthquake/nshmp/www/FaultSectionsController.java b/src/main/gov/usgs/earthquake/nshmp/www/FaultSectionsController.java
index 4b92798..4739f0e 100644
--- a/src/main/gov/usgs/earthquake/nshmp/www/FaultSectionsController.java
+++ b/src/main/gov/usgs/earthquake/nshmp/www/FaultSectionsController.java
@@ -25,7 +25,6 @@ import gov.usgs.earthquake.nshmp.internal.NshmFaultSection;
 import gov.usgs.earthquake.nshmp.internal.UsRegion;
 import gov.usgs.earthquake.nshmp.www.NshmpMicronautServlet.UrlHelper;
 import gov.usgs.earthquake.nshmp.www.Utils.Key;
-import gov.usgs.earthquake.nshmp.www.clients.FaultSectionsClient;
 import gov.usgs.earthquake.nshmp.www.fault.FaultGroup;
 import gov.usgs.earthquake.nshmp.www.fault.FaultSections;
 import gov.usgs.earthquake.nshmp.www.meta.ParamType;
@@ -43,7 +42,7 @@ import io.micronaut.http.annotation.Post;
 import io.micronaut.http.annotation.QueryValue;
 
 @Controller("/fault-sections")
-public class FaultSectionsController implements FaultSectionsClient {
+public class FaultSectionsController {
 
   @Inject
   private NshmpMicronautServlet servlet;
@@ -65,7 +64,6 @@ public class FaultSectionsController implements FaultSectionsClient {
 
   private static FaultSections FAULT_SECTIONS = null;
 
-  @Override
   @Get(uri = "{?group,id,name,raw}", produces = MediaType.APPLICATION_JSON)
   public HttpResponse<String> doGet(
       HttpRequest<?> request,
@@ -97,7 +95,6 @@ public class FaultSectionsController implements FaultSectionsClient {
     }
   }
 
-  @Override
   @Get(uri = "{/value}{/raw}", produces = MediaType.APPLICATION_JSON)
   public HttpResponse<String> doGet(
       HttpRequest<?> request,
@@ -128,7 +125,6 @@ public class FaultSectionsController implements FaultSectionsClient {
     return doGet(request, groups, ids, null, raw);
   }
 
-  @Override
   @Post(consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON)
   public HttpResponse<String> doPost(HttpRequest<?> request, @Body @Nullable Query query) {
     if (query == null) {
diff --git a/src/main/gov/usgs/earthquake/nshmp/www/GmmController.java b/src/main/gov/usgs/earthquake/nshmp/www/GmmController.java
index 474fd72..156075a 100644
--- a/src/main/gov/usgs/earthquake/nshmp/www/GmmController.java
+++ b/src/main/gov/usgs/earthquake/nshmp/www/GmmController.java
@@ -32,7 +32,6 @@ import gov.usgs.earthquake.nshmp.gmm.Imt;
 import gov.usgs.earthquake.nshmp.internal.Csv;
 import gov.usgs.earthquake.nshmp.www.NshmpMicronautServlet.UrlHelper;
 import gov.usgs.earthquake.nshmp.www.Utils.Key;
-import gov.usgs.earthquake.nshmp.www.clients.GmmClient;
 import gov.usgs.earthquake.nshmp.www.gmm.GmmUtils;
 import gov.usgs.earthquake.nshmp.www.gmm.GroundMotions;
 import gov.usgs.earthquake.nshmp.www.gmm.GroundMotions.DistanceResult;
@@ -48,7 +47,7 @@ import io.micronaut.http.annotation.Post;
 import io.micronaut.http.annotation.QueryValue;
 
 @Controller("/gmm")
-public class GmmController implements GmmClient {
+public class GmmController {
 
   private static final Gson GSON;
   private static final Logger LOGGER = Logger.getLogger(GmmController.class.getName());
@@ -78,7 +77,6 @@ public class GmmController implements GmmClient {
    * @param request The HTTP request
    * @param gmm The ground motion models
    */
-  @Override
   @Get(uri = "/spectra{?gmm", produces = MediaType.APPLICATION_JSON)
   public HttpResponse<String> doGetSpectra(
       HttpRequest<?> request,
@@ -99,7 +97,6 @@ public class GmmController implements GmmClient {
    * @param rMin The minimum distance to compute
    * @param rMax The maximum distance to compute
    */
-  @Override
   @Get(uri = "/distance{?gmm,imt,rMin,rMax}", produces = MediaType.APPLICATION_JSON)
   public HttpResponse<String> doGetDistance(
       HttpRequest<?> request,
@@ -123,7 +120,6 @@ public class GmmController implements GmmClient {
    * @param rMin The minimum distance to compute
    * @param rMax The maximum distance to compute
    */
-  @Override
   @Get(uri = "/hw-fw{?gmm,imt,rMin,rMax}", produces = MediaType.APPLICATION_JSON)
   public HttpResponse<String> doGetHwFw(
       HttpRequest<?> request,
@@ -145,7 +141,6 @@ public class GmmController implements GmmClient {
    * @param gmm The ground motion models
    * @param gmmInputs The CSV file
    */
-  @Override
   @Post(
       uri = "/spectra{?gmm}",
       consumes = MediaType.TEXT_PLAIN,
diff --git a/src/main/gov/usgs/earthquake/nshmp/www/UtilitiesController.java b/src/main/gov/usgs/earthquake/nshmp/www/UtilitiesController.java
index eb28e07..18d3e51 100644
--- a/src/main/gov/usgs/earthquake/nshmp/www/UtilitiesController.java
+++ b/src/main/gov/usgs/earthquake/nshmp/www/UtilitiesController.java
@@ -20,7 +20,6 @@ import javax.inject.Inject;
 import gov.usgs.earthquake.nshmp.geo.json.Feature;
 import gov.usgs.earthquake.nshmp.geo.json.GeoJson;
 import gov.usgs.earthquake.nshmp.geo.json.Properties;
-import gov.usgs.earthquake.nshmp.www.clients.UtilitiesClient;
 import gov.usgs.earthquake.nshmp.www.site.NshmpSite;
 import gov.usgs.earthquake.nshmp.www.site.NshmpSiteRegion;
 import io.micronaut.http.HttpRequest;
@@ -29,7 +28,7 @@ import io.micronaut.http.annotation.Controller;
 import io.micronaut.http.annotation.Get;
 
 @Controller("/util")
-public class UtilitiesController implements UtilitiesClient {
+public class UtilitiesController {
 
   @Inject
   private NshmpMicronautServlet servlet;
@@ -38,7 +37,6 @@ public class UtilitiesController implements UtilitiesClient {
   private static final String SERVICE_NAME = "Test Sites Service";
   private static final String TEST_SITES = proccessTestSites();
 
-  @Override
   @Get(uri = "/testsites")
   public HttpResponse<String> doGetTestSites(HttpRequest<?> request) {
     var urlHelper = servlet.urlHelper(request);
diff --git a/src/resources/logback.xml b/src/resources/logback.xml
index acf844e..f7f49d4 100644
--- a/src/resources/logback.xml
+++ b/src/resources/logback.xml
@@ -1,17 +1,17 @@
 <configuration>
+
   <appender name="STDOUT"
     class="ch.qos.logback.core.ConsoleAppender">
+    <withJansi>true</withJansi>
     <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder 
       by default -->
     <encoder>
-      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
+      <pattern>%cyan(%d{HH:mm:ss.SSS}) %gray([%thread])
+        %highlight(%-5level) %magenta(%logger{36}) - %msg%n</pattern>
     </encoder>
   </appender>
 
   <root level="info">
     <appender-ref ref="STDOUT" />
   </root>
-  <!--<logger name="io.micronaut.http" level="TRACE"/> -->
-  <!--<logger name="io.netty.handler.logging" level="TRACE" /> -->
-  <!--<logger name="io.micronaut.jackson.parser" level="TRACE"/> -->
 </configuration>
-- 
GitLab