KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > oracle > toplink > essentials > mappings > TypedAssociation


1 /*
2  * The contents of this file are subject to the terms
3  * of the Common Development and Distribution License
4  * (the "License"). You may not use this file except
5  * in compliance with the License.
6  *
7  * You can obtain a copy of the license at
8  * glassfish/bootstrap/legal/CDDLv1.0.txt or
9  * https://glassfish.dev.java.net/public/CDDLv1.0.html.
10  * See the License for the specific language governing
11  * permissions and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL
14  * HEADER in each file and include the License file at
15  * glassfish/bootstrap/legal/CDDLv1.0.txt. If applicable,
16  * add the following below this CDDL HEADER, with the
17  * fields enclosed by brackets "[]" replaced with your
18  * own identifying information: Portions Copyright [yyyy]
19  * [name of copyright owner]
20  */

21 // Copyright (c) 1998, 2005, Oracle. All rights reserved.
22
package oracle.toplink.essentials.mappings;
23
24 import oracle.toplink.essentials.descriptors.DescriptorEvent;
25
26 /**
27  * <p><b>Purpose</b>: Generic association object.
28  * This can be used to map hashtable/map containers where the key and value are non-typed primitives.
29  *
30  * @author James Sutherland
31  * @since TOPLink/Java 3.0
32  */

33 public class TypedAssociation extends Association {
34     protected Class JavaDoc keyType;
35     protected Class JavaDoc valueType;
36
37     /**
38      * Default constructor.
39      */

40     public TypedAssociation() {
41         super();
42     }
43
44     /**
45      * PUBLIC:
46      * Create an association.
47      */

48     public TypedAssociation(Object JavaDoc key, Object JavaDoc value) {
49         super(key, value);
50         if (key != null) {
51             this.keyType = key.getClass();
52         }
53         this.value = value;
54         if (value != null) {
55             this.valueType = value.getClass();
56         }
57     }
58
59     /**
60      * PUBLIC:
61      * Return the class of the key.
62      */

63     public Class JavaDoc getKeyType() {
64         return keyType;
65     }
66
67     /**
68      * PUBLIC:
69      * Return the class of the value.
70      */

71     public Class JavaDoc getValueType() {
72         return valueType;
73     }
74
75     /**
76      * INTERNAL:
77      * Handler for the descriptor post build event.
78      * Convert the key and values to their appropriate type.
79      */

80     public void postBuild(DescriptorEvent event) {
81         setKey(event.getSession().getDatasourceLogin().getDatasourcePlatform().getConversionManager().convertObject(getKey(), getKeyType()));
82         setValue(event.getSession().getDatasourceLogin().getDatasourcePlatform().getConversionManager().convertObject(getValue(), getValueType()));
83     }
84
85     /**
86      * PUBLIC:
87      * Set the class of the key.
88      */

89     public void setKeyType(Class JavaDoc keyType) {
90         this.keyType = keyType;
91     }
92
93     /**
94      * PUBLIC:
95      * Set the class of the value.
96      */

97     public void setValueType(Class JavaDoc valueType) {
98         this.valueType = valueType;
99     }
100 }
101
Popular Tags