You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by sa...@apache.org on 2006/02/07 04:11:08 UTC

svn commit: r375452 - /webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/PolicyInclude.java

Author: sanka
Date: Mon Feb  6 19:11:06 2006
New Revision: 375452

URL: http://svn.apache.org/viewcvs?rev=375452&view=rev
Log:
Modified PolicyInclude class to assign a unique URI as the Id of a policy if it doesn't have an id. Added methods to remove or update a policy element because we may need to modify policies at runtime

Modified:
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/PolicyInclude.java

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/PolicyInclude.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/PolicyInclude.java?rev=375452&r1=375451&r2=375452&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/PolicyInclude.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/PolicyInclude.java Mon Feb  6 19:11:06 2006
@@ -17,8 +17,10 @@
 package org.apache.axis2.description;
 
 import java.util.ArrayList;
+import java.util.Hashtable;
 import java.util.Iterator;
 
+import org.apache.ws.commons.om.util.UUIDGenerator;
 import org.apache.ws.policy.Policy;
 import org.apache.ws.policy.PolicyReference;
 import org.apache.ws.policy.util.PolicyRegistry;
@@ -67,11 +69,13 @@
 
 	private AxisDescription description;
 	
-	private ArrayList wrapperElements = new ArrayList();
+	// private ArrayList wrapperElements = new ArrayList();
 
 	private boolean useCacheP = false;
 	
 	private boolean useCacheE = false;
+	
+	private Hashtable wrapperElements = new Hashtable();
 
 	public PolicyInclude() {
 		reg = new PolicyRegistry();
@@ -97,9 +101,29 @@
 	}
 
 	public void setPolicy(Policy policy) {
-		wrapperElements = new ArrayList();
+		wrapperElements.clear();
+		
+		if (policy.getPolicyURI() != null && policy.getPolicyURI().equals("")) {
+			policy.setId(UUIDGenerator.getUUID());
+		}
+		
 		Wrapper wrapper = new Wrapper(PolicyInclude.ANON_POLICY, policy);
-		wrapperElements.add(wrapper);
+		wrapperElements.put(policy.getPolicyURI(), wrapper);
+		
+		useCacheP = false;
+	}
+	
+	public void updatePolicy(Policy policy) {
+		String policyURI = policy.getPolicyURI();
+		
+		if (policyURI == null && policyURI.equals("")) {
+			throw new RuntimeException("Policy Id is either null or empty");
+		}
+		
+		Wrapper wrapper = (Wrapper) wrapperElements.get(policyURI);
+		wrapper.value = policy;
+		
+		useCacheP = false;		
 	}
 	
 	public void setEffectivePolicy(Policy effectivePolicy) {
@@ -125,7 +149,7 @@
 	private void calculatePolicy() {
 
 		Policy result = null;
-		Iterator iterator = wrapperElements.iterator();
+		Iterator iterator = wrapperElements.values().iterator();
 
 		while (iterator.hasNext()) {
 			Object policyElement = ((Wrapper) iterator.next()).getValue();
@@ -196,7 +220,7 @@
 
 	public ArrayList getPolicyElements() {
 		ArrayList policyElementsList = new ArrayList();
-		Iterator policyElementIterator = wrapperElements.iterator();
+		Iterator policyElementIterator = wrapperElements.values().iterator();
 
 		while (policyElementIterator.hasNext()) {
 			policyElementsList
@@ -207,7 +231,7 @@
 
 	public ArrayList getPolicyElements(int type) {
 		ArrayList policyElementList = new ArrayList();
-		Iterator wrapperElementIterator = wrapperElements.iterator();
+		Iterator wrapperElementIterator = wrapperElements.values().iterator();
 		Wrapper wrapper;
 
 		while (wrapperElementIterator.hasNext()) {
@@ -229,8 +253,12 @@
 	}
 
 	public void addPolicyElement(int type, Policy policy) {
+		String u = policy.getPolicyURI();
+		if (policy.getPolicyURI() == null || policy.getPolicyURI().equals("")) {
+			policy.setId(UUIDGenerator.getUUID());
+		}
 		Wrapper wrapper = new Wrapper(type, policy);
-		wrapperElements.add(wrapper);
+		wrapperElements.put(policy.getPolicyURI(), wrapper);
 
 		if (policy.getPolicyURI() != null) {
 			reg.register(policy.getPolicyURI(), policy);
@@ -239,7 +267,7 @@
 
 	public void addPolicyRefElement(int type, PolicyReference policyReference) {
 		Wrapper wrapper = new Wrapper(type, policyReference);
-		wrapperElements.add(wrapper);
+		wrapperElements.put(policyReference.getPolicyURIString(), wrapper);
 	}
 
 	public void invalidate() {
@@ -296,5 +324,9 @@
 		Object getValue() {
 			return value;
 		}
+	}
+	
+	public void removePolicyElement(String policyURI) {
+		wrapperElements.remove(policyURI);
 	}
 }