EMMA Coverage Report (generated Tue Jan 14 00:37:43 CET 2014)
[all classes][org.jdtaus.core.container]

COVERAGE SUMMARY FOR SOURCE FILE [Property.java]

nameclass, %method, %block, %line, %
Property.java100% (1/1)79%  (11/14)83%  (139/167)74%  (21.4/29)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class Property100% (1/1)79%  (11/14)83%  (139/167)74%  (21.4/29)
isApi (): boolean 0%   (0/1)0%   (0/3)0%   (0/1)
setApi (boolean): void 0%   (0/1)0%   (0/4)0%   (0/2)
setValue (Object): void 0%   (0/1)0%   (0/4)0%   (0/2)
clone (): Object 100% (1/1)33%  (3/9)33%  (1/3)
hashCode (): int 100% (1/1)82%  (14/17)82%  (0.8/1)
equals (Object): boolean 100% (1/1)83%  (38/46)92%  (4.6/5)
Property (): void 100% (1/1)100% (3/3)100% (2/2)
getName (): String 100% (1/1)100% (9/9)100% (3/3)
getType (): Class 100% (1/1)100% (16/16)100% (3/3)
getValue (): Object 100% (1/1)100% (3/3)100% (1/1)
internalString (): String 100% (1/1)100% (34/34)100% (1/1)
setName (String): void 100% (1/1)100% (4/4)100% (2/2)
setType (Class): void 100% (1/1)100% (4/4)100% (2/2)
toString (): String 100% (1/1)100% (11/11)100% (1/1)

1/*
2 *  jDTAUS Core API
3 *  Copyright (C) 2005 Christian Schulte
4 *  <cs@schulte.it>
5 *
6 *  This library is free software; you can redistribute it and/or
7 *  modify it under the terms of the GNU Lesser General Public
8 *  License as published by the Free Software Foundation; either
9 *  version 2.1 of the License, or any later version.
10 *
11 *  This library is distributed in the hope that it will be useful,
12 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 *  Lesser General Public License for more details.
15 *
16 *  You should have received a copy of the GNU Lesser General Public
17 *  License along with this library; if not, write to the Free Software
18 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19 *
20 */
21package org.jdtaus.core.container;
22 
23import java.io.Serializable;
24 
25/**
26 * Property meta-data.
27 * <p>A property consists of the properties {@code name}, {@code type} and
28 * {@code value}. Property {@code name} holds the name uniquely identifying the
29 * property in a collection of properties. Property {@code type} holds the type
30 * of the property. Property {@code value} holds the properties value which is
31 * of type {@code type}. The {@code api} flag indicates if the property is part
32 * of a public API.</p>
33 *
34 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
35 * @version $JDTAUS: Property.java 8743 2012-10-07 03:06:20Z schulte $
36 */
37public class Property extends ModelObject implements Cloneable, Serializable
38{
39    //--Constants---------------------------------------------------------------
40 
41    /** Serial version UID for backwards compatibility with 1.0.x classes. */
42    private static final long serialVersionUID = -5450366074586725711L;
43 
44    //---------------------------------------------------------------Constants--
45    //--Property----------------------------------------------------------------
46 
47    /**
48     * The name of the property.
49     * @serial
50     */
51    private String name;
52 
53    /**
54     * The type of the property.
55     * @serial
56     */
57    private Class type;
58 
59    /**
60     * The value of the property.
61     * @serial
62     */
63    private Object value;
64 
65    /**
66     * Flag indicating that the property is part of a public API.
67     * @serial
68     */
69    private boolean api;
70 
71    /** Creates a new {@code Property} instance. */
72    public Property()
73    {
74        super();
75    }
76 
77    /**
78     * Gets the name of the property.
79     *
80     * @return the name of the property.
81     */
82    public String getName()
83    {
84        if ( this.name == null )
85        {
86            this.name = "";
87        }
88 
89        return this.name;
90    }
91 
92    /**
93     * Setter for property {@code name}.
94     *
95     * @param value the new name of the property.
96     */
97    public void setName( final String value )
98    {
99        this.name = value;
100    }
101 
102    /**
103     * Gets the type of the property.
104     *
105     * @return the type of the property.
106     */
107    public Class getType()
108    {
109        if ( this.type == null )
110        {
111            this.type = String.class;
112        }
113 
114        return this.type;
115    }
116 
117    /**
118     * Setter for property {@code type}.
119     *
120     * @param value the new type of the property.
121     */
122    public void setType( final Class value )
123    {
124        this.type = value;
125    }
126 
127    /**
128     * Gets the value of the property.
129     *
130     * @return the value of the property or {@code null}.
131     */
132    public Object getValue()
133    {
134        return this.value;
135    }
136 
137    /**
138     * Setter for property {@code value}.
139     *
140     * @param value the new value of the property.
141     */
142    public void setValue( final Object value )
143    {
144        this.value = value;
145    }
146 
147    /**
148     * Gets the flag indicating if the property is part of a public API.
149     *
150     * @return {@code true} if the property is part of a public API.
151     */
152    public boolean isApi()
153    {
154        return this.api;
155    }
156 
157    /**
158     * Setter for property {@code api}.
159     *
160     * @param value {@code true} if the property is part of a public API.
161     */
162    public void setApi( final boolean value )
163    {
164        this.api = value;
165    }
166 
167    /**
168     * Creates a string representing the properties of the instance.
169     *
170     * @return a string representing the properties of the instance.
171     */
172    private String internalString()
173    {
174        return new StringBuffer( 500 ).append( '{' ).
175            append( super.internalString( this ) ).
176            append( ", api=" ).append( this.api ).
177            append( ", name=" ).append( this.name ).
178            append( ", type=" ).append( this.type ).
179            append( ", value=" ).append( this.value ).
180            append( '}' ).toString();
181 
182    }
183 
184    //----------------------------------------------------------------Property--
185    //--Object------------------------------------------------------------------
186 
187    /**
188     * Returns a string representation of the object.
189     *
190     * @return a string representation of the object.
191     */
192    public String toString()
193    {
194        return super.toString() + this.internalString();
195    }
196 
197    /**
198     * Indicates whether some other object is equal to this one by comparing
199     * the values of all properties.
200     *
201     * @param o the reference object with which to compare.
202     *
203     * @return {@code true} if this object is the same as {@code o};
204     * {@code false} otherwise.
205     */
206    public boolean equals( final Object o )
207    {
208        boolean equal = this == o;
209 
210        if ( !equal && o instanceof Property )
211        {
212            final Property that = (Property) o;
213            equal = this.getName().equals( that.getName() ) &&
214                this.getType().equals( that.getType() ) &&
215                ( this.getValue() == null
216                ? that.getValue() == null
217                : this.getValue().equals( that.getValue() ) );
218 
219        }
220 
221        return equal;
222    }
223 
224    /**
225     * Returns a hash code value for this object.
226     *
227     * @return a hash code value for this object.
228     */
229    public int hashCode()
230    {
231        return this.getName().hashCode() +
232            this.getType().hashCode() +
233            ( this.getValue() == null ? 0 : this.getValue().hashCode() );
234 
235    }
236 
237    /**
238     * Creates and returns a copy of this object. This method  performs a
239     * "shallow copy" of this object, not a "deep copy" operation.
240     *
241     * @return a clone of this instance.
242     */
243    public Object clone()
244    {
245        try
246        {
247            return super.clone();
248        }
249        catch ( final CloneNotSupportedException e )
250        {
251            throw new AssertionError( e );
252        }
253    }
254 
255    //------------------------------------------------------------------Object--
256}

[all classes][org.jdtaus.core.container]
EMMA 2.1.5320 (stable) (C) Vladimir Roubtsov