1 /*** 2 * 3 * Copyright 2004 Protique Ltd 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 **/ 18 19 package org.codehaus.activecluster.election.impl; 20 21 import org.codehaus.activecluster.Cluster; 22 import org.codehaus.activecluster.Node; 23 import org.codehaus.activecluster.election.ElectionStrategy; 24 25 import javax.jms.JMSException; 26 import java.util.Iterator; 27 import java.util.Map; 28 29 /*** 30 * <p><code>BullyElectionStrategy</code> Use a simple bully algorithm to elect a coordinator. 31 * the member with the lowest lexicographical name is choosen</p> 32 * 33 * @version $Revision: 1.2 $ 34 */ 35 public class BullyElectionStrategy implements ElectionStrategy { 36 37 /*** 38 * Elect a coordinator. 39 * 40 * @param cluster 41 * @return the elected Node 42 * @throws JMSException 43 */ 44 public Node doElection(Cluster cluster) throws JMSException { 45 Node elect = cluster.getLocalNode(); 46 47 Map nodes = cluster.getNodes(); 48 for (Iterator i = nodes.values().iterator(); i.hasNext();) { 49 Node node = (Node) i.next(); 50 if (elect.getName().compareTo(node.getName()) < 0) { 51 elect = node; 52 } 53 } 54 55 return elect; 56 } 57 58 }