All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.noos.xing.mydoggy.plaf.support.ResolvableHashtable Maven / Gradle / Ivy

The newest version!
package org.noos.xing.mydoggy.plaf.support;

import java.io.Serializable;
import java.util.Hashtable;

/**
 * @author Angelo De Caro
 */
public class ResolvableHashtable extends Hashtable {
    protected Resolver resolver;


    public ResolvableHashtable() {
        this.resolver = new Resolver() {
            public V get(Object key) {
                return null;
            }
        };
    }

    public ResolvableHashtable(final V defaultInstance) {
        this.resolver = new Resolver() {
            public V get(Object key) {
                return defaultInstance;
            }
        };
    }

    public ResolvableHashtable(Resolver resolver) {
        if  (resolver == null)
            this.resolver = new Resolver() {
                public V get(Object key) {
                    return null;
                }
            };
        else
            this.resolver = resolver;
    }

    public synchronized V get(Object key) {
        V result = super.get(key);
        return (result != null) ? result : resolver.get(key);
    }

    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;

        ResolvableHashtable that = (ResolvableHashtable) o;

        return resolver.equals(that.resolver);
    }

    public int hashCode() {
        int result = super.hashCode();
        result = 31 * result + resolver.hashCode();
        return result;
    }


    public interface Resolver extends Serializable {

        V get(Object key);
        
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy