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 2008/05/07 10:11:02 UTC

svn commit: r654024 - in /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse: config/SynapseConfiguration.java config/xml/SynapseXMLConfigurationFactory.java core/axis2/Axis2SynapseEnvironment.java core/axis2/ProxyServiceMessageReceiver.java

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
+     * {@link 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");