Author: ruchithf
Date: Wed Feb 28 07:45:34 2007
New Revision: 512816
URL: http://svn.apache.org/viewvc?view=rev&rev=512816
Log:
Enable picking up message level policies at the client side
Modified:
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java
webservices/rampart/trunk/java/modules/rampart-integration/src/test/java/org/apache/rampart/RampartTest.java
webservices/rampart/trunk/java/modules/rampart-tests/src/test/java/org/apache/rampart/MessageBuilderTestBase.java
Modified:
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java
URL:
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java?view=diff&rev=512816&r1=512815&r2=512816
==============================================================================
---
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java
(original)
+++
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java
Wed Feb 28 07:45:34 2007
@@ -160,7 +160,24 @@
this.secConvVersion =
TrustUtil.getWSTVersion((String)msgCtx.getProperty(KEY_WSSC_VERSION));
}
+ Parameter clientSideParam =
msgCtx.getAxisService().getParameter(PARAM_CLIENT_SIDE);
+ if(clientSideParam != null) {
+ this.isInitiator = true;
+ } else {
+ this.isInitiator = !msgCtx.isServerSide();
+ if(this.isInitiator) {
+ clientSideParam = new Parameter();
+ clientSideParam.setName(PARAM_CLIENT_SIDE);
+ clientSideParam.setLocked(true);
+ msgCtx.getAxisService().addParameter(clientSideParam);
+ }
+ }
+
//If the policy is already available in the service, then use it
+ String msgPolicyKey = getMessagePolicyKey(msgCtx);
+ if(msgCtx.getProperty(msgPolicyKey) != null) {
+ this.servicePolicy = (Policy)msgCtx.getProperty(msgPolicyKey);
+ }
String operationPolicyKey = getOperationPolicyKey(msgCtx);
if(msgCtx.getProperty(operationPolicyKey) != null) {
@@ -176,18 +193,6 @@
this.servicePolicy =
(Policy)msgCtx.getProperty(KEY_RAMPART_POLICY);
}
- Parameter clientSideParam =
msgCtx.getAxisService().getParameter(PARAM_CLIENT_SIDE);
- if(clientSideParam != null) {
- this.isInitiator = true;
- } else {
- this.isInitiator = !msgCtx.isServerSide();
- if(this.isInitiator) {
- clientSideParam = new Parameter();
- clientSideParam.setName(PARAM_CLIENT_SIDE);
- clientSideParam.setLocked(true);
- msgCtx.getAxisService().addParameter(clientSideParam);
- }
- }
/*
* Init policy:
@@ -195,21 +200,21 @@
* extract the service policy is set in the msgCtx.
* If it is missing then try to obtain from the configuration
files.
*/
+
if(this.servicePolicy == null) {
- if(!this.isInitiator) {
- this.servicePolicy = msgCtx.getEffectivePolicy();
- } else {
- Parameter param =
msgCtx.getParameter(RampartMessageData.KEY_RAMPART_POLICY);
- if(param != null) {
- OMElement policyElem =
param.getParameterElement().getFirstElement();
- this.servicePolicy =
PolicyEngine.getPolicy(policyElem);
- }
-
- //Set the policy in the config ctx
- msgCtx.getConfigurationContext().setProperty(
- RampartMessageData.getOperationPolicyKey(msgCtx),
this.servicePolicy);
+ this.servicePolicy = msgCtx.getEffectivePolicy();
+ }
+
+ if(this.servicePolicy == null) {
+ Parameter param =
msgCtx.getParameter(RampartMessageData.KEY_RAMPART_POLICY);
+ if(param != null) {
+ OMElement policyElem =
param.getParameterElement().getFirstElement();
+ this.servicePolicy = PolicyEngine.getPolicy(policyElem);
}
-
+
+ //Set the policy in the config ctx
+ msgCtx.getConfigurationContext().setProperty(
+ RampartMessageData.getServicePolicyKey(msgCtx),
this.servicePolicy);
}
if(this.isInitiator && this.servicePolicy != null) {
@@ -581,6 +586,16 @@
this.servicePolicy = servicePolicy;
}
+
+ public static String getMessagePolicyKey(MessageContext msgCtx) {
+ if(msgCtx.getAxisOperation() != null) {
+ return createPolicyKey(msgCtx.getAxisService().getName(),
+ msgCtx.getAxisOperation().getName(),
+ msgCtx.getAxisMessage().getName());
+ }
+ return null;
+ }
+
/**
* @param msgCtx
* @return The key to store/pickup policy of an operation
@@ -588,21 +603,27 @@
public static String getOperationPolicyKey(MessageContext msgCtx) {
if(msgCtx.getAxisOperation() != null) {
return createPolicyKey(msgCtx.getAxisService().getName(),
- msgCtx.getAxisOperation().getName());
+ msgCtx.getAxisOperation().getName(), null);
}
return null;
}
public static String getServicePolicyKey(MessageContext msgCtx) {
- return createPolicyKey(msgCtx.getAxisService().getName(), null);
+ return createPolicyKey(msgCtx.getAxisService().getName(), null, null);
}
- public static String createPolicyKey(String service, QName operation) {
+ public static String createPolicyKey(String service, QName operation,
String msg) {
if(operation != null) {
- return RampartMessageData.KEY_RAMPART_POLICY + service
+ if(msg != null) {
+ return RampartMessageData.KEY_RAMPART_POLICY + service
+ + "{" + operation.getNamespaceURI() + "}"
+ + operation.getLocalPart() + ":" + msg;
+ } else {
+ return RampartMessageData.KEY_RAMPART_POLICY + service
+ "{" + operation.getNamespaceURI() + "}"
+ operation.getLocalPart();
+ }
} else {
return RampartMessageData.KEY_RAMPART_POLICY + service;
}
Modified:
webservices/rampart/trunk/java/modules/rampart-integration/src/test/java/org/apache/rampart/RampartTest.java
URL:
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/java/org/apache/rampart/RampartTest.java?view=diff&rev=512816&r1=512815&r2=512816
==============================================================================
---
webservices/rampart/trunk/java/modules/rampart-integration/src/test/java/org/apache/rampart/RampartTest.java
(original)
+++
webservices/rampart/trunk/java/modules/rampart-integration/src/test/java/org/apache/rampart/RampartTest.java
Wed Feb 28 07:45:34 2007
@@ -89,7 +89,7 @@
options.setProperty(RampartMessageData.KEY_RAMPART_POLICY,
loadPolicy("/rampart/policy/" + i + ".xml"));
serviceClient.setOptions(options);
-
+
//Blocking invocation
serviceClient.sendReceive(getEchoElement());
}
Modified:
webservices/rampart/trunk/java/modules/rampart-tests/src/test/java/org/apache/rampart/MessageBuilderTestBase.java
URL:
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-tests/src/test/java/org/apache/rampart/MessageBuilderTestBase.java?view=diff&rev=512816&r1=512815&r2=512816
==============================================================================
---
webservices/rampart/trunk/java/modules/rampart-tests/src/test/java/org/apache/rampart/MessageBuilderTestBase.java
(original)
+++
webservices/rampart/trunk/java/modules/rampart-tests/src/test/java/org/apache/rampart/MessageBuilderTestBase.java
Wed Feb 28 07:45:34 2007
@@ -26,9 +26,11 @@
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.context.ServiceContext;
import org.apache.axis2.context.ServiceGroupContext;
+import org.apache.axis2.description.AxisMessage;
import org.apache.axis2.description.AxisService;
import org.apache.axis2.description.OutInAxisOperation;
import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.wsdl.WSDLConstants;
import org.apache.neethi.Policy;
import org.apache.neethi.PolicyEngine;
import org.apache.ws.security.WSConstants;
@@ -68,7 +70,12 @@
new ServiceGroupContext(null, null));
ctx.setServiceContext(serviceContext);
ctx.setAxisService(axisService);
- ctx.setAxisOperation(new OutInAxisOperation(new
QName("http://rampart.org", "test")));
+ OutInAxisOperation outInAxisOperation = new OutInAxisOperation(new
QName("http://rampart.org", "test"));
+ AxisMessage msg = new AxisMessage();
+
outInAxisOperation.addMessage(msg,WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
+
outInAxisOperation.addMessage(msg,WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+ ctx.setAxisOperation(outInAxisOperation);
+ ctx.setAxisMessage(msg);
Options options = new Options();
options.setAction("urn:testOperation");
ctx.setOptions(options);