private List<ThemeProvider> getProviders() { if (providers == null) { providers = new LinkedList(); for (ThemeProvider p : session.getAllProviders(ThemeProvider.class)) { if (!(p instanceof ExtendingThemeManager)) { if (!p.getClass().equals(ExtendingThemeManager.class)) { providers.add(p); } } } Collections.sort(providers, new Comparator<ThemeProvider>() { @Override public int compare(ThemeProvider o1, ThemeProvider o2) { return o2.getProviderPriority() - o1.getProviderPriority(); } }); } return providers; }
@GET @Path("check") @Produces(MediaType.APPLICATION_JSON) public Response checkHealth() { Set<HealthIndicator> healthIndicators = this.session.getAllProviders(HealthIndicator.class); HealthStatus health = aggreagte(healthIndicators); if (health.isUp()) { return Response.ok(health).build(); } return Response.status(Response.Status.SERVICE_UNAVAILABLE).entity(health).build(); }
/** * Get a list of all provided entities by looping over all configured entity providers. * * @param session the keycloak session * @return a list of all provided entities (can be an empty list) */ public static List<Class<?>> getProvidedEntities(KeycloakSession session) { List<Class<?>> providedEntityClasses = new ArrayList<>(); // Get all configured entity providers. Set<JpaEntityProvider> entityProviders = session.getAllProviders(JpaEntityProvider.class); // For every provider, add all entity classes to the list. for (JpaEntityProvider entityProvider : entityProviders) { providedEntityClasses.addAll(entityProvider.getEntities()); } return providedEntityClasses; }
Set<JpaEntityProvider> jpaProviders = session.getAllProviders(JpaEntityProvider.class); for (JpaEntityProvider jpaProvider : jpaProviders) { String customChangelog = jpaProvider.getChangelogLocation();
@Override public Status validate(Connection connection, String defaultSchema) { logger.debug("Validating if database is updated"); ThreadLocalSessionContext.setCurrentSession(session); try { // Validate with keycloak master changelog first Liquibase liquibase = getLiquibaseForKeycloakUpdate(connection, defaultSchema); Status status = validateChangeSet(liquibase, liquibase.getChangeLogFile()); if (status != Status.VALID) { return status; } // Validate each custom JpaEntityProvider Set<JpaEntityProvider> jpaProviders = session.getAllProviders(JpaEntityProvider.class); for (JpaEntityProvider jpaProvider : jpaProviders) { String customChangelog = jpaProvider.getChangelogLocation(); if (customChangelog != null) { String factoryId = jpaProvider.getFactoryId(); String changelogTableName = JpaUtils.getCustomChangelogTableName(factoryId); liquibase = getLiquibaseForCustomProviderUpdate(connection, defaultSchema, customChangelog, jpaProvider.getClass().getClassLoader(), changelogTableName); if (validateChangeSet(liquibase, liquibase.getChangeLogFile()) != Status.VALID) { return Status.OUTDATED; } } } } catch (LiquibaseException e) { throw new RuntimeException("Failed to validate database", e); } return Status.VALID; }