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;