Skip to content

Commit 22250aa

Browse files
committed
Changes for supporting all input types
1 parent 3701f27 commit 22250aa

File tree

5 files changed

+34
-32
lines changed

5 files changed

+34
-32
lines changed

extension/publish-layer.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ function publish-layer {
5252
--content "S3Bucket=${bucket_name},S3Key=${layer_s3key}" \
5353
--description "New Relic Lambda Extension Layer" \
5454
--license-info "Apache-2.0" \
55-
--compatible-runtimes "dotnetcore3.1" "java8.al2" "java11" "provided" "provided.al2" \
55+
--compatible-runtimes "dotnetcore3.1" "provided" "provided.al2" \
5656
--region $region \
5757
--output text \
5858
--query Version)

java/build.gradle

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@ repositories {
77
}
88

99
dependencies {
10-
implementation("com.newrelic.opentracing:newrelic-java-lambda:2.1.2")
11-
implementation("com.newrelic.opentracing:java-aws-lambda:2.1.0")
12-
implementation("com.amazonaws:aws-lambda-java-events:3.1.0")
1310
implementation("io.opentracing:opentracing-util:0.33.0")
14-
implementation("com.amazonaws:aws-lambda-java-core:1.1.0")
11+
implementation("com.newrelic.opentracing:newrelic-java-lambda:2.2.0")
12+
implementation("com.newrelic.opentracing:java-aws-lambda:2.1.0")
13+
implementation("com.amazonaws:aws-lambda-java-events:3.8.0")
14+
implementation("com.amazonaws:aws-lambda-java-core:1.2.0")
15+
implementation("com.amazonaws:aws-lambda-java-serialization:1.0.0")
1516
implementation("com.fasterxml.jackson.core:jackson-databind:2.12.2")
1617
implementation("com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.2")
1718
testImplementation("junit:junit:4.13")

java/publish-layers.sh

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,21 @@ EXTENSION_DIST_ZIP=extension.zip
1414
EXTENSION_DIST_PREVIEW_FILE=preview-extensions-ggqizro707
1515

1616
REGIONS=(
17-
ap-northeast-1
18-
ap-northeast-2
19-
ap-south-1
20-
ap-southeast-1
21-
ap-southeast-2
22-
ca-central-1
23-
eu-central-1
24-
eu-west-1
25-
eu-west-2
26-
eu-west-3
27-
sa-east-1
28-
us-east-1
29-
us-east-2
30-
us-west-1
31-
us-west-2
17+
ap-northeast-1
18+
ap-northeast-2
19+
ap-south-1
20+
ap-southeast-1
21+
ap-southeast-2
22+
ca-central-1
23+
eu-central-1
24+
eu-west-1
25+
eu-west-2
26+
eu-west-3
27+
sa-east-1
28+
us-east-1
29+
us-east-2
30+
us-west-1
31+
us-west-2
3232
)
3333

3434
function usage {

java/src/main/java/com/newrelic/java/JavaClassLoader.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
import com.amazonaws.services.lambda.runtime.Context;
44
import com.amazonaws.services.lambda.runtime.RequestStreamHandler;
5+
import com.amazonaws.services.lambda.runtime.serialization.PojoSerializer;
6+
import com.amazonaws.services.lambda.runtime.serialization.events.LambdaEventSerializers;
7+
import com.fasterxml.jackson.core.JsonProcessingException;
58
import com.fasterxml.jackson.databind.DeserializationFeature;
69
import com.fasterxml.jackson.databind.MapperFeature;
710
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -22,7 +25,6 @@ public class JavaClassLoader {
2225
.enable(DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS)
2326
.registerModule(new JodaModule());
2427

25-
2628
private static Class inputType;
2729
private static MethodHandle methodHandle;
2830
private static RequestStreamHandler classInstance;
@@ -53,24 +55,20 @@ private JavaClassLoader(Class inputType, MethodHandle methodHandle) {
5355
static JavaClassLoader initializeClassLoader(String className, String methodName) throws ReflectiveOperationException {
5456
Class loadedClass = classLoader.loadClass(className);
5557
Class methodInputType = null;
56-
5758
for (Method method : loadedClass.getMethods()) {
5859
if (isUserHandlerMethod(method, className, methodName) == true) {
5960
methodInputType = method.getParameterTypes()[0];
6061
break;
6162
}
6263
}
63-
6464
Object classInstance = loadedClass.getDeclaredConstructor().newInstance();
6565
MethodHandle methodHandle = publicLookup.findVirtual(loadedClass, methodName, methodType).bindTo(classInstance);
66-
6766
return new JavaClassLoader(methodInputType, methodHandle);
6867
}
6968

7069
public Object invokeClassMethod(Object inputParam, Context contextParam) {
71-
70+
Object handlerType = mappingInputToHandlerType(inputParam, inputType);
7271
try {
73-
Object handlerType = mappingInputToHandlerType(inputParam, inputType);
7472
return methodHandle.invokeWithArguments(handlerType, contextParam);
7573
} catch (Throwable e) {
7674
throw new RuntimeException("Error occurred while invoking handler method: " + e);
@@ -89,10 +87,16 @@ private static boolean isUserHandlerMethod(Method method, String className, Stri
8987
}
9088

9189
private Object mappingInputToHandlerType(Object inputParam, Class inputType) {
92-
if (inputType.isAssignableFrom(Integer.class)) {
93-
return inputParam;
94-
} else if (inputType.isAssignableFrom(String.class)) {
90+
if (inputType.isAssignableFrom(Number.class) || inputType.isAssignableFrom(String.class)) {
9591
return inputParam;
92+
} else if (LambdaEventSerializers.isLambdaSupportedEvent(inputType.getName())) {
93+
try {
94+
PojoSerializer serializer = LambdaEventSerializers.serializerFor(inputType, classLoader);
95+
String inputParamString = mapper.writeValueAsString(inputParam);
96+
return serializer.fromJson(inputParamString);
97+
} catch (JsonProcessingException e) {
98+
throw new RuntimeException("Error occurred while serializing lambda input type: " + e);
99+
}
96100
}
97101
return mapper.convertValue(inputParam, inputType);
98102
}

java/src/main/java/com/newrelic/java/RequestHandlerWrapper.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,4 @@ public Object handleRequest(Object input, Context context) {
3636
(event, ctx) -> javaClassLoader.invokeClassMethod(input, context)
3737
);
3838
}
39-
40-
41-
4239
}

0 commit comments

Comments
 (0)