/* * Copyright 2007 Google Inc. * * 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 com.google.gwt.user.rebind; import java.util.Map; /** * Common base class for Enum-like 1.4 classes, often needed for generator-like * functionality. */ class Enum { /** * Requires the specified object from the pool. * * @param key the key associated with the <code>Enum</code> * @param pool pool to draw key from * @return associated <code>Enum</code> */ public static Enum require(String key, Map<String, Enum> pool) { Enum t = pool.get(key); if (t == null) { throw new IllegalArgumentException(key + " is not a valid Enum type. Current options are " + pool.keySet()); } return t; } /** * Associated key. */ final String key; /** * Creates a new <code>Enum</code> in a given pool. * * @param key associated key * @param pool associated pool */ protected Enum(String key, Map<String, Enum> pool) { this.key = key; pool.put(key, this); } /** * @see java.lang.Object#toString() */ @Override public String toString() { return key; } }