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

org.nakedobjects.plugins.remoting.shared.data.KnownObjects Maven / Gradle / Ivy

package org.nakedobjects.plugins.remoting.shared.data;

import java.util.Hashtable;

import org.nakedobjects.metamodel.adapter.NakedObject;


/**
 * A lookup of the objects that are part of a request or response. As only one instance of data per object
 * should be passed from node to node this object provides a way of ensuring this.
 */
public class KnownObjects {
    private final Hashtable dataToObjectMap = new Hashtable();
    private final Hashtable objectToDataMap = new Hashtable();

    public KnownObjects() {}

    public boolean containsKey(final NakedObject object) {
        return dataToObjectMap.containsKey(object);
    }

    public boolean containsKey(final ObjectData data) {
        return objectToDataMap.containsKey(data);
    }

    public ObjectData get(final NakedObject object) {
        return (ObjectData) dataToObjectMap.get(object);
    }

    public NakedObject get(final ObjectData data) {
        return (NakedObject) objectToDataMap.get(data);
    }

    public void put(final NakedObject object, final ObjectData data) {
        dataToObjectMap.put(object, data);
        objectToDataMap.put(data, object);
    }

    @Override
    public boolean equals(final Object obj) {
        if (obj == this) {
            return true;
        }

        if (obj instanceof KnownObjects) {
            final KnownObjects other = (KnownObjects) obj;

            return other.dataToObjectMap.equals(dataToObjectMap) && other.objectToDataMap.equals(objectToDataMap);
        }

        return false;
    }
}

// Copyright (c) Naked Objects Group Ltd.




© 2015 - 2025 Weber Informatics LLC | Privacy Policy