]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.databoard/src/org/simantics/databoard/binding/reflection/ClassBinding.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.databoard / src / org / simantics / databoard / binding / reflection / ClassBinding.java
1 /*******************************************************************************\r
2  *  Copyright (c) 2010 Association for Decentralized Information Management in\r
3  *  Industry THTH ry.\r
4  *  All rights reserved. This program and the accompanying materials\r
5  *  are made available under the terms of the Eclipse Public License v1.0\r
6  *  which accompanies this distribution, and is available at\r
7  *  http://www.eclipse.org/legal/epl-v10.html\r
8  *\r
9  *  Contributors:\r
10  *      VTT Technical Research Centre of Finland - initial API and implementation\r
11  *******************************************************************************/\r
12 package org.simantics.databoard.binding.reflection;\r
13 \r
14 import org.simantics.databoard.binding.RecordBinding;\r
15 import org.simantics.databoard.binding.error.BindingConstructionException;\r
16 \r
17 /**\r
18  * RecordBinding that represents a class\r
19  */\r
20 public abstract class ClassBinding extends RecordBinding {\r
21 \r
22         public final ClassInfo ci;\r
23 \r
24         /**\r
25          * Create binding for a class. \r
26          * \r
27          * @param ci\r
28          * @throws BindingConstructionException\r
29          */\r
30         public ClassBinding(ClassInfo ci)\r
31         {\r
32                 this.ci = ci;           \r
33         }\r
34 \r
35         /**\r
36          * Create binding for a class. \r
37          * \r
38          * @param clazz\r
39          * @throws BindingConstructionException\r
40          */\r
41         public ClassBinding(Class<?> clazz) throws BindingConstructionException\r
42         {\r
43                 this( ClassInfo.getInfo(clazz) );\r
44         }\r
45         \r
46         public Class<?> getClazz()\r
47         {\r
48                 return ci.clazz;\r
49         }\r
50         \r
51         @Override\r
52         protected boolean baseEquals(Object obj) {\r
53                 return super.baseEquals(obj) && ((ClassBinding)obj).ci.equals(ci);\r
54         }\r
55 \r
56         @Override\r
57         public int baseHashCode() {\r
58                 return super.baseHashCode() + 17 * ci.hashCode();\r
59         }\r
60 }\r