You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@axis.apache.org by th...@apache.org on 2012/03/06 07:21:18 UTC
svn commit: r1297344 - in
/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description:
AxisBindingMessage.java AxisMessage.java
Author: thilinamb
Date: Tue Mar 6 06:21:17 2012
New Revision: 1297344
URL: http://svn.apache.org/viewvc?rev=1297344&view=rev
Log:
Fixing RAMPART-332 - Making getEffectivePolicy() method thread safe.
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/AxisBindingMessage.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/AxisMessage.java
Modified: axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/AxisBindingMessage.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/AxisBindingMessage.java?rev=1297344&r1=1297343&r2=1297344&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/AxisBindingMessage.java (original)
+++ axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/AxisBindingMessage.java Tue Mar 6 06:21:17 2012
@@ -19,11 +19,6 @@
package org.apache.axis2.description;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
@@ -36,6 +31,12 @@ import org.apache.axis2.util.WSDLSeriali
import org.apache.axis2.wsdl.WSDLConstants;
import org.apache.neethi.Policy;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.locks.ReentrantLock;
+
public class AxisBindingMessage extends AxisDescription {
private String name;
@@ -50,8 +51,9 @@ public class AxisBindingMessage extends
// WSDL 2.0 serializer
private boolean fault = false;
- private Policy effectivePolicy = null;
- private Date lastPolicyCalcuatedTime = null;
+ private volatile Policy effectivePolicy = null;
+ private volatile Date lastPolicyCalculatedTime = null;
+ private final ReentrantLock reentrantLock = new ReentrantLock();
public boolean isFault() {
return fault;
@@ -218,12 +220,17 @@ public class AxisBindingMessage extends
return (AxisBindingOperation) parent;
}
- public Policy getEffectivePolicy() {
- if (lastPolicyCalcuatedTime == null || isPolicyUpdated()) {
- effectivePolicy = calculateEffectivePolicy();
- }
- return effectivePolicy;
- }
+ public Policy getEffectivePolicy() {
+ if (lastPolicyCalculatedTime == null || isPolicyUpdated()) {
+ synchronized (this) {
+ if (lastPolicyCalculatedTime == null || isPolicyUpdated()) {
+ effectivePolicy = calculateEffectivePolicy();
+ lastPolicyCalculatedTime = new Date();
+ }
+ }
+ }
+ return effectivePolicy;
+ }
public Policy calculateEffectivePolicy() {
PolicySubject policySubject = null;
@@ -286,20 +293,19 @@ public class AxisBindingMessage extends
.getAttachedPolicyComponents());
}
- lastPolicyCalcuatedTime = new Date();
return PolicyUtil.getMergedPolicy(policyList, axisService);
}
private boolean isPolicyUpdated() {
if (getPolicySubject().getLastUpdatedTime().after(
- lastPolicyCalcuatedTime)) {
+ lastPolicyCalculatedTime)) {
return true;
}
// AxisBindingOperation
AxisBindingOperation axisBindingOperation = getAxisBindingOperation();
if (axisBindingOperation != null
&& axisBindingOperation.getPolicySubject().getLastUpdatedTime()
- .after(lastPolicyCalcuatedTime)) {
+ .after(lastPolicyCalculatedTime)) {
return true;
}
// AxisBinding
@@ -307,7 +313,7 @@ public class AxisBindingMessage extends
: axisBindingOperation.getAxisBinding();
if (axisBinding != null
&& axisBinding.getPolicySubject().getLastUpdatedTime().after(
- lastPolicyCalcuatedTime)) {
+ lastPolicyCalculatedTime)) {
return true;
}
// AxisEndpoint
@@ -315,13 +321,13 @@ public class AxisBindingMessage extends
.getAxisEndpoint();
if (axisEndpoint != null
&& axisEndpoint.getPolicySubject().getLastUpdatedTime().after(
- lastPolicyCalcuatedTime)) {
+ lastPolicyCalculatedTime)) {
return true;
}
// AxisMessage
if (axisMessage != null
&& axisMessage.getPolicySubject().getLastUpdatedTime().after(
- lastPolicyCalcuatedTime)) {
+ lastPolicyCalculatedTime)) {
return true;
}
// AxisOperation
@@ -329,7 +335,7 @@ public class AxisBindingMessage extends
: axisMessage.getAxisOperation();
if (axisOperation != null
&& axisOperation.getPolicySubject().getLastUpdatedTime().after(
- lastPolicyCalcuatedTime)) {
+ lastPolicyCalculatedTime)) {
return true;
}
// AxisService
@@ -337,7 +343,7 @@ public class AxisBindingMessage extends
: axisOperation.getAxisService();
if (axisService != null
&& axisService.getPolicySubject().getLastUpdatedTime().after(
- lastPolicyCalcuatedTime)) {
+ lastPolicyCalculatedTime)) {
return true;
}
// AxisConfiguration
@@ -345,7 +351,7 @@ public class AxisBindingMessage extends
: axisService.getAxisConfiguration();
if (axisConfiguration != null
&& axisConfiguration.getPolicySubject().getLastUpdatedTime()
- .after(lastPolicyCalcuatedTime)) {
+ .after(lastPolicyCalculatedTime)) {
return true;
}
return false;
Modified: axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/AxisMessage.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/AxisMessage.java?rev=1297344&r1=1297343&r2=1297344&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/AxisMessage.java (original)
+++ axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/AxisMessage.java Tue Mar 6 06:21:17 2012
@@ -19,13 +19,6 @@
package org.apache.axis2.description;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.xml.namespace.QName;
-
import org.apache.axis2.AxisFault;
import org.apache.axis2.description.java2wsdl.Java2WSDLConstants;
import org.apache.axis2.engine.AxisConfiguration;
@@ -35,11 +28,13 @@ import org.apache.axis2.util.PolicyUtil;
import org.apache.axis2.wsdl.SOAPHeaderMessage;
import org.apache.neethi.Policy;
import org.apache.neethi.PolicyComponent;
-import org.apache.ws.commons.schema.XmlSchema;
-import org.apache.ws.commons.schema.XmlSchemaElement;
-import org.apache.ws.commons.schema.XmlSchemaImport;
-import org.apache.ws.commons.schema.XmlSchemaInclude;
-import org.apache.ws.commons.schema.XmlSchemaObjectCollection;
+import org.apache.ws.commons.schema.*;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
/**
@@ -66,10 +61,10 @@ public class AxisMessage extends AxisDes
//To chcek whether the message is wrapped or unwrapped
private boolean wrapped = true;
-
- private Policy effectivePolicy = null;
- private Date lastPolicyCalcuatedTime = null;
-
+
+ private volatile Policy effectivePolicy = null;
+ private volatile Date lastPolicyCalculatedTime = null;
+
public String getMessagePartName() {
return messagePartName;
}
@@ -242,13 +237,18 @@ public class AxisMessage extends AxisDes
public void setWrapped(boolean wrapped) {
this.wrapped = wrapped;
}
-
+
public Policy getEffectivePolicy() {
- if (lastPolicyCalcuatedTime == null || isPolicyUpdated()) {
- effectivePolicy = calculateEffectivePolicy();
- }
- return effectivePolicy;
- }
+ if (lastPolicyCalculatedTime == null || isPolicyUpdated()) {
+ synchronized (this) {
+ if (lastPolicyCalculatedTime == null || isPolicyUpdated()) {
+ effectivePolicy = calculateEffectivePolicy();
+ lastPolicyCalculatedTime = new Date();
+ }
+ }
+ }
+ return effectivePolicy;
+ }
public Policy calculateEffectivePolicy() {
PolicySubject policySubject;
@@ -282,21 +282,20 @@ public class AxisMessage extends AxisDes
}
Policy result = PolicyUtil.getMergedPolicy(policyList, axisService);
- lastPolicyCalcuatedTime = new Date();
return result;
}
public boolean isPolicyUpdated() {
// AxisMessage
if (getPolicySubject().getLastUpdatedTime().after(
- lastPolicyCalcuatedTime)) {
+ lastPolicyCalculatedTime)) {
return true;
}
// AxisOperation
AxisOperation axisOperation = (AxisOperation) parent;
if (axisOperation != null
&& axisOperation.getPolicySubject().getLastUpdatedTime().after(
- lastPolicyCalcuatedTime)) {
+ lastPolicyCalculatedTime)) {
return true;
}
// AxisService
@@ -304,7 +303,7 @@ public class AxisMessage extends AxisDes
: axisOperation.getAxisService();
if (axisService != null
&& axisService.getPolicySubject().getLastUpdatedTime().after(
- lastPolicyCalcuatedTime)) {
+ lastPolicyCalculatedTime)) {
return true;
}
// AxisConfiguration
@@ -312,6 +311,6 @@ public class AxisMessage extends AxisDes
: axisService.getAxisConfiguration();
return axisConfiguration != null
&& axisConfiguration.getPolicySubject().getLastUpdatedTime()
- .after(lastPolicyCalcuatedTime);
+ .after(lastPolicyCalculatedTime);
}
}