01: /*
02: * $Id: PropertyReader.java,v 1.16 2007/09/24 12:18:48 agoubard Exp $
03: *
04: * Copyright 2003-2007 Orange Nederland Breedband B.V.
05: * See the COPYRIGHT file for redistribution and use restrictions.
06: */
07: package org.xins.common.collections;
08:
09: import java.io.Serializable;
10: import java.util.Iterator;
11:
12: /**
13: * Property reader. Object that implement this interface allow read-only
14: * access to a set of property entries. Each entry consists of a name and a
15: * value. Both are {@link String} objects.
16: *
17: * <p>Some implementations of this interface also support changing the
18: * underlying set of property entries. In this case, setting a property value
19: * to <code>null</code> has the same effect as removing the property
20: * altogether.
21: *
22: * @version $Revision: 1.16 $ $Date: 2007/09/24 12:18:48 $
23: * @author <a href="mailto:ernst@ernstdehaan.com">Ernst de Haan</a>
24: *
25: * @since XINS 1.0.0
26: *
27: * @see PropertyReaderUtils
28: */
29: public interface PropertyReader extends Serializable {
30:
31: /**
32: * Gets the value of the property with the specified name.
33: *
34: * @param name
35: * the name of the property, cannot be <code>null</code>.
36: *
37: * @return
38: * the value of the property, or <code>null</code> if it is not set.
39: *
40: * @throws IllegalArgumentException
41: * if <code>name == null</code>.
42: */
43: String get(String name) throws IllegalArgumentException;
44:
45: /**
46: * Gets an iterator that iterates over all the property names. The
47: * {@link Iterator} will return only {@link String} instances.
48: *
49: * @return
50: * the {@link Iterator} that will iterate over all the names, never
51: * <code>null</code>.
52: */
53: Iterator getNames();
54:
55: /**
56: * Returns the number of entries.
57: *
58: * @return
59: * the size, always >= 0.
60: */
61: int size();
62: }
|