Skip to content

Commit 6ab0cef

Browse files
author
Doug Hilpipre
committed
changed to lowercase
1 parent c346799 commit 6ab0cef

13 files changed

Lines changed: 397 additions & 0 deletions

File tree

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
2+
// Build.gradle generated for instrumentation module Spring-Integration-Core-5.3.0
3+
4+
apply plugin: 'java'
5+
6+
dependencies {
7+
// Declare a dependency on each JAR you want to instrument
8+
// Example:
9+
// implementation 'javax.servlet:servlet-api:2.5'
10+
implementation 'org.springframework.integration:spring-integration-core:5.3.0.RELEASE'
11+
implementation 'org.springframework.integration:spring-integration-http:5.3.0.RELEASE'
12+
implementation 'org.springframework.integration:spring-integration-ws:5.3.0.RELEASE'
13+
14+
// New Relic Labs Java Agent dependencies
15+
implementation 'com.newrelic.agent.java:newrelic-agent:6.4.0'
16+
implementation 'com.newrelic.agent.java:newrelic-api:6.4.0'
17+
implementation fileTree(include: ['*.jar'], dir: '../libs')
18+
implementation fileTree(include: ['*.jar'], dir: '../test-lib')
19+
}
20+
21+
jar {
22+
manifest {
23+
attributes 'Implementation-Title': 'com.newrelic.instrumentation.labs.Spring-Integration-Core-5.3.0'
24+
attributes 'Implementation-Vendor': 'New Relic Labs'
25+
attributes 'Implementation-Vendor-Id': 'com.newrelic.labs'
26+
attributes 'Implementation-Version': 1.0
27+
}
28+
}
29+
30+
verifyInstrumentation {
31+
passes ('org.springframework.integration:spring-integration-core:[5.3.0.RELEASE,)') {
32+
compile ('org.springframework.ws:spring-ws-core:3.0.9.RELEASE')
33+
compile ('org.springframework:spring-messaging:5.2.6.RELEASE')
34+
35+
}
36+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.newrelic.instrumentation.labs.spring.integration;
2+
3+
import com.newrelic.agent.bridge.AgentBridge;
4+
5+
import java.lang.reflect.Method;
6+
import java.util.HashSet;
7+
import java.util.Set;
8+
9+
public class SpringIntegrationUtils {
10+
11+
private static final Set<Method> instrumentedMethods = new HashSet<>();
12+
13+
public static void checkWhetherToInstrument(Method method) {
14+
if(!instrumentedMethods.contains(method)) {
15+
AgentBridge.instrumentation.instrument(method, "Custom/MethodInvoker/");
16+
instrumentedMethods.add(method);
17+
}
18+
}
19+
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package org.springframework.integration.core;
2+
3+
import java.util.concurrent.Future;
4+
5+
import org.springframework.messaging.Message;
6+
import org.springframework.messaging.MessageChannel;
7+
import org.springframework.messaging.PollableChannel;
8+
import org.springframework.messaging.core.MessagePostProcessor;
9+
10+
import com.newrelic.api.agent.Trace;
11+
import com.newrelic.api.agent.weaver.MatchType;
12+
import com.newrelic.api.agent.weaver.Weave;
13+
14+
@Weave(type=MatchType.Interface)
15+
public abstract class AsyncMessagingOperations {
16+
17+
@Trace
18+
public abstract Future<?> asyncSend(Message<?> message);
19+
20+
@Trace
21+
public abstract Future<?> asyncSend(MessageChannel channel, Message<?> message);
22+
23+
@Trace
24+
public abstract Future<?> asyncSend(String channelName, Message<?> message);
25+
26+
@Trace
27+
public abstract Future<?> asyncConvertAndSend(Object message);
28+
29+
@Trace
30+
public abstract Future<?> asyncConvertAndSend(MessageChannel channel, Object message);
31+
32+
@Trace
33+
public abstract Future<?> asyncConvertAndSend(String channelName, Object message);
34+
35+
@Trace
36+
public abstract Future<Message<?>> asyncReceive();
37+
38+
@Trace
39+
public abstract Future<Message<?>> asyncReceive(PollableChannel channel);
40+
41+
@Trace
42+
public abstract Future<Message<?>> asyncReceive(String channelName);
43+
44+
@Trace
45+
public abstract <R> Future<R> asyncReceiveAndConvert();
46+
47+
@Trace
48+
public abstract <R> Future<R> asyncReceiveAndConvert(PollableChannel channel);
49+
50+
@Trace
51+
public abstract <R> Future<R> asyncReceiveAndConvert(String channelName);
52+
53+
@Trace
54+
public abstract Future<Message<?>> asyncSendAndReceive(Message<?> requestMessage);
55+
56+
@Trace
57+
public abstract Future<Message<?>> asyncSendAndReceive(MessageChannel channel, Message<?> requestMessage);
58+
59+
@Trace
60+
public abstract Future<Message<?>> asyncSendAndReceive(String channelName, Message<?> requestMessage);
61+
62+
@Trace
63+
public abstract <R> Future<R> asyncConvertSendAndReceive(Object request);
64+
65+
@Trace
66+
public abstract <R> Future<R> asyncConvertSendAndReceive(MessageChannel channel, Object request);
67+
68+
@Trace
69+
public abstract <R> Future<R> asyncConvertSendAndReceive(String channelName, Object request);
70+
71+
@Trace
72+
public abstract <R> Future<R> asyncConvertSendAndReceive(Object request, MessagePostProcessor requestPostProcessor);
73+
74+
@Trace
75+
public abstract <R> Future<R> asyncConvertSendAndReceive(MessageChannel channel, Object request, MessagePostProcessor requestPostProcessor);
76+
77+
@Trace
78+
public abstract <R> Future<R> asyncConvertSendAndReceive(String channelName, Object request, MessagePostProcessor requestPostProcessor);
79+
80+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.springframework.integration.core;
2+
3+
import org.springframework.messaging.Message;
4+
5+
import com.newrelic.api.agent.NewRelic;
6+
import com.newrelic.api.agent.Trace;
7+
import com.newrelic.api.agent.weaver.MatchType;
8+
import com.newrelic.api.agent.weaver.Weave;
9+
import com.newrelic.api.agent.weaver.Weaver;
10+
11+
@Weave(type=MatchType.Interface)
12+
public abstract class MessageSelector {
13+
14+
@Trace(dispatcher=true)
15+
public boolean accept(Message<?> message) {
16+
NewRelic.getAgent().getTracedMethod().setMetricName(new String[] {"Custom","MessageSelector",getClass().getSimpleName(),"accept"});
17+
return Weaver.callOriginal();
18+
}
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.springframework.integration.core;
2+
3+
import org.springframework.messaging.Message;
4+
5+
import com.newrelic.api.agent.NewRelic;
6+
import com.newrelic.api.agent.Trace;
7+
import com.newrelic.api.agent.weaver.MatchType;
8+
import com.newrelic.api.agent.weaver.Weave;
9+
import com.newrelic.api.agent.weaver.Weaver;
10+
11+
@Weave(type=MatchType.Interface)
12+
public abstract class MessageSource<T> {
13+
14+
@Trace(dispatcher=true)
15+
public Message<T> receive() {
16+
NewRelic.getAgent().getTracedMethod().setMetricName(new String[] {"Custom","MessageSource",getClass().getSimpleName(),"receive"});
17+
return Weaver.callOriginal();
18+
}
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.springframework.integration.dispatcher;
2+
3+
import org.springframework.messaging.Message;
4+
5+
import com.newrelic.api.agent.NewRelic;
6+
import com.newrelic.api.agent.Trace;
7+
import com.newrelic.api.agent.weaver.MatchType;
8+
import com.newrelic.api.agent.weaver.Weave;
9+
import com.newrelic.api.agent.weaver.Weaver;
10+
11+
@Weave(type=MatchType.Interface)
12+
public abstract class MessageDispatcher {
13+
14+
@Trace
15+
public boolean dispatch(Message<?> message) {
16+
NewRelic.getAgent().getTracedMethod().setMetricName(new String[] {"Custom","MessageDispatcher",getClass().getSimpleName(),"dispatch"});
17+
return Weaver.callOriginal();
18+
}
19+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package org.springframework.integration.endpoint;
2+
3+
import org.springframework.messaging.Message;
4+
5+
import com.newrelic.api.agent.NewRelic;
6+
import com.newrelic.api.agent.Trace;
7+
import com.newrelic.api.agent.weaver.MatchType;
8+
import com.newrelic.api.agent.weaver.Weave;
9+
import com.newrelic.api.agent.weaver.Weaver;
10+
11+
@Weave(type=MatchType.BaseClass)
12+
public abstract class AbstractPollingEndpoint {
13+
14+
@Trace(dispatcher=true)
15+
protected void handleMessage(Message<?> message) {
16+
NewRelic.getAgent().getTracedMethod().setMetricName(new String[] {"Custom","AbstractPollingEndpoint",getClass().getSimpleName(),"handleMessage"});
17+
Weaver.callOriginal();
18+
}
19+
20+
@Trace(dispatcher=true)
21+
protected Message<?> receiveMessage(){
22+
NewRelic.getAgent().getTracedMethod().setMetricName(new String[] {"Custom","AbstractPollingEndpoint",getClass().getSimpleName(),"receiveMessage"});
23+
return Weaver.callOriginal();
24+
}
25+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package org.springframework.integration.endpoint;
2+
3+
import org.springframework.messaging.Message;
4+
5+
import com.newrelic.api.agent.Trace;
6+
import com.newrelic.api.agent.weaver.MatchType;
7+
import com.newrelic.api.agent.weaver.Weave;
8+
9+
@Weave(type=MatchType.BaseClass)
10+
public abstract class MessageProducerSupport {
11+
12+
@Trace
13+
protected abstract void sendMessage(Message<?> message);
14+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package org.springframework.integration.gateway;
2+
3+
import java.lang.reflect.Method;
4+
5+
import org.aopalliance.intercept.MethodInvocation;
6+
7+
import com.newrelic.api.agent.NewRelic;
8+
import com.newrelic.api.agent.weaver.Weave;
9+
import com.newrelic.api.agent.weaver.Weaver;
10+
11+
@Weave
12+
public abstract class GatewayProxyFactoryBean {
13+
14+
public Object invoke(final MethodInvocation invocation) {
15+
Method method = invocation.getMethod();
16+
String classname = method.getDeclaringClass().getSimpleName();
17+
String methodName = method.getName();
18+
NewRelic.getAgent().getTracedMethod().setMetricName("Custom","GatewayProxyFactoryBean","invoke",classname,methodName);
19+
return Weaver.callOriginal();
20+
}
21+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package org.springframework.integration.gateway;
2+
3+
import org.springframework.messaging.Message;
4+
5+
import com.newrelic.api.agent.NewRelic;
6+
import com.newrelic.api.agent.Trace;
7+
import com.newrelic.api.agent.weaver.MatchType;
8+
import com.newrelic.api.agent.weaver.Weave;
9+
import com.newrelic.api.agent.weaver.Weaver;
10+
11+
@Weave(type=MatchType.BaseClass)
12+
public abstract class MessagingGatewaySupport {
13+
14+
@Trace(dispatcher=true)
15+
protected Object receive() {
16+
NewRelic.getAgent().getTracedMethod().setMetricName(new String[] {"Custom","MessagingGatewaySupport",getClass().getSimpleName(),"receive"});
17+
return Weaver.callOriginal();
18+
}
19+
20+
@Trace
21+
protected void send(Object object) {
22+
NewRelic.getAgent().getTracedMethod().setMetricName(new String[] {"Custom","MessagingGatewaySupport",getClass().getSimpleName(),"send"});
23+
Weaver.callOriginal();
24+
}
25+
26+
@Trace
27+
protected Object sendAndReceive(Object object) {
28+
NewRelic.getAgent().getTracedMethod().setMetricName(new String[] {"Custom","MessagingGatewaySupport",getClass().getSimpleName(),"sendAndReceive"});
29+
return Weaver.callOriginal();
30+
}
31+
32+
@Trace
33+
protected Message<?> sendAndReceiveMessage(Object object) {
34+
NewRelic.getAgent().getTracedMethod().setMetricName(new String[] {"Custom","MessagingGatewaySupport",getClass().getSimpleName(),"sendAndReceiveMessage"});
35+
return Weaver.callOriginal();
36+
}
37+
}

0 commit comments

Comments
 (0)