/******************************************************************************* * Copyright (c) 2008, 2014 Stuart McCulloch * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Stuart McCulloch - initial API and implementation *******************************************************************************/ package org.eclipse.sisu.peaberry.cache; import java.util.Map.Entry; /** * Snapshot of an entry from a service attribute map. * * @author mcculls@gmail.com (Stuart McCulloch) */ public final class ImmutableAttribute implements Entry<String, Object> { private final String k; private final Object v; public ImmutableAttribute(final String key, final Object value) { k = key; v = value; } public String getKey() { return k; } public Object getValue() { return v; } public Object setValue(final Object value) { throw new UnsupportedOperationException(); } @Override @SuppressWarnings("unchecked") public boolean equals(final Object rhs) { if (rhs instanceof Entry) { final Entry entry = (Entry) rhs; return equals(k, entry.getKey()) && equals(v, entry.getValue()); } return false; } @Override public int hashCode() { return (null == k ? 0 : k.hashCode()) ^ (null == v ? 0 : v.hashCode()); } private static boolean equals(final Object lhs, final Object rhs) { return null == lhs ? null == rhs : lhs.equals(rhs); } }