/*
 * Copyright (c) 2016 Goldman Sachs.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * and Eclipse Distribution License v. 1.0 which accompany this distribution.
 * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
 * and the Eclipse Distribution License is available at
 * http://www.eclipse.org/org/documents/edl-v10.php.
 */

package org.eclipse.collections.impl.tuple;

import java.io.Serializable;
import java.util.Map;

import org.eclipse.collections.api.block.function.Function;
import org.eclipse.collections.api.tuple.Pair;
import org.eclipse.collections.impl.block.factory.Functions;

public class AbstractImmutableEntry<K, V> implements Map.Entry<K, V>, Serializable
{
    private static final long serialVersionUID = 1L;
    private static final PairFunction<?, ?> TO_PAIR = new PairFunction<>();

    protected final K key;
    protected final V value;

    public AbstractImmutableEntry(K key, V value)
    {
        this.key = key;
        this.value = value;
    }

    
Deprecated:Since 6.2 - Use Functions.getKeyFunction() instead.
/** * @deprecated Since 6.2 - Use {@link Functions#getKeyFunction()} instead. */
@Deprecated public static <K> Function<Map.Entry<K, ?>, K> getKeyFunction() { return Functions.getKeyFunction(); }
Deprecated:Since 6.2 - Use Functions.getValueFunction() instead.
/** * @deprecated Since 6.2 - Use {@link Functions#getValueFunction()} instead. */
@Deprecated public static <V> Function<Map.Entry<?, V>, V> getValueFunction() { return Functions.getValueFunction(); } public static <K, V> Function<Map.Entry<K, V>, Pair<K, V>> getPairFunction() { return (Function<Map.Entry<K, V>, Pair<K, V>>) (Function<?, ?>) TO_PAIR; } @Override public K getKey() { return this.key; } @Override public V getValue() { return this.value; }
{@inheritDoc}

This implementation throws an UnsupportedOperationException. Override this method to support mutable map entries.

/** * {@inheritDoc} * <p> * This implementation throws an {@link UnsupportedOperationException}. Override this method to support mutable * map entries. */
@Override public V setValue(V value) { throw new UnsupportedOperationException("Cannot call setValue() on " + this.getClass().getSimpleName()); }
Returns a string representation of the form {key}={value}.
/** * Returns a string representation of the form {@code {key}={value}}. */
@Override public String toString() { return this.key + "=" + this.value; }
Deprecated:Since 6.2 - Kept for serialization compatibility only.
/** * @deprecated Since 6.2 - Kept for serialization compatibility only. */
@Deprecated private static class KeyFunction<K> implements Function<Map.Entry<K, ?>, K> { private static final long serialVersionUID = 1L; @Override public K valueOf(Map.Entry<K, ?> entry) { return entry.getKey(); } }
Deprecated:Since 6.2 - Kept for serialization compatibility only.
/** * @deprecated Since 6.2 - Kept for serialization compatibility only. */
@Deprecated private static class ValueFunction<V> implements Function<Map.Entry<?, V>, V> { private static final long serialVersionUID = 1L; @Override public V valueOf(Map.Entry<?, V> entry) { return entry.getValue(); } } private static class PairFunction<K, V> implements Function<Map.Entry<K, V>, Pair<K, V>> { private static final long serialVersionUID = 1L; @Override public Pair<K, V> valueOf(Map.Entry<K, V> entry) { return Tuples.pairFrom(entry); } } }