diff --git a/services/src/main/java/org/keycloak/services/DefaultKeycloakSessionFactory.java b/services/src/main/java/org/keycloak/services/DefaultKeycloakSessionFactory.java
index 89146fc..0bd9f31 100755
--- a/services/src/main/java/org/keycloak/services/DefaultKeycloakSessionFactory.java
+++ b/services/src/main/java/org/keycloak/services/DefaultKeycloakSessionFactory.java
@@ -66,6 +66,10 @@ public class DefaultKeycloakSessionFactory implements KeycloakSessionFactory {
Config.Scope scope = Config.scope(spi.getName(), provider);
factory.init(scope);
+ if (spi.isPrivate() && !isInternal(factory)) {
+ log.warnv("{0} ({1}) is implementing the internal SPI {2}. This SPI is internal and may change without notice", factory.getId(), factory.getClass().getName(), spi.getName());
+ }
+
factories.put(factory.getId(), factory);
log.debugv("Loaded SPI {0} (provider = {1})", spi.getName(), provider);
@@ -74,6 +78,10 @@ public class DefaultKeycloakSessionFactory implements KeycloakSessionFactory {
Config.Scope scope = Config.scope(spi.getName(), factory.getId());
factory.init(scope);
+ if (spi.isPrivate() && !isInternal(factory)) {
+ log.warnv("{0} ({1}) is implementing the internal SPI {2}. This SPI is internal and may change without notice", factory.getId(), factory.getClass().getName(), spi.getName());
+ }
+
factories.put(factory.getId(), factory);
}
@@ -138,4 +146,8 @@ public class DefaultKeycloakSessionFactory implements KeycloakSessionFactory {
}
}
+ private boolean isInternal(ProviderFactory<?> factory) {
+ return factory.getClass().getPackage().getName().startsWith("org.keycloak");
+ }
+
}