From 2505d4907a0ea49761412bf7aff43d1053a45711 Mon Sep 17 00:00:00 2001 From: kamidu Date: Fri, 29 Dec 2017 10:33:03 +0530 Subject: [PATCH] Fixing https://github.com/wso2/product-iots/issues/1565 --- .../config/policy/PolicyConfiguration.java | 10 +++ .../mgt/core/enforcement/DelegationTask.java | 9 ++- .../impl/PolicyAdministratorPointImpl.java | 62 ++++++++++++++----- .../mgt/core/mgt/impl/PolicyManagerImpl.java | 49 ++++++++++++--- .../repository/conf/cdm-config.xml | 1 + 5 files changed, 107 insertions(+), 24 deletions(-) diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/policy/PolicyConfiguration.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/policy/PolicyConfiguration.java index 1f52150f3f..0e85e9d10c 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/policy/PolicyConfiguration.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/policy/PolicyConfiguration.java @@ -34,6 +34,7 @@ public class PolicyConfiguration { private int minRetriesToMarkInactive; private List platforms; private String policyEvaluationPoint; + private boolean cacheEnable; @XmlElement(name = "MonitoringClass", required = true) public String getMonitoringClass() { @@ -108,4 +109,13 @@ public class PolicyConfiguration { this.policyEvaluationPoint = policyEvaluationPointName; } + @XmlElement(name = "CacheEnable", required = true) + public boolean getCacheEnable() { + return cacheEnable; + } + + public void setCacheEnable(boolean cacheEnable) { + this.cacheEnable = cacheEnable; + } + } diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/enforcement/DelegationTask.java b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/enforcement/DelegationTask.java index bd014817ff..e941312da1 100644 --- a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/enforcement/DelegationTask.java +++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/enforcement/DelegationTask.java @@ -23,6 +23,8 @@ import org.apache.commons.logging.LogFactory; import org.wso2.carbon.device.mgt.common.Device; import org.wso2.carbon.device.mgt.common.DeviceManagementException; import org.wso2.carbon.device.mgt.common.EnrolmentInfo; +import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager; +import org.wso2.carbon.device.mgt.core.config.policy.PolicyConfiguration; import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; import org.wso2.carbon.ntask.core.Task; import org.wso2.carbon.policy.mgt.common.PolicyManagementException; @@ -39,6 +41,7 @@ import java.util.Map; public class DelegationTask implements Task { private static final Log log = LogFactory.getLog(DelegationTask.class); + private PolicyConfiguration policyConfiguration = DeviceConfigurationManager.getInstance().getDeviceManagementConfig().getPolicyConfiguration(); @Override public void setProperties(Map map) { @@ -57,9 +60,9 @@ public class DelegationTask implements Task { PolicyManager policyManager = new PolicyManagerImpl(); UpdatedPolicyDeviceListBean updatedPolicyDeviceList = policyManager.applyChangesMadeToPolicies(); List deviceTypes = updatedPolicyDeviceList.getChangedDeviceTypes(); - - PolicyCacheManagerImpl.getInstance().rePopulateCache(); - + if (policyConfiguration.getCacheEnable()) { + PolicyCacheManagerImpl.getInstance().rePopulateCache(); + } if (log.isDebugEnabled()) { log.debug("Number of device types which policies are changed .......... : " + deviceTypes.size()); } diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/impl/PolicyAdministratorPointImpl.java b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/impl/PolicyAdministratorPointImpl.java index d595a3c4eb..9cbd11aefc 100644 --- a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/impl/PolicyAdministratorPointImpl.java +++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/impl/PolicyAdministratorPointImpl.java @@ -24,6 +24,8 @@ import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.device.mgt.common.DeviceIdentifier; import org.wso2.carbon.device.mgt.common.policy.mgt.Policy; import org.wso2.carbon.device.mgt.common.policy.mgt.Profile; +import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager; +import org.wso2.carbon.device.mgt.core.config.policy.PolicyConfiguration; import org.wso2.carbon.ntask.common.TaskException; import org.wso2.carbon.ntask.core.TaskInfo; import org.wso2.carbon.ntask.core.TaskManager; @@ -53,6 +55,7 @@ public class PolicyAdministratorPointImpl implements PolicyAdministratorPoint { private ProfileManager profileManager; private FeatureManager featureManager; private PolicyCacheManager cacheManager; + private PolicyConfiguration policyConfiguration; // private PolicyEnforcementDelegator delegator; public PolicyAdministratorPointImpl() { @@ -60,6 +63,7 @@ public class PolicyAdministratorPointImpl implements PolicyAdministratorPoint { this.profileManager = new ProfileManagerImpl(); this.featureManager = new FeatureManagerImpl(); this.cacheManager = PolicyCacheManagerImpl.getInstance(); + this.policyConfiguration = DeviceConfigurationManager.getInstance().getDeviceManagementConfig().getPolicyConfiguration(); // this.delegator = new PolicyEnforcementDelegatorImpl(); } @@ -71,7 +75,9 @@ public class PolicyAdministratorPointImpl implements PolicyAdministratorPoint { // } catch (PolicyDelegationException e) { // throw new PolicyManagementException("Error occurred while delegating policy operation to the devices", e); // } - PolicyCacheManagerImpl.getInstance().rePopulateCache(); + if (policyConfiguration.getCacheEnable()) { + PolicyCacheManagerImpl.getInstance().rePopulateCache(); + } return resultantPolicy; } @@ -83,42 +89,54 @@ public class PolicyAdministratorPointImpl implements PolicyAdministratorPoint { // } catch (PolicyDelegationException e) { // throw new PolicyManagementException("Error occurred while delegating policy operation to the devices", e); // } - PolicyCacheManagerImpl.getInstance().rePopulateCache(); + if (policyConfiguration.getCacheEnable()) { + PolicyCacheManagerImpl.getInstance().rePopulateCache(); + } return resultantPolicy; } @Override public boolean updatePolicyPriorities(List policies) throws PolicyManagementException { boolean bool = policyManager.updatePolicyPriorities(policies); - PolicyCacheManagerImpl.getInstance().rePopulateCache(); + if (policyConfiguration.getCacheEnable()) { + PolicyCacheManagerImpl.getInstance().rePopulateCache(); + } return bool; } @Override public void activatePolicy(int policyId) throws PolicyManagementException { policyManager.activatePolicy(policyId); - PolicyCacheManagerImpl.getInstance().rePopulateCache(); + if (policyConfiguration.getCacheEnable()) { + PolicyCacheManagerImpl.getInstance().rePopulateCache(); + } } @Override public void inactivatePolicy(int policyId) throws PolicyManagementException { policyManager.inactivatePolicy(policyId); - PolicyCacheManagerImpl.getInstance().rePopulateCache(); + if (policyConfiguration.getCacheEnable()) { + PolicyCacheManagerImpl.getInstance().rePopulateCache(); + } } @Override public boolean deletePolicy(Policy policy) throws PolicyManagementException { boolean bool = policyManager.deletePolicy(policy); - PolicyCacheManager policyCacheManager = PolicyCacheManagerImpl.getInstance(); - policyCacheManager.rePopulateCache(); + if (policyConfiguration.getCacheEnable()) { + PolicyCacheManager policyCacheManager = PolicyCacheManagerImpl.getInstance(); + policyCacheManager.rePopulateCache(); + } return bool; } @Override public boolean deletePolicy(int policyId) throws PolicyManagementException { boolean bool = policyManager.deletePolicy(policyId); - PolicyCacheManager policyCacheManager = PolicyCacheManagerImpl.getInstance(); - policyCacheManager.rePopulateCache(); + if (policyConfiguration.getCacheEnable()) { + PolicyCacheManager policyCacheManager = PolicyCacheManagerImpl.getInstance(); + policyCacheManager.rePopulateCache(); + } return bool; } @@ -222,25 +240,37 @@ public class PolicyAdministratorPointImpl implements PolicyAdministratorPoint { public Policy addPolicyToDevice(List deviceIdentifierList, Policy policy) throws PolicyManagementException { policy = policyManager.addPolicyToDevice(deviceIdentifierList, policy); - PolicyCacheManagerImpl.getInstance().rePopulateCache(); + if (policyConfiguration.getCacheEnable()) { + PolicyCacheManagerImpl.getInstance().rePopulateCache(); + } return policy; } @Override public Policy addPolicyToRole(List roleNames, Policy policy) throws PolicyManagementException { policy = policyManager.addPolicyToRole(roleNames, policy); - PolicyCacheManagerImpl.getInstance().rePopulateCache(); + if (policyConfiguration.getCacheEnable()) { + PolicyCacheManagerImpl.getInstance().rePopulateCache(); + } return policy; } @Override public List getPolicies() throws PolicyManagementException { - return PolicyCacheManagerImpl.getInstance().getAllPolicies(); + if (policyConfiguration.getCacheEnable()) { + return PolicyCacheManagerImpl.getInstance().getAllPolicies(); + } else { + return policyManager.getPolicies(); + } } @Override public Policy getPolicy(int policyId) throws PolicyManagementException { - return PolicyCacheManagerImpl.getInstance().getPolicy(policyId); + if (policyConfiguration.getCacheEnable()) { + return PolicyCacheManagerImpl.getInstance().getPolicy(policyId); + } else { + return policyManager.getPolicy(policyId); + } } @Override @@ -340,7 +370,11 @@ public class PolicyAdministratorPointImpl implements PolicyAdministratorPoint { @Override public int getPolicyCount() throws PolicyManagementException { - return PolicyCacheManagerImpl.getInstance().getAllPolicies().size(); + if (policyConfiguration.getCacheEnable()) { + return PolicyCacheManagerImpl.getInstance().getAllPolicies().size(); + } else { + return policyManager.getPolicyCount(); + } } } diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/mgt/impl/PolicyManagerImpl.java b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/mgt/impl/PolicyManagerImpl.java index 79626eb485..e00e1adcc9 100644 --- a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/mgt/impl/PolicyManagerImpl.java +++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/mgt/impl/PolicyManagerImpl.java @@ -33,6 +33,8 @@ import org.wso2.carbon.device.mgt.common.policy.mgt.Policy; import org.wso2.carbon.device.mgt.common.policy.mgt.PolicyCriterion; import org.wso2.carbon.device.mgt.common.policy.mgt.Profile; import org.wso2.carbon.device.mgt.common.policy.mgt.ProfileFeature; +import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager; +import org.wso2.carbon.device.mgt.core.config.policy.PolicyConfiguration; import org.wso2.carbon.device.mgt.core.operation.mgt.CommandOperation; import org.wso2.carbon.device.mgt.core.operation.mgt.OperationMgtConstants; import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; @@ -58,16 +60,20 @@ import java.util.*; public class PolicyManagerImpl implements PolicyManager { private PolicyDAO policyDAO; + private PolicyManager policyManager; private ProfileDAO profileDAO; private FeatureDAO featureDAO; private ProfileManager profileManager; + private PolicyConfiguration policyConfiguration; private static Log log = LogFactory.getLog(PolicyManagerImpl.class); public PolicyManagerImpl() { this.policyDAO = PolicyManagementDAOFactory.getPolicyDAO(); this.profileDAO = PolicyManagementDAOFactory.getProfileDAO(); this.featureDAO = PolicyManagementDAOFactory.getFeatureDAO(); + this.policyConfiguration = DeviceConfigurationManager.getInstance().getDeviceManagementConfig().getPolicyConfiguration(); this.profileManager = new ProfileManagerImpl(); + this.policyManager = new PolicyManagerImpl(); } @Override @@ -272,7 +278,12 @@ public class PolicyManagerImpl implements PolicyManager { boolean bool; try { // List existingPolicies = this.getPolicies(); - List existingPolicies = PolicyCacheManagerImpl.getInstance().getAllPolicies(); + List existingPolicies; + if (policyConfiguration.getCacheEnable()) { + existingPolicies = PolicyCacheManagerImpl.getInstance().getAllPolicies(); + } else { + existingPolicies = policyManager.getPolicies(); + } PolicyManagementDAOFactory.beginTransaction(); bool = policyDAO.updatePolicyPriorities(policies); @@ -683,7 +694,12 @@ public class PolicyManagerImpl implements PolicyManager { } // List tempPolicyList = this.getPolicies(); - List tempPolicyList = PolicyCacheManagerImpl.getInstance().getAllPolicies(); + List tempPolicyList; + if (policyConfiguration.getCacheEnable()) { + tempPolicyList = PolicyCacheManagerImpl.getInstance().getAllPolicies(); + } else { + tempPolicyList = policyManager.getPolicies(); + } for (Policy policy : tempPolicyList) { for (Integer i : policyIdList) { @@ -703,7 +719,12 @@ public class PolicyManagerImpl implements PolicyManager { // try { // List profileList = profileManager.getProfilesOfDeviceType(deviceTypeName); // List allPolicies = this.getPolicies(); - List allPolicies = PolicyCacheManagerImpl.getInstance().getAllPolicies(); + List allPolicies; + if (policyConfiguration.getCacheEnable()) { + allPolicies = PolicyCacheManagerImpl.getInstance().getAllPolicies(); + } else { + allPolicies = policyManager.getPolicies(); + } for (Policy policy : allPolicies) { if (policy.getProfile().getDeviceType().equalsIgnoreCase(deviceTypeName)) { @@ -745,7 +766,12 @@ public class PolicyManagerImpl implements PolicyManager { } // List tempPolicyList = this.getPolicies(); - List tempPolicyList = PolicyCacheManagerImpl.getInstance().getAllPolicies(); + List tempPolicyList; + if (policyConfiguration.getCacheEnable()) { + tempPolicyList = PolicyCacheManagerImpl.getInstance().getAllPolicies(); + } else { + tempPolicyList = policyManager.getPolicies(); + } for (Policy policy : tempPolicyList) { for (Integer i : policyIdList) { @@ -775,7 +801,12 @@ public class PolicyManagerImpl implements PolicyManager { PolicyManagementDAOFactory.closeConnection(); } // List tempPolicyList = this.getPolicies(); - List tempPolicyList = PolicyCacheManagerImpl.getInstance().getAllPolicies(); + List tempPolicyList; + if (policyConfiguration.getCacheEnable()) { + tempPolicyList = PolicyCacheManagerImpl.getInstance().getAllPolicies(); + } else { + tempPolicyList = policyManager.getPolicies(); + } for (Policy policy : tempPolicyList) { for (Integer i : policyIdList) { @@ -868,8 +899,12 @@ public class PolicyManagerImpl implements PolicyManager { // List inactivePolicies = new ArrayList<>(); // List allPolicies = this.getPolicies(); - List allPolicies = PolicyCacheManagerImpl.getInstance().getAllPolicies(); - + List allPolicies; + if (policyConfiguration.getCacheEnable()) { + allPolicies = PolicyCacheManagerImpl.getInstance().getAllPolicies(); + } else { + allPolicies = policyDAO.getAllPolicies(); + } for (Policy policy : allPolicies) { if (policy.isUpdated()) { updatedPolicies.add(policy); diff --git a/components/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework/src/test/resources/carbon-home/repository/conf/cdm-config.xml b/components/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework/src/test/resources/carbon-home/repository/conf/cdm-config.xml index 7306778af1..e3075334ee 100644 --- a/components/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework/src/test/resources/carbon-home/repository/conf/cdm-config.xml +++ b/components/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework/src/test/resources/carbon-home/repository/conf/cdm-config.xml @@ -49,6 +49,7 @@ org.wso2.carbon.policy.mgt true + true 60000 5 8