View Javadoc

    1   package net.sourceforge.pmd.util;
    2
    3   import java.util.HashMap;
    4   import java.util.Map;
    5
    6   /***
    7    * A specialized map that stores classes by both their full and short names.
    8    *
    9    * @author Brian Remedios
    10   */
    11  public class TypeMap {
    12
    13  	private Map typesByName;
    14
    15  	/***
    16  	 * Constructor for TypeMap.
    17  	 * @param initialSize int
    18  	 */
    19  	public TypeMap(int initialSize) {
    20  		typesByName = new HashMap(initialSize);
    21  	}
    22
    23  	/***
    24  	 * Constructor for TypeMap that takes in an initial set of types.
    25  	 *
    26  	 * @param types Class[]
    27  	 */
    28  	public TypeMap(Class[] types) {
    29  		this(types.length);
    30  		add(types);
    31  	}
    32
    33  	/***
    34  	 * Adds a type to the receiver and stores it keyed by both its full
    35  	 * and short names.
    36  	 *
    37  	 * @param type Class
    38  	 */
    39  	public void add(Class type) {
    40  		typesByName.put(type.getName(), type);
    41  		typesByName.put(ClassUtil.withoutPackageName(type.getName()), type);
    42  	}
    43
    44  	/***
    45  	 * Returns whether the type is known to the receiver.
    46  	 *
    47  	 * @param type Class
    48  	 * @return boolean
    49  	 */
    50  	public boolean contains(Class type) {
    51  		return typesByName.containsValue(type);
    52  	}
    53
    54  	/***
    55  	 * Returns whether the typeName is known to the receiver.
    56  	 *
    57  	 * @param typeName String
    58  	 * @return boolean
    59  	 */
    60  	public boolean contains(String typeName) {
    61  		return typesByName.containsKey(typeName);
    62  	}
    63
    64  	/***
    65  	 * Returns the type for the typeName specified.
    66  	 *
    67  	 * @param typeName String
    68  	 * @return Class
    69  	 */
    70  	public Class typeFor(String typeName) {
    71  		return (Class)typesByName.get(typeName);
    72  	}
    73
    74  	/***
    75  	 * Adds an array of types to the receiver at once.
    76  	 *
    77  	 * @param types Class[]
    78  	 */
    79  	public void add(Class[] types) {
    80  		for (int i=0; i<types.length; i++) {
    81  			add(types[i]);
    82  		}
    83  	}
    84  }