diff --git a/instrumentation/aws-java-sdk-s3-2.0/src/main/java/com/agent/instrumentation/awsjavasdk2/services/s3/ResultWrapper.java b/instrumentation/aws-java-sdk-s3-2.0/src/main/java/com/agent/instrumentation/awsjavasdk2/services/s3/ResultWrapper.java new file mode 100644 index 0000000000..82bcdd99a9 --- /dev/null +++ b/instrumentation/aws-java-sdk-s3-2.0/src/main/java/com/agent/instrumentation/awsjavasdk2/services/s3/ResultWrapper.java @@ -0,0 +1,24 @@ +package com.agent.instrumentation.awsjavasdk2.services.s3; + +import com.newrelic.agent.bridge.AgentBridge; +import com.newrelic.api.agent.Segment; +import com.newrelic.api.agent.weaver.Weaver; + +import java.util.function.BiConsumer; + +public class ResultWrapper implements BiConsumer { + private Segment segment; + + public ResultWrapper(Segment segment) { + this.segment = segment; + } + + @Override + public void accept(T t, U u) { + try { + segment.end(); + } catch (Throwable t1) { + AgentBridge.instrumentation.noticeInstrumentationError(t1, Weaver.getImplementationTitle()); + } + } +} diff --git a/instrumentation/aws-java-sdk-s3-2.0/src/main/java/com/agent/instrumentation/awsjavasdk2/services/s3/S3ResponseResultWrapper.java b/instrumentation/aws-java-sdk-s3-2.0/src/main/java/com/agent/instrumentation/awsjavasdk2/services/s3/S3ResponseResultWrapper.java new file mode 100644 index 0000000000..98ad5c23c6 --- /dev/null +++ b/instrumentation/aws-java-sdk-s3-2.0/src/main/java/com/agent/instrumentation/awsjavasdk2/services/s3/S3ResponseResultWrapper.java @@ -0,0 +1,30 @@ +package com.agent.instrumentation.awsjavasdk2.services.s3; + +import com.newrelic.agent.bridge.AgentBridge; +import com.newrelic.api.agent.Segment; +import com.newrelic.api.agent.weaver.Weaver; +import software.amazon.awssdk.services.s3.model.S3Response; + +import java.util.function.BiConsumer; + +public class S3ResponseResultWrapper implements BiConsumer { + private Segment segment; + private String uri; + private String operationName; + + public S3ResponseResultWrapper(Segment segment, String uri, String operationName) { + this.segment = segment; + this.uri = uri; + this.operationName = operationName; + } + + @Override + public void accept(T s3Response, U u) { + try { + S3MetricUtil.reportExternalMetrics(segment, uri, s3Response, operationName); + segment.end(); + } catch (Throwable t1) { + AgentBridge.instrumentation.noticeInstrumentationError(t1, Weaver.getImplementationTitle()); + } + } +} diff --git a/instrumentation/aws-java-sdk-s3-2.0/src/main/java/software/amazon/awssdk/services/s3/S3AsyncClient_Instrumentation.java b/instrumentation/aws-java-sdk-s3-2.0/src/main/java/software/amazon/awssdk/services/s3/S3AsyncClient_Instrumentation.java index adf6a9bd81..4d3bf6c72f 100644 --- a/instrumentation/aws-java-sdk-s3-2.0/src/main/java/software/amazon/awssdk/services/s3/S3AsyncClient_Instrumentation.java +++ b/instrumentation/aws-java-sdk-s3-2.0/src/main/java/software/amazon/awssdk/services/s3/S3AsyncClient_Instrumentation.java @@ -7,14 +7,14 @@ package software.amazon.awssdk.services.s3; -import com.agent.instrumentation.awsjavasdk2.services.s3.S3MetricUtil; +import com.agent.instrumentation.awsjavasdk2.services.s3.ResultWrapper; +import com.agent.instrumentation.awsjavasdk2.services.s3.S3ResponseResultWrapper; import com.newrelic.agent.bridge.AgentBridge; import com.newrelic.api.agent.NewRelic; import com.newrelic.api.agent.Segment; import com.newrelic.api.agent.weaver.MatchType; import com.newrelic.api.agent.weaver.Weave; import com.newrelic.api.agent.weaver.Weaver; -import java.util.Optional; import software.amazon.awssdk.core.async.AsyncRequestBody; import software.amazon.awssdk.core.async.AsyncResponseTransformer; import software.amazon.awssdk.services.s3.model.CreateBucketRequest; @@ -34,10 +34,8 @@ import software.amazon.awssdk.services.s3.model.ListObjectsResponse; import software.amazon.awssdk.services.s3.model.PutObjectRequest; import software.amazon.awssdk.services.s3.model.PutObjectResponse; -import software.amazon.awssdk.services.s3.model.S3Response; import java.util.concurrent.CompletableFuture; -import java.util.function.BiConsumer; @Weave(type = MatchType.Interface, originalName = "software.amazon.awssdk.services.s3.S3AsyncClient") public class S3AsyncClient_Instrumentation { @@ -131,43 +129,4 @@ public CompletableFuture deleteObjects(DeleteObjectsReque return result.whenComplete(new S3ResponseResultWrapper<>(segment, uri, "deleteObjects")); } - - private class ResultWrapper implements BiConsumer { - private Segment segment; - - public ResultWrapper(Segment segment) { - this.segment = segment; - } - - @Override - public void accept(T t, U u) { - try { - segment.end(); - } catch (Throwable t1) { - AgentBridge.instrumentation.noticeInstrumentationError(t1, Weaver.getImplementationTitle()); - } - } - } - - private class S3ResponseResultWrapper implements BiConsumer { - private Segment segment; - private String uri; - private String operationName; - - public S3ResponseResultWrapper(Segment segment, String uri, String operationName) { - this.segment = segment; - this.uri = uri; - this.operationName = operationName; - } - - @Override - public void accept(T s3Response, U u) { - try { - S3MetricUtil.reportExternalMetrics(segment, uri, s3Response, operationName); - segment.end(); - } catch (Throwable t1) { - AgentBridge.instrumentation.noticeInstrumentationError(t1, Weaver.getImplementationTitle()); - } - } - } }