Author: supun
Date: Fri Sep 17 05:46:28 2010
New Revision: 997984

URL: http://svn.apache.org/viewvc?rev=997984&view=rev
Log:
SYNAPSE-683

Modified:
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointFactory.java

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointFactory.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointFactory.java?rev=997984&r1=997983&r2=997984&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointFactory.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointFactory.java
 Fri Sep 17 05:46:28 2010
@@ -29,6 +29,9 @@ import org.apache.synapse.config.xml.end
 import org.apache.synapse.core.LoadBalanceMembershipHandler;
 import org.apache.synapse.endpoints.DynamicLoadbalanceEndpoint;
 import org.apache.synapse.endpoints.Endpoint;
+import org.apache.synapse.endpoints.dispatch.Dispatcher;
+import org.apache.synapse.endpoints.dispatch.SoapSessionDispatcher;
+import org.apache.synapse.endpoints.dispatch.HttpSessionDispatcher;
 import org.apache.synapse.endpoints.algorithms.LoadbalanceAlgorithm;
 
 import javax.xml.namespace.QName;
@@ -80,7 +83,37 @@ public class DynamicLoadbalanceEndpointF
                 loadbalanceEndpoint.setName(name.getAttributeValue());
             }
 
-            //TODO: Handle session affinity
+            // get the session for this endpoint
+            OMElement sessionElement = epConfig.
+                    getFirstChildWithName(new 
QName(SynapseConstants.SYNAPSE_NAMESPACE, "session"));
+            if (sessionElement != null) {
+
+                OMElement sessionTimeout = 
sessionElement.getFirstChildWithName(
+                        new QName(SynapseConstants.SYNAPSE_NAMESPACE, 
"sessionTimeout"));
+
+                if (sessionTimeout != null) {
+                    try {
+                        loadbalanceEndpoint.setSessionTimeout(Long.parseLong(
+                                sessionTimeout.getText().trim()));
+                    } catch (NumberFormatException nfe) {
+                        handleException("Invalid session timeout value : " + 
sessionTimeout.getText());
+                    }
+                }
+
+                String type = sessionElement.getAttributeValue(new 
QName("type"));
+
+                if (type.equalsIgnoreCase("soap")) {
+                    Dispatcher soapDispatcher = new SoapSessionDispatcher();
+                    loadbalanceEndpoint.setDispatcher(soapDispatcher);
+
+                } else if (type.equalsIgnoreCase("http")) {
+                    Dispatcher httpDispatcher = new HttpSessionDispatcher();
+                    loadbalanceEndpoint.setDispatcher(httpDispatcher);
+
+                }
+
+                loadbalanceEndpoint.setSessionAffinity(true);
+            }
 
             // set if failover is turned off
             String failover = loadbalanceElement.getAttributeValue(new 
QName("failover"));


Reply via email to