1 /*
2 * Copyright (c) 2003 The Visigoth Software Society. All rights
3 * reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in
14 * the documentation and/or other materials provided with the
15 * distribution.
16 *
17 * 3. The end-user documentation included with the redistribution, if
18 * any, must include the following acknowledgement:
19 * "This product includes software developed by the
20 * Visigoth Software Society (http://www.visigoths.org/)."
21 * Alternately, this acknowledgement may appear in the software itself,
22 * if and wherever such third-party acknowledgements normally appear.
23 *
24 * 4. Neither the name "FreeMarker", "Visigoth", nor any of the names of the
25 * project contributors may be used to endorse or promote products derived
26 * from this software without prior written permission. For written
27 * permission, please contact visigoths@visigoths.org.
28 *
29 * 5. Products derived from this software may not be called "FreeMarker" or "Visigoth"
30 * nor may "FreeMarker" or "Visigoth" appear in their names
31 * without prior written permission of the Visigoth Software Society.
32 *
33 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
34 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
35 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
36 * DISCLAIMED. IN NO EVENT SHALL THE VISIGOTH SOFTWARE SOCIETY OR
37 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
38 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
39 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
40 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
41 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
42 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
43 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
44 * SUCH DAMAGE.
45 * ====================================================================
46 *
47 * This software consists of voluntary contributions made by many
48 * individuals on behalf of the Visigoth Software Society. For more
49 * information on the Visigoth Software Society, please see
50 * http://www.visigoths.org/
51 */
52
53 package freemarker.debug;
54
55 import java.rmi.Remote;
56 import java.rmi.RemoteException;
57 import java.util.Date;
58
59 import freemarker.template.TemplateModelException;
60
61 /**
62 * Represents the debugger-side mirror of a TemplateModel object, a Template
63 * object, or a Configuration object. The Environment objects are also represented
64 * by instances of this model, although not directly but through a separate
65 * subinterface {@link DebuggedEnvironment}. The interface is a union of
66 * almost all of FreeMarker template models with identical method signatures.
67 * For purposes of optimizing network traffic there are bulk retrieval methods
68 * for sequences and hashes, as well as a {@link #getModelTypes()} method that
69 * returns a bit mask of various <tt>TYPE_xxx</tt> constants flagging which
70 * template models are implemented by the mirrored object.
71 *
72 * @author Attila Szegedi
73 * @version $Id: DebugModel.java,v 1.2 2003/06/08 00:58:16 herbyderby Exp $
74 */
75 public interface DebugModel extends Remote
76 {
77 public static final int TYPE_SCALAR = 1;
78 public static final int TYPE_NUMBER = 2;
79 public static final int TYPE_DATE = 4;
80 public static final int TYPE_BOOLEAN = 8;
81 public static final int TYPE_SEQUENCE = 16;
82 public static final int TYPE_COLLECTION = 32;
83 public static final int TYPE_HASH = 64;
84 public static final int TYPE_HASH_EX = 128;
85 public static final int TYPE_METHOD = 256;
86 public static final int TYPE_METHOD_EX = 512;
87 public static final int TYPE_TRANSFORM = 1024;
88 public static final int TYPE_ENVIRONMENT = 2048;
89 public static final int TYPE_TEMPLATE = 4096;
90 public static final int TYPE_CONFIGURATION = 8192;
91
92 public String getAsString()
93 throws
94 TemplateModelException,
95 RemoteException;
96
97 public Number getAsNumber()
98 throws
99 TemplateModelException,
100 RemoteException;
101
102 public boolean getAsBoolean()
103 throws
104 TemplateModelException,
105 RemoteException;
106
107 public Date getAsDate()
108 throws
109 TemplateModelException,
110 RemoteException;
111
112 public int getDateType()
113 throws
114 TemplateModelException,
115 RemoteException;
116
117 public int size()
118 throws
119 TemplateModelException,
120 RemoteException;
121
122 public DebugModel get(int index)
123 throws
124 TemplateModelException,
125 RemoteException;
126
127 public DebugModel[] get(int fromIndex, int toIndex)
128 throws
129 TemplateModelException,
130 RemoteException;
131
132 public DebugModel get(String key)
133 throws
134 TemplateModelException,
135 RemoteException;
136
137 public DebugModel[] get(String[] keys)
138 throws
139 TemplateModelException,
140 RemoteException;
141
142 public DebugModel[] getCollection()
143 throws
144 TemplateModelException,
145 RemoteException;
146
147 public String[] keys()
148 throws
149 TemplateModelException,
150 RemoteException;
151
152 public int getModelTypes()
153 throws
154 RemoteException;
155 }