/* * Copyright 2013 Samppa Saarela * * 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.javersion.util; import java.util.AbstractMap; import java.util.AbstractSet; import java.util.Iterator; import java.util.Map; import java.util.Set; import javax.annotation.concurrent.Immutable; @Immutable class ImmutableMap<K, V> extends AbstractMap<K, V> { private final PersistentMap<K, V> map; ImmutableMap(PersistentMap<K, V> map) { this.map = Check.notNull(map, "map"); } public PersistentMap<K, V> getPersistentMap() { return map; } @Override public int size() { return map.size(); } @Override public boolean containsKey(Object key) { return map.containsKey(key); } @Override public V get(Object key) { return map.get(key); } @Override public Set<Map.Entry<K, V>> entrySet() { return new AbstractSet<Map.Entry<K, V>>() { @Override public Iterator<Map.Entry<K, V>> iterator() { return map.iterator(); } @Override public int size() { return map.size(); } }; } @Override public V put(final K key, final V value) { throw new UnsupportedOperationException(); } @Override public V remove(final Object key) { throw new UnsupportedOperationException(); } @Override public void putAll(final Map<? extends K, ? extends V> m) { throw new UnsupportedOperationException(); } @Override public void clear() { throw new UnsupportedOperationException(); } }