You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by "Geir Magnusson Jr." <ge...@apache.org> on 2005/03/02 14:06:33 UTC
Re: svn commit: r155882 - geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/ReferenceMap.java
I think the copyright year in the header should be 2005. :)
geir
On Mar 1, 2005, at 9:50 PM, dblevins@apache.org wrote:
> Author: dblevins
> Date: Tue Mar 1 21:50:40 2005
> New Revision: 155882
>
> URL: http://svn.apache.org/viewcvs?view=rev&rev=155882
> Log:
> Handy little implementation of map that indexes instances in a
> ReferenceCollection by a key of your choosing.
>
> Added:
>
> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/
> ReferenceMap.java
>
> Added:
> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/
> ReferenceMap.java
> URL:
> http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/java/
> org/apache/geronimo/gbean/ReferenceMap.java?view=auto&rev=155882
> =======================================================================
> =======
> ---
> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/
> ReferenceMap.java (added)
> +++
> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/
> ReferenceMap.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
> implied.
> + * 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/removed
> + * @param key
> + */
> + public ReferenceMap(Collection collection, Map map, Key key) {
> + this.collection = (ReferenceCollection) collection;
> + this.map = map;
> + this.key = key;
> + for (Iterator iterator = this.collection.iterator();
> iterator.hasNext();) {
> + Object object = 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();
> + }
> +}
>
>
>
--
Geir Magnusson Jr +1-203-665-6437
geirm@apache.org