Repository: incubator-stratos
Updated Branches:
  refs/heads/master aa27fba8d -> 83905b2d3


fixing lb port mapping handling issue


Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/83905b2d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/83905b2d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/83905b2d

Branch: refs/heads/master
Commit: 83905b2d34025df6ba1bada8ee230249a3cd62a5
Parents: aa27fba
Author: Nirmal Fernando <[email protected]>
Authored: Sat May 17 07:06:55 2014 +0530
Committer: Nirmal Fernando <[email protected]>
Committed: Sat May 17 07:06:55 2014 +0530

----------------------------------------------------------------------
 .../TenantAwareLoadBalanceEndpoint.java         | 30 ++++++++++++++++++--
 1 file changed, 28 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/83905b2d/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java
 
b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java
index 9e570fc..0dd0bd9 100644
--- 
a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java
+++ 
b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java
@@ -78,6 +78,8 @@ public class TenantAwareLoadBalanceEndpoint extends 
org.apache.synapse.endpoints
 
     /* Sessions time out interval */
     private long sessionTimeout = -1;
+    
+    private final static Pattern LAST_INT_PATTERN = 
Pattern.compile("[^0-9]+([0-9]+)$");
 
     @Override
     public void init(SynapseEnvironment synapseEnvironment) {
@@ -154,8 +156,17 @@ public class TenantAwareLoadBalanceEndpoint extends 
org.apache.synapse.endpoints
     private void setupLoadBalancerContextProperties(MessageContext synCtx, 
org.apache.axis2.clustering.Member currentMember) {
         String lbHostName = extractTargetHost(synCtx);
         org.apache.axis2.context.MessageContext axis2MsgCtx = 
((Axis2MessageContext) synCtx).getAxis2MessageContext();
-        TransportInDescription httpTransportIn = 
axis2MsgCtx.getConfigurationContext().getAxisConfiguration().getTransportIn("http");
-        TransportInDescription httpsTransportIn = 
axis2MsgCtx.getConfigurationContext().getAxisConfiguration().getTransportIn("https");
+        
+        String httpTransportName = "http", httpsTransportName = "https";
+        String transportId = getTransportId(extractIncomingTransport(synCtx));
+               
+               if (transportId != null) {
+                       httpsTransportName = 
httpsTransportName.concat(transportId);
+                       httpTransportName = 
httpTransportName.concat(transportId);
+               }
+        
+        TransportInDescription httpTransportIn = 
axis2MsgCtx.getConfigurationContext().getAxisConfiguration().getTransportIn(httpTransportName);
+        TransportInDescription httpsTransportIn = 
axis2MsgCtx.getConfigurationContext().getAxisConfiguration().getTransportIn(httpsTransportName);
         String lbHttpPort = (String) 
httpTransportIn.getParameter("port").getValue();
         String lbHttpsPort = (String) 
httpsTransportIn.getParameter("port").getValue();
         String clusterId = 
currentMember.getProperties().getProperty(Constants.CLUSTER_ID);
@@ -165,6 +176,16 @@ public class TenantAwareLoadBalanceEndpoint extends 
org.apache.synapse.endpoints
         synCtx.setProperty(Constants.LB_HTTPS_PORT, lbHttpsPort);
         synCtx.setProperty(Constants.CLUSTER_ID, clusterId);
     }
+    
+       protected String getTransportId(String incomingTransportName) {
+               // pattern match and find the transport id.
+               Matcher matcher = 
LAST_INT_PATTERN.matcher(incomingTransportName);
+               if (matcher.find()) {
+                       return matcher.group(1);
+               }
+
+               return null;
+       }
 
 
     /**
@@ -506,6 +527,11 @@ public class TenantAwareLoadBalanceEndpoint extends 
org.apache.synapse.endpoints
         org.apache.axis2.context.MessageContext axis2MessageContext = 
((Axis2MessageContext) synCtx).getAxis2MessageContext();
         return axis2MessageContext.getTransportIn().getName();
     }
+    
+    private String extractIncomingTransport(MessageContext synCtx) {
+        org.apache.axis2.context.MessageContext axis2MessageContext = 
((Axis2MessageContext) synCtx).getAxis2MessageContext();
+        return axis2MessageContext.getIncomingTransportName();
+    }
 
     /**
      * @param to     get an endpoint to send the information

Reply via email to