diff --git a/li.strolch.agent/src/main/java/li/strolch/policy/DefaultPolicyHandler.java b/li.strolch.agent/src/main/java/li/strolch/policy/DefaultPolicyHandler.java index fe4ad8d68..e199ab8b6 100644 --- a/li.strolch.agent/src/main/java/li/strolch/policy/DefaultPolicyHandler.java +++ b/li.strolch.agent/src/main/java/li/strolch/policy/DefaultPolicyHandler.java @@ -67,15 +67,7 @@ public class DefaultPolicyHandler extends StrolchComponent implements PolicyHand @Override public void initialize(ComponentConfiguration configuration) throws Exception { - - if (configuration.getBoolean(PROP_READ_POLICY_FILE, Boolean.FALSE)) { - File policyFile = configuration.getConfigFile(PROP_POLICY_CONFIG, DEF_STROLCH_POLICIES_XML, - configuration.getRuntimeConfiguration()); - parsePolicyFile(policyFile); - } else { - logger.warn("Not loading Policy configuration file, as disabled by config"); - } - + reloadPolicies(configuration); super.initialize(configuration); } @@ -125,6 +117,21 @@ public class DefaultPolicyHandler extends StrolchComponent implements PolicyHand return (Class) clazz; } + @Override + public void reloadPolicies() { + reloadPolicies(getConfiguration()); + } + + private void reloadPolicies(ComponentConfiguration configuration) { + if (configuration.getBoolean(PROP_READ_POLICY_FILE, Boolean.FALSE)) { + File policyFile = configuration.getConfigFile(PROP_POLICY_CONFIG, DEF_STROLCH_POLICIES_XML, + configuration.getRuntimeConfiguration()); + parsePolicyFile(policyFile); + } else { + logger.warn("Not loading Policy configuration file, as disabled by config"); + } + } + @SuppressWarnings("unchecked") private void parsePolicyFile(File policyFile) { diff --git a/li.strolch.agent/src/main/java/li/strolch/policy/PolicyHandler.java b/li.strolch.agent/src/main/java/li/strolch/policy/PolicyHandler.java index 2e728d9e7..a69a5d227 100644 --- a/li.strolch.agent/src/main/java/li/strolch/policy/PolicyHandler.java +++ b/li.strolch.agent/src/main/java/li/strolch/policy/PolicyHandler.java @@ -64,4 +64,9 @@ public interface PolicyHandler { * @return true if the policy definition is known, false otherwise */ boolean isPolicyDefAvailable(PolicyDef policyDef); + + /** + * Reload the policies configuration + */ + void reloadPolicies(); } diff --git a/li.strolch.agent/src/main/java/li/strolch/policy/ReloadPoliciesJob.java b/li.strolch.agent/src/main/java/li/strolch/policy/ReloadPoliciesJob.java new file mode 100644 index 000000000..23c452c22 --- /dev/null +++ b/li.strolch.agent/src/main/java/li/strolch/policy/ReloadPoliciesJob.java @@ -0,0 +1,18 @@ +package li.strolch.policy; + +import li.strolch.agent.api.StrolchAgent; +import li.strolch.job.StrolchJob; +import li.strolch.privilege.model.PrivilegeContext; + +public class ReloadPoliciesJob extends StrolchJob { + + public ReloadPoliciesJob(StrolchAgent agent) { + super(agent); + } + + @Override + protected void execute(PrivilegeContext ctx) throws Exception { + PolicyHandler policyHandler = getContainer().getComponent(PolicyHandler.class); + policyHandler.reloadPolicies(); + } +}