/*
* Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.carbon.identity.entitlement.internal;
import org.wso2.carbon.identity.entitlement.PAPStatusDataHandler;
import org.wso2.carbon.identity.entitlement.dto.PublisherDataHolder;
import org.wso2.carbon.identity.entitlement.pap.EntitlementDataFinderModule;
import org.wso2.carbon.identity.entitlement.pip.PIPAttributeFinder;
import org.wso2.carbon.identity.entitlement.pip.PIPExtension;
import org.wso2.carbon.identity.entitlement.pip.PIPResourceFinder;
import org.wso2.carbon.identity.entitlement.policy.collection.PolicyCollection;
import org.wso2.carbon.identity.entitlement.policy.finder.PolicyFinderModule;
import org.wso2.carbon.identity.entitlement.policy.publisher.PolicyPublisherModule;
import org.wso2.carbon.identity.entitlement.policy.publisher.PostPublisherModule;
import org.wso2.carbon.identity.entitlement.policy.publisher.PublisherVerificationModule;
import org.wso2.carbon.identity.entitlement.policy.store.PolicyDataStore;
import org.wso2.carbon.identity.entitlement.policy.store.PolicyStoreManageModule;
import org.wso2.carbon.identity.entitlement.policy.version.PolicyVersionManager;
import javax.xml.validation.Schema;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
/**
* keeps track of the configuration found in entitlement-config.xml
*/
public class EntitlementConfigHolder {
/**
* PIPExtensions will be fired for each and every XACML request - which will give a handle to
* the incoming request.
*/
private Map<PIPExtension, Properties> extensions = new HashMap<PIPExtension, Properties>();
/**
* This will be fired by CarbonAttributeFinder whenever it finds an attribute supported by this
* module and missing in the XACML request.
*/
private Map<PIPAttributeFinder, Properties> designators = new HashMap<PIPAttributeFinder, Properties>();
/**
* This will be fired by CarbonResourceFinder whenever it wants to find a descendant or child resource
* of a given resource
*/
private Map<PIPResourceFinder, Properties> resourceFinders = new HashMap<PIPResourceFinder, Properties>();
/**
* This will be fired by EntitlementDataFinder, whenever it wants to retrieve an attribute values to build the
* XACML policy
*/
private Map<EntitlementDataFinderModule, Properties> policyEntitlementDataFinders =
new HashMap<EntitlementDataFinderModule, Properties>();
/**
* Will be fired by PolicyPublisher, whenever it wants to publish a policy
*/
private Map<PolicyPublisherModule, Properties> policyPublisherModules =
new HashMap<PolicyPublisherModule, Properties>();
/**
* Will be fired by PolicyPublisher, after a policy is published
*/
private Map<PostPublisherModule, Properties> policyPostPublisherModules =
new HashMap<PostPublisherModule, Properties>();
/**
* Will be fired by PolicyPublisher, before a policy is published
*/
private Map<PublisherVerificationModule, Properties> publisherVerificationModule =
new HashMap<PublisherVerificationModule, Properties>();
/**
* Will be fired by CarbonPolicyFinder, whenever it wants to find policies
*/
private Map<PolicyFinderModule, Properties> policyFinderModules =
new HashMap<PolicyFinderModule, Properties>();
/**
* This holds all the policies of entitlement engine
*/
private Map<PolicyCollection, Properties> policyCollections =
new HashMap<PolicyCollection, Properties>();
/**
* Will be fired by admin services, whenever it wants send notifications
*/
private Map<PAPStatusDataHandler, Properties> papStatusDataHandlers =
new HashMap<PAPStatusDataHandler, Properties>();
/**
* This holds all the policy storing logic of entitlement engine
*/
private Map<PolicyStoreManageModule, Properties> policyStore =
new HashMap<PolicyStoreManageModule, Properties>();
/**
* This holds all the policy versioning of PAP
*/
private Map<PolicyDataStore, Properties> policyDataStore =
new HashMap<PolicyDataStore, Properties>();
/**
* This holds all the policy storing logic of entitlement engine
*/
private Map<PolicyVersionManager, Properties> policyVersionModule =
new HashMap<PolicyVersionManager, Properties>();
/**
* This holds the policy schema against its version
*/
private Map<String, Schema> policySchemaMap = new HashMap<String, Schema>();
/**
* Holds all caching related configurations
*/
private Properties engineProperties;
/**
* Holds the properties of all modules.
*/
private Map<String, List<PublisherDataHolder>> modulePropertyHolderMap =
new HashMap<String, List<PublisherDataHolder>>();
public Map<PIPExtension, Properties> getExtensions() {
return extensions;
}
public void addExtensions(PIPExtension extension, Properties properties) {
this.extensions.put(extension, properties);
}
public Map<PIPAttributeFinder, Properties> getDesignators() {
return designators;
}
public void addDesignators(PIPAttributeFinder attributeFinder, Properties properties) {
this.designators.put(attributeFinder, properties);
}
public Map<PIPResourceFinder, Properties> getResourceFinders() {
return resourceFinders;
}
public void addResourceFinders(PIPResourceFinder resourceFinder, Properties properties) {
this.resourceFinders.put(resourceFinder, properties);
}
public Map<EntitlementDataFinderModule, Properties> getPolicyEntitlementDataFinders() {
return policyEntitlementDataFinders;
}
public void addPolicyEntitlementDataFinder(EntitlementDataFinderModule metaDataFinderModule,
Properties properties) {
this.policyEntitlementDataFinders.put(metaDataFinderModule, properties);
}
public Properties getEngineProperties() {
return engineProperties;
}
public void setEngineProperties(Properties engineProperties) {
this.engineProperties = engineProperties;
}
public Map<String, Schema> getPolicySchemaMap() {
return policySchemaMap;
}
public void setPolicySchema(String schemaNS, Schema schema) {
this.policySchemaMap.put(schemaNS, schema);
}
public Map<PolicyPublisherModule, Properties> getPolicyPublisherModules() {
return policyPublisherModules;
}
public void addPolicyPublisherModule(PolicyPublisherModule policyPublisherModules,
Properties properties) {
this.policyPublisherModules.put(policyPublisherModules, properties);
}
public List<PublisherDataHolder> getModulePropertyHolders(String type) {
return modulePropertyHolderMap.get(type);
}
public void addModulePropertyHolder(String type, PublisherDataHolder holder) {
if (this.modulePropertyHolderMap.get(type) == null) {
List<PublisherDataHolder> holders = new ArrayList<PublisherDataHolder>();
holders.add(holder);
this.modulePropertyHolderMap.put(type, holders);
} else {
this.modulePropertyHolderMap.get(type).add(holder);
}
}
public Map<PolicyFinderModule, Properties> getPolicyFinderModules() {
return policyFinderModules;
}
public void addPolicyFinderModule(PolicyFinderModule policyFinderModule,
Properties properties) {
this.policyFinderModules.put(policyFinderModule, properties);
}
public Map<PolicyCollection, Properties> getPolicyCollections() {
return policyCollections;
}
public void addPolicyCollection(PolicyCollection collection, Properties properties) {
this.policyCollections.put(collection, properties);
}
public Map<PolicyStoreManageModule, Properties> getPolicyStore() {
return policyStore;
}
public void addPolicyStore(PolicyStoreManageModule policyStoreStore, Properties properties) {
this.policyStore.put(policyStoreStore, properties);
}
public Map<PostPublisherModule, Properties> getPolicyPostPublisherModules() {
return policyPostPublisherModules;
}
public void addPolicyPostPublisherModule(PostPublisherModule postPublisherModule, Properties properties) {
this.policyPostPublisherModules.put(postPublisherModule, properties);
}
public Map<PublisherVerificationModule, Properties> getPublisherVerificationModule() {
return publisherVerificationModule;
}
public void addPublisherVerificationModule(PublisherVerificationModule publisherVerificationModule,
Properties properties) {
this.publisherVerificationModule.put(publisherVerificationModule, properties);
}
public Map<PAPStatusDataHandler, Properties> getPapStatusDataHandlers() {
return papStatusDataHandlers;
}
public void addNotificationHandler(PAPStatusDataHandler notificationHandler,
Properties properties) {
this.papStatusDataHandlers.put(notificationHandler, properties);
}
public Map<PolicyVersionManager, Properties> getPolicyVersionModule() {
return policyVersionModule;
}
public void addPolicyVersionModule(PolicyVersionManager policyVersionModule, Properties properties) {
this.policyVersionModule.put(policyVersionModule, properties);
}
public Map<PolicyDataStore, Properties> getPolicyDataStore() {
return policyDataStore;
}
public void addPolicyDataStore(PolicyDataStore policyDataStore, Properties properties) {
this.policyDataStore.put(policyDataStore, properties);
}
}