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 <[email protected]>
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)) {