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