This is an automated email from the ASF dual-hosted git repository. remm pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/main by this push: new 459cbf6 Add available flag for UserDatabase 459cbf6 is described below commit 459cbf6bd96a0488f205f090efba34520186066e Author: remm <r...@apache.org> AuthorDate: Wed Aug 25 22:36:17 2021 +0200 Add available flag for UserDatabase Also avoid loading the whole database as MBeans, the behavior is fancy but only makes sense for a memory user database. --- java/org/apache/catalina/UserDatabase.java | 22 ++++++++++++++++++++++ .../mbeans/GlobalResourcesLifecycleListener.java | 5 +++++ .../apache/catalina/realm/UserDatabaseRealm.java | 6 ++++++ 3 files changed, 33 insertions(+) diff --git a/java/org/apache/catalina/UserDatabase.java b/java/org/apache/catalina/UserDatabase.java index 9242170..713cc1d 100644 --- a/java/org/apache/catalina/UserDatabase.java +++ b/java/org/apache/catalina/UserDatabase.java @@ -198,4 +198,26 @@ public interface UserDatabase { public default void backgroundProcess() { // NO-OP by default } + + + /** + * Is the database available. + * + * @return true + */ + public default boolean isAvailable() { + return true; + } + + + /** + * Is the database data loaded on demand. This is used to avoid eager + * loading of the full database data, for example for JMX registration of + * all objects. + * + * @return false + */ + public default boolean isSparse() { + return false; + } } diff --git a/java/org/apache/catalina/mbeans/GlobalResourcesLifecycleListener.java b/java/org/apache/catalina/mbeans/GlobalResourcesLifecycleListener.java index a86b486..bca1ed7 100644 --- a/java/org/apache/catalina/mbeans/GlobalResourcesLifecycleListener.java +++ b/java/org/apache/catalina/mbeans/GlobalResourcesLifecycleListener.java @@ -168,6 +168,11 @@ public class GlobalResourcesLifecycleListener implements LifecycleListener { throw new IllegalArgumentException(sm.getString("globalResources.createError.userDatabase", name), e); } + if (database.isSparse()) { + // Avoid loading all the database as mbeans + return; + } + // Create the MBeans for each defined Role Iterator<Role> roles = database.getRoles(); while (roles.hasNext()) { diff --git a/java/org/apache/catalina/realm/UserDatabaseRealm.java b/java/org/apache/catalina/realm/UserDatabaseRealm.java index c13b706..477be7f 100644 --- a/java/org/apache/catalina/realm/UserDatabaseRealm.java +++ b/java/org/apache/catalina/realm/UserDatabaseRealm.java @@ -231,6 +231,12 @@ public class UserDatabaseRealm extends RealmBase { } + @Override + public boolean isAvailable() { + return (database == null) ? false : database.isAvailable(); + } + + public static final class UserDatabasePrincipal extends GenericPrincipal { private static final long serialVersionUID = 1L; private final transient User user; --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org