10888a09821a98ac0680fad765217302858e70fa4Paul Duffin/* 20888a09821a98ac0680fad765217302858e70fa4Paul Duffin * Copyright (C) 2008 The Guava Authors 30888a09821a98ac0680fad765217302858e70fa4Paul Duffin * 40888a09821a98ac0680fad765217302858e70fa4Paul Duffin * Licensed under the Apache License, Version 2.0 (the "License"); 50888a09821a98ac0680fad765217302858e70fa4Paul Duffin * you may not use this file except in compliance with the License. 60888a09821a98ac0680fad765217302858e70fa4Paul Duffin * You may obtain a copy of the License at 70888a09821a98ac0680fad765217302858e70fa4Paul Duffin * 80888a09821a98ac0680fad765217302858e70fa4Paul Duffin * http://www.apache.org/licenses/LICENSE-2.0 90888a09821a98ac0680fad765217302858e70fa4Paul Duffin * 100888a09821a98ac0680fad765217302858e70fa4Paul Duffin * Unless required by applicable law or agreed to in writing, software 110888a09821a98ac0680fad765217302858e70fa4Paul Duffin * distributed under the License is distributed on an "AS IS" BASIS, 120888a09821a98ac0680fad765217302858e70fa4Paul Duffin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130888a09821a98ac0680fad765217302858e70fa4Paul Duffin * See the License for the specific language governing permissions and 140888a09821a98ac0680fad765217302858e70fa4Paul Duffin * limitations under the License. 150888a09821a98ac0680fad765217302858e70fa4Paul Duffin */ 160888a09821a98ac0680fad765217302858e70fa4Paul Duffin 170888a09821a98ac0680fad765217302858e70fa4Paul Duffinpackage com.google.common.collect; 180888a09821a98ac0680fad765217302858e70fa4Paul Duffin 190888a09821a98ac0680fad765217302858e70fa4Paul Duffin/** 200888a09821a98ac0680fad765217302858e70fa4Paul Duffin * GWT emulation of {@link RegularImmutableBiMap}. 210888a09821a98ac0680fad765217302858e70fa4Paul Duffin * 220888a09821a98ac0680fad765217302858e70fa4Paul Duffin * @author Jared Levy 230888a09821a98ac0680fad765217302858e70fa4Paul Duffin * @author Hayward Chan 240888a09821a98ac0680fad765217302858e70fa4Paul Duffin */ 250888a09821a98ac0680fad765217302858e70fa4Paul Duffin@SuppressWarnings("serial") 260888a09821a98ac0680fad765217302858e70fa4Paul Duffinclass RegularImmutableBiMap<K, V> extends ImmutableBiMap<K, V> { 270888a09821a98ac0680fad765217302858e70fa4Paul Duffin 280888a09821a98ac0680fad765217302858e70fa4Paul Duffin // This reference is used both by the GWT compiler to infer the elements 290888a09821a98ac0680fad765217302858e70fa4Paul Duffin // of the lists that needs to be serialized. 300888a09821a98ac0680fad765217302858e70fa4Paul Duffin private ImmutableBiMap<V, K> inverse; 310888a09821a98ac0680fad765217302858e70fa4Paul Duffin 320888a09821a98ac0680fad765217302858e70fa4Paul Duffin RegularImmutableBiMap(ImmutableMap<K, V> delegate) { 330888a09821a98ac0680fad765217302858e70fa4Paul Duffin super(delegate); 340888a09821a98ac0680fad765217302858e70fa4Paul Duffin 350888a09821a98ac0680fad765217302858e70fa4Paul Duffin ImmutableMap.Builder<V, K> builder = ImmutableMap.builder(); 360888a09821a98ac0680fad765217302858e70fa4Paul Duffin for (Entry<K, V> entry : delegate.entrySet()) { 370888a09821a98ac0680fad765217302858e70fa4Paul Duffin builder.put(entry.getValue(), entry.getKey()); 380888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 390888a09821a98ac0680fad765217302858e70fa4Paul Duffin ImmutableMap<V, K> backwardMap = builder.build(); 400888a09821a98ac0680fad765217302858e70fa4Paul Duffin this.inverse = new RegularImmutableBiMap<V, K>(backwardMap, this); 410888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 420888a09821a98ac0680fad765217302858e70fa4Paul Duffin 430888a09821a98ac0680fad765217302858e70fa4Paul Duffin RegularImmutableBiMap(ImmutableMap<K, V> delegate, 440888a09821a98ac0680fad765217302858e70fa4Paul Duffin ImmutableBiMap<V, K> inverse) { 450888a09821a98ac0680fad765217302858e70fa4Paul Duffin super(delegate); 460888a09821a98ac0680fad765217302858e70fa4Paul Duffin this.inverse = inverse; 470888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 480888a09821a98ac0680fad765217302858e70fa4Paul Duffin 490888a09821a98ac0680fad765217302858e70fa4Paul Duffin @Override public ImmutableBiMap<V, K> inverse() { 500888a09821a98ac0680fad765217302858e70fa4Paul Duffin return inverse; 510888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 520888a09821a98ac0680fad765217302858e70fa4Paul Duffin} 53