This commit was manufactured by cvs2svn to create branch
[official-gcc.git] / libjava / gnu / java / beans / decoder / Context.java
blob55746c8561ebabc75014d8b35efd550c408501d3
1 /* gnu.java.beans.decoder.Context
2 Copyright (C) 2004 Free Software Foundation, Inc.
4 This file is part of GNU Classpath.
6 GNU Classpath is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
11 GNU Classpath is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with GNU Classpath; see the file COPYING. If not, write to the
18 Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19 02111-1307 USA.
21 Linking this library statically or dynamically with other modules is
22 making a combined work based on this library. Thus, the terms and
23 conditions of the GNU General Public License cover the whole
24 combination.
26 As a special exception, the copyright holders of this library give you
27 permission to link this library with independent modules to produce an
28 executable, regardless of the license terms of these independent
29 modules, and to copy and distribute the resulting executable under
30 terms of your choice, provided that you also meet, for each linked
31 independent module, the terms and conditions of the license of that
32 module. An independent module is a module which is not derived from
33 or based on this library. If you modify this library, you may extend
34 this exception to your version of the library, but you are not
35 obligated to do so. If you do not wish to do so, delete this
36 exception statement from your version. */
38 package gnu.java.beans.decoder;
40 /** A Context is the environment for an object which is being assembler. If there
41 * are no errors each handler creates one Context.
42 * <p>Depending on the result of isStatement() a Context can be statement or an
43 * expression. An expression returns a value to the Context of its parent handler,
44 * a statement does not. Whenever a Context is a statement the parent handler's
45 * Context is informed about that through the {@link notifyStatement}-method.</p>
47 * @author Robert Schuster
49 interface Context
51 /** Adds a parameter object to the context. This method is used when
52 * sub-Contexts return their result.
54 * Some Contexts do not accept more than a certain amount of objects
55 * and throw an AssemblerException if the amount is exceeded.
57 * @param o The object added to this context.
59 void addParameterObject(Object o) throws AssemblyException;
61 /** Notifies that the next element is a statement. This can mean
62 * that an argument list is complete to be called.
65 void notifyStatement(Context outerContext) throws AssemblyException;
67 /** Notifies that the context ends and the returns the appropriate result
68 * object.
70 * @param outerContext
71 * @return
73 Object endContext(Context outerContext) throws AssemblyException;
75 /** Notifies that the assembly of a subcontext failed and returns
76 * whether this Context is affected in a way that it fails too.
78 * @return Whether the failure of a subcontext lets this context fail, too.
80 boolean subContextFailed();
82 /** Calls an appropriate indexed set method if it is available or
83 * throws an AssemblerException if that is not allowed on this Context.
85 * The behaviour of this method is equal to List.set(int, Object).
87 * @param index Index position to be set.
88 * @param o Object to be set at the given index position.
89 * @throws AssemblerException Indexed set is not allowed or otherwise failed.
91 void set(int index, Object o) throws AssemblyException;
93 /** Calls an appropriate indexed get method if it is available or
94 * throws an AssemblerException if that is not allowed on this Context.
96 * The behaviour of this method is equal to List.get(int).
98 * @param index Index position of the object return.
99 * @throws AssemblerException Indexed get is not allowed or otherwise failed.
101 Object get(int index) throws AssemblyException;
103 /** Returns the result which was calculated by calling endContext() or reportStatement().
104 * Its the handler's responsibility to care that any of these two methods was called.
106 * This is used by sub-Contexts to access this Context's result.
108 * @return
110 Object getResult();
112 /** Gives this Context a unique id. For convenience the id may be null which means
113 * that no id exists at all.
115 * @param id
117 void setId(String id);
119 /** Returns this Context's unique id or null if does not have such an id.
121 * @return This Context's id or null.
123 String getId();
125 /** Returns whether this Context is a statement (not returning result back
126 * to parent handler's Context) or not (= expression).
128 * @return
130 boolean isStatement();
132 /** Sets whether this Context is a statement or not.
134 * @param b
136 void setStatement(boolean b);