Author: ruwan
Date: Wed May 7 01:11:01 2008
New Revision: 654024
URL: http://svn.apache.org/viewvc?rev=654024&view=rev
Log:
Fixing the issue SYNAPSE-291
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SynapseXMLConfigurationFactory.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2SynapseEnvironment.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java?rev=654024&r1=654023&r2=654024&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java
(original)
+++
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java
Wed May 7 01:11:01 2008
@@ -55,7 +55,14 @@
*/
private QName defaultQName = null;
- /**
+ /**
+ * Mandatory sequence is treated specially since it is required for each
and every message.
+ * Keeps the reference to the mandatory sequence while it is available as
a sequence in the
+ * localRegistry map
+ */
+ private Mediator mandatorySequence = null;
+
+ /**
* Holds Proxy services defined through Synapse
*/
private Map<String, ProxyService> proxyServices = new HashMap<String,
ProxyService>();
@@ -135,7 +142,27 @@
return definedSequences;
}
- /**
+ /**
+ * Gets the mandatory sequence, from the direct reference. This is also
available in the
+ * [EMAIL PROTECTED] SynapseConfiguration#getSequence} but this method
improves the performance hence this
+ * will be required for all messages
+ *
+ * @return mandatory sequence direct reference in the local configuration
+ */
+ public Mediator getMandatorySequence() {
+ return mandatorySequence;
+ }
+
+ /**
+ * Sets the mandatory sequence direct reference
+ *
+ * @param mandatorySequence to be set as the direct reference
+ */
+ public void setMandatorySequence(Mediator mandatorySequence) {
+ this.mandatorySequence = mandatorySequence;
+ }
+
+ /**
* Return the sequence specified with the given key
*
* @param key
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SynapseXMLConfigurationFactory.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SynapseXMLConfigurationFactory.java?rev=654024&r1=654023&r2=654024&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SynapseXMLConfigurationFactory.java
(original)
+++
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SynapseXMLConfigurationFactory.java
Wed May 7 01:11:01 2008
@@ -168,7 +168,14 @@
if (config.getLocalRegistry().get(name) != null) {
handleException("Duplicate sequence definition : " + name);
}
- config.addSequence(name,
MediatorFactoryFinder.getInstance().getMediator(ele));
+ Mediator mediator =
MediatorFactoryFinder.getInstance().getMediator(ele);
+ config.addSequence(name, mediator);
+ // mandatory sequence is treated as a speciall sequence because it
will be fetched for
+ // each and every message and keeps a direct reference to that
from the configuration
+ // this also limits the ability of the mandatory sequence to be
dynamic
+ if (SynapseConstants.MANDATORY_SEQUENCE_KEY.equals(name)) {
+ config.setMandatorySequence(mediator);
+ }
} else {
handleException("Invalid sequence definition without a name");
}
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2SynapseEnvironment.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2SynapseEnvironment.java?rev=654024&r1=654023&r2=654024&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2SynapseEnvironment.java
(original)
+++
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2SynapseEnvironment.java
Wed May 7 01:11:01 2008
@@ -107,9 +107,7 @@
StatisticsUtils.processSequenceStatistics(synCtx);
}
- Mediator mandatorySeq = synCtx.getConfiguration().getSequence(
- SynapseConstants.MANDATORY_SEQUENCE_KEY);
-
+ Mediator mandatorySeq =
synCtx.getConfiguration().getMandatorySequence();
// the mandatory sequence is optional and hence check for the
existance before mediation
if (mandatorySeq != null) {
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java?rev=654024&r1=654023&r2=654024&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java
(original)
+++
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java
Wed May 7 01:11:01 2008
@@ -91,11 +91,8 @@
proxyServiceStatisticsStack);
}
- Mediator mandatorySeq = synCtx.getConfiguration().getSequence(
- SynapseConstants.MANDATORY_SEQUENCE_KEY);
-
+ Mediator mandatorySeq =
synCtx.getConfiguration().getMandatorySequence();
if (mandatorySeq != null) {
-
if (log.isDebugEnabled()) {
log.debug("Start mediating the message in the " +
"pre-mediate state using the mandatory sequence");