You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by na...@apache.org on 2008/08/18 17:51:45 UTC
svn commit: r686795 -
/webservices/axis2/branches/java/1_4/modules/kernel/src/org/apache/axis2/description/AxisBindingMessage.java
Author: nandana
Date: Mon Aug 18 08:51:44 2008
New Revision: 686795
URL: http://svn.apache.org/viewvc?rev=686795&view=rev
Log:
Policies are not updated correctly, fixing an issue found during testing
Modified:
webservices/axis2/branches/java/1_4/modules/kernel/src/org/apache/axis2/description/AxisBindingMessage.java
Modified: webservices/axis2/branches/java/1_4/modules/kernel/src/org/apache/axis2/description/AxisBindingMessage.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_4/modules/kernel/src/org/apache/axis2/description/AxisBindingMessage.java?rev=686795&r1=686794&r2=686795&view=diff
==============================================================================
--- webservices/axis2/branches/java/1_4/modules/kernel/src/org/apache/axis2/description/AxisBindingMessage.java (original)
+++ webservices/axis2/branches/java/1_4/modules/kernel/src/org/apache/axis2/description/AxisBindingMessage.java Mon Aug 18 08:51:44 2008
@@ -20,6 +20,7 @@
package org.apache.axis2.description;
import java.util.ArrayList;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -50,8 +51,8 @@
private boolean fault = false;
private Policy effectivePolicy = null;
-
- private boolean policyCalculated = false;
+
+ private Date lastPolicyCalcuatedTime = null;
public boolean isFault() {
return fault;
@@ -219,11 +220,10 @@
}
public Policy getEffectivePolicy() {
- if (effectivePolicy == null && !policyCalculated) {
- effectivePolicy = calculateEffectivePolicy();
- policyCalculated = true;
- }
- return effectivePolicy;
+ if (lastPolicyCalcuatedTime == null || isPolicyUpdated()) {
+ effectivePolicy = calculateEffectivePolicy();
+ }
+ return effectivePolicy;
}
public Policy calculateEffectivePolicy() {
@@ -289,4 +289,74 @@
return PolicyUtil.getMergedPolicy(policyList, axisService);
}
+
+ private boolean isPolicyUpdated() {
+
+ if (getPolicySubject().getLastUpdatedTime().after(lastPolicyCalcuatedTime)) {
+ return true;
+ }
+
+ // AxisBindingOperation
+ AxisBindingOperation axisBindingOperation = getAxisBindingOperation();
+ if (axisBindingOperation != null
+ && axisBindingOperation.getPolicySubject().getLastUpdatedTime()
+ .after(lastPolicyCalcuatedTime)) {
+ return true;
+ }
+
+ // AxisBinding
+ AxisBinding axisBinding = (axisBindingOperation == null) ? null
+ : axisBindingOperation.getAxisBinding();
+ if (axisBinding != null
+ && axisBinding.getPolicySubject().getLastUpdatedTime().after(
+ lastPolicyCalcuatedTime)) {
+ return true;
+ }
+
+ // AxisEndpoint
+ AxisEndpoint axisEndpoint = (axisBinding == null) ? null : axisBinding
+ .getAxisEndpoint();
+ if (axisEndpoint != null
+ && axisEndpoint.getPolicySubject().getLastUpdatedTime().after(
+ lastPolicyCalcuatedTime)) {
+ return true;
+ }
+
+ // AxisMessage
+ if (axisMessage != null
+ && axisMessage.getPolicySubject().getLastUpdatedTime().after(
+ lastPolicyCalcuatedTime)) {
+ return true;
+ }
+
+ // AxisOperation
+ AxisOperation axisOperation = (axisMessage == null) ? null
+ : axisMessage.getAxisOperation();
+ if (axisOperation != null
+ && axisOperation.getPolicySubject().getLastUpdatedTime().after(
+ lastPolicyCalcuatedTime)) {
+ return true;
+ }
+
+ // AxisService
+ AxisService axisService = (axisOperation == null) ? null
+ : axisOperation.getAxisService();
+ if (axisService != null
+ && axisService.getPolicySubject().getLastUpdatedTime().after(
+ lastPolicyCalcuatedTime)) {
+ return true;
+ }
+
+ // AxisConfiguration
+ AxisConfiguration axisConfiguration = (axisService == null) ? null
+ : axisService.getAxisConfiguration();
+ if (axisConfiguration != null
+ && axisConfiguration.getPolicySubject().getLastUpdatedTime()
+ .after(lastPolicyCalcuatedTime)) {
+ return true;
+ }
+
+ return false;
+
+ }
}