avoid possible NPE, fix the error message
Signed-off-by: Lukas Jungmann <lukas.jungmann@oracle.com>
diff --git a/api/src/main/java/jakarta/json/spi/JsonProvider.java b/api/src/main/java/jakarta/json/spi/JsonProvider.java
index 694bb8f..4a01d27 100644
--- a/api/src/main/java/jakarta/json/spi/JsonProvider.java
+++ b/api/src/main/java/jakarta/json/spi/JsonProvider.java
@@ -64,7 +64,8 @@
/**
* The name of the property that contains the name of the class capable of creating new JsonProvider objects.
*/
- public static final String JSONP_PROVIDER_FACTORY = "jakarta.json.spi.JsonProvider";
+ private static final String JSONP_PROVIDER_FACTORY = "jakarta.json.provider";
+
/**
* A constant representing the name of the default
* {@code JsonProvider} implementation class.
@@ -98,8 +99,7 @@
* @return a JSON provider
*/
public static JsonProvider provider() {
- String factory = System.getProperty(JsonProvider.class.getName());
- if (factory != null) {
+ if (LazyFactoryLoader.JSON_PROVIDER != null) {
return newInstance(LazyFactoryLoader.JSON_PROVIDER);
}
ServiceLoader<JsonProvider> loader = ServiceLoader.load(JsonProvider.class);
@@ -126,12 +126,12 @@
* @return the JsonProvider instance
* @throws IllegalArgumentException for reflection issues
*/
- private static JsonProvider newInstance(Class<JsonProvider> clazz) {
+ private static JsonProvider newInstance(Class<? extends JsonProvider> clazz) {
checkPackageAccess(clazz.getName());
try {
return clazz.getConstructor().newInstance();
} catch (ReflectiveOperationException e) {
- throw new IllegalArgumentException("Cannot instance " + clazz.getName(), e);
+ throw new IllegalArgumentException("Unable to create " + clazz.getName(), e);
}
}
@@ -586,15 +586,15 @@
/**
* JSON provider class
*/
- private static final Class<JsonProvider> JSON_PROVIDER;
+ private static final Class<? extends JsonProvider> JSON_PROVIDER;
static {
String className = System.getProperty(JSONP_PROVIDER_FACTORY);
if (className != null) {
try {
- JSON_PROVIDER = (Class<JsonProvider>) Class.forName(className);
+ JSON_PROVIDER = (Class<? extends JsonProvider>) Class.forName(className);
} catch (ReflectiveOperationException e) {
- throw new IllegalStateException("Cannot instance " + className, e);
+ throw new IllegalStateException("Unable to create " + className, e);
}
} else {
JSON_PROVIDER = null;