MetaPropertyAccessor.java
01 /*
02  *  Copyright (c) 1995-2012, The University of Sheffield. See the file
03  *  COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
04  *
05  *  This file is part of GATE (see http://gate.ac.uk/), and is free
06  *  software, licenced under the GNU Library General Public License,
07  *  Version 2, June 1991 (in the distribution as file licence.html,
08  *  and also available at http://gate.ac.uk/gate/licence.html).
09  *
10  *  Eric Sword, 09/03/08
11  *
12  *  $Id$
13  */
14 
15 package gate.jape.constraint;
16 
17 import org.apache.log4j.Logger;
18 
19 /**
20  * Accessor which returns a particular property or meta-property of an
21  * annotation, such as length or string.
22  *
23  @author esword
24  */
25 public abstract class MetaPropertyAccessor implements AnnotationAccessor {
26 
27   private static final long serialVersionUID = 2736859945392088458L;
28 
29   protected static final Logger log = Logger.getLogger(MetaPropertyAccessor.class);
30 
31   public MetaPropertyAccessor() {
32     super();
33   }
34 
35   @Override
36   public int hashCode() {
37     return this.getClass().hashCode();
38   }
39 
40   @Override
41   public boolean equals(Object obj) {
42     if(obj == nullreturn false;
43     if(obj == thisreturn true;
44     if(!(this.getClass().equals(obj.getClass()))) return false;
45 
46     return true;
47   }
48 
49   @Override
50   public String toString() {
51     return this.getClass().getSimpleName();
52   }
53 
54   @Override
55   public void setKey(Object key) {
56     if(key != null && !key.equals(""))
57       log.warn(this.getClass().getName() " doesn't use key values.  Key was: " + key);
58   }
59 
60   /**
61    * Sub-classes should return the name of the meta-property which they implement.
62    */
63   @Override
64   public abstract Object getKey();
65 }