AbstractPropertyReader.java |
/* * $Id: AbstractPropertyReader.java,v 1.29 2010/09/29 17:21:48 agoubard Exp $ * * See the COPYRIGHT file for redistribution and use restrictions. */ package org.xins.common.collections; import java.util.Iterator; import java.util.Map; import org.xins.common.MandatoryArgumentChecker; /** * Base for <code>PropertyReader</code> implementations that use an underlying * <code>Map</code> instance. * * @version $Revision: 1.29 $ $Date: 2010/09/29 17:21:48 $ * @author <a href="mailto:ernst@ernstdehaan.com">Ernst de Haan</a> * @author <a href="mailto:anthony.goubard@japplis.com">Anthony Goubard</a> * * @since XINS 1.0.0 */ public abstract class AbstractPropertyReader implements PropertyReader { /** * The mappings from property keys to values. Never <code>null</code>. */ private final Map _properties; /** * Constructs a new <code>AbstractPropertyReader</code>. * * @param map * the map containing the data of this <code>PropertyReader</code>, * cannot be <code>null</code>. * * @throws IllegalArgumentException * if <code>map == null</code>. * * @since XINS 1.4.0 */ protected AbstractPropertyReader(Map map) throws IllegalArgumentException { // Check preconditions MandatoryArgumentChecker.check("map", map); // Initialize fields _properties = map; } /** * Gets the value of the property with the specified name. * * @param name * the name of the property, cannot be <code>null</code>. * * @return * the value of the property, or <code>null</code> if it is not set. * * @throws IllegalArgumentException * if <code>name == null</code>. */ public String get(String name) throws IllegalArgumentException { // Check preconditions MandatoryArgumentChecker.check("name", name); // Retrieve the value Object value = _properties.get(name); return (String) value; } /** * Gets an iterator that iterates over all the property names. The * {@link Iterator} will return only {@link String} instances. * * @return * the {@link Iterator} that will iterate over all the names, never * <code>null</code>. */ public Iterator getNames() { return _properties.keySet().iterator(); } /** * Returns the number of entries. * * @return * the size, always >= 0. */ public int size() { return _properties.size(); } /** * Returns the <code>Map</code> that contains the properties. * * @return * the {@link Map} used to store the properties in, cannot be * <code>null</code>. * * @since XINS 1.4.0 */ protected Map getPropertiesMap() { return _properties; } /** * Compares this object with the specified argument for equality. * * @param obj * the object to compare with, can be <code>null</code>. * * @return * <code>true</code> if the objects <code>a</code> and <code>b</code> * are considered to be equal, <code>false</code> if they are considered * different. */ public boolean equals(Object obj) { return PropertyReaderUtils.equals(this, obj); } /** * Returns a hash code value for this object. * * @return * a hash code value for this object. */ public int hashCode() { return PropertyReaderUtils.hashCode(this); } }