Return-Path: Delivered-To: apmail-geronimo-scm-archive@www.apache.org Received: (qmail 63521 invoked from network); 2 Mar 2005 05:50:45 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur-2.apache.org with SMTP; 2 Mar 2005 05:50:45 -0000 Received: (qmail 27684 invoked by uid 500); 2 Mar 2005 05:50:45 -0000 Delivered-To: apmail-geronimo-scm-archive@geronimo.apache.org Received: (qmail 27526 invoked by uid 500); 2 Mar 2005 05:50:44 -0000 Mailing-List: contact scm-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org Delivered-To: mailing list scm@geronimo.apache.org Received: (qmail 27509 invoked by uid 99); 2 Mar 2005 05:50:44 -0000 X-ASF-Spam-Status: No, hits=-9.8 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from minotaur.apache.org (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.28) with SMTP; Tue, 01 Mar 2005 21:50:43 -0800 Received: (qmail 63511 invoked by uid 65534); 2 Mar 2005 05:50:42 -0000 Message-ID: <20050302055042.63510.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Mailer: svnmailer-1.0.0-dev Date: Wed, 02 Mar 2005 05:50:42 -0000 Subject: svn commit: r155882 - geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/ReferenceMap.java To: scm@geronimo.apache.org From: dblevins@apache.org X-Virus-Checked: Checked X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N Author: dblevins Date: Tue Mar 1 21:50:40 2005 New Revision: 155882 URL: http://svn.apache.org/viewcvs?view=3Drev&rev=3D155882 Log: Handy little implementation of map that indexes instances in a ReferenceCol= lection by a key of your choosing. Added: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/Refere= nceMap.java Added: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/Ref= erenceMap.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/java/o= rg/apache/geronimo/gbean/ReferenceMap.java?view=3Dauto&rev=3D155882 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/Refere= nceMap.java (added) +++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/Refere= nceMap.java Tue Mar 1 21:50:40 2005 @@ -0,0 +1,123 @@ +/** + * + * Copyright 2003-2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implie= d=2E + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.gbean; + +import java.util.*; + +public class ReferenceMap implements Map, ReferenceCollectionListener { + private final ReferenceCollection collection; + private final Map map; + private final Key key; + + /** + * Constructs the ReferenceMap using a new instance of + * HashMap as the internal map. + * + * @param collection Must be an instance of ReferenceCollection + * @param map The map instance to which references will be added/remov= ed + * @param key + */ + public ReferenceMap(Collection collection, Map map, Key key) { + this.collection =3D (ReferenceCollection) collection; + this.map =3D map; + this.key =3D key; + for (Iterator iterator =3D this.collection.iterator(); iterator.ha= sNext();) { + Object object =3D iterator.next(); + map.put(key.getKey(object), object); + } + this.collection.addReferenceCollectionListener(this); + } + + /** + * Constructs the ReferenceMap using a new instance of + * HashMap as the internal map. + * + * @param collection Must be an instance of ReferenceCollection + * @param key + */ + public ReferenceMap(Collection collection, Key key) { + this(collection, new HashMap(), key); + } + + public void memberAdded(ReferenceCollectionEvent event) { + map.put(key.getKey(event.getMember()), event.getMember()); + } + + public void memberRemoved(ReferenceCollectionEvent event) { + map.remove(key.getKey(event.getMember())); + } + + public interface Key { + public Object getKey(Object object); + } + + public int size() { + return map.size(); + } + + public boolean isEmpty() { + return map.isEmpty(); + } + + public boolean containsKey(Object key) { + return map.containsKey(key); + } + + public boolean containsValue(Object value) { + return map.containsValue(value); + } + + public Object get(Object key) { + return map.get(key); + } + + public Object put(Object key, Object value) { + return map.put(key, value); + } + + public Object remove(Object key) { + return map.remove(key); + } + + public void putAll(Map t) { + map.putAll(t); + } + + public void clear() { + map.clear(); + } + + public Set keySet() { + return map.keySet(); + } + + public Collection values() { + return map.values(); + } + + public Set entrySet() { + return map.entrySet(); + } + + public boolean equals(Object o) { + return map.equals(o); + } + + public int hashCode() { + return map.hashCode(); + } +}