From 153a61646d01f29b984657096232ddf7b0741d03 Mon Sep 17 00:00:00 2001 From: Chinmay Pendharkar Date: Thu, 29 Aug 2024 16:43:06 +0800 Subject: [PATCH] fix(params): updating the ndx parameter message behaviour logic --- .../org/arl/fjage/param/ParameterMessageBehavior.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/arl/fjage/param/ParameterMessageBehavior.java b/src/main/java/org/arl/fjage/param/ParameterMessageBehavior.java index 7c069125..bdc04dfa 100644 --- a/src/main/java/org/arl/fjage/param/ParameterMessageBehavior.java +++ b/src/main/java/org/arl/fjage/param/ParameterMessageBehavior.java @@ -380,13 +380,18 @@ private Object invokeCompatibleSetter(String name, int ndx, Object value) throws try { return MethodUtils.invokeMethod(agent, name, ndx, value); } catch (NoSuchMethodException ignored) { + // If MethodUtils.invokeMethod fails, we will try to invoke the method by + // getting the method and invoking it directly + Class[] parameterTypes = new Class[2]; + parameterTypes[0] = Integer.TYPE; + parameterTypes[1] = value.getClass(); try { - return MethodUtils.invokeMethod(agent, name, Integer.valueOf(ndx), value); + Method m = agent.getClass().getMethod(name, parameterTypes); + return m.invoke(agent, ndx, value); } catch (NoSuchMethodException ex) { nsme = ex; } } - if (value instanceof Number) { Number nvalue = (Number) value; try {