diff --git a/camel-core-4.1.0/build.gradle b/camel-core-4.1.0/build.gradle deleted file mode 100644 index 89674d3..0000000 --- a/camel-core-4.1.0/build.gradle +++ /dev/null @@ -1,27 +0,0 @@ - -// Build.gradle generated for instrumentation module camel-core-4.0.1 - -apply plugin: 'java' - -dependencies { - implementation 'org.apache.camel:camel-core:4.1.0' - // New Relic Labs Java Agent dependencies - implementation 'com.newrelic.agent.java:newrelic-agent:7.5.0' - implementation 'com.newrelic.agent.java:newrelic-api:7.5.0' - implementation fileTree(include: ['*.jar'], dir: '../libs') -} - -jar { - manifest { - attributes 'Implementation-Title': 'com.newrelic.instrumentation.labs.camel-core-4.1.0' - attributes 'Implementation-Vendor': 'New Relic Labs' - attributes 'Implementation-Vendor-Id': 'com.newrelic.labs' - attributes 'Implementation-Version': 1.0 - } -} - -verifyInstrumentation { - passes 'org.apache.camel:camel-core:[4.1.0,)' - excludeRegex '.*M[1-9]' - excludeRegex '.*RC[1-9]' -} diff --git a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/AggregateProcessor_instrumentation.java b/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/AggregateProcessor_instrumentation.java deleted file mode 100644 index 221ea9f..0000000 --- a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/AggregateProcessor_instrumentation.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.nr.instrumentation.apache.camel; - -import java.util.HashMap; -import java.util.Map; - -import org.apache.camel.AsyncCallback; -import org.apache.camel.Exchange; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.TransactionNamePriority; -import com.newrelic.api.agent.TransportType; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; - -@Weave(originalName="org.apache.camel.processor.aggregate.AggregateProcessor") -public abstract class AggregateProcessor_instrumentation { - - @Trace(dispatcher = true) - protected boolean doProcess(Exchange exchange, AsyncCallback callback) { - Map attributes = new HashMap(); - Util.recordExchange(attributes, exchange); - NewRelic.getAgent().getTracedMethod().addCustomAttributes(attributes); - String routeID = exchange != null ? exchange.getFromRouteId() : null; - if(routeID != null && !routeID.isEmpty()) { - NewRelic.getAgent().getTracedMethod().setMetricName(new String[] {"Custom","AggregateProcessor","doProcess",routeID}); - NewRelic.getAgent().getTransaction().setTransactionName(TransactionNamePriority.FRAMEWORK_LOW, false, "CamelProcessor", new String[] {"AggregateProcessor",routeID}); - } - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelHeaders(exchange)); - return Weaver.callOriginal(); - } - - @Trace(dispatcher=true) - protected boolean doProcess(Exchange exchange, String key, AsyncCallback callback, boolean sync) { - String routeID = exchange != null ? exchange.getFromRouteId() : null; - if(routeID != null && !routeID.isEmpty()) { - NewRelic.addCustomParameter("From Route ID", routeID); - NewRelic.getAgent().getTracedMethod().setMetricName(new String[] {"Custom","AggregateProcessor","doProcess",routeID}); - NewRelic.getAgent().getTransaction().setTransactionName(TransactionNamePriority.FRAMEWORK_LOW, false, "CamelProcessor", new String[] {"AggregateProcessor",routeID}); - } - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelHeaders(exchange)); - - return Weaver.callOriginal(); - } -} diff --git a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/CamelHeaders.java b/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/CamelHeaders.java deleted file mode 100644 index a4c4ec4..0000000 --- a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/CamelHeaders.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.nr.instrumentation.apache.camel; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import org.apache.camel.Exchange; -import org.apache.camel.Message; - -import com.newrelic.api.agent.HeaderType; -import com.newrelic.api.agent.Headers; - -public class CamelHeaders implements Headers { - - private Exchange exchange = null; - - public CamelHeaders(Exchange ex) { - exchange = ex; - } - - @Override - public void addHeader(String name, String value) { - exchange.setProperty(name, value); - Message msg = exchange.getMessage(); - if(msg != null) { - msg.setHeader(name, value); - } - } - - @Override - public boolean containsHeader(String name) { - return getHeaderNames().contains(name); - } - - @Override - public String getHeader(String name) { - Object value = exchange.getProperty(name); - - if (value == null) { - Message message = exchange.getMessage(); - if (message != null) { - value = message.getHeader(name); - } - } - return value != null ? value.toString() : null; - } - - @Override - public Collection getHeaderNames() { - Map props = exchange.getProperties(); - - return props != null ? props.keySet() : Collections.emptyList(); - } - - @Override - public HeaderType getHeaderType() { - return HeaderType.MESSAGE; - } - - @Override - public Collection getHeaders(String name) { - List list = new ArrayList<>(); - String value = getHeader(name); - if(value != null && !value.isEmpty()) { - list.add(value); - } - return list; - } - - @Override - public void setHeader(String name, String value) { - exchange.setProperty(name, value); - Message msg = exchange.getMessage(); - if(msg != null) { - msg.setHeader(name, value); - } - } - -} diff --git a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/CamelInternalProcessor_instrumentation.java b/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/CamelInternalProcessor_instrumentation.java deleted file mode 100644 index 3b8ea8d..0000000 --- a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/CamelInternalProcessor_instrumentation.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.nr.instrumentation.apache.camel; - -import java.util.HashMap; -import java.util.Map; - -import org.apache.camel.AsyncCallback; -import org.apache.camel.Exchange; -import org.apache.camel.Message; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.TracedMethod; -import com.newrelic.api.agent.TransportType; -import com.newrelic.api.agent.weaver.MatchType; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; - -@Weave(type=MatchType.BaseClass,originalName="org.apache.camel.impl.engine.CamelInternalProcessor") -public abstract class CamelInternalProcessor_instrumentation { - - @Trace(dispatcher = true) - public boolean process(Exchange exchange, AsyncCallback callback) { - Map attributes = new HashMap(); - Util.recordExchange(attributes, exchange); - TracedMethod traced = NewRelic.getAgent().getTracedMethod(); - if(exchange != null && exchange.getFromRouteId() != null) { - traced.setMetricName("Custom","CamelInternalProcessor","process",exchange.getFromRouteId()); - } - if(!attributes.isEmpty()) { - traced.addCustomAttributes(attributes); - } - Message message = exchange.getMessage(); - - - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelMessageHeaders(message)); - return Weaver.callOriginal(); - } -} diff --git a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/CamelMapHeaders.java b/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/CamelMapHeaders.java deleted file mode 100644 index d92f388..0000000 --- a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/CamelMapHeaders.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.nr.instrumentation.apache.camel; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Map; - -import com.newrelic.api.agent.HeaderType; -import com.newrelic.api.agent.Headers; - -public class CamelMapHeaders implements Headers { - - private Map map = null; - - public CamelMapHeaders(Map m) { - map = m; - } - - @Override - public HeaderType getHeaderType() { - return HeaderType.MESSAGE; - } - - @Override - public String getHeader(String name) { - Object obj = map.get(name); - if(obj != null) return obj.toString(); - return null; - } - - @Override - public Collection getHeaders(String name) { - List list = new ArrayList<>(); - String value = getHeader(name); - if(value != null && !value.isEmpty()) { - list.add(value); - } - return list; - } - - @Override - public void setHeader(String name, String value) { - map.put(name, value); - } - - @Override - public void addHeader(String name, String value) { - map.put(name, value); - } - - @Override - public Collection getHeaderNames() { - return map.keySet(); - } - - @Override - public boolean containsHeader(String name) { - return getHeaderNames().contains(name); - } - -} diff --git a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/CamelMessageHeaders.java b/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/CamelMessageHeaders.java deleted file mode 100644 index cf3ed85..0000000 --- a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/CamelMessageHeaders.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.nr.instrumentation.apache.camel; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.logging.Level; - -import org.apache.camel.Message; - -import com.newrelic.api.agent.HeaderType; -import com.newrelic.api.agent.Headers; -import com.newrelic.api.agent.NewRelic; - -public class CamelMessageHeaders implements Headers { - - private Message message = null; - - public CamelMessageHeaders(Message ex) { - message = ex; - } - - @Override - public void addHeader(String name, String value) { - message.setHeader(name, value); - } - - @Override - public boolean containsHeader(String name) { - return getHeaderNames().contains(name); - } - - @Override - public String getHeader(String name) { - Object value = message.getHeader(name); - if(value == null) { - NewRelic.getAgent().getLogger().log(Level.FINE, "Message Header is null"); - return null; - } - if(value instanceof String) { - NewRelic.getAgent().getLogger().log(Level.FINE, "Message Header is string: {0}", value.toString()); - return (String)value; - } - if(value instanceof byte[]) { - String v = new String((byte[])value); - NewRelic.getAgent().getLogger().log(Level.FINE, "Message Header is byte array: {0}", v); - return new String((byte[])value); - } - NewRelic.getAgent().getLogger().log(Level.FINE, "Message header is not a string, it is {0}", value.getClass()); - return value.toString(); - } - - @Override - public Collection getHeaderNames() { - Map props = message.getHeaders(); - - return props != null ? props.keySet() : Collections.emptyList(); - } - - @Override - public HeaderType getHeaderType() { - return HeaderType.MESSAGE; - } - - @Override - public Collection getHeaders(String name) { - List list = new ArrayList<>(); - - String value = getHeader(name); - if(value != null && !value.isEmpty()) { - list.add(value); - } - return list; - } - - @Override - public void setHeader(String name, String value) { - message.setHeader(name, value); - } - -} diff --git a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/ChoiceProcessor_instrumentation.java b/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/ChoiceProcessor_instrumentation.java deleted file mode 100644 index 942f421..0000000 --- a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/ChoiceProcessor_instrumentation.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.nr.instrumentation.apache.camel; - -import java.util.HashMap; -import java.util.Map; - -import org.apache.camel.AsyncCallback; -import org.apache.camel.Endpoint; -import org.apache.camel.Exchange; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.TransactionNamePriority; -import com.newrelic.api.agent.TransportType; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; - -@Weave(originalName="org.apache.camel.processor.ChoiceProcessor") -public abstract class ChoiceProcessor_instrumentation { - - @Trace(dispatcher=true) - public boolean process(Exchange exchange, AsyncCallback callback) { - Map attributes = new HashMap(); - Util.recordExchange(attributes, exchange); - String classname = getClass().getSimpleName(); - CamelHeaders headers = new CamelHeaders(exchange); - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, headers); - Endpoint endpoint = exchange.getFromEndpoint(); - if(endpoint != null) { - String endpointURI = endpoint.getEndpointBaseUri(); - if(endpointURI != null && !endpointURI.isEmpty()) { - Util.recordValue(attributes, "EndpointURI", endpointURI); - } - } - NewRelic.getAgent().getTracedMethod().addCustomAttributes(attributes); - String routeID = exchange != null ? exchange.getFromRouteId() : null; - if(routeID != null && !routeID.isEmpty()) { - NewRelic.getAgent().getTracedMethod().setMetricName(new String[] {"Custom",classname,"process",routeID}); - NewRelic.getAgent().getTransaction().setTransactionName(TransactionNamePriority.FRAMEWORK_LOW, false, "ChoiceProcessor", new String[] {"ChoiceProcessor",routeID}); - } - return Weaver.callOriginal(); - } - -} diff --git a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/InvokeOnHeader_instrumentation.java b/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/InvokeOnHeader_instrumentation.java deleted file mode 100644 index 0619332..0000000 --- a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/InvokeOnHeader_instrumentation.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.nr.instrumentation.apache.camel; - -import com.newrelic.api.agent.weaver.WeaveWithAnnotation; -import com.newrelic.api.agent.weaver.Weaver; -import com.newrelic.api.agent.Transaction; -import com.newrelic.api.agent.TransactionNamePriority; -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.weaver.MatchType; -import com.newrelic.api.agent.weaver.WeaveIntoAllMethods; -import org.apache.camel.spi.InvokeOnHeader; - -public abstract class InvokeOnHeader_instrumentation { - - @WeaveIntoAllMethods - @WeaveWithAnnotation(annotationClasses = { "org.apache.camel.spi.InvokeOnHeader" },type=MatchType.Interface) - @Trace(dispatcher=true) - private static void instrumentation() { - - String name = null; - - InvokeOnHeader invokeOnHeaderAnnotation = Weaver.getClassAnnotation(InvokeOnHeader.class); - if(invokeOnHeaderAnnotation != null) { - name = invokeOnHeaderAnnotation.value(); - } - - if(name == null || name.isEmpty()) { - Class thisClass = InvokeOnHeader_instrumentation.class; - name = thisClass.getSimpleName(); - } - - StackTraceElement[] traces = Thread.currentThread().getStackTrace(); - StackTraceElement first = traces[1]; - String methodName = first.getMethodName(); - Transaction transaction = NewRelic.getAgent().getTransaction(); - if(transaction != null) { - NewRelic.getAgent().getTracedMethod().setMetricName(new String[] {"Custom","Camel",name,methodName}); - transaction.setTransactionName(TransactionNamePriority.FRAMEWORK_LOW, true, "Camel-InvokeOnHeader", new String[] {name,methodName}); - } - } -} diff --git a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/MultiCastProcessor_instrumentation.java b/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/MultiCastProcessor_instrumentation.java deleted file mode 100644 index 24a6a4e..0000000 --- a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/MultiCastProcessor_instrumentation.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.nr.instrumentation.apache.camel; - -import java.util.HashMap; -import java.util.Map; - -import org.apache.camel.AsyncCallback; -import org.apache.camel.Exchange; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.TransportType; -import com.newrelic.api.agent.weaver.MatchType; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; - -@Weave(type=MatchType.BaseClass,originalName="org.apache.camel.processor.MulticastProcessor") -public abstract class MultiCastProcessor_instrumentation { - - @Trace(dispatcher=true) - public boolean process(Exchange exchange, AsyncCallback callback) { - Map attributes = new HashMap(); - Util.recordExchange(attributes, exchange); - NewRelic.getAgent().getTracedMethod().addCustomAttributes(attributes); - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelHeaders(exchange)); - - return Weaver.callOriginal(); - } - - @Weave(originalName="org.apache.camel.processor.MulticastProcessor$MulticastTask", type = MatchType.BaseClass) - protected static abstract class MulticastTask { - - - @Trace(dispatcher=true) - protected void doDone(Exchange exchange, boolean forceExhaust) { - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelHeaders(exchange)); - Weaver.callOriginal(); - } - - } - -} diff --git a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/NRAsyncProcessorWrapper.java b/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/NRAsyncProcessorWrapper.java deleted file mode 100644 index 54dc372..0000000 --- a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/NRAsyncProcessorWrapper.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.nr.instrumentation.apache.camel; - -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.CompletableFuture; - -import org.apache.camel.AsyncCallback; -import org.apache.camel.AsyncProcessor; -import org.apache.camel.Exchange; -import org.apache.camel.Route; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.TransactionNamePriority; -import com.newrelic.api.agent.TransportType; - -public class NRAsyncProcessorWrapper extends NRProcessorWrapper implements AsyncProcessor { - - public NRAsyncProcessorWrapper(AsyncProcessor p,Route r) { - super(p,r); - } - - @Override - @Trace(dispatcher=true) - public boolean process(Exchange exchange, AsyncCallback callback) { - Map attributes = new HashMap(); - Util.recordExchange(attributes, exchange); - NewRelic.getAgent().getTracedMethod().addCustomAttributes(attributes); - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelHeaders(exchange)); - String[] names; - if(route != null) { - String routeId = route.getId(); - if(routeId != null && !routeId.isEmpty()) { - names = new String[] {"Custom","AsyncProcessor",delegate.getClass().getSimpleName(),"process",routeId}; - NewRelic.getAgent().getTracedMethod().addCustomAttribute("RouteId", routeId); - NewRelic.getAgent().getTransaction().setTransactionName(TransactionNamePriority.FRAMEWORK_LOW, false, "Processor", "Process",routeId); - } else { - names = new String[] {"Custom","AsyncProcessor",delegate.getClass().getSimpleName(),"process"}; - } - } else { - names = new String[] {"Custom","AsyncProcessor",delegate.getClass().getSimpleName(),"process"}; - - } - NewRelic.getAgent().getTracedMethod().setMetricName(names); - return ((AsyncProcessor)delegate).process(exchange, callback); - } - - @Override - @Trace(dispatcher = true) - public CompletableFuture processAsync(Exchange exchange) { - Map attributes = new HashMap(); - Util.recordExchange(attributes, exchange); - NewRelic.getAgent().getTracedMethod().addCustomAttributes(attributes); - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelHeaders(exchange)); - String[] names; - if(route != null) { - String routeId = route.getId(); - if(routeId != null && !routeId.isEmpty()) { - names = new String[] {"Custom","AsyncProcessor",delegate.getClass().getSimpleName(),"process",routeId}; - NewRelic.getAgent().getTracedMethod().addCustomAttribute("RouteId", routeId); - } else { - names = new String[] {"Custom","AsyncProcessor",delegate.getClass().getSimpleName(),"process"}; - } - } else { - names = new String[] {"Custom","AsyncProcessor",delegate.getClass().getSimpleName(),"processAsync"}; - - } - NewRelic.getAgent().getTracedMethod().setMetricName(names); - return ((AsyncProcessor)delegate).processAsync(exchange); - } - -} diff --git a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/NRBiConsumer.java b/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/NRBiConsumer.java deleted file mode 100644 index dd837aa..0000000 --- a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/NRBiConsumer.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.nr.instrumentation.apache.camel; - -import java.util.function.BiConsumer; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Segment; - -public class NRBiConsumer implements BiConsumer { - - private Segment segment = null; - - public NRBiConsumer(String segmentName) { - segment = NewRelic.getAgent().getTransaction().startSegment(segmentName); - } - - @Override - public void accept(T t, Throwable u) { - if(u != null) { - NewRelic.noticeError(u);; - } - if(segment != null) { - segment.end(); - segment = null; - } - } - -} diff --git a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/NRProcessorWrapper.java b/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/NRProcessorWrapper.java deleted file mode 100644 index 6a17a6f..0000000 --- a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/NRProcessorWrapper.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.nr.instrumentation.apache.camel; - -import java.util.HashMap; -import java.util.Map; - -import org.apache.camel.Exchange; -import org.apache.camel.Processor; -import org.apache.camel.Route; - -import com.newrelic.agent.bridge.AgentBridge; -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.TransactionNamePriority; -import com.newrelic.api.agent.TransportType; - -public class NRProcessorWrapper implements Processor { - - private static boolean isTransformed = false; - protected Route route = null; - - protected Processor delegate = null; - - public NRProcessorWrapper(Processor p,Route r) { - delegate = p; - route = r; - if(!isTransformed) { - AgentBridge.instrumentation.retransformUninstrumentedClass(getClass()); - } - } - - @Override - @Trace(dispatcher=true) - public void process(Exchange exchange) throws Exception { - Map attributes = new HashMap(); - Util.recordExchange(attributes, exchange); - NewRelic.getAgent().getTracedMethod().addCustomAttributes(attributes); - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelHeaders(exchange)); - if(route != null) { - String routeId = route.getId(); - if(routeId != null && !routeId.isEmpty()) { - NewRelic.getAgent().getTracedMethod().addCustomAttribute("RouteId", routeId); - NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Consumer","Processor",delegate.getClass().getSimpleName(),"process",routeId); - NewRelic.getAgent().getTransaction().setTransactionName(TransactionNamePriority.FRAMEWORK_HIGH, false, "Camel-Consumer", "Consumer","Route",routeId); - } else { - NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Consumer","Processor",delegate.getClass().getSimpleName(),"process"); - } - } else { - NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Producer","Processor",delegate.getClass().getSimpleName(),"process"); - } - if(delegate != null) { - delegate.process(exchange); - } - - } - -} diff --git a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/NRRunnable.java b/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/NRRunnable.java deleted file mode 100644 index 6e8b3e7..0000000 --- a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/NRRunnable.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.nr.instrumentation.apache.camel; - -import com.newrelic.agent.bridge.AgentBridge; -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Token; -import com.newrelic.api.agent.Trace; - -public class NRRunnable implements Runnable { - - private static boolean isTransformed = false; - - private Runnable delegate = null; - private Token token = null; - - public NRRunnable(Runnable d, Token t) { - if(!isTransformed) { - AgentBridge.instrumentation.retransformUninstrumentedClass(getClass()); - isTransformed = true; - } - delegate = d; - token = t; - } - - @Override - @Trace(async=true) - public void run() { - if(token != null) { - token.linkAndExpire(); - token = null; - } - NewRelic.getAgent().getTracedMethod().addCustomAttribute("Delegate", delegate.getClass().getName()); - delegate.run(); - } - -} diff --git a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/NRSynchronization.java b/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/NRSynchronization.java deleted file mode 100644 index 0b0092a..0000000 --- a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/NRSynchronization.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.nr.instrumentation.apache.camel; - -import org.apache.camel.Exchange; -import org.apache.camel.spi.Synchronization; - -import com.newrelic.api.agent.NewRelic; - -public class NRSynchronization implements Synchronization { - - public NRSynchronization() { - } - - @Override - public void onComplete(Exchange exchange) { - } - - @Override - public void onFailure(Exchange exchange) { - NewRelic.incrementCounter("/Custom/NRSynchronization/Failed"); - if(exchange.isFailed()) { - Exception e = exchange.getException(); - if(e != null) { - NewRelic.noticeError(e); - } - } - - } - -} diff --git a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/Pipeline_instrumentation.java b/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/Pipeline_instrumentation.java deleted file mode 100644 index 0e85d42..0000000 --- a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/Pipeline_instrumentation.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.nr.instrumentation.apache.camel; - -import java.util.HashMap; -import java.util.Map; - -import org.apache.camel.AsyncCallback; -import org.apache.camel.Exchange; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.TransportType; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; - -@Weave(originalName="org.apache.camel.processor.Pipeline") -public abstract class Pipeline_instrumentation { - - private String id = Weaver.callOriginal(); - - @Trace(dispatcher = true) - public boolean process(Exchange exchange, AsyncCallback callback) { - Map attributes = new HashMap(); - Util.recordExchange(attributes, exchange); - NewRelic.getAgent().getTracedMethod().addCustomAttributes(attributes); - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelHeaders(exchange)); - - if(id != null) { - NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Pipeline","process",id); - NewRelic.getAgent().getTracedMethod().addCustomAttribute("PipelineID", id); - } else { - NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Pipeline","process"); - } - return Weaver.callOriginal(); - } - - @Weave(originalName="org.apache.camel.processor.Pipeline$PipelineTask") - private static class PipelineTask { - - private Exchange exchange = Weaver.callOriginal(); - - @Trace(dispatcher=true) - public void run() { - if(exchange != null) { - Map attributes = new HashMap(); - Util.recordExchange(attributes, exchange); - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelHeaders(exchange)); - - } - Weaver.callOriginal(); - } - } - -} diff --git a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/SendProcessor_instrumentation.java b/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/SendProcessor_instrumentation.java deleted file mode 100644 index 5ec5011..0000000 --- a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/SendProcessor_instrumentation.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.nr.instrumentation.apache.camel; - -import java.util.HashMap; -import java.util.Map; - -import org.apache.camel.AsyncCallback; -import org.apache.camel.AsyncProducer; -import org.apache.camel.Endpoint; -import org.apache.camel.Exchange; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.TransportType; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; - -@Weave(originalName="org.apache.camel.processor.SendProcessor") -public abstract class SendProcessor_instrumentation { - - protected final Endpoint destination = Weaver.callOriginal(); - protected String routeId = Weaver.callOriginal(); - protected AsyncProducer producer = Weaver.callOriginal(); - - - @Trace(dispatcher=true) - public boolean process(Exchange exchange, AsyncCallback callback) { - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelHeaders(exchange)); - Map attributes = new HashMap(); - Util.recordExchange(attributes, exchange); - Util.recordValue(attributes, "RouteID", routeId); - - String dest = destination != null ? destination.getEndpointBaseUri() : null; - Util.recordValue(attributes, "Destination", dest); - Util.recordValue(attributes, "SendProcessor-Processor", producer != null ? producer.getClass().getName() : null); - - NewRelic.getAgent().getTracedMethod().addCustomAttributes(attributes); - if(dest != null && !dest.isEmpty()) { - NewRelic.getAgent().getTracedMethod().setMetricName("Custom","SendProcessor","process",dest); - NewRelic.getAgent().getTracedMethod().addCustomAttribute("DestinationURI", dest); - } - return Weaver.callOriginal(); - } - -} diff --git a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/SharedInternalProcessor_instrumentation.java b/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/SharedInternalProcessor_instrumentation.java deleted file mode 100644 index 681a64d..0000000 --- a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/SharedInternalProcessor_instrumentation.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.nr.instrumentation.apache.camel; - -import java.util.HashMap; -import java.util.Map; - -import org.apache.camel.AsyncCallback; -import org.apache.camel.AsyncProcessor; -import org.apache.camel.Exchange; -import org.apache.camel.Processor; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.TransportType; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; - -@Weave(originalName="org.apache.camel.impl.engine.SharedCamelInternalProcessor") -public class SharedInternalProcessor_instrumentation { - - @Trace - public boolean process(Exchange exchange, AsyncCallback callback, AsyncProcessor processor, Processor resultProcessor) { - Map attributes = new HashMap(); - Util.recordExchange(attributes, exchange); - NewRelic.getAgent().getTracedMethod().addCustomAttributes(attributes); - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelHeaders(exchange)); - - return Weaver.callOriginal(); - } -} diff --git a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/Synchronization_instrumentation.java b/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/Synchronization_instrumentation.java deleted file mode 100644 index 7fd8517..0000000 --- a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/Synchronization_instrumentation.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.nr.instrumentation.apache.camel; - -import org.apache.camel.Exchange; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Token; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.weaver.MatchType; -import com.newrelic.api.agent.weaver.NewField; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.WeaveAllConstructors; -import com.newrelic.api.agent.weaver.Weaver; - - -@Weave(type=MatchType.Interface,originalName="org.apache.camel.spi.Synchronization") -public abstract class Synchronization_instrumentation { - - - @NewField - private Token token = null; - - @WeaveAllConstructors - public Synchronization_instrumentation() { - if(token == null) { - token = NewRelic.getAgent().getTransaction().getToken(); - - } - } - - @Trace(async=true) - public void onComplete(Exchange exchange) { - if(token != null) { - token.linkAndExpire(); - token = null; - } - Weaver.callOriginal(); - } - - @Trace(async=true) - public void onFailure(Exchange exchange) { - if(token != null) { - token.linkAndExpire(); - token = null; - } - Weaver.callOriginal(); - } - -} diff --git a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/Util.java b/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/Util.java deleted file mode 100644 index 81b6a54..0000000 --- a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/Util.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.nr.instrumentation.apache.camel; - -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import org.apache.camel.CamelContext; -import org.apache.camel.Endpoint; -import org.apache.camel.Exchange; -import org.apache.camel.spi.Synchronization; -import org.apache.camel.support.ExtendedExchangeExtension; - -import com.newrelic.agent.bridge.AgentBridge; -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Token; - -public class Util { - - public static final String NRTOKENPROPERTY = "newrelic.asynctoken"; - private static final List ignores; - - static { - ignores = new ArrayList<>(); - } - - @SuppressWarnings("deprecation") - public static boolean isTranscationActive() { - return AgentBridge.getAgent().getTransaction().isStarted(); - } - - public static NRRunnable getRunnable(Runnable runnable) { - String classname = runnable.getClass().getName(); - if(ignores.contains(classname)) return null; - - if(runnable instanceof NRRunnable) return (NRRunnable)runnable; - - Token token = NewRelic.getAgent().getTransaction().getToken(); - if(token != null && token.isActive()) { - return new NRRunnable(runnable, token); - } else if(token != null) { - token.expire(); - token = null; - } - - return null; - } - - public static String getMethodName(Method m) { - if(m == null) return "UnknownClass.UnknownMethod"; - - String classname = m.getDeclaringClass().getSimpleName(); - String methodName = m.getName(); - - return classname + "." + methodName; - } - - public static void addCompletionIfNeeded(ExtendedExchangeExtension exchange) { - if(exchange == null) return; - - List completions = exchange.handoverCompletions(); - if(completions == null || completions.isEmpty()) { - NRSynchronization nrSync = new NRSynchronization(); - exchange.addOnCompletion(nrSync); - } else { - boolean hasNR = false; - for(int i=0; i attributes, Exchange exchange) { - if(exchange != null) { - recordValue(attributes, "ExchangeId", exchange.getExchangeId()); - CamelContext context = exchange.getContext(); - String ctxName = context != null ? context.getName() : null; - recordValue(attributes, "CamelContextName", ctxName); - recordValue(attributes, "CamelContextManagementName", context.getManagementName()); - Endpoint endpoint = exchange.getFromEndpoint(); - if(endpoint != null) { - recordValue(attributes, "From_EndPointURI", endpoint.getEndpointUri()); - } - recordValue(attributes, "FromRouteId", exchange.getFromRouteId()); - if(exchange instanceof ExtendedExchangeExtension) { - ExtendedExchangeExtension extended = (ExtendedExchangeExtension)exchange; - recordExtendedExchange(attributes, extended); - } - } - } - - private static void recordExtendedExchange(Map attributes, ExtendedExchangeExtension exchange) { - if(exchange != null) { - recordValue(attributes, "HistoryNodeId", exchange.getHistoryNodeId()); - recordValue(attributes, "HistoryNodeLabel", exchange.getHistoryNodeLabel()); - recordValue(attributes, "HistoryNodeSource", exchange.getHistoryNodeSource()); - Map internalProps = exchange.getInternalProperties(); - if (internalProps != null) { - for (String key : internalProps.keySet()) { - Object value = internalProps.get(key); - recordValue(attributes, "InternalProperty-"+key, value); - } - } - recordValue(attributes, "HistoryNodeId", exchange.getInternalProperties()); - - } - } - - public static void recordValue(Map attributes, String key, Object value) { - if(key != null && !key.isEmpty() && value != null) { - attributes.put(key, value); - } - } - -} \ No newline at end of file diff --git a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/wrappers/OutboundExchangeWrapper.java b/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/wrappers/OutboundExchangeWrapper.java deleted file mode 100644 index 3f4d92d..0000000 --- a/camel-core-4.1.0/src/main/java/com/nr/instrumentation/apache/camel/wrappers/OutboundExchangeWrapper.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.nr.instrumentation.apache.camel.wrappers; - -import org.apache.camel.Exchange; - -import com.newrelic.api.agent.HeaderType; -import com.newrelic.api.agent.OutboundHeaders; - -public class OutboundExchangeWrapper implements OutboundHeaders { - - private Exchange exchange = null; - - public OutboundExchangeWrapper(Exchange e) { - exchange = e; - } - - @Override - public HeaderType getHeaderType() { - return HeaderType.MESSAGE; - } - - @Override - public void setHeader(String name, String value) { - exchange.setProperty(name, value); - } - -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/BatchConsumer.java b/camel-core-4.1.0/src/main/java/org/apache/camel/BatchConsumer.java deleted file mode 100644 index 97a33a3..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/BatchConsumer.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.apache.camel; - -import java.util.Queue; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.weaver.MatchType; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; - -@Weave(type = MatchType.Interface) -public abstract class BatchConsumer { - - @Trace(dispatcher = true) - public int processBatch(Queue exchanges) { - NewRelic.getAgent().getTracedMethod().setMetricName(new String[] {"Custom","Camel",getClass().getName(),"processBatch"}); - NewRelic.getAgent().getTracedMethod().addCustomAttribute("InputQueueSize", exchanges.size()); - int result=Weaver.callOriginal(); - NewRelic.getAgent().getTracedMethod().addCustomAttribute("NumbertOfBatchProcessed", result); - return result; - } -} - diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/ConsumerTemplate.java b/camel-core-4.1.0/src/main/java/org/apache/camel/ConsumerTemplate.java deleted file mode 100644 index ba6770a..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/ConsumerTemplate.java +++ /dev/null @@ -1,231 +0,0 @@ -package org.apache.camel; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.TracedMethod; -import com.newrelic.api.agent.TransportType; -import com.newrelic.api.agent.weaver.MatchType; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; -import com.nr.instrumentation.apache.camel.CamelMessageHeaders; - -@Weave(type = MatchType.Interface) -public abstract class ConsumerTemplate { - - @Trace(dispatcher = true) - public Exchange receive(String endpointUri) { - TracedMethod traced = NewRelic.getAgent().getTracedMethod(); - traced.addCustomAttribute("EndpointURI", endpointUri); - traced.setMetricName("Custom","Camel","Consumer",getClass().getSimpleName(),"receive"); - Exchange exchange = Weaver.callOriginal(); - Message message = exchange.getMessage(); - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelMessageHeaders(message)); - return exchange; - } - - @Trace(dispatcher = true) - public Exchange receive(String endpointUri, long timeout) { - TracedMethod traced = NewRelic.getAgent().getTracedMethod(); - traced.addCustomAttribute("EndpointURI", endpointUri); - traced.setMetricName("Custom","Camel","Consumer",getClass().getSimpleName(),"receive"); - Exchange exchange = Weaver.callOriginal(); - if (exchange != null) { - Message message = exchange.getMessage(); - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelMessageHeaders(message)); - } else { - NewRelic.getAgent().getTransaction().ignore(); - } - return exchange; - } - - @Trace(dispatcher = true) - public Exchange receive(Endpoint endpoint) { - TracedMethod traced = NewRelic.getAgent().getTracedMethod(); - traced.addCustomAttribute("EndpointURI", endpoint.getEndpointUri()); - traced.setMetricName("Custom","Camel","Consumer",getClass().getSimpleName(),"receive"); - Exchange exchange = Weaver.callOriginal(); - Message message = exchange.getMessage(); - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelMessageHeaders(message)); - return exchange; - } - - @Trace(dispatcher = true) - public Exchange receive(Endpoint endpoint, long timeout) { - TracedMethod traced = NewRelic.getAgent().getTracedMethod(); - traced.addCustomAttribute("EndpointURI", endpoint.getEndpointUri()); - traced.setMetricName("Custom","Camel","Consumer",getClass().getSimpleName(),"receive"); - Exchange exchange = Weaver.callOriginal(); - if (exchange != null) { - Message message = exchange.getMessage(); - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelMessageHeaders(message)); - } else { - NewRelic.getAgent().getTransaction().ignore(); - } - return exchange; - } - - @Trace(dispatcher = true) - public Exchange receiveNoWait(String endpointUri) { - TracedMethod traced = NewRelic.getAgent().getTracedMethod(); - traced.addCustomAttribute("EndpointURI", endpointUri); - traced.setMetricName("Custom","Camel","Consumer",getClass().getSimpleName(),"receiveNoWait"); - Exchange exchange = Weaver.callOriginal(); - if (exchange != null) { - Message message = exchange.getMessage(); - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelMessageHeaders(message)); - } else { - NewRelic.getAgent().getTransaction().ignore(); - } - return exchange; - } - - @Trace(dispatcher = true) - public Exchange receiveNoWait(Endpoint endpoint) { - TracedMethod traced = NewRelic.getAgent().getTracedMethod(); - traced.addCustomAttribute("EndpointURI", endpoint.getEndpointUri()); - traced.setMetricName("Custom","Camel","Consumer",getClass().getSimpleName(),"receiveNoWait"); - Exchange exchange = Weaver.callOriginal(); - if (exchange != null) { - Message message = exchange.getMessage(); - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelMessageHeaders(message)); - } else { - NewRelic.getAgent().getTransaction().ignore(); - } - return exchange; - } - - @Trace - public Object receiveBody(String endpointUri) { - TracedMethod traced = NewRelic.getAgent().getTracedMethod(); - traced.addCustomAttribute("EndpointURI", endpointUri); - traced.setMetricName("Custom","Camel","Consumer",getClass().getSimpleName(),"receiveBody"); - return Weaver.callOriginal(); - } - - @Trace - public Object receiveBody(Endpoint endpoint) { - TracedMethod traced = NewRelic.getAgent().getTracedMethod(); - traced.addCustomAttribute("EndpointURI", endpoint.getEndpointUri()); - traced.setMetricName("Custom","Camel","Consumer",getClass().getSimpleName(),"receiveBody"); - return Weaver.callOriginal(); - } - - @Trace - public Object receiveBody(String endpointUri, long timeout){ - TracedMethod traced = NewRelic.getAgent().getTracedMethod(); - traced.addCustomAttribute("EndpointURI", endpointUri); - traced.setMetricName("Custom","Camel","Consumer",getClass().getSimpleName(),"receiveBody"); - Object result = Weaver.callOriginal(); - if(result == null) { - traced.addCustomAttribute("TimedOut", true); - } - return result; - } - - @Trace - public Object receiveBody(Endpoint endpoint, long timeout) { - TracedMethod traced = NewRelic.getAgent().getTracedMethod(); - traced.addCustomAttribute("EndpointURI", endpoint.getEndpointUri()); - traced.setMetricName("Custom","Camel","Consumer",getClass().getSimpleName(),"receiveBody"); - Object result = Weaver.callOriginal(); - if(result == null) { - traced.addCustomAttribute("TimedOut", true); - } - return result; - } - - @Trace - public Object receiveBodyNoWait(String endpointUri) { - TracedMethod traced = NewRelic.getAgent().getTracedMethod(); - traced.addCustomAttribute("EndpointURI", endpointUri); - traced.setMetricName("Custom","Camel","Consumer",getClass().getSimpleName(),"receiveBodyNoWait"); - Object result = Weaver.callOriginal(); - if(result == null) { - traced.addCustomAttribute("NoObjectAvailable", true); - } - return result; - } - - @Trace - public Object receiveBodyNoWait(Endpoint endpoint) { - TracedMethod traced = NewRelic.getAgent().getTracedMethod(); - traced.addCustomAttribute("EndpointURI", endpoint.getEndpointUri()); - traced.setMetricName("Custom","Camel","Consumer",getClass().getSimpleName(),"receiveBodyNoWait"); - Object result = Weaver.callOriginal(); - if(result == null) { - traced.addCustomAttribute("NoObjectAvailable", true); - } - return result; - } - - @Trace - public T receiveBody(String endpointUri, Class type) { - TracedMethod traced = NewRelic.getAgent().getTracedMethod(); - traced.addCustomAttribute("EndpointURI", endpointUri); - traced.setMetricName("Custom","Camel","Consumer",getClass().getSimpleName(),"receiveBody"); - return Weaver.callOriginal(); - } - - @Trace - public T receiveBody(Endpoint endpoint, Class type) { - TracedMethod traced = NewRelic.getAgent().getTracedMethod(); - traced.addCustomAttribute("EndpointURI", endpoint.getEndpointUri()); - traced.addCustomAttribute("BodyClass", type.getName()); - traced.setMetricName("Custom","Camel","Consumer",getClass().getSimpleName(),"receiveBody"); - return Weaver.callOriginal(); - } - - @Trace - public T receiveBody(String endpointUri, long timeout, Class type) { - TracedMethod traced = NewRelic.getAgent().getTracedMethod(); - traced.addCustomAttribute("EndpointURI", endpointUri); - traced.addCustomAttribute("BodyClass", type.getName()); - traced.setMetricName("Custom","Camel","Consumer",getClass().getSimpleName(),"receiveBody"); - T result = Weaver.callOriginal(); - if(result == null) { - traced.addCustomAttribute("TimedOut", true); - } - return result; - } - - @Trace - public T receiveBody(Endpoint endpoint, long timeout, Class type) { - TracedMethod traced = NewRelic.getAgent().getTracedMethod(); - traced.addCustomAttribute("EndpointURI", endpoint.getEndpointUri()); - traced.addCustomAttribute("BodyClass", type.getName()); - traced.setMetricName("Custom","Camel","Consumer",getClass().getSimpleName(),"receiveBody"); - T result = Weaver.callOriginal(); - if(result == null) { - traced.addCustomAttribute("TimedOut", true); - } - return result; - } - - @Trace - public T receiveBodyNoWait(String endpointUri, Class type) { - TracedMethod traced = NewRelic.getAgent().getTracedMethod(); - traced.addCustomAttribute("EndpointURI", endpointUri); - traced.addCustomAttribute("BodyClass", type.getName()); - traced.setMetricName("Custom","Camel","Consumer",getClass().getSimpleName(),"receiveBodyNoWait"); - T result = Weaver.callOriginal(); - if(result == null) { - traced.addCustomAttribute("TimedOut", true); - } - return result; - } - - @Trace - public T receiveBodyNoWait(Endpoint endpoint, Class type) { - TracedMethod traced = NewRelic.getAgent().getTracedMethod(); - traced.addCustomAttribute("EndpointURI", endpoint.getEndpointUri()); - traced.addCustomAttribute("BodyClass", type.getName()); - traced.setMetricName("Custom","Camel","Consumer",getClass().getSimpleName(),"receiveBodyNoWait"); - T result = Weaver.callOriginal(); - if(result == null) { - traced.addCustomAttribute("TimedOut", true); - } - return result; - } - - -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/Endpoint.java b/camel-core-4.1.0/src/main/java/org/apache/camel/Endpoint.java deleted file mode 100644 index b01a5e3..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/Endpoint.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.apache.camel; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.weaver.MatchType; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; -import com.nr.instrumentation.apache.camel.CamelHeaders; -import com.nr.instrumentation.apache.camel.Util; - -@Weave(type=MatchType.Interface) -public abstract class Endpoint { - - - public abstract String getEndpointUri(); - public abstract String getEndpointBaseUri(); - - - public Exchange createExchange() { - Exchange exchange = Weaver.callOriginal(); - if(Util.isTranscationActive()) { - CamelHeaders headers = new CamelHeaders(exchange); - NewRelic.getAgent().getTransaction().insertDistributedTraceHeaders(headers); - } - return exchange; - } - - - public Exchange createExchange(ExchangePattern pattern) { - Exchange exchange = Weaver.callOriginal(); - if(Util.isTranscationActive()) { - CamelHeaders headers = new CamelHeaders(exchange); - NewRelic.getAgent().getTransaction().insertDistributedTraceHeaders(headers); - } - return exchange; - } - -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/Handler_instrumentation.java b/camel-core-4.1.0/src/main/java/org/apache/camel/Handler_instrumentation.java deleted file mode 100644 index c8aaabb..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/Handler_instrumentation.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.apache.camel; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.weaver.MatchType; -import com.newrelic.api.agent.weaver.WeaveIntoAllMethods; -import com.newrelic.api.agent.weaver.WeaveWithAnnotation; - -public abstract class Handler_instrumentation { - - @WeaveWithAnnotation(annotationClasses = {"org.apache.camel.Handler"}, type = MatchType.Interface) - @WeaveIntoAllMethods - @Trace - private static void instrumentation() { - - StackTraceElement[] traces = Thread.currentThread().getStackTrace(); - StackTraceElement first = traces[1]; - String methodName = first.getMethodName(); - String classname = first.getClassName(); - NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Camel","Handler",classname,methodName); - } - -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/Pattern_instrumentation.java b/camel-core-4.1.0/src/main/java/org/apache/camel/Pattern_instrumentation.java deleted file mode 100644 index b726009..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/Pattern_instrumentation.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.apache.camel; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.weaver.MatchType; -import com.newrelic.api.agent.weaver.WeaveIntoAllMethods; -import com.newrelic.api.agent.weaver.WeaveWithAnnotation; - -@WeaveWithAnnotation(type = MatchType.Interface, annotationClasses = {"org.apache.camel.Pattern"}) -public abstract class Pattern_instrumentation { - - @WeaveWithAnnotation(annotationClasses = {"org.apache.camel.Pattern"}) - @WeaveIntoAllMethods - @Trace - private static void instrumentation() { - - StackTraceElement[] traces = Thread.currentThread().getStackTrace(); - StackTraceElement first = traces[1]; - String methodName = first.getMethodName(); - String classname = first.getClassName(); - NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Camel","Handler",classname,methodName); - } - -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/Produce_instrumentation.java b/camel-core-4.1.0/src/main/java/org/apache/camel/Produce_instrumentation.java deleted file mode 100644 index 386e5e3..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/Produce_instrumentation.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.apache.camel; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.weaver.WeaveIntoAllMethods; -import com.newrelic.api.agent.weaver.WeaveWithAnnotation; - -public abstract class Produce_instrumentation { - - @WeaveIntoAllMethods - @WeaveWithAnnotation(annotationClasses = {"org.apache.camel.Produce"}) - @Trace(dispatcher = true) - private static void instrumentation() { - - StackTraceElement[] traces = Thread.currentThread().getStackTrace(); - StackTraceElement first = traces[1]; - String methodName = first.getMethodName(); - String classname = first.getClassName(); - NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Camel","Handler",classname,methodName); - } - -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/component/bean/AbstractCamelInvocationHandler.java b/camel-core-4.1.0/src/main/java/org/apache/camel/component/bean/AbstractCamelInvocationHandler.java deleted file mode 100644 index 49f3909..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/component/bean/AbstractCamelInvocationHandler.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.apache.camel.component.bean; - -import java.lang.reflect.Method; - -import org.apache.camel.ExchangePattern; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.weaver.MatchType; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; - -@Weave(type=MatchType.BaseClass) -public abstract class AbstractCamelInvocationHandler { - - @Trace - public Object doInvokeProxy(Object proxy, Method method, Object[] args) { - NewRelic.getAgent().getTracedMethod().setMetricName(new String[] {"Custom","Camel","CamelInvocationHandler",getClass().getSimpleName(),"doProxyInvoke",method.getDeclaringClass().getSimpleName(),method.getName()}); - return Weaver.callOriginal(); - } - - @Trace - protected Object invokeProxy(Method method, ExchangePattern pattern, Object[] args, boolean binding) { - NewRelic.getAgent().getTracedMethod().setMetricName(new String[] {"Custom","Camel","CamelInvocationHandler",getClass().getSimpleName(),"invokeProxy",method.getDeclaringClass().getSimpleName(),method.getName()}); - return Weaver.callOriginal(); - } - - @Trace - protected Object invokeWithBody(Method method, Object body, ExchangePattern pattern) { - NewRelic.getAgent().getTracedMethod().setMetricName(new String[] {"Custom","Camel","CamelInvocationHandler",getClass().getSimpleName(),"invokeWithBody",method.getDeclaringClass().getSimpleName(),method.getName()}); - return Weaver.callOriginal(); - } -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/component/bean/BeanProcessor.java b/camel-core-4.1.0/src/main/java/org/apache/camel/component/bean/BeanProcessor.java deleted file mode 100644 index 60af46a..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/component/bean/BeanProcessor.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.apache.camel.component.bean; - -import java.util.HashMap; -import java.util.Map; - -import org.apache.camel.AsyncCallback; -import org.apache.camel.Exchange; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.TransportType; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; -import com.nr.instrumentation.apache.camel.CamelHeaders; -import com.nr.instrumentation.apache.camel.Util; - -@Weave -public abstract class BeanProcessor { - - public abstract String getMethod(); - - @Trace(dispatcher=true) - public boolean process(Exchange exchange, AsyncCallback callback) { - Map attributes = new HashMap(); - Util.recordExchange(attributes, exchange); - NewRelic.getAgent().getTracedMethod().addCustomAttributes(attributes); - String m = exchange.getIn().getHeader(Exchange.BEAN_METHOD_NAME, getMethod(), String.class); - if(m != null) { - NewRelic.getAgent().getTracedMethod().setMetricName(new String[] {"Custom","BeanProcessor","process",m}); - NewRelic.getAgent().getTracedMethod().addCustomAttribute("Bean_Method", m); - } else { - NewRelic.getAgent().getTracedMethod().setMetricName(new String[] {"Custom","BeanProcessor","process"}); - } - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelHeaders(exchange)); - return Weaver.callOriginal(); - } -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/component/bean/MethodInvocation.java b/camel-core-4.1.0/src/main/java/org/apache/camel/component/bean/MethodInvocation.java deleted file mode 100644 index 145c8e0..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/component/bean/MethodInvocation.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.apache.camel.component.bean; - -import java.lang.reflect.Method; - -import org.apache.camel.AsyncCallback; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.weaver.MatchType; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; -import com.nr.instrumentation.apache.camel.Util; - -@Weave(type=MatchType.Interface) -public abstract class MethodInvocation { - - public abstract Method getMethod(); - - @Trace - public boolean proceed(AsyncCallback callback) { - NewRelic.getAgent().getTracedMethod().setMetricName("Custom","MethodInvocation",getClass().getSimpleName(),"proceed",Util.getMethodName(getMethod())); - return Weaver.callOriginal(); - } -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java b/camel-core-4.1.0/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java deleted file mode 100644 index 6817b9d..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.apache.camel.component.controlbus; - -import java.util.HashMap; -import java.util.Map; - -import org.apache.camel.AsyncCallback; -import org.apache.camel.Exchange; -import org.apache.camel.spi.Language; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; -import com.nr.instrumentation.apache.camel.Util; - -@Weave -public abstract class ControlBusProducer { - - @Trace - public boolean process(Exchange exchange, AsyncCallback callback) { - Map attributes = new HashMap(); - Util.recordExchange(attributes, exchange); - NewRelic.getAgent().getTracedMethod().addCustomAttributes(attributes); - return Weaver.callOriginal(); - } - - @Trace - protected void processByAction(Exchange exchange) { - Map attributes = new HashMap(); - Util.recordExchange(attributes, exchange); - NewRelic.getAgent().getTracedMethod().addCustomAttributes(attributes); - Weaver.callOriginal(); - } - - @Trace - protected void processByLanguage(Exchange exchange, Language language) { - Map attributes = new HashMap(); - Util.recordExchange(attributes, exchange); - NewRelic.getAgent().getTracedMethod().addCustomAttributes(attributes); - Weaver.callOriginal(); - } -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/component/seda/SedaProducer.java b/camel-core-4.1.0/src/main/java/org/apache/camel/component/seda/SedaProducer.java deleted file mode 100644 index 52573f4..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/component/seda/SedaProducer.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.apache.camel.component.seda; - -import org.apache.camel.Exchange; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; -import com.nr.instrumentation.apache.camel.CamelHeaders; - -@Weave -public abstract class SedaProducer { - - protected void addToQueue(Exchange exchange, boolean copy) { - CamelHeaders headers = new CamelHeaders(exchange); - NewRelic.getAgent().getTransaction().insertDistributedTraceHeaders(headers); - Weaver.callOriginal(); - } -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/impl/engine/DefaultAsyncProcessorAwaitManager.java b/camel-core-4.1.0/src/main/java/org/apache/camel/impl/engine/DefaultAsyncProcessorAwaitManager.java deleted file mode 100644 index 117729c..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/impl/engine/DefaultAsyncProcessorAwaitManager.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.apache.camel.impl.engine; - -import org.apache.camel.AsyncProcessor; -import org.apache.camel.Exchange; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.TransportType; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; -import com.nr.instrumentation.apache.camel.CamelHeaders; - -@Weave -public abstract class DefaultAsyncProcessorAwaitManager { - - @Trace(dispatcher = true) - public void process(AsyncProcessor processor, Exchange exchange) { - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelHeaders(exchange)); - Weaver.callOriginal(); - } -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/impl/engine/DefaultProducerTemplate.java b/camel-core-4.1.0/src/main/java/org/apache/camel/impl/engine/DefaultProducerTemplate.java deleted file mode 100644 index 9a5f3bd..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/impl/engine/DefaultProducerTemplate.java +++ /dev/null @@ -1,71 +0,0 @@ -package org.apache.camel.impl.engine; - -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.CompletableFuture; - -import org.apache.camel.Endpoint; -import org.apache.camel.Exchange; -import org.apache.camel.ExchangePattern; -import org.apache.camel.Processor; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.TransactionNamePriority; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; -import com.nr.instrumentation.apache.camel.CamelHeaders; -import com.nr.instrumentation.apache.camel.CamelMapHeaders; -import com.nr.instrumentation.apache.camel.NRProcessorWrapper; -import com.nr.instrumentation.apache.camel.Util; - -@Weave -public abstract class DefaultProducerTemplate { - - @Trace(dispatcher=true) - protected CompletableFuture asyncSendExchange(Endpoint endpoint, ExchangePattern pattern, Processor processor, Processor resultProcessor,Exchange inExchange) { - Map attributes = new HashMap(); - Util.recordExchange(attributes, inExchange); - NewRelic.getAgent().getTracedMethod().addCustomAttributes(attributes); - CamelHeaders headers = new CamelHeaders(inExchange); - NewRelic.getAgent().getTransaction().insertDistributedTraceHeaders(headers); - if(endpoint != null) { - String uri = endpoint.getEndpointUri(); - if(uri != null && !uri.isEmpty()) { - NewRelic.getAgent().getTransaction().setTransactionName(TransactionNamePriority.FRAMEWORK_LOW, false, "Producer", "Custom","Producer",uri); - NewRelic.getAgent().getTracedMethod().addCustomAttribute("EndpointURI", uri); - } - } - if(resultProcessor != null && !(resultProcessor instanceof NRProcessorWrapper)) { - resultProcessor = new NRProcessorWrapper(resultProcessor, null); - } - return Weaver.callOriginal(); - } - - @Trace(dispatcher=true) - public Exchange send(Endpoint endpoint, Exchange exchange, Processor resultProcessor) { - Map attributes = new HashMap(); - Util.recordExchange(attributes, exchange); - NewRelic.getAgent().getTracedMethod().addCustomAttributes(attributes); - CamelHeaders headers = new CamelHeaders(exchange); - NewRelic.getAgent().getTransaction().insertDistributedTraceHeaders(headers); - if(endpoint != null) { - String uri = endpoint.getEndpointUri(); - if(uri != null && !uri.isEmpty()) { - NewRelic.getAgent().getTransaction().setTransactionName(TransactionNamePriority.FRAMEWORK_LOW, false, "Producer", "Custom","Producer",uri); - NewRelic.getAgent().getTracedMethod().addCustomAttribute("EndpointURI", uri); - } - } - if(resultProcessor != null && !(resultProcessor instanceof NRProcessorWrapper)) { - resultProcessor = new NRProcessorWrapper(resultProcessor, null); - } - return Weaver.callOriginal(); - } - - - protected Processor createBodyAndHeaders(Object body, Map headers) { - CamelMapHeaders nrHeaders = new CamelMapHeaders(headers); - NewRelic.getAgent().getTransaction().insertDistributedTraceHeaders(nrHeaders); - return Weaver.callOriginal(); - } -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/spi/AsyncProcessorAwaitManager.java b/camel-core-4.1.0/src/main/java/org/apache/camel/spi/AsyncProcessorAwaitManager.java deleted file mode 100644 index 3038c8d..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/spi/AsyncProcessorAwaitManager.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.apache.camel.spi; - -import org.apache.camel.AsyncProcessor; -import org.apache.camel.Exchange; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.TransportType; -import com.newrelic.api.agent.weaver.MatchType; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; -import com.nr.instrumentation.apache.camel.CamelHeaders; -import com.nr.instrumentation.apache.camel.NRAsyncProcessorWrapper; - -@Weave(type = MatchType.Interface) -public abstract class AsyncProcessorAwaitManager { - - @Trace(dispatcher = true) - public void process(AsyncProcessor processor, Exchange exchange) { - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelHeaders(exchange)); - NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Camel","AsyncProcessorAwaitManager",getClass().getSimpleName(),"process"); - NRAsyncProcessorWrapper wrapper = new NRAsyncProcessorWrapper(processor, null); - processor = wrapper; - Weaver.callOriginal(); - } -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/spi/CamelLogger.java b/camel-core-4.1.0/src/main/java/org/apache/camel/spi/CamelLogger.java deleted file mode 100644 index fa2e317..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/spi/CamelLogger.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.apache.camel.spi; - -import org.apache.camel.LoggingLevel; -import org.slf4j.Logger; -import org.slf4j.Marker; - -import java.util.HashMap; -import java.util.Map; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; - -@Weave -public abstract class CamelLogger { - - public static void log(Logger log, LoggingLevel level, String message, Throwable th) { - - if(th != null) { - if(message != null && !message.isEmpty()) { - Map params = new HashMap(); - params.put("Message", message); - - NewRelic.noticeError(th, params); - - } else { - NewRelic.noticeError(th); - } - } - - Weaver.callOriginal(); - } - - - public static void log(Logger log, LoggingLevel level, Marker marker, String message, Throwable th) { - - if(th != null) { - if(message != null && !message.isEmpty()) { - Map params = new HashMap(); - params.put("Message", message); - - NewRelic.noticeError(th, params); - - } else { - NewRelic.noticeError(th); - } - } - - Weaver.callOriginal(); - } - -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/spi/ProducerCache.java b/camel-core-4.1.0/src/main/java/org/apache/camel/spi/ProducerCache.java deleted file mode 100644 index c3c0360..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/spi/ProducerCache.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.apache.camel.spi; - -import java.util.HashMap; - -import org.apache.camel.Endpoint; -import org.apache.camel.Exchange; -import org.apache.camel.Processor; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.TracedMethod; -import com.newrelic.api.agent.weaver.MatchType; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; -import com.nr.instrumentation.apache.camel.CamelHeaders; -import com.nr.instrumentation.apache.camel.NRProcessorWrapper; -import com.nr.instrumentation.apache.camel.Util; - -@Weave(type = MatchType.Interface) -public abstract class ProducerCache { - - @Trace - public Exchange send(Endpoint endpoint, Exchange exchange, Processor resultProcessor) { - TracedMethod traced = NewRelic.getAgent().getTracedMethod(); - traced.setMetricName("Custom","Camel","ProducerCache",getClass().getSimpleName(),"send"); - HashMap attributes = new HashMap<>(); - Util.recordExchange(attributes, exchange); - String baseURI = endpoint.getEndpointBaseUri(); - if(baseURI != null && !baseURI.isEmpty()) { - attributes.put("EndpointURI", baseURI); - } - traced.addCustomAttributes(attributes); - if(resultProcessor != null && !(resultProcessor instanceof NRProcessorWrapper)) { - resultProcessor = new NRProcessorWrapper(resultProcessor, null); - } - NewRelic.getAgent().getTransaction().insertDistributedTraceHeaders(new CamelHeaders(exchange)); - return Weaver.callOriginal(); - } -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/spi/ReactiveExecutor.java b/camel-core-4.1.0/src/main/java/org/apache/camel/spi/ReactiveExecutor.java deleted file mode 100644 index c6c0721..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/spi/ReactiveExecutor.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.apache.camel.spi; - -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.weaver.MatchType; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; -import com.nr.instrumentation.apache.camel.NRRunnable; -import com.nr.instrumentation.apache.camel.Util; - -@Weave(type = MatchType.Interface) -public abstract class ReactiveExecutor { - - public void schedule(Runnable runnable) { - NRRunnable wrapper = Util.getRunnable(runnable); - if(wrapper != null) { - runnable = wrapper; - } - Weaver.callOriginal(); - } - - public void scheduleMain(Runnable runnable) { - NRRunnable wrapper = Util.getRunnable(runnable); - if(wrapper != null) { - runnable = wrapper; - } - Weaver.callOriginal(); - } - - public void scheduleQueue(Runnable runnable) { - NRRunnable wrapper = Util.getRunnable(runnable); - if(wrapper != null) { - runnable = wrapper; - } - Weaver.callOriginal(); - } - - @Trace - public boolean executeFromQueue() { - return Weaver.callOriginal(); - } - -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/spi/SharedInternalProcessor.java b/camel-core-4.1.0/src/main/java/org/apache/camel/spi/SharedInternalProcessor.java deleted file mode 100644 index 4786bfe..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/spi/SharedInternalProcessor.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.apache.camel.spi; - -import java.util.HashMap; - -import org.apache.camel.AsyncCallback; -import org.apache.camel.AsyncProcessor; -import org.apache.camel.Exchange; -import org.apache.camel.Processor; - -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.weaver.MatchType; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; -import com.nr.instrumentation.apache.camel.NRAsyncProcessorWrapper; -import com.nr.instrumentation.apache.camel.NRProcessorWrapper; -import com.nr.instrumentation.apache.camel.Util; - -@Weave(type = MatchType.Interface) -public abstract class SharedInternalProcessor { - - @Trace(dispatcher = true) - public boolean process(Exchange exchange, AsyncCallback originalCallback, AsyncProcessor processor, Processor resultProcessor) { - HashMap attributes = new HashMap<>(); - Util.recordExchange(attributes, exchange); - NRAsyncProcessorWrapper wrapper = new NRAsyncProcessorWrapper(processor, null); - processor = wrapper; - if(resultProcessor != null) { - NRProcessorWrapper pWrapper = new NRProcessorWrapper(resultProcessor, null); - resultProcessor = pWrapper; - } - return Weaver.callOriginal(); - } -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/support/DefaultAsyncProducer.java b/camel-core-4.1.0/src/main/java/org/apache/camel/support/DefaultAsyncProducer.java deleted file mode 100644 index 5824ac6..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/support/DefaultAsyncProducer.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.apache.camel.support; - -import java.util.HashMap; -import java.util.concurrent.CompletableFuture; - -import org.apache.camel.Endpoint; -import org.apache.camel.Exchange; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.TracedMethod; -import com.newrelic.api.agent.weaver.MatchType; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; -import com.nr.instrumentation.apache.camel.NRBiConsumer; -import com.nr.instrumentation.apache.camel.Util; - -@Weave(type = MatchType.BaseClass) -public abstract class DefaultAsyncProducer { - - @Trace(dispatcher = true) - public void process(Exchange exchange) { - HashMap attributes = new HashMap<>(); - Util.recordExchange(attributes, exchange); - TracedMethod traced = NewRelic.getAgent().getTracedMethod(); - traced.addCustomAttributes(attributes); - traced.setMetricName("Custom","Camel","AsyncProducer",getClass().getSimpleName(),"process"); - Weaver.callOriginal(); - } - - public CompletableFuture processAsync(Exchange exchange) { - HashMap attributes = new HashMap<>(); - Util.recordExchange(attributes, exchange); - TracedMethod traced = NewRelic.getAgent().getTracedMethod(); - traced.addCustomAttributes(attributes); - traced.setMetricName("Custom","Camel","AsyncProducer",getClass().getSimpleName(),"processAsync"); - CompletableFuture result = Weaver.callOriginal(); - String segmentName = "AsyncProcessor/Processing"; - String fromRoute = exchange.getFromRouteId(); - if(fromRoute != null && !fromRoute.isEmpty()) { - segmentName = "ProcessAsync/RouteId/" + fromRoute; - } else { - Endpoint endPt = exchange.getFromEndpoint(); - if(endPt != null) { - String base = endPt.getEndpointBaseUri(); - if(base != null && !base.isEmpty()) { - segmentName = "ProcessAsync/EndPoint/" + base; - } - } - } - - NRBiConsumer consumer = new NRBiConsumer(segmentName); - return result.whenComplete(consumer); - } - -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/support/DefaultConsumer.java b/camel-core-4.1.0/src/main/java/org/apache/camel/support/DefaultConsumer.java deleted file mode 100644 index 8050b0a..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/support/DefaultConsumer.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.apache.camel.support; - -import org.apache.camel.AsyncProcessor; -import org.apache.camel.Endpoint; -import org.apache.camel.Processor; -import org.apache.camel.Route; - -import com.newrelic.api.agent.weaver.MatchType; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; -import com.nr.instrumentation.apache.camel.NRAsyncProcessorWrapper; -import com.nr.instrumentation.apache.camel.NRProcessorWrapper; - -@Weave(type=MatchType.BaseClass) -public abstract class DefaultConsumer { - - public abstract Endpoint getEndpoint(); - - public abstract Route getRoute(); - - public synchronized AsyncProcessor getAsyncProcessor() { - AsyncProcessor asyncProcessor = Weaver.callOriginal(); - if(asyncProcessor != null && !(asyncProcessor instanceof NRAsyncProcessorWrapper)) { - return new NRAsyncProcessorWrapper(asyncProcessor,getRoute()); - } - return asyncProcessor; - } - - public Processor getProcessor() { - Processor processor = Weaver.callOriginal(); - if(!(processor instanceof NRProcessorWrapper)) { - return new NRProcessorWrapper(processor,getRoute()); - } - return processor; - } -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/support/DefaultProducer.java b/camel-core-4.1.0/src/main/java/org/apache/camel/support/DefaultProducer.java deleted file mode 100644 index 993f03d..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/support/DefaultProducer.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.apache.camel.support; - -import org.apache.camel.Exchange; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.weaver.MatchType; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; -import com.nr.instrumentation.apache.camel.CamelHeaders; -import com.nr.instrumentation.apache.camel.Util; - -@Weave(type=MatchType.BaseClass) -public abstract class DefaultProducer { - - public Exchange createExchange() { - Exchange exchange = Weaver.callOriginal(); - if(Util.isTranscationActive()) { - CamelHeaders headers = new CamelHeaders(exchange); - NewRelic.getAgent().getTransaction().insertDistributedTraceHeaders(headers); - } - return exchange; - } - -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/support/EventDrivenPollingConsumer.java b/camel-core-4.1.0/src/main/java/org/apache/camel/support/EventDrivenPollingConsumer.java deleted file mode 100644 index 1968c42..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/support/EventDrivenPollingConsumer.java +++ /dev/null @@ -1,84 +0,0 @@ -package org.apache.camel.support; - -import java.util.HashMap; - -import org.apache.camel.Endpoint; -import org.apache.camel.Exchange; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.TransactionNamePriority; -import com.newrelic.api.agent.TransportType; -import com.newrelic.api.agent.weaver.MatchType; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; -import com.nr.instrumentation.apache.camel.CamelHeaders; -import com.nr.instrumentation.apache.camel.Util; - -@Weave(type = MatchType.BaseClass) -public abstract class EventDrivenPollingConsumer { - - public abstract Endpoint getEndpoint(); - - @Trace(dispatcher = true) - public Exchange receive() { - NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Camel","PollingConsumer",getClass().getSimpleName(),"receive"); - Endpoint endPt = getEndpoint(); - if(endPt != null) { - String endpoint = endPt.getEndpointBaseUri(); - if(endpoint != null && !endpoint.isEmpty()) { - NewRelic.getAgent().getTransaction().setTransactionName(TransactionNamePriority.FRAMEWORK_HIGH, false, "PollingConsumer", "EventDrivenPollingConsumer",endpoint); - } - } - Exchange result = Weaver.callOriginal(); - HashMap attributes = new HashMap<>(); - Util.recordExchange(attributes, result); - NewRelic.getAgent().getTracedMethod().addCustomAttributes(attributes); - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelHeaders(result)); - return result; - } - - @Trace(dispatcher = true) - public Exchange receiveNoWait() { - NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Camel","PollingConsumer",getClass().getSimpleName(),"receiveNoWait"); - Exchange result = Weaver.callOriginal(); - if(result != null) { - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelHeaders(result)); - HashMap attributes = new HashMap<>(); - Util.recordExchange(attributes, result); - NewRelic.getAgent().getTracedMethod().addCustomAttributes(attributes); - Endpoint endPt = getEndpoint(); - if(endPt != null) { - String endpoint = endPt.getEndpointBaseUri(); - if(endpoint != null && !endpoint.isEmpty()) { - NewRelic.getAgent().getTransaction().setTransactionName(TransactionNamePriority.FRAMEWORK_HIGH, false, "PollingConsumer", "EventDrivenPollingConsumer",endpoint); - } - } - } else { - NewRelic.getAgent().getTransaction().ignore(); - } - return result; - } - - @Trace(dispatcher = true) - public Exchange receive(long timeout) { - NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Camel","PollingConsumer",getClass().getSimpleName(),"receive"); - Exchange result = Weaver.callOriginal(); - if(result != null) { - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelHeaders(result)); - HashMap attributes = new HashMap<>(); - Util.recordExchange(attributes, result); - NewRelic.getAgent().getTracedMethod().addCustomAttributes(attributes); - Endpoint endPt = getEndpoint(); - if(endPt != null) { - String endpoint = endPt.getEndpointBaseUri(); - if(endpoint != null && !endpoint.isEmpty()) { - NewRelic.getAgent().getTransaction().setTransactionName(TransactionNamePriority.FRAMEWORK_HIGH, false, "PollingConsumer", "EventDrivenPollingConsumer",endpoint); - } - } - } else { - NewRelic.getAgent().getTransaction().ignore(); - } - return result; - } -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/support/ExchangeHelper.java b/camel-core-4.1.0/src/main/java/org/apache/camel/support/ExchangeHelper.java deleted file mode 100644 index d81218a..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/support/ExchangeHelper.java +++ /dev/null @@ -1,41 +0,0 @@ -package org.apache.camel.support; - -import org.apache.camel.CamelContext; -import org.apache.camel.Exchange; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; -import com.nr.instrumentation.apache.camel.CamelHeaders; - -@Weave -public class ExchangeHelper { - - public static Exchange copyExchangeWithProperties(Exchange exchange, CamelContext context) { - Exchange result = Weaver.callOriginal(); - CamelHeaders headers = new CamelHeaders(result); - NewRelic.getAgent().getTransaction().insertDistributedTraceHeaders(headers); - return result; - } - - - public static Exchange createCopy(Exchange exchange, boolean preserveExchangeId) { - Exchange result = Weaver.callOriginal(); - CamelHeaders headers = new CamelHeaders(result); - NewRelic.getAgent().getTransaction().insertDistributedTraceHeaders(headers); - return result; - } - - public static Exchange createCorrelatedCopy(Exchange exchange, boolean handover, boolean useSameMessageId) { - Exchange result = Weaver.callOriginal(); - - if (handover) { - CamelHeaders headers = new CamelHeaders(result); - NewRelic.getAgent().getTransaction().insertDistributedTraceHeaders(headers); - } - return result; - } - - - -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/support/ProcessorPollingConsumer.java b/camel-core-4.1.0/src/main/java/org/apache/camel/support/ProcessorPollingConsumer.java deleted file mode 100644 index 8a2d839..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/support/ProcessorPollingConsumer.java +++ /dev/null @@ -1,84 +0,0 @@ -package org.apache.camel.support; - -import java.util.HashMap; - -import org.apache.camel.Endpoint; -import org.apache.camel.Exchange; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.TransactionNamePriority; -import com.newrelic.api.agent.TransportType; -import com.newrelic.api.agent.weaver.MatchType; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; -import com.nr.instrumentation.apache.camel.CamelHeaders; -import com.nr.instrumentation.apache.camel.Util; - -@Weave(type = MatchType.BaseClass) -public abstract class ProcessorPollingConsumer { - - public abstract Endpoint getEndpoint(); - - @Trace(dispatcher = true) - public Exchange receive() { - NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Camel","PollingConsumer",getClass().getSimpleName(),"receive"); - Endpoint endPt = getEndpoint(); - if(endPt != null) { - String endpoint = endPt.getEndpointBaseUri(); - if(endpoint != null && !endpoint.isEmpty()) { - NewRelic.getAgent().getTransaction().setTransactionName(TransactionNamePriority.FRAMEWORK_HIGH, false, "PollingConsumer", "ProcessorPollingConsumer",endpoint); - } - } - Exchange result = Weaver.callOriginal(); - HashMap attributes = new HashMap<>(); - Util.recordExchange(attributes, result); - NewRelic.getAgent().getTracedMethod().addCustomAttributes(attributes); - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelHeaders(result)); - return result; - } - - @Trace(dispatcher = true) - public Exchange receiveNoWait() { - NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Camel","PollingConsumer",getClass().getSimpleName(),"receiveNoWait"); - Exchange result = Weaver.callOriginal(); - if(result != null) { - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelHeaders(result)); - HashMap attributes = new HashMap<>(); - Util.recordExchange(attributes, result); - NewRelic.getAgent().getTracedMethod().addCustomAttributes(attributes); - Endpoint endPt = getEndpoint(); - if(endPt != null) { - String endpoint = endPt.getEndpointBaseUri(); - if(endpoint != null && !endpoint.isEmpty()) { - NewRelic.getAgent().getTransaction().setTransactionName(TransactionNamePriority.FRAMEWORK_HIGH, false, "PollingConsumer","ProcessorPollingConsumer",endpoint); - } - } - } else { - NewRelic.getAgent().getTransaction().ignore(); - } - return result; - } - - @Trace(dispatcher = true) - public Exchange receive(long timeout) { - NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Camel","PollingConsumer",getClass().getSimpleName(),"receive"); - Exchange result = Weaver.callOriginal(); - if(result != null) { - NewRelic.getAgent().getTransaction().acceptDistributedTraceHeaders(TransportType.Other, new CamelHeaders(result)); - HashMap attributes = new HashMap<>(); - Util.recordExchange(attributes, result); - NewRelic.getAgent().getTracedMethod().addCustomAttributes(attributes); - Endpoint endPt = getEndpoint(); - if(endPt != null) { - String endpoint = endPt.getEndpointBaseUri(); - if(endpoint != null && !endpoint.isEmpty()) { - NewRelic.getAgent().getTransaction().setTransactionName(TransactionNamePriority.FRAMEWORK_HIGH, false, "PollingConsumer", "ProcessorPollingConsumer",endpoint); - } - } - } else { - NewRelic.getAgent().getTransaction().ignore(); - } - return result; - } -} diff --git a/camel-core-4.1.0/src/main/java/org/apache/camel/support/component/ApiMethodHelper.java b/camel-core-4.1.0/src/main/java/org/apache/camel/support/component/ApiMethodHelper.java deleted file mode 100644 index 4257eec..0000000 --- a/camel-core-4.1.0/src/main/java/org/apache/camel/support/component/ApiMethodHelper.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.apache.camel.support.component; - -import java.util.Map; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.api.agent.weaver.Weaver; - -@Weave -public abstract class ApiMethodHelper { - - @Trace - public static Object invokeMethod(Object proxy, ApiMethod method, Map properties) { - NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Camel","ApiMethodHelper","invokeMethod",method.getName()); - return Weaver.callOriginal(); - } -}