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");


Reply via email to