001    package edu.nrao.sss.util;
002    
003    /**
004     * An object that can be named.
005     * <p>
006     * <b>Version Info:</b>
007     * <table style="margin-left:2em">
008     *   <tr><td>$Revision$</td></tr>
009     *   <tr><td>$Date$</td></tr>
010     *   <tr><td>$Author$ (last person to modify)</td></tr>
011     * </table></p>
012     * 
013     * @author David M. Harland
014     * @since 2009-04-16
015     */
016    public interface Nameable
017    {
018      /**
019       * Sets the name of this object.
020       * 
021       * @param newName
022       *   a new name for this object.  Implementing classes are free to establish
023       *   their own rules for what constitutes a legal name.
024       */
025      public void setName(String newName);
026      
027      /**
028       * Returns the name of this object.
029       * 
030       * @return
031       *   the name of this object.
032       *   Whether or not <i>null</i> is a legitimate return value is a decision
033       *   that will be made by implementing classes.
034       */
035      public String getName();
036    }