View Javadoc

1   /*
2    * This file is part of Pease Plate Template Engine.
3    * 
4    * Pease Plate Template Engine is free software: you can redistribute
5    * it and/or modify it under the terms of the GNU Lesser General 
6    * Public License as published by the Free Software Foundation, 
7    * either version 3 of the License, or any later version.
8    * 
9    * Pease Plate Template Engine is distributed in the hope that it 
10   * will be useful, but WITHOUT ANY WARRANTY; without even the implied
11   * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12   * See the GNU Lesser General Public License for more details.
13   * 
14   * You should have received a copy of the GNU Lesser General Public 
15   * License along with Pease Plate Template Engine. If not, see 
16   * <http://www.gnu.org/licenses/>.
17   * 
18   * Copyright (c) 2008 Manfred HANTSCHEL
19   */
20  package org.peaseplate.internal;
21  
22  import org.peaseplate.Messages;
23  import org.peaseplate.RenderContext;
24  import org.peaseplate.internal.template.MacroReference;
25  
26  /**
27   * The context for building a template from chunks.
28   * 
29   * @author Manfred HANTSCHEL
30   */
31  public interface BuildContext extends RenderContext {
32  
33  	/**
34  	 * Pushes the working object to the stack
35  	 * 
36  	 * @param object the working object
37  	 */
38  	public void pushWorkingObject(Object object);
39  	
40  	/**
41  	 * Pops the working object from the stack
42  	 * 
43  	 * @return the working object
44  	 * @throws IllegalStateException if there is no working object on the stack
45  	 */
46  	public Object popWorkingObject() throws IllegalStateException;
47  	
48  	/**
49  	 * Gets the top most working object from the stack without popping it
50  	 * 
51  	 * @return the working object
52  	 * @throws IllegalStateException if there is no working object on the stack
53  	 */
54  	public Object getWorkingObject() throws IllegalStateException;
55  	
56  	/**
57  	 * Pushes the messages to the stack
58  	 * 
59  	 * @param messages the messages
60  	 */
61  	public void pushMessages(Messages messages);
62  	
63  	/**
64  	 * Pops the messages from the stack
65  	 * 
66  	 * @return the messages
67  	 * @throws IllegalStateException if there is no messages object on the stack
68  	 */
69  	public Messages popMessages() throws IllegalStateException;
70  	
71  	/**
72  	 * Returns the current messages object from the stack
73  	 * 
74  	 * @return the top most messages object
75  	 * @throws IllegalStateException if there is no messages object on the stack
76  	 */
77  	public Messages getMessages() throws IllegalStateException;
78  	
79  	/**
80  	 * Returns the macro reference with the specified name
81  	 * and the specified extension
82  	 * @param qualifiedName the qualifiedName of the macro
83  	 * @return the macro reference or null if not found
84  	 */
85  	public MacroReference getMacroReference(String qualifiedName);
86  	
87  	/**
88  	 * Sets the variable with the specified name
89  	 * @param name the name of the variable
90  	 * @param value the value of the variable
91  	 */
92  	public void setVariable(String name, Object value);
93  	
94  	/**
95  	 * Returns the variable with the specified name
96  	 * or null if not set
97  	 * @param name the name
98  	 * @return the variable or null if not set
99  	 */
100 	public Object getVariable(String name);
101 	
102 	/**
103 	 * Releases the variable with the specified name
104 	 * @param name the name of the variable
105 	 */
106 	public void releaseVariable(String name);
107 	
108 }