This is an automated email from the ASF dual-hosted git repository. robertlazarski pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/axis-axis2-java-core.git
commit db273fc655d2a0d69dd7228931912e5c703b2e70 Author: Robert Lazarski <[email protected]> AuthorDate: Tue May 5 03:16:22 2026 -1000 AXIS2-6104 Null-check getOpMethod, sanitize test data - All four message receivers (gson + moshi, InOut + InOnly) now check for null return from getOpMethod() and throw a clear AxisFault with the operation name and service class, instead of NPE - Replace proprietary department names in pagination test with generic "Department A" through "Department O" Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]> --- .../apache/axis2/json/gson/rpc/JsonInOnlyRPCMessageReceiver.java | 4 ++++ .../org/apache/axis2/json/gson/rpc/JsonRpcMessageReceiver.java | 4 ++++ .../apache/axis2/json/moshi/rpc/JsonInOnlyRPCMessageReceiver.java | 4 ++++ .../org/apache/axis2/json/moshi/rpc/JsonRpcMessageReceiver.java | 4 ++++ .../test/org/apache/axis2/json/rpc/PaginatedResponseTest.java | 8 ++++---- 5 files changed, 20 insertions(+), 4 deletions(-) diff --git a/modules/json/src/org/apache/axis2/json/gson/rpc/JsonInOnlyRPCMessageReceiver.java b/modules/json/src/org/apache/axis2/json/gson/rpc/JsonInOnlyRPCMessageReceiver.java index 24f33b0323..a8ec434180 100644 --- a/modules/json/src/org/apache/axis2/json/gson/rpc/JsonInOnlyRPCMessageReceiver.java +++ b/modules/json/src/org/apache/axis2/json/gson/rpc/JsonInOnlyRPCMessageReceiver.java @@ -73,6 +73,10 @@ public class JsonInOnlyRPCMessageReceiver extends RPCInOnlyMessageReceiver { Class implClass = serviceObj.getClass(); Method[] allMethods = implClass.getDeclaredMethods(); Method method = JsonUtils.getOpMethod(operation_name, allMethods); + if (method == null) { + throw new AxisFault("Operation '" + operation_name + + "' not found on service class " + implClass.getName()); + } Class[] paramClasses = method.getParameterTypes(); try { int paramCount = paramClasses.length; diff --git a/modules/json/src/org/apache/axis2/json/gson/rpc/JsonRpcMessageReceiver.java b/modules/json/src/org/apache/axis2/json/gson/rpc/JsonRpcMessageReceiver.java index 189692b41a..f070124b82 100644 --- a/modules/json/src/org/apache/axis2/json/gson/rpc/JsonRpcMessageReceiver.java +++ b/modules/json/src/org/apache/axis2/json/gson/rpc/JsonRpcMessageReceiver.java @@ -75,6 +75,10 @@ public class JsonRpcMessageReceiver extends RPCMessageReceiver { Class implClass = serviceObj.getClass(); Method[] allMethods = implClass.getDeclaredMethods(); Method method = JsonUtils.getOpMethod(operation_name, allMethods); + if (method == null) { + throw new AxisFault("Operation '" + operation_name + + "' not found on service class " + implClass.getName()); + } Class[] paramClasses = method.getParameterTypes(); try { int paramCount = paramClasses.length; diff --git a/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonInOnlyRPCMessageReceiver.java b/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonInOnlyRPCMessageReceiver.java index a46430f11e..40102babdd 100644 --- a/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonInOnlyRPCMessageReceiver.java +++ b/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonInOnlyRPCMessageReceiver.java @@ -73,6 +73,10 @@ public class JsonInOnlyRPCMessageReceiver extends RPCInOnlyMessageReceiver { Class implClass = serviceObj.getClass(); Method[] allMethods = implClass.getDeclaredMethods(); Method method = JsonUtils.getOpMethod(operation_name, allMethods); + if (method == null) { + throw new AxisFault("Operation '" + operation_name + + "' not found on service class " + implClass.getName()); + } Class[] paramClasses = method.getParameterTypes(); try { int paramCount = paramClasses.length; diff --git a/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonRpcMessageReceiver.java b/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonRpcMessageReceiver.java index 3726ca0147..e6de2188f5 100644 --- a/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonRpcMessageReceiver.java +++ b/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonRpcMessageReceiver.java @@ -75,6 +75,10 @@ public class JsonRpcMessageReceiver extends RPCMessageReceiver { Class implClass = serviceObj.getClass(); Method[] allMethods = implClass.getDeclaredMethods(); Method method = JsonUtils.getOpMethod(operation_name, allMethods); + if (method == null) { + throw new AxisFault("Operation '" + operation_name + + "' not found on service class " + implClass.getName()); + } Class[] paramClasses = method.getParameterTypes(); try { int paramCount = paramClasses.length; diff --git a/modules/json/test/org/apache/axis2/json/rpc/PaginatedResponseTest.java b/modules/json/test/org/apache/axis2/json/rpc/PaginatedResponseTest.java index 6ec4b75dc5..6dc08ef38e 100644 --- a/modules/json/test/org/apache/axis2/json/rpc/PaginatedResponseTest.java +++ b/modules/json/test/org/apache/axis2/json/rpc/PaginatedResponseTest.java @@ -337,10 +337,10 @@ public class PaginatedResponseTest { // Scenario: a lookup/reference table (e.g. list of 15 departments). // No pagination needed — return the full set with hasMore=false. List<String> departments = Arrays.asList( - "Equity Long/Short", "Fixed Income", "Macro", "Quant", - "Event Driven", "Multi-Strategy", "Credit", "Real Assets", - "Private Equity", "Venture", "Commodities", "FX", - "Emerging Markets", "Infrastructure", "Insurance-Linked"); + "Department A", "Department B", "Department C", "Department D", + "Department E", "Department F", "Department G", "Department H", + "Department I", "Department J", "Department K", "Department L", + "Department M", "Department N", "Department O"); PaginatedResponse<String> resp = PaginatedResponse.unpaginated(departments);
