Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move away from Jackson #1323

Open
wants to merge 20 commits into
base: 5.0.x
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions aws-alexa-httpserver/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,23 @@ plugins {
}

dependencies {
annotationProcessor "io.micronaut:micronaut-validation"
annotationProcessor libs.micronaut.validation

implementation "io.micronaut:micronaut-runtime"
implementation "io.micronaut:micronaut-validation"
implementation 'com.github.spotbugs:spotbugs-annotations'
implementation libs.micronaut.validation
implementation libs.spotbugs.annotations

api project(":aws-alexa")
implementation "io.micronaut:micronaut-http-server"
api ("com.amazon.alexa:ask-sdk-core:$askVersion")

testImplementation "io.micronaut:micronaut-http-client"
testImplementation "io.micronaut:micronaut-http-server-netty"
testImplementation "org.bouncycastle:bcprov-jdk15on:1.70"
testImplementation ("com.amazon.alexa:ask-sdk:$askVersion") {
implementation libs.micronaut.http.server
api(libs.managed.alexa.ask.sdk.core)

testImplementation libs.micronaut.http.client
testImplementation libs.micronaut.http.server.netty
testImplementation libs.bouncycastle.provider
testImplementation (libs.alexa.ask.sdk) {
transitive(false)
}
testImplementation "com.amazon.alexa:ask-sdk-apache-client:$askVersion"
testImplementation libs.alexa.ask.sdk.apache.client

testRuntimeOnly "org.slf4j:jcl-over-slf4j:1.7.36"
testRuntimeOnly libs.jcl.over.slf4j
}
25 changes: 12 additions & 13 deletions aws-alexa/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,22 @@ plugins {
}

dependencies {
annotationProcessor "io.micronaut:micronaut-validation"
annotationProcessor libs.micronaut.validation

implementation "io.micronaut:micronaut-runtime"
implementation "io.micronaut:micronaut-validation"
implementation 'com.github.spotbugs:spotbugs-annotations'
implementation libs.micronaut.validation
implementation libs.spotbugs.annotations

compileOnly ("com.amazon.alexa:ask-sdk:$askVersion")
api ("com.amazon.alexa:ask-sdk-core:$askVersion")
compileOnly(libs.alexa.ask.sdk)
api(libs.managed.alexa.ask.sdk.core)

testAnnotationProcessor "io.micronaut:micronaut-inject-java"
testImplementation ("com.amazon.alexa:ask-sdk:$askVersion") {
testAnnotationProcessor libs.micronaut.inject.java
testImplementation(libs.alexa.ask.sdk) {
transitive(false)
}
testImplementation "com.amazon.alexa:ask-sdk-apache-client:$askVersion"
testImplementation libs.alexa.ask.sdk.apache.client

testImplementation "io.micronaut:micronaut-http-client"
testImplementation "io.micronaut:micronaut-http-server-netty"
testImplementation "org.codehaus.groovy:groovy-json:$groovyVersion"
testRuntimeOnly "org.slf4j:jcl-over-slf4j:1.7.36"
testImplementation libs.micronaut.http.client
testImplementation libs.micronaut.http.server.netty
testImplementation libs.groovy.json
testRuntimeOnly libs.jcl.over.slf4j
}
5 changes: 2 additions & 3 deletions aws-common/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ plugins {
}

dependencies {
compileOnly "io.micronaut:micronaut-runtime"
testImplementation "io.micronaut:micronaut-inject-groovy"
testImplementation "io.micronaut:micronaut-runtime"
compileOnly libs.micronaut.runtime
testImplementation libs.micronaut.runtime
}
4 changes: 2 additions & 2 deletions aws-distributed-configuration/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ plugins {

dependencies {
api project(":aws-common")
api('io.micronaut.discovery:micronaut-discovery-client')
testImplementation "io.micronaut:micronaut-http-server-netty"
api(libs.micronaut.discovery.client)
testImplementation libs.micronaut.http.server.netty
}
8 changes: 4 additions & 4 deletions aws-parameter-store/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ plugins {
}

dependencies {
api 'io.micronaut.discovery:micronaut-discovery-client'
api libs.micronaut.discovery.client
api project(":aws-service-discovery")
api project(":aws-sdk-v2")
implementation 'software.amazon.awssdk:ssm'
implementation libs.aws.ssm

implementation "io.projectreactor:reactor-core"
implementation libs.projectreactor

testImplementation "io.micronaut:micronaut-http-server-netty"
testImplementation libs.micronaut.http.server.netty
}
10 changes: 5 additions & 5 deletions aws-sdk-v1/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ plugins {
}

dependencies {
api platform("com.amazonaws:aws-java-sdk-bom:$awsJavaSdkBom")
api "com.amazonaws:aws-java-sdk-core"
api platform(libs.boms.aws.java.sdk.v1)
api libs.managed.aws.java.sdk.core

api project(":aws-common")
runtimeOnly "org.slf4j:jcl-over-slf4j:1.7.36"

testImplementation "io.micronaut:micronaut-inject-groovy"
testImplementation "io.micronaut:micronaut-http-server-netty"
runtimeOnly libs.jcl.over.slf4j

testImplementation libs.micronaut.http.server.netty
}
55 changes: 27 additions & 28 deletions aws-sdk-v2/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,40 +3,39 @@ plugins {
}

dependencies {
api platform("software.amazon.awssdk:bom:2.17.134")
api platform(libs.boms.aws.java.sdk.v2)
api project(":aws-common")

compileOnly "org.graalvm.nativeimage:svm"
compileOnly libs.graal

// Clients
compileOnly "software.amazon.awssdk:url-connection-client"
compileOnly "software.amazon.awssdk:netty-nio-client"
compileOnly "software.amazon.awssdk:apache-client"
compileOnly libs.awssdk.url.connection.client
compileOnly libs.awssdk.netty.nio.client
compileOnly libs.awssdk.apache.client

// Services
compileOnly "software.amazon.awssdk:s3"
compileOnly "software.amazon.awssdk:dynamodb"
compileOnly "software.amazon.awssdk:ses"
compileOnly "software.amazon.awssdk:sns"
compileOnly "software.amazon.awssdk:sqs"
compileOnly "software.amazon.awssdk:ssm"
compileOnly 'software.amazon.awssdk:secretsmanager'
compileOnly 'software.amazon.awssdk:servicediscovery'
compileOnly libs.awssdk.s3
compileOnly libs.awssdk.dynamodb
compileOnly libs.awssdk.ses
compileOnly libs.awssdk.sns
compileOnly libs.awssdk.sqs
compileOnly libs.awssdk.ssm
compileOnly libs.awssdk.secretsmanager
compileOnly libs.awssdk.servicediscovery

// Tests
testAnnotationProcessor "io.micronaut:micronaut-inject-java"
testImplementation 'software.amazon.awssdk:servicediscovery'
testImplementation "software.amazon.awssdk:url-connection-client"
testImplementation "software.amazon.awssdk:netty-nio-client"
testImplementation "software.amazon.awssdk:apache-client"
testImplementation "software.amazon.awssdk:s3"
testImplementation "software.amazon.awssdk:dynamodb"
testImplementation "software.amazon.awssdk:ses"
testImplementation "software.amazon.awssdk:secretsmanager"
testImplementation "software.amazon.awssdk:sns"
testImplementation "software.amazon.awssdk:sqs"
testImplementation "software.amazon.awssdk:ssm"
testImplementation "software.amazon.awssdk:rekognition"
testRuntimeOnly "org.slf4j:jcl-over-slf4j:1.7.36"
testRuntimeOnly "io.micronaut:micronaut-runtime"
testAnnotationProcessor libs.micronaut.inject.java
testImplementation libs.awssdk.servicediscovery
testImplementation libs.awssdk.url.connection.client
testImplementation libs.awssdk.netty.nio.client
testImplementation libs.awssdk.apache.client
testImplementation libs.awssdk.s3
testImplementation libs.awssdk.dynamodb
testImplementation libs.awssdk.ses
testImplementation libs.awssdk.secretsmanager
testImplementation libs.awssdk.sns
testImplementation libs.awssdk.sqs
testImplementation libs.awssdk.ssm
testImplementation libs.awssdk.rekognition
testRuntimeOnly libs.jcl.over.slf4j
}
2 changes: 1 addition & 1 deletion aws-secretsmanager/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ plugins {
dependencies {
api project(":aws-sdk-v2")
api project(":aws-distributed-configuration")
api 'software.amazon.awssdk:secretsmanager'
api libs.awssdk.secretsmanager
}
8 changes: 4 additions & 4 deletions aws-service-discovery/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ plugins {
}

dependencies {
api 'io.micronaut.discovery:micronaut-discovery-client'
api libs.micronaut.discovery.client
api project(":aws-sdk-v2")

implementation 'software.amazon.awssdk:servicediscovery'
implementation libs.awssdk.servicediscovery

testImplementation "io.projectreactor:reactor-core"
testImplementation "io.micronaut:micronaut-http-server-netty"
testImplementation libs.projectreactor
testImplementation libs.micronaut.http.server.netty
}
18 changes: 9 additions & 9 deletions function-aws-alexa/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,23 @@ plugins {
}

dependencies {
annotationProcessor "io.micronaut:micronaut-validation"
annotationProcessor libs.micronaut.validation

implementation "io.micronaut:micronaut-runtime"
implementation "io.micronaut:micronaut-validation"
implementation libs.micronaut.runtime
implementation libs.micronaut.validation

implementation 'com.github.spotbugs:spotbugs-annotations'
implementation libs.spotbugs.annotations

implementation project(":function-aws")

api "com.amazon.alexa:ask-sdk-lambda-support:$askVersion"
api libs.managed.alexa.ask.sdk.lambda
api project(":aws-alexa")

runtimeOnly "org.slf4j:jcl-over-slf4j:1.7.36"
runtimeOnly libs.jcl.over.slf4j

testAnnotationProcessor "io.micronaut:micronaut-inject-java"
testImplementation ("com.amazon.alexa:ask-sdk:$askVersion") {
testAnnotationProcessor libs.micronaut.inject.java
testImplementation (libs.alexa.ask.sdk) {
transitive(false)
}
testImplementation "com.amazon.alexa:ask-sdk-apache-client:$askVersion"
testImplementation libs.alexa.ask.sdk.apache.client
}
7 changes: 3 additions & 4 deletions function-aws-api-proxy-test/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@ plugins {
}

dependencies {
api "io.micronaut:micronaut-http-server"
api libs.micronaut.http.server
api project(":function-aws-api-proxy")
implementation 'org.eclipse.jetty:jetty-server:9.4.35.v20201120'
testCompileOnly "io.micronaut:micronaut-inject-groovy"
testImplementation "io.micronaut:micronaut-http-client"
implementation libs.jetty.server
testImplementation libs.micronaut.http.client
}
37 changes: 19 additions & 18 deletions function-aws-api-proxy/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,36 +3,37 @@ plugins {
}

dependencies {
annotationProcessor "io.micronaut:micronaut-graal"
annotationProcessor libs.micronaut.graal
annotationProcessor("io.micronaut.serde:micronaut-serde-processor:1.0.1")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would recommend to update the build to 3.4.0, githubCoreBranch to 3.5.0 and use the serde version in the BOM.


compileOnly "io.micronaut.security:micronaut-security"
compileOnly libs.micronaut.security

implementation "io.micronaut:micronaut-http-netty"
implementation libs.micronaut.http.netty

implementation "io.projectreactor:reactor-core"
implementation libs.projectreactor
implementation libs.micronaut.serde
implementation libs.micronaut.serde.jackson

api "io.micronaut:micronaut-http-server"
api "com.amazonaws.serverless:aws-serverless-java-container-core:$awsServerlessJavaContainerCoreVersion", {
api libs.micronaut.http.server
api(libs.managed.aws.serverless.core) {
exclude group:'javax.servlet', module:'javax.servlet-api'
exclude group:'com.fasterxml.jackson.module', module:'jackson-module-afterburner'
exclude group: "commons-logging"
}
api "org.slf4j:jcl-over-slf4j:1.7.36"
api libs.managed.jcl.over.slf4j
api project(":function-aws")
api project(":aws-common")

testAnnotationProcessor "io.micronaut:micronaut-validation"
testImplementation "io.micronaut:micronaut-validation"
testAnnotationProcessor libs.micronaut.validation
testImplementation libs.micronaut.validation

testImplementation "io.micronaut:micronaut-inject-java"
testImplementation "io.micronaut:micronaut-inject-groovy"
testImplementation "io.micronaut:micronaut-http-client"
testImplementation "io.micronaut.security:micronaut-security"
testImplementation libs.micronaut.inject.java
testImplementation libs.micronaut.http.client
testImplementation libs.micronaut.security

testImplementation "io.micronaut.views:micronaut-views-handlebars"
testImplementation libs.micronaut.views.handlebars

testImplementation 'com.fasterxml.jackson.module:jackson-module-afterburner'
testImplementation 'javax.servlet:servlet-api:2.5'
testImplementation 'org.javadelight:delight-fileupload:0.0.5'
testRuntimeOnly 'com.github.jknack:handlebars:4.3.0'
testImplementation libs.jackson.afterburner
testImplementation libs.servlet.api
testImplementation libs.fileupload
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,7 @@

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectReader;
import com.fasterxml.jackson.databind.ObjectWriter;
import io.micronaut.json.JsonMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down Expand Up @@ -119,7 +117,7 @@ protected AbstractLambdaContainerHandler(Class<RequestType> requestClass,
*
* @return Return the object mapper.
*/
protected abstract ObjectMapper objectMapper();
protected abstract JsonMapper objectMapper();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a import io.micronaut.serde.ObjectMapper;. Why not return it instead?


/**
* Gets a writer for the given response class.
Expand All @@ -133,7 +131,7 @@ protected AbstractLambdaContainerHandler(Class<RequestType> requestClass,
* @param requestClass The request class
* @return The reader
*/
protected abstract ObjectReader readerFor(Class<RequestType> requestClass);
protected abstract ObjectReader<RequestType> readerFor(Class<RequestType> requestClass);

/**
* Get the container response.
Expand Down Expand Up @@ -258,4 +256,17 @@ public void proxyStream(InputStream input, OutputStream output, Context context)
public static ContainerConfig getContainerConfig() {
return config;
}

@FunctionalInterface
interface ObjectWriter {

void writeValue(OutputStream os, Object value) throws IOException;
}

@FunctionalInterface
interface ObjectReader<T> {

T readValue(InputStream input) throws IOException;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,15 @@
import com.amazonaws.serverless.proxy.model.AwsProxyResponse;
import com.amazonaws.serverless.proxy.model.ErrorModel;
import com.amazonaws.serverless.proxy.model.Headers;
import com.fasterxml.jackson.core.JsonProcessingException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;

/**
* Default {@link ExceptionHandler} implementation.
Expand Down Expand Up @@ -94,11 +95,12 @@ public void handle(Throwable ex, OutputStream stream) throws IOException {
* @return The error json
*/
protected String getErrorJson(String message) {
try {
return environment
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
environment
.getObjectMapper()
.writeValueAsString(new ErrorModel(message));
} catch (JsonProcessingException e) {
.writeValue(baos, new ErrorModel(message));
return baos.toString(StandardCharsets.UTF_8.name());
} catch (IOException e) {
LOG.error("Could not produce error JSON", e);
return "{ \"message\": \"" + message + "\" }";
}
Expand Down
Loading