AnnotationAccessor.java
01 /*
02  *  AnnotationAccessor - transducer class
03  *
04  *  Copyright (c) 1995-2012, The University of Sheffield. See the file
05  *  COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
06  *
07  *  This file is part of GATE (see http://gate.ac.uk/), and is free
08  *  software, licenced under the GNU Library General Public License,
09  *  Version 2, June 1991 (in the distribution as file licence.html,
10  *  and also available at http://gate.ac.uk/gate/licence.html).
11  *
12  *  Eric Sword, 03/09/08
13  *
14  *  $Id$
15  */
16 package gate.jape.constraint;
17 
18 import gate.Annotation;
19 import gate.AnnotationSet;
20 import gate.Document;
21 
22 import java.io.Serializable;
23 
24 /**
25  * Provides way to access some property of an {@link Annotation} or
26  * otherwise get a value associated with an annotation (such as the
27  * length of text it spans or the text itself if the associated document
28  * is available).
29  *
30  @author esword
31  */
32 public interface AnnotationAccessor extends Serializable {
33 
34   /**
35    * Store a key or name for the accessor to reference when it attempts
36    * to obtain the value of an object. Different implementors will have
37    * different uses for the key. For example, it could be the name of
38    * the feature that should be returned. It could also be the name of a
39    * property to invoke on the Annotation object.
40    *
41    @param key
42    */
43   public void setKey(Object key);
44 
45   /**
46    * Return the key for this accessor.
47    */
48   public Object getKey();
49 
50   /**
51    * Obtain the value of some part of the given annotation
52    *
53    @param annot
54    @param context optional parameter with information about the
55    *          context in which the annotation has meaning. Normally this
56    *          would be a {@link Document}. Not all accessors will
57    *          require the context information so it may be null. Some
58    *          accessor implementations may throw an exception without
59    *          it.
60    */
61   public Object getValue(Annotation annot, AnnotationSet context);
62 }