Author: sohil.shah(a)jboss.com
Date: 2009-08-08 19:44:03 -0400 (Sat, 08 Aug 2009)
New Revision: 13708
Modified:
modules/authorization/trunk/policy-server/src/main/java/org/jboss/security/authz/policy/server/plugin/DynamicPolicyCollection.java
modules/authorization/trunk/policy-server/src/main/java/org/jboss/security/authz/policy/server/plugin/EnterprisePolicyFinderModule.java
Log:
Policy Hot Deployment implementation
* Both Transactional Integrity and Concurrency properly addressed
Modified:
modules/authorization/trunk/policy-server/src/main/java/org/jboss/security/authz/policy/server/plugin/DynamicPolicyCollection.java
===================================================================
---
modules/authorization/trunk/policy-server/src/main/java/org/jboss/security/authz/policy/server/plugin/DynamicPolicyCollection.java 2009-08-08
23:27:44 UTC (rev 13707)
+++
modules/authorization/trunk/policy-server/src/main/java/org/jboss/security/authz/policy/server/plugin/DynamicPolicyCollection.java 2009-08-08
23:44:03 UTC (rev 13708)
@@ -21,11 +21,7 @@
*/
package org.jboss.security.authz.policy.server.plugin;
-import java.util.Iterator;
-import java.util.TreeSet;
-
import org.jboss.security.xacml.sunxacml.support.finder.PolicyCollection;
-import org.jboss.security.xacml.sunxacml.AbstractPolicy;
/**
* For now, just non-versioned version
@@ -42,28 +38,5 @@
public void deactivate(String policyUri)
{
this.policies.remove(policyUri);
- }
-
- /**
- *
- * @param policyUri
- * @return
- */
- public AbstractPolicy getPolicy(String policyUri)
- {
- TreeSet set = (TreeSet) (policies.get(policyUri));
- if (set == null)
- {
- return null;
- }
-
- Iterator it = set.iterator();
- while (it.hasNext())
- {
- AbstractPolicy policy = (AbstractPolicy) (it.next());
- return policy;
- }
-
- return null;
- }
+ }
}
Modified:
modules/authorization/trunk/policy-server/src/main/java/org/jboss/security/authz/policy/server/plugin/EnterprisePolicyFinderModule.java
===================================================================
---
modules/authorization/trunk/policy-server/src/main/java/org/jboss/security/authz/policy/server/plugin/EnterprisePolicyFinderModule.java 2009-08-08
23:27:44 UTC (rev 13707)
+++
modules/authorization/trunk/policy-server/src/main/java/org/jboss/security/authz/policy/server/plugin/EnterprisePolicyFinderModule.java 2009-08-08
23:44:03 UTC (rev 13708)
@@ -69,9 +69,6 @@
* @author <a href="mailto:sshah@redhat.com">Sohil Shah</a>
*
*
- * FIXME: Transactional Integrity and proper Concurrency when Updating
- * the State of the Rule Engine
- *
*/
public class EnterprisePolicyFinderModule extends PolicyFinderModule
{
@@ -234,7 +231,7 @@
{
this.deletePolicy(oldPolicy, false);
- //new policy should then be deployed into the rule engine
+ // new policy should then be deployed into the rule engine
this.newPolicy(newPolicy);
HotDeployEvent hotDeployEvent = new HotDeployEvent(oldPolicy.getPolicyUri());
@@ -246,38 +243,32 @@
{
try
{
- AbstractPolicy activePolicy = this.policies.getPolicy(policy
- .getPolicyUri());
+ // Delete this Policy from the Policy Store
+ this.policyStore.deletePolicy(policy.getPolicyUri());
- if(activePolicy != null)
+ this.policies.deactivate(policy.getPolicyUri());
+
+ // Delete any DroolsExpressions associated with this Policy from the
+ // Drools Manager
+ if (policy.getMetaData().getRules() != null)
{
- // Delete this Policy from the Policy Store
- this.policyStore.deletePolicy(policy.getPolicyUri());
-
- this.policies.deactivate(policy.getPolicyUri());
-
- // Delete any DroolsExpressions associated with this Policy from the
- // Drools Manager
- if (policy.getMetaData().getRules() != null)
+ for (Rule policyRule : policy.getMetaData().getRules())
{
- for (Rule policyRule : policy.getMetaData().getRules())
+ Expression ruleExpression = policyRule.getExpression();
+ if (ruleExpression instanceof DroolsRuleExpression)
{
- Expression ruleExpression = policyRule.getExpression();
- if (ruleExpression instanceof DroolsRuleExpression)
- {
- this.ruleManager.removeRule(((DroolsRuleExpression) ruleExpression)
- .getRuleReference());
- }
+ this.ruleManager.removeRule(((DroolsRuleExpression) ruleExpression)
+ .getRuleReference());
}
}
-
- if (mustHotDeploy)
- {
- HotDeployEvent hotDeployEvent = new HotDeployEvent(policy
- .getPolicyUri());
- this.eventBus.deliver(hotDeployEvent);
- }
}
+
+ if (mustHotDeploy)
+ {
+ HotDeployEvent hotDeployEvent = new HotDeployEvent(policy
+ .getPolicyUri());
+ this.eventBus.deliver(hotDeployEvent);
+ }
}
catch (PolicyException pe)
{
Show replies by date