KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > activemq > broker > region > group > SimpleMessageGroupMap


1 /**
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one or more
4  * contributor license agreements. See the NOTICE file distributed with
5  * this work for additional information regarding copyright ownership.
6  * The ASF licenses this file to You under the Apache License, Version 2.0
7  * (the "License"); you may not use this file except in compliance with
8  * the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */

18 package org.apache.activemq.broker.region.group;
19
20 import java.util.concurrent.ConcurrentHashMap JavaDoc;
21
22 import org.apache.activemq.command.ConsumerId;
23
24 import java.util.Iterator JavaDoc;
25 import java.util.Map JavaDoc;
26
27 /**
28  * A simple implementation which tracks every individual GroupID value but
29  * which can become a memory leak if clients die before they complete a message
30  * group.
31  *
32  * @version $Revision: 475999 $
33  */

34 public class SimpleMessageGroupMap implements MessageGroupMap {
35     private Map JavaDoc map = new ConcurrentHashMap JavaDoc();
36     
37     public void put(String JavaDoc groupId, ConsumerId consumerId) {
38         map.put(groupId, consumerId);
39     }
40
41     public ConsumerId get(String JavaDoc groupId) {
42         return (ConsumerId) map.get(groupId);
43     }
44
45     public ConsumerId removeGroup(String JavaDoc groupId) {
46         return (ConsumerId) map.remove(groupId);
47     }
48
49     public MessageGroupSet removeConsumer(ConsumerId consumerId) {
50         SimpleMessageGroupSet ownedGroups = new SimpleMessageGroupSet();
51         for (Iterator JavaDoc iter = map.keySet().iterator(); iter.hasNext();) {
52             String JavaDoc group = (String JavaDoc) iter.next();
53             ConsumerId owner = (ConsumerId) map.get(group);
54             if (owner.equals(consumerId)) {
55                 ownedGroups.add(group);
56                 iter.remove();
57             }
58         }
59         return ownedGroups;
60     }
61
62     public String JavaDoc toString() {
63         return "message groups: " + map.size();
64     }
65
66 }
67
Popular Tags