KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > xml > schema > model > SchemaComponentReference


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.modules.xml.schema.model;
21
22 import java.util.*;
23
24 /**
25  *
26  * @author Todd Fast, todd.fast@sun.com
27  */

28 public class SchemaComponentReference<T extends SchemaComponent> extends Object JavaDoc
29 {
30     /**
31      *
32      *
33      */

34     private SchemaComponentReference(T component)
35     {
36         super();
37
38         if (component==null)
39         {
40             throw new IllegalArgumentException JavaDoc(
41                 "Parameter \"component\" cannot be null");
42         }
43
44         this.component=component;
45     }
46
47
48     /**
49      *
50      *
51      */

52     public boolean equals(Object JavaDoc other)
53     {
54         if (!(other instanceof SchemaComponentReference))
55             return false;
56
57         return this.get()==((SchemaComponentReference)other).get();
58     }
59
60
61     /**
62      *
63      *
64      */

65     public int hashCode()
66     {
67         // TODO: What's a reasonable hash algorithm here to avoid collision
68
// with the hashCode of the referenced object? We want the reference's
69
// hashcode to be based on the referent, but different.
70
return get().hashCode();
71     }
72
73
74     /**
75      *
76      *
77      */

78     public String JavaDoc toString()
79     {
80         return getClass().getName()+"<"+get().getClass().getName()+">";
81     }
82
83     
84     /**
85      *
86      *
87      */

88     public T get()
89     {
90         return component;
91     }
92
93
94     /**
95      *
96      *
97      */

98     public static <C extends SchemaComponent>
99         SchemaComponentReference<C> create(C component)
100     {
101         SchemaComponentReference<C> reference=
102             new SchemaComponentReference<C>(component);
103
104         return reference;
105     }
106
107
108
109
110     ////////////////////////////////////////////////////////////////////////////
111
// Instance members
112
////////////////////////////////////////////////////////////////////////////
113

114     private T component;
115 }
116
Popular Tags