From f2561ea5f9df83992c4917c7b7d2fdb6cb1618b9 Mon Sep 17 00:00:00 2001 From: Shaun Francis Date: Thu, 7 Nov 2019 09:52:26 +0000 Subject: [PATCH] Fix error output when there are no parameters --- CHANGELOG.md | 9 ++++++++ .../wildfly/jms/WildflyJmsAgentHelper.java | 21 ++++++++++++------- .../jms/WildflyJmsAgentHelperTest.java | 8 ++++++- pom.xml | 6 +++--- 4 files changed, 33 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index be63228..a8d5097 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,15 @@ on [Keep a CHANGELOG](http://keepachangelog.com/). This project adheres to ## [Unreleased] +## [1.2.5] - 2019-11-07 +### Fixed +- Do nothing if InterceptorContext has no parameters, fixes error output when there are no parameters + +### Changed +- Updated to framework parent pom version 1.13.0 +- Updated to common-bom version 2.4.0 +- Updated to test-utils version 1.24.3 + ## [1.2.3] - 2017-11-29 ### Changed diff --git a/metrics-agent-wildfly/src/main/java/uk/gov/justice/metrics/agent/wildfly/jms/WildflyJmsAgentHelper.java b/metrics-agent-wildfly/src/main/java/uk/gov/justice/metrics/agent/wildfly/jms/WildflyJmsAgentHelper.java index 239259d..41a6065 100644 --- a/metrics-agent-wildfly/src/main/java/uk/gov/justice/metrics/agent/wildfly/jms/WildflyJmsAgentHelper.java +++ b/metrics-agent-wildfly/src/main/java/uk/gov/justice/metrics/agent/wildfly/jms/WildflyJmsAgentHelper.java @@ -4,10 +4,7 @@ import static uk.gov.justice.metrics.agent.wildfly.util.ReflectionUtil.invokeMethod; import uk.gov.justice.metrics.agent.artemis.agent.common.TimerContext; -import uk.gov.justice.metrics.agent.wildfly.util.ReflectionUtil; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import java.util.Optional; import java.util.function.BiConsumer; @@ -27,15 +24,19 @@ public void onExit(Object interceptor, Object interceptorContext) { } private void collectMetrics(final Object interceptor, final Object interceptorContext, final BiConsumer timerContextOperation) { + if (firstInterceptorInChain(interceptor)) { + try { final Optional coreMessage = coreMessageFrom(interceptorContext); + if (coreMessage.isPresent()) { final Object messageId = messageIdOf(coreMessage.get()).get(); final TimerContext timerContext = timerContextOf(coreMessage.get()); timerContextOperation.accept(timerContext, messageId); } - } catch (Exception e) { + + } catch (final Exception e) { LOGGER.error(INTROSPECTION_ERROR, e); } } @@ -50,15 +51,21 @@ private Optional messageIdOf(final Object coreMessage) throws Reflective } private TimerContext timerContextOf(final Object coreMessage) throws ReflectiveOperationException { + final Object address = invokeMethod(coreMessage, "getAddress").get(); final Object action = invokeMethod(coreMessage, "getStringProperty", "CPPNAME").get(); return WildflyJmsMetricsTimerContextFactory.timerContextOf(address, action); } private Optional coreMessageFrom(final Object interceptorContext) throws ReflectiveOperationException { - final Object parameters = invokeMethod(interceptorContext, "getParameters").get(); - Object amqMessage = ((Object[]) parameters)[0]; - return invokeMethod(amqMessage, "getCoreMessage"); + + final Object[] parameters = (Object[]) invokeMethod(interceptorContext, "getParameters").get(); + + if (parameters.length > 0) { + return invokeMethod(parameters[0], "getCoreMessage"); + } + + return Optional.empty(); } } \ No newline at end of file diff --git a/metrics-agent-wildfly/src/test/java/uk/gov/justice/metrics/agent/wildfly/jms/WildflyJmsAgentHelperTest.java b/metrics-agent-wildfly/src/test/java/uk/gov/justice/metrics/agent/wildfly/jms/WildflyJmsAgentHelperTest.java index fab0f99..3658bf9 100644 --- a/metrics-agent-wildfly/src/test/java/uk/gov/justice/metrics/agent/wildfly/jms/WildflyJmsAgentHelperTest.java +++ b/metrics-agent-wildfly/src/test/java/uk/gov/justice/metrics/agent/wildfly/jms/WildflyJmsAgentHelperTest.java @@ -64,6 +64,13 @@ public void shouldNotCollectMetricsIfActiveMQMessageNotInContext() { assertThat(TimerRegistry.timerOf("wildfly.jms.queue.abc-contextname.actionname").getCount(), is(0L)); } + @Test + public void shouldNotCollectMetricsIfNoParametersInContext() { + agentHelper.onEntry(INITIAL_INTERCEPTOR, new InterceptorContext()); + agentHelper.onExit(INITIAL_INTERCEPTOR, new InterceptorContext()); + assertThat(TimerRegistry.timerOf("wildfly.jms.queue.abc-contextname.actionname").getCount(), is(0L)); + } + @Test public void shouldNotCollectMetricsIfNotInitialInterceptor() { final Message message = new ActiveMQTextMessage(new TestClientMessage(127, "jms.queue.abc", "contextname.actionname"), null); @@ -73,7 +80,6 @@ public void shouldNotCollectMetricsIfNotInitialInterceptor() { } - @Test public void shouldLogErrorInCaseExcpectedMethodNotFoundInPassedObject() { final TestAppender appender = new TestAppender(); diff --git a/pom.xml b/pom.xml index 6cbacdb..075f2a2 100644 --- a/pom.xml +++ b/pom.xml @@ -11,15 +11,15 @@ uk.gov.justice maven-framework-parent-pom - 1.7.0 + 1.13.0 metrics-agent 1.2.4-SNAPSHOT pom - 1.22.0 - 1.13.1 + 2.4.0 + 1.24.3