Source code: com/virtuosotechnologies/lib/base/UniqueClassConstrainedKey.java
1 /*
2 ================================================================================
3
4 FILE: BasicClassConstrainedKey.java
5
6 PROJECT:
7
8 Virtuoso Utilities
9
10 CONTENTS:
11
12 A ConstrainedKey that uses class constraints
13
14 PROGRAMMERS:
15
16 Daniel Azuma (DA) <dazuma@kagi.com>
17
18 COPYRIGHT:
19
20 Copyright (C) 2003 Daniel Azuma (dazuma@kagi.com)
21
22 This program is free software; you can redistribute it and/or
23 modify it under the terms of the GNU General Public License as
24 published by the Free Software Foundation; either version 2
25 of the License, or (at your option) any later version.
26
27 This program is distributed in the hope that it will be useful,
28 but WITHOUT ANY WARRANTY; without even the implied warranty of
29 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30 GNU General Public License for more details.
31
32 You should have received a copy of the GNU General Public
33 License along with this program; if not, write to
34 Free Software Foundation, Inc.
35 59 Temple Place, Suite 330
36 Boston, MA 02111-1307 USA
37
38 ================================================================================
39 */
40
41
42 package com.virtuosotechnologies.lib.base;
43
44
45 /**
46 * A UniqueObject base class implementing ClassConstrainedKey
47 */
48 public class UniqueClassConstrainedKey
49 extends UniqueObject
50 implements ClassConstrainedKey
51 {
52 // Class guarantee
53 private Class guarantee_;
54
55
56 /**
57 * Constructor
58 *
59 * @param guarantee the guaranteed class representing the constraint
60 */
61 public UniqueClassConstrainedKey(
62 Class guarantee)
63 {
64 this(null, guarantee);
65 }
66
67
68 /**
69 * Constructor
70 *
71 * @param description the description string returned by toString
72 * @param guarantee the guaranteed class representing the constraint
73 */
74 public UniqueClassConstrainedKey(
75 String description,
76 Class guarantee)
77 {
78 super(description);
79 if (guarantee == null)
80 {
81 throw new NullPointerException();
82 }
83 guarantee_ = guarantee;
84 }
85
86
87 /**
88 * Get the class of the constraint.
89 *
90 * @return a Class that must be assignable from all legal values
91 */
92 public Class getConstrainingClass()
93 {
94 return guarantee_;
95 }
96
97
98 /**
99 * Returns true if the given object matches the constraint.
100 *
101 * @param obj object to test
102 * @return true if the object matches the constraint
103 */
104 public boolean matchesConstraint(
105 Object obj)
106 {
107 if (obj == null)
108 {
109 return true;
110 }
111 return guarantee_.isAssignableFrom(obj.getClass());
112 }
113 }