[jboss-svn-commits] JBL Code SVN: r20002 - labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ha.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun May 18 04:07:03 EDT 2008


Author: tfennelly
Date: 2008-05-18 04:07:03 -0400 (Sun, 18 May 2008)
New Revision: 20002

Added:
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ha/AbstractLoadBalancePolicy.java
Modified:
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ha/FirstAvailable.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ha/RandomRobin.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ha/RoundRobin.java
Log:
http://jira.jboss.com/jira/browse/JBESB-1741

Added: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ha/AbstractLoadBalancePolicy.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ha/AbstractLoadBalancePolicy.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ha/AbstractLoadBalancePolicy.java	2008-05-18 08:07:03 UTC (rev 20002)
@@ -0,0 +1,54 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * (C) 2005-2006, JBoss Inc.
+ */
+package org.jboss.soa.esb.listeners.ha;
+
+import org.jboss.soa.esb.addressing.EPR;
+import org.jboss.soa.esb.addressing.eprs.InVMEpr;
+
+import java.util.List;
+
+/**
+ * Abstract {@link LoadBalancePolicy}.
+ * <p/>
+ * Gives precedence to InVM EPRs, before selecting the EPR by policy.
+ *
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public abstract class AbstractLoadBalancePolicy implements LoadBalancePolicy {
+    
+    public final EPR chooseEPR(ServiceClusterInfo serviceCluster) {
+        List<EPR> eprs = serviceCluster.getEPRs();
+
+        if (eprs.isEmpty()) {
+            return null;
+        }
+
+        // Give precedence to InVM EPRs...
+        for (EPR epr : eprs) {
+            if(epr instanceof InVMEpr) {
+                return epr;
+            }
+        }
+
+        return chooseEPRByPolicy(serviceCluster);
+    }
+
+    protected abstract EPR chooseEPRByPolicy(ServiceClusterInfo serviceCluster);
+}


Property changes on: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ha/AbstractLoadBalancePolicy.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ha/FirstAvailable.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ha/FirstAvailable.java	2008-05-18 03:39:18 UTC (rev 20001)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ha/FirstAvailable.java	2008-05-18 08:07:03 UTC (rev 20002)
@@ -41,13 +41,13 @@
  *
  */
 
-public class FirstAvailable implements LoadBalancePolicy
+public class FirstAvailable extends AbstractLoadBalancePolicy
 {
    private static final long serialVersionUID = 1L;
    
    protected transient EPR electedEPR = null;
    
-   public EPR chooseEPR (ServiceClusterInfo serviceCluster)
+   protected EPR chooseEPRByPolicy(ServiceClusterInfo serviceCluster)
    {
       List<EPR> eprs = serviceCluster.getEPRs ();
       if (eprs.size () == 0)

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ha/RandomRobin.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ha/RandomRobin.java	2008-05-18 03:39:18 UTC (rev 20001)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ha/RandomRobin.java	2008-05-18 08:07:03 UTC (rev 20002)
@@ -34,7 +34,7 @@
  *  
  * @author <a href="mailto:kurt at osconsulting.org">Kurt Stam</a>.
  */
-public class RandomRobin implements LoadBalancePolicy
+public class RandomRobin extends AbstractLoadBalancePolicy
 {
    private static final long serialVersionUID = 1L;
    /** This needs to be a class variable or else you end up with multiple
@@ -43,7 +43,7 @@
    public static final Random localRandomizer = new Random (System.currentTimeMillis ());
    
    
-   public EPR chooseEPR (ServiceClusterInfo serviceCluster)
+   protected EPR chooseEPRByPolicy(ServiceClusterInfo serviceCluster)
    {
       List<EPR> eprs = serviceCluster.getEPRs ();
       int max = eprs.size();

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ha/RoundRobin.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ha/RoundRobin.java	2008-05-18 03:39:18 UTC (rev 20001)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ha/RoundRobin.java	2008-05-18 08:07:03 UTC (rev 20002)
@@ -34,11 +34,11 @@
  * @author <a href="mailto:kurt at osconsulting.org">Kurt Stam</a>.
  *
  */
-public class RoundRobin implements LoadBalancePolicy
+public class RoundRobin extends AbstractLoadBalancePolicy
 {
    private static final long serialVersionUID = 1L;
 
-   public EPR chooseEPR (ServiceClusterInfo serviceCluster)
+   protected EPR chooseEPRByPolicy(ServiceClusterInfo serviceCluster)
    {
       int cursor = serviceCluster.getCursor ();
       List<EPR> eprs = serviceCluster.getEPRs ();




More information about the jboss-svn-commits mailing list