01: /*
02: * @(#)DefaultAttributeInfo.java
03: *
04: * Copyright (C) 2002-2003 Matt Albrecht
05: * groboclown@users.sourceforge.net
06: * http://groboutils.sourceforge.net
07: *
08: * Part of the GroboUtils package at:
09: * 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: private String name;
44: private String desc;
45: private Class[] types;
46:
47: public DefaultAttributeInfo(String n, String d, Class[] t) {
48: if (n == null) {
49: throw new IllegalArgumentException("no null arguments");
50: }
51: this .types = copyClasses(t);
52:
53: this .name = n;
54: this .desc = d;
55: }
56:
57: /**
58: * Returns the identifying name of this attribute.
59: */
60: public String getName() {
61: return this .name;
62: }
63:
64: /**
65: * Returns a human-readable description of this attribute.
66: */
67: public String getDescription() {
68: return this .desc;
69: }
70:
71: /**
72: * Returns a list of the acceptable types (baseclasses and
73: * interfaces) for the values stored with this attribute. Implementations
74: * should return a minimal but most descriptive set of classes
75: * (that is, only returning <tt>java.lang.Object</tt> is not descriptive;
76: * likewise if there are many known implementations of an inferface,
77: * only the interface need to be returned). This is a convenience method,
78: * and should not be relied upon to generate input values.
79: */
80: public Class[] getValueTypes() {
81: return copyClasses(this .types);
82: }
83:
84: private Class[] copyClasses(Class[] c) {
85: if (c == null) {
86: throw new IllegalArgumentException("no null arguments");
87: }
88: Class[] ret = new Class[c.length];
89: System.arraycopy(c, 0, ret, 0, c.length);
90: return ret;
91: }
92: }
|