Author: psharples
Date: Fri Jan 27 12:39:14 2012
New Revision: 1236658
URL: http://svn.apache.org/viewvc?rev=1236658&view=rev
Log:
Fix for where a single policy could have 2 entries (one defining ALLOW and one
defining DENY). See WOOKIE-305.
Modified:
incubator/wookie/trunk/src/org/apache/wookie/proxy/Policies.java
incubator/wookie/trunk/src/org/apache/wookie/proxy/Policy.java
Modified: incubator/wookie/trunk/src/org/apache/wookie/proxy/Policies.java
URL:
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/proxy/Policies.java?rev=1236658&r1=1236657&r2=1236658&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/proxy/Policies.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/proxy/Policies.java Fri Jan 27
12:39:14 2012
@@ -28,6 +28,7 @@ import org.apache.commons.configuration.
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
import org.apache.commons.lang.ArrayUtils;
+import org.apache.log4j.Logger;
/**
* Policies management class
@@ -44,6 +45,7 @@ import org.apache.commons.lang.ArrayUtil
*/
public class Policies {
+ static Logger _logger = Logger.getLogger(Policies.class.getName());
private MultiValueMap policies;
private PropertiesConfiguration properties;
private FileChangedReloadingStrategy reloader = new
FileChangedReloadingStrategy();
@@ -94,7 +96,7 @@ public class Policies {
try {
addPolicyToCollection(key+" "+entries[i]);
} catch (Exception e) {
- // TODO LOG AN ERROR
+ _logger.error("Error loading Policies from file:", e);
}
}
}
@@ -194,8 +196,12 @@ public class Policies {
private boolean addPolicyToCollection(Policy policy){
@SuppressWarnings("unchecked")
Collection<Policy> existingPolicies = (Collection<Policy>)
policies.get(policy.getScope());
- if (existingPolicies == null || !existingPolicies.contains(policy)){
-
+ if (existingPolicies == null){
+ policies.put(policy.getScope(), policy);
+ return true;
+ }
+
+ if(!existingPolicies.contains(policy)){
//
// Add the policy
//
@@ -203,14 +209,27 @@ public class Policies {
return true;
} else {
-
- //
- // Duplicate of existing policy, so don't add it
- //
+ // Update the policy
+ existingPolicies.remove(policy);
+ policies.remove(policy.getScope());
+ for (Policy match: existingPolicies){
+ policies.put(match.getScope(), match);
+ }
+ policies.put(policy.getScope(), policy);
+ properties.clearProperty(policy.getScope());
+ try {
+ for (Policy match: getPolicies(policy.getScope())){
+ properties.addProperty(match.getScope(), match.getOrigin()+"
"+match.getDirective());
+ }
+ properties.save();
+ } catch (ConfigurationException e) {
+ _logger.error("Error synchronizing back to Policies file:", e);
+ }
return false;
}
}
+
/**
* Remove a policy
* @param policyString
Modified: incubator/wookie/trunk/src/org/apache/wookie/proxy/Policy.java
URL:
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/proxy/Policy.java?rev=1236658&r1=1236657&r2=1236658&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/proxy/Policy.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/proxy/Policy.java Fri Jan 27
12:39:14 2012
@@ -108,7 +108,7 @@ public class Policy {
Policy otherPolicy = (Policy)obj;
- if(otherPolicy.getScope().equalsIgnoreCase(getScope()) &&
(otherPolicy.getDirective().equalsIgnoreCase(getDirective())) &&
(otherPolicy.getOrigin().equalsIgnoreCase(getOrigin()))){
+ if(otherPolicy.getScope().equalsIgnoreCase(getScope()) &&
(otherPolicy.getOrigin().equalsIgnoreCase(getOrigin()))){
return true;
}