001    /*
002     *   Copyright (C) Christian Schulte, 2005-206
003     *   All rights reserved.
004     *
005     *   Redistribution and use in source and binary forms, with or without
006     *   modification, are permitted provided that the following conditions
007     *   are met:
008     *
009     *     o Redistributions of source code must retain the above copyright
010     *       notice, this list of conditions and the following disclaimer.
011     *
012     *     o Redistributions in binary form must reproduce the above copyright
013     *       notice, this list of conditions and the following disclaimer in
014     *       the documentation and/or other materials provided with the
015     *       distribution.
016     *
017     *   THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
018     *   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
019     *   AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
020     *   THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT,
021     *   INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
022     *   NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
023     *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
024     *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
025     *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
026     *   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
027     *
028     *   $JOMC: NameType.java 3838 2011-10-08 20:15:41Z schulte2005 $
029     *
030     */
031    package org.jomc.ant.types;
032    
033    import org.apache.commons.lang.builder.ToStringBuilder;
034    
035    /**
036     * Datatype holding a {@code name} property.
037     *
038     * @author <a href="mailto:schulte2005@users.sourceforge.net">Christian Schulte</a>
039     * @version $JOMC: NameType.java 3838 2011-10-08 20:15:41Z schulte2005 $
040     */
041    public class NameType implements Cloneable
042    {
043    
044        /** The name of the datatype. */
045        private String name;
046    
047        /** Creates a new {@code NameType} instance. */
048        public NameType()
049        {
050            super();
051        }
052    
053        /**
054         * Gets the value of the {@code name} property.
055         *
056         * @return The value of the {@code name} property.
057         *
058         * @see #setName(java.lang.String)
059         */
060        public final String getName()
061        {
062            return this.name;
063        }
064    
065        /**
066         * Sets the value of the {@code name} property.
067         *
068         * @param value The new value of the {@code name} property.
069         *
070         * @see #getName()
071         */
072        public final void setName( final String value )
073        {
074            this.name = value;
075        }
076    
077        /**
078         * Creates and returns a copy of this object.
079         *
080         * @return A copy of this object.
081         */
082        @Override
083        public NameType clone()
084        {
085            try
086            {
087                return (NameType) super.clone();
088            }
089            catch ( final CloneNotSupportedException e )
090            {
091                throw new AssertionError( e );
092            }
093        }
094    
095        /**
096         * Creates and returns a string representation of the object.
097         *
098         * @return A string representation of the object.
099         */
100        @Override
101        public String toString()
102        {
103            return ToStringBuilder.reflectionToString( this );
104        }
105    
106    }