private boolean isPartitionSupported(final List<IdentityConfiguration> configurations) { for (IdentityConfiguration configuration : configurations) { for (IdentityStoreConfiguration storeConfig : configuration.getStoreConfiguration()) { if (storeConfig.supportsPartition() && storeConfig.supportsType(Realm.class, IdentityOperation.create)) { return true; } } } return false; }
public DefaultPartitionManager( Collection<IdentityConfiguration> configurations, EventBridge eventBridge, Collection<PermissionHandler> permissionHandlers, IdGenerator idGenerator) { if (configurations == null || configurations.isEmpty()) { throw MESSAGES.configNoIdentityConfigurationProvided(); } ROOT_LOGGER.partitionManagerBootstrap(); try { this.configurations = Collections.unmodifiableCollection(configurations); if (eventBridge != null) { this.eventBridge = eventBridge; } else { this.eventBridge = new EventBridge() { public void raiseEvent(Object event) { /* no-op */ } }; } if (idGenerator != null) { this.idGenerator = idGenerator; } else { this.idGenerator = new DefaultIdGenerator(); } permissionHandlerPolicy = new PermissionHandlerPolicy(null); if (permissionHandlers != null) { for (PermissionHandler handler : permissionHandlers) { permissionHandlerPolicy.registerHandler(handler); } } IdentityConfiguration partitionCfg = null; IdentityConfiguration attributeCfg = null; for (IdentityConfiguration config : configurations) { for (IdentityStoreConfiguration storeConfig : config.getStoreConfiguration()) { if (storeConfig.supportsPartition()) { partitionCfg = config; } if (storeConfig.supportsAttribute()) { attributeCfg = config; } } } // There may be no configuration that supports partition management, in which case the // partitionManagementConfig // field will be null and partition management operations will not be supported this.partitionManagementConfig = partitionCfg; this.attributeManagementConfig = attributeCfg; logConfiguration(this.configurations); Map<IdentityConfiguration, Map<IdentityStoreConfiguration, IdentityStore<?>>> configuredStores = new HashMap< IdentityConfiguration, Map<IdentityStoreConfiguration, IdentityStore<?>>>(); for (IdentityConfiguration config : configurations) { Map<IdentityStoreConfiguration, IdentityStore<?>> storeMap = new HashMap<IdentityStoreConfiguration, IdentityStore<?>>(); for (IdentityStoreConfiguration storeConfig : config.getStoreConfiguration()) { storeMap.put(storeConfig, createIdentityStore(storeConfig)); } configuredStores.put(config, Collections.unmodifiableMap(storeMap)); } stores = Collections.unmodifiableMap(configuredStores); } catch (Exception e) { throw MESSAGES.partitionManagerInitializationFailed(this.getClass(), e); } }