You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by bh...@apache.org on 2008/03/25 06:24:18 UTC
svn commit: r640705 -
/incubator/cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/PolicyEngineImpl.java
Author: bharath
Date: Mon Mar 24 22:24:17 2008
New Revision: 640705
URL: http://svn.apache.org/viewvc?rev=640705&view=rev
Log:
Fix for [JIRA CXF-1488]
Modified:
incubator/cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/PolicyEngineImpl.java
Modified: incubator/cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/PolicyEngineImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/PolicyEngineImpl.java?rev=640705&r1=640704&r2=640705&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/PolicyEngineImpl.java (original)
+++ incubator/cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/PolicyEngineImpl.java Mon Mar 24 22:24:17 2008
@@ -19,12 +19,7 @@
package org.apache.cxf.ws.policy;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import javax.annotation.PostConstruct;
@@ -543,33 +538,55 @@
// empty
}
+ /**
+ * Callback recieved while the server side endpoint is being undeployed.
+ *
+ * @param server
+ */
public void stopServer(Server server) {
EndpointInfo ei = server.getEndpoint().getEndpointInfo();
serverEndpointInfo.remove(ei);
- cleanupBindingOperations(ei, clientRequestInfo);
- cleanupBindingOperations(ei, clientResponseInfo);
-
- cleanupBindingOperations(ei, serverRequestInfo);
- cleanupBindingOperations(ei, serverResponseInfo);
-
- cleanupBindingFaults(ei, clientFaultInfo);
- cleanupBindingFaults(ei, serverFaultInfo);
+ /**
+ * While cleaning up the entries of requestInfo's, responseInfo's and faultInfo's map, we create a temperory
+ * Set with all the keys. Later we iterate over the keys of this temp set, and if it's same as that of the
+ * endpoint being undeployed, we remove the corresponding entries from the client and server maps.
+ */
+
+ cleanupBindingOperations(ei, new HashSet<BindingOperation>(clientRequestInfo.keySet()),
+ clientRequestInfo);
+ cleanupBindingOperations(ei, new HashSet<BindingOperation>(clientResponseInfo.keySet()),
+ clientResponseInfo);
+
+ cleanupBindingOperations(ei, new HashSet<BindingOperation>(serverRequestInfo.keySet()),
+ serverRequestInfo);
+ cleanupBindingOperations(ei, new HashSet<BindingOperation>(serverResponseInfo.keySet()),
+ serverResponseInfo);
+
+ cleanupBindingFaults(ei, new HashSet<BindingFault>(clientFaultInfo.keySet()),
+ clientFaultInfo);
+ cleanupBindingFaults(ei, new HashSet<BindingFault>(serverFaultInfo.keySet()),
+ serverFaultInfo);
}
private void cleanupBindingOperations(EndpointInfo ei,
+ Set<BindingOperation> bindingOperations,
Map<BindingOperation, EffectivePolicy> originalMap) {
- for (BindingOperation bindingOperation : originalMap.keySet()) {
+ Iterator<BindingOperation> bindingOpsItr = bindingOperations.iterator();
+ while (bindingOpsItr.hasNext()) {
+ BindingOperation bindingOperation = bindingOpsItr.next();
if (ei.isSameAs(bindingOperation.getEndpoint())) {
originalMap.remove(bindingOperation);
}
}
}
- private void cleanupBindingFaults(EndpointInfo ei,
+ private void cleanupBindingFaults(EndpointInfo ei, Set <BindingFault> bindingFaults,
Map<BindingFault, EffectivePolicy> originalMap) {
- for (BindingFault bindingFault : originalMap.keySet()) {
+ Iterator<BindingFault> bindingFaultsItr = bindingFaults.iterator();
+ while (bindingFaultsItr.hasNext()) {
+ BindingFault bindingFault = bindingFaultsItr.next();
if (ei.isSameAs(bindingFault.getEndpoint())) {
originalMap.remove(bindingFault);
}