KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sourceforge > groboutils > pmti > v1 > defimpl > DefaultAttributeInfo


1 /*
2  * @(#)DefaultAttributeInfo.java
3  *
4  * Copyright (C) 2002-2003 Matt Albrecht
5  * groboclown@users.sourceforge.net
6  * http://groboutils.sourceforge.net
7  *
8  * Part of the GroboUtils package at:
9  * http://groboutils.sourceforge.net
10  *
11  * Permission is hereby granted, free of charge, to any person obtaining a
12  * copy of this software and associated documentation files (the "Software"),
13  * to deal in the Software without restriction, including without limitation
14  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
15  * and/or sell copies of the Software, and to permit persons to whom the
16  * Software is furnished to do so, subject to the following conditions:
17  *
18  * The above copyright notice and this permission notice shall be included in
19  * all copies or substantial portions of the Software.
20  *
21  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
24  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
27  * DEALINGS IN THE SOFTWARE.
28  */

29 package net.sourceforge.groboutils.pmti.v1.defimpl;
30
31 import net.sourceforge.groboutils.pmti.v1.IAttributeInfo;
32
33 /**
34  * Describes a particular attribute. Note that since attributes may be
35  * shared among issue types, this cannot describe the particulars of the
36  * real attribute's type.
37  *
38  * @author Matt Albrecht <a HREF="mailto:groboclown@users.sourceforge.net">groboclown@users.sourceforge.net</a>
39  * @version $Date: 2003/02/10 22:51:58 $
40  * @since July 12, 2002
41  */

42 public class DefaultAttributeInfo implements IAttributeInfo
43 {
44     private String JavaDoc name;
45     private String JavaDoc desc;
46     private Class JavaDoc[] types;
47     
48     
49     public DefaultAttributeInfo( String JavaDoc n, String JavaDoc d, Class JavaDoc[] t )
50     {
51         if (n == null)
52         {
53             throw new IllegalArgumentException JavaDoc("no null arguments");
54         }
55         this.types = copyClasses( t );
56         
57         this.name = n;
58         this.desc = d;
59     }
60     
61     
62     
63     /**
64      * Returns the identifying name of this attribute.
65      */

66     public String JavaDoc getName()
67     {
68         return this.name;
69     }
70     
71     
72     /**
73      * Returns a human-readable description of this attribute.
74      */

75     public String JavaDoc getDescription()
76     {
77         return this.desc;
78     }
79     
80     
81     /**
82      * Returns a list of the acceptable types (baseclasses and
83      * interfaces) for the values stored with this attribute. Implementations
84      * should return a minimal but most descriptive set of classes
85      * (that is, only returning <tt>java.lang.Object</tt> is not descriptive;
86      * likewise if there are many known implementations of an inferface,
87      * only the interface need to be returned). This is a convenience method,
88      * and should not be relied upon to generate input values.
89      */

90     public Class JavaDoc[] getValueTypes()
91     {
92         return copyClasses( this.types );
93     }
94     
95     
96     private Class JavaDoc[] copyClasses( Class JavaDoc[] c )
97     {
98         if (c == null)
99         {
100             throw new IllegalArgumentException JavaDoc("no null arguments");
101         }
102         Class JavaDoc[] ret = new Class JavaDoc[ c.length ];
103         System.arraycopy( c, 0, ret, 0, c.length );
104         return ret;
105     }
106 }
107
108
Popular Tags