You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by zh...@apache.org on 2022/11/02 11:17:31 UTC

[rocketmq] branch develop updated: Fix ServiceProvider report NPE misleading users when no resource file found (#5450)

This is an automated email from the ASF dual-hosted git repository.

zhoubo pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git


The following commit(s) were added to refs/heads/develop by this push:
     new d45a34c0a Fix ServiceProvider report NPE misleading users when no resource file found (#5450)
d45a34c0a is described below

commit d45a34c0a5cefee277d4ad1169663a3259195358
Author: rongtong <ji...@163.com>
AuthorDate: Wed Nov 2 19:17:24 2022 +0800

    Fix ServiceProvider report NPE misleading users when no resource file found (#5450)
---
 .../rocketmq/common/utils/ServiceProvider.java       | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/common/src/main/java/org/apache/rocketmq/common/utils/ServiceProvider.java b/common/src/main/java/org/apache/rocketmq/common/utils/ServiceProvider.java
index 1b47158b9..0f7255b3d 100644
--- a/common/src/main/java/org/apache/rocketmq/common/utils/ServiceProvider.java
+++ b/common/src/main/java/org/apache/rocketmq/common/utils/ServiceProvider.java
@@ -107,15 +107,19 @@ public class ServiceProvider {
     public static <T> List<T> load(String name, Class<?> clazz) {
         LOG.info("Looking for a resource file of name [{}] ...", name);
         List<T> services = new ArrayList<>();
-        try (InputStream is = getResourceAsStream(getContextClassLoader(), name);
-             BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8))) {
+        InputStream is = getResourceAsStream(getContextClassLoader(), name);
+        if (is == null) {
+            LOG.warn("No resource file with name [{}] found.", name);
+            return services;
+        }
+        try (BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8))) {
 
             String serviceName = reader.readLine();
             List<String> names = new ArrayList<>();
             while (serviceName != null && !"".equals(serviceName)) {
                 LOG.info(
-                        "Creating an instance as specified by file {} which was present in the path of the context classloader.",
-                        name);
+                    "Creating an instance as specified by file {} which was present in the path of the context classloader.",
+                    name);
                 if (!names.contains(serviceName)) {
                     names.add(serviceName);
                     services.add(initService(getContextClassLoader(), serviceName, clazz));
@@ -130,8 +134,12 @@ public class ServiceProvider {
 
     public static <T> T loadClass(String name, Class<?> clazz) {
         T s = null;
-        try (InputStream is = getResourceAsStream(getContextClassLoader(), name);
-             BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8))) {
+        InputStream is = getResourceAsStream(getContextClassLoader(), name);
+        if (is == null) {
+            LOG.warn("No resource file with name [{}] found.", name);
+            return null;
+        }
+        try (BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8))) {
 
             String serviceName = reader.readLine();
             if (serviceName != null && !"".equals(serviceName)) {