From 83fd02b473fb0b06f867d17a64ed8b95ad2541df Mon Sep 17 00:00:00 2001
From: bclayton-usgs <bclayton@usgs.gov>
Date: Tue, 17 Mar 2020 13:49:45 -0600
Subject: [PATCH] add Micronaut

---
 build.gradle       | 82 ++++++++++++++++++++++++++++++++++++----------
 openapi.properties |  1 +
 2 files changed, 66 insertions(+), 17 deletions(-)
 create mode 100644 openapi.properties

diff --git a/build.gradle b/build.gradle
index 9a33f365d..36d437a08 100644
--- a/build.gradle
+++ b/build.gradle
@@ -24,12 +24,15 @@
  */
 
 plugins {
-  id 'eclipse-wtp'
-  id 'jacoco'
-  id 'war'
+  id "eclipse-wtp"
+  id "jacoco"
+  id "war"
+  id "application"
   id "com.star-zero.gradle.githook" version "1.2.0"
   id "com.github.spotbugs" version "3.0.0"
   id "com.diffplug.gradle.spotless" version "3.27.1"
+  id "com.github.johnrengelman.shadow" version "5.2.0"
+  id "net.ltgt.apt-eclipse" version "0.21"
 }
 
 apply from: "${projectDir}/gradle/ext.gradle"
@@ -41,10 +44,12 @@ apply from: project(":nshmp-lib").file("gradle/spotbugs.gradle")
 apply from: project(":nshmp-lib").file("gradle/spotless.gradle")
 
 sourceCompatibility = JavaVersion.VERSION_11
-compileJava.options.encoding = 'UTF-8'
+compileJava.options.encoding = "UTF-8"
+
+mainClassName = "gov.usgs.earthquake.nshmp.www.Application"
 
 jacoco {
-  toolVersion = '0.8.4'
+  toolVersion = "0.8.4"
 }
 
 repositories {
@@ -52,18 +57,48 @@ repositories {
 }
 
 dependencies {
-  implementation 'org.apache.tomcat:tomcat-catalina:8.0.45'
-  implementation 'javax.websocket:javax.websocket-api:1.1'
-  implementation 'com.amazonaws:aws-lambda-java-core:1.1.0'
-  implementation 'com.amazonaws:aws-java-sdk-lambda:1.11.461'
-  implementation 'com.amazonaws:aws-java-sdk-s3:1.11.579'
-  implementation 'com.amazonaws:aws-java-sdk-ec2:1.11.619'
-  implementation project(':nshmp-lib')
-
-  testImplementation 'junit:junit:4.12'
+  implementation project(":nshmp-lib")
+
+  // Tomcat
+  implementation "org.apache.tomcat:tomcat-catalina:8.0.45"
+  implementation "javax.websocket:javax.websocket-api:1.1"
+
+  // 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}"
+
+  // Micronaut
+  annotationProcessor platform("io.micronaut:micronaut-bom:${mnVersion}")
+  annotationProcessor "io.micronaut:micronaut-inject-java"
+  annotationProcessor "io.micronaut:micronaut-validation"
+  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:${jacksonVersion}"
+  runtimeOnly "ch.qos.logback:logback-classic:${logbackVersion}"
+
+  // Swagger
+  annotationProcessor("io.micronaut.configuration:micronaut-openapi:${mnOpenAPIVersion}")
+  implementation("io.swagger.core.v3:swagger-annotations:${swaggerVersion}")
+  implementation("io.swagger.core.v3:swagger-models:${swaggerVersion}")
+
+  // junit
+  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"
+  testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine"
 }
 
 test {
+  useJUnitPlatform()
   filter {
     includeTestsMatching "gov.usgs.earthquake.nshmp.programs.*"
   }
@@ -78,25 +113,38 @@ jacocoTestReport {
     classDirectories.from(files(classDirectories.files.collect {
       fileTree(
           dir: it,
-          exclude: ['**/etc/**'])
+          exclude: ["**/etc/**"])
     }))
   }
 }
 check.dependsOn jacocoTestReport
 
+shadowJar {
+  mergeServiceFiles()
+}
+
+tasks.withType(JavaCompile) {
+  options.encoding = "UTF-8"
+  options.compilerArgs.add("-parameters")
+}
+
+tasks.withType(JavaExec) {
+  jvmArgs('-noverify', '-XX:TieredStopAtLevel=1', '-Dcom.sun.management.jmxremote')
+}
+
 /**
  * Create war file with production models
  */
 war {
   enabled = true
-  webAppDirName = 'webapp'
+  webAppDirName = "webapp"
   dependsOn jar
 
   /*
    * Exclude existing models directory with symlinks
    * to support Eclipse deployments.
    */
-  exclude 'models'
+  exclude "models"
 
   prod_models.each{model ->
     from(model[0]) { into model[1] }
diff --git a/openapi.properties b/openapi.properties
new file mode 100644
index 000000000..4b3f905da
--- /dev/null
+++ b/openapi.properties
@@ -0,0 +1 @@
+micronaut.openapi.target.file = build/resources/main/swagger/haz-swagger.yml
-- 
GitLab