You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by ru...@apache.org on 2009/04/06 08:52:04 UTC
svn commit: r762222 - in
/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse:
core/axis2/Axis2FlexibleMEPClient.java util/MessageHelper.java
Author: ruwan
Date: Mon Apr 6 06:52:04 2009
New Revision: 762222
URL: http://svn.apache.org/viewvc?rev=762222&view=rev
Log:
Fixing issue SYNAPSE-525, copying the full options object not just the properties of options
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MessageHelper.java
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java?rev=762222&r1=762221&r2=762222&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java Mon Apr 6 06:52:04 2009
@@ -242,7 +242,7 @@
new QName(AnonymousServiceFactory.OUT_ONLY_OPERATION) :
new QName(AnonymousServiceFactory.OUT_IN_OPERATION));
- Options clientOptions = new Options();
+ Options clientOptions = MessageHelper.cloneOptions(originalInMsgCtx.getOptions());
clientOptions.setUseSeparateListener(separateListener);
// if RM is requested,
if (wsRMEnabled) {
@@ -252,6 +252,8 @@
SynapseConstants.SANDESHA_POLICY,
MessageHelper.getPolicy(synapseOutMessageContext, wsRMPolicyKey));
}
+ // todo: this wont be required now because we copy the full options cloned copy with
+ // todo: the parent of the options object as well
MessageHelper.copyRMOptions(originalInMsgCtx, clientOptions);
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MessageHelper.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MessageHelper.java?rev=762222&r1=762221&r2=762222&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MessageHelper.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MessageHelper.java Mon Apr 6 06:52:04 2009
@@ -121,6 +121,7 @@
org.apache.axis2.context.MessageContext newMC = clonePartially(mc);
newMC.setEnvelope(cloneSOAPEnvelope(mc.getEnvelope()));
+ newMC.setOptions(cloneOptions(mc.getOptions()));
newMC.setServiceContext(mc.getServiceContext());
newMC.setOperationContext(mc.getOperationContext());
@@ -199,11 +200,6 @@
}
}
- for (Object o : ori.getOptions().getProperties().keySet()) {
- String key = (String) o;
- newMC.getOptions().setProperty(key, ori.getOptions().getProperty(key));
- }
-
Iterator itr = ori.getPropertyNames();
while (itr.hasNext()) {
String key = (String) itr.next();
@@ -254,6 +250,55 @@
}
/**
+ * Clones the given {@link org.apache.axis2.client.Options} object. This is not a deep copy
+ * because this will be called for each and every message going out from synapse. The parent
+ * of the cloning options object is kept as a reference.
+ *
+ * @param options clonning object
+ * @return clonned Options object
+ */
+ public static Options cloneOptions(Options options) {
+
+ // create new options object and set the parent
+ Options clonedOptions = new Options(options.getParent());
+
+ // copy general options
+ clonedOptions.setCallTransportCleanup(options.isCallTransportCleanup());
+ clonedOptions.setExceptionToBeThrownOnSOAPFault(options.isExceptionToBeThrownOnSOAPFault());
+ clonedOptions.setManageSession(options.isManageSession());
+ clonedOptions.setSoapVersionURI(options.getSoapVersionURI());
+ clonedOptions.setTimeOutInMilliSeconds(options.getTimeOutInMilliSeconds());
+ clonedOptions.setUseSeparateListener(options.isUseSeparateListener());
+
+ // copy addressing related options
+ clonedOptions.setMessageId(options.getMessageId());
+ clonedOptions.setTo(options.getTo());
+ clonedOptions.setFrom(options.getFrom());
+ clonedOptions.setAction(options.getAction());
+ clonedOptions.setReplyTo(options.getReplyTo());
+ clonedOptions.setFaultTo(options.getFaultTo());
+ clonedOptions.setRelationships(options.getRelationships());
+
+ // copy transport related options
+ clonedOptions.setListener(options.getListener());
+ clonedOptions.setTransportIn(options.getTransportIn());
+ clonedOptions.setTransportInProtocol(options.getTransportInProtocol());
+ clonedOptions.setTransportOut(clonedOptions.getTransportOut());
+
+ // copy username and password options
+ clonedOptions.setUserName(options.getUserName());
+ clonedOptions.setPassword(options.getPassword());
+
+ // cloen the property set of the current options object
+ for (Object o : options.getProperties().keySet()) {
+ String key = (String) o;
+ clonedOptions.setProperty(key, options.getProperty(key));
+ }
+
+ return clonedOptions;
+ }
+
+ /**
* Removes Submission and Final WS-Addressing headers and return the SOAPEnvelope from the given
* message context
*
Re: svn commit: r762222 - in /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse:
core/axis2/Axis2FlexibleMEPClient.java util/MessageHelper.java
Posted by Ruwan Linton <ru...@apache.org>.
Sorry, this is to fix SYNAPSE-531 not 525.
Thanks,
Ruwan
On Mon, Apr 6, 2009 at 12:22 PM, <ru...@apache.org> wrote:
> Author: ruwan
> Date: Mon Apr 6 06:52:04 2009
> New Revision: 762222
>
> URL: http://svn.apache.org/viewvc?rev=762222&view=rev
> Log:
> Fixing issue SYNAPSE-525, copying the full options object not just the
> properties of options
>
> Modified:
>
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
>
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MessageHelper.java
>
> Modified:
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
> URL:
> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java?rev=762222&r1=762221&r2=762222&view=diff
>
> ==============================================================================
> ---
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
> (original)
> +++
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
> Mon Apr 6 06:52:04 2009
> @@ -242,7 +242,7 @@
> new QName(AnonymousServiceFactory.OUT_ONLY_OPERATION) :
> new QName(AnonymousServiceFactory.OUT_IN_OPERATION));
>
> - Options clientOptions = new Options();
> + Options clientOptions =
> MessageHelper.cloneOptions(originalInMsgCtx.getOptions());
> clientOptions.setUseSeparateListener(separateListener);
> // if RM is requested,
> if (wsRMEnabled) {
> @@ -252,6 +252,8 @@
> SynapseConstants.SANDESHA_POLICY,
> MessageHelper.getPolicy(synapseOutMessageContext,
> wsRMPolicyKey));
> }
> + // todo: this wont be required now because we copy the full
> options cloned copy with
> + // todo: the parent of the options object as well
> MessageHelper.copyRMOptions(originalInMsgCtx, clientOptions);
> }
>
>
> Modified:
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MessageHelper.java
> URL:
> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MessageHelper.java?rev=762222&r1=762221&r2=762222&view=diff
>
> ==============================================================================
> ---
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MessageHelper.java
> (original)
> +++
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MessageHelper.java
> Mon Apr 6 06:52:04 2009
> @@ -121,6 +121,7 @@
>
> org.apache.axis2.context.MessageContext newMC = clonePartially(mc);
> newMC.setEnvelope(cloneSOAPEnvelope(mc.getEnvelope()));
> + newMC.setOptions(cloneOptions(mc.getOptions()));
>
> newMC.setServiceContext(mc.getServiceContext());
> newMC.setOperationContext(mc.getOperationContext());
> @@ -199,11 +200,6 @@
> }
> }
>
> - for (Object o : ori.getOptions().getProperties().keySet()) {
> - String key = (String) o;
> - newMC.getOptions().setProperty(key,
> ori.getOptions().getProperty(key));
> - }
> -
> Iterator itr = ori.getPropertyNames();
> while (itr.hasNext()) {
> String key = (String) itr.next();
> @@ -254,6 +250,55 @@
> }
>
> /**
> + * Clones the given {@link org.apache.axis2.client.Options} object.
> This is not a deep copy
> + * because this will be called for each and every message going out
> from synapse. The parent
> + * of the cloning options object is kept as a reference.
> + *
> + * @param options clonning object
> + * @return clonned Options object
> + */
> + public static Options cloneOptions(Options options) {
> +
> + // create new options object and set the parent
> + Options clonedOptions = new Options(options.getParent());
> +
> + // copy general options
> +
> clonedOptions.setCallTransportCleanup(options.isCallTransportCleanup());
> +
> clonedOptions.setExceptionToBeThrownOnSOAPFault(options.isExceptionToBeThrownOnSOAPFault());
> + clonedOptions.setManageSession(options.isManageSession());
> + clonedOptions.setSoapVersionURI(options.getSoapVersionURI());
> +
> clonedOptions.setTimeOutInMilliSeconds(options.getTimeOutInMilliSeconds());
> +
> clonedOptions.setUseSeparateListener(options.isUseSeparateListener());
> +
> + // copy addressing related options
> + clonedOptions.setMessageId(options.getMessageId());
> + clonedOptions.setTo(options.getTo());
> + clonedOptions.setFrom(options.getFrom());
> + clonedOptions.setAction(options.getAction());
> + clonedOptions.setReplyTo(options.getReplyTo());
> + clonedOptions.setFaultTo(options.getFaultTo());
> + clonedOptions.setRelationships(options.getRelationships());
> +
> + // copy transport related options
> + clonedOptions.setListener(options.getListener());
> + clonedOptions.setTransportIn(options.getTransportIn());
> +
> clonedOptions.setTransportInProtocol(options.getTransportInProtocol());
> + clonedOptions.setTransportOut(clonedOptions.getTransportOut());
> +
> + // copy username and password options
> + clonedOptions.setUserName(options.getUserName());
> + clonedOptions.setPassword(options.getPassword());
> +
> + // cloen the property set of the current options object
> + for (Object o : options.getProperties().keySet()) {
> + String key = (String) o;
> + clonedOptions.setProperty(key, options.getProperty(key));
> + }
> +
> + return clonedOptions;
> + }
> +
> + /**
> * Removes Submission and Final WS-Addressing headers and return the
> SOAPEnvelope from the given
> * message context
> *
>
>
>
--
Ruwan Linton
Senior Software Engineer & Product Manager; WSO2 ESB; http://wso2.org/esb
WSO2 Inc.; http://wso2.org
email: ruwan@wso2.com; cell: +94 77 341 3097
blog: http://ruwansblog.blogspot.com