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);
 

Reply via email to