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;