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.lang.command;
21  
22  import org.peaseplate.TemplateRuntimeException;
23  import org.peaseplate.internal.BuildContext;
24  import org.peaseplate.locator.TemplateLocator;
25  
26  public class PopCommand extends AbstractSingleParameterCommand {
27  
28  	public PopCommand(TemplateLocator locator, int line, int column, ICommand command) {
29  	    super(locator, line, column, command);
30      }
31  
32  	/**
33  	 * @see org.peaseplate.internal.lang.command.ICommand#call(BuildContext)
34  	 */
35  	public Object call(BuildContext context) throws TemplateRuntimeException {
36  		Object result = null;
37  		Object stackedObject = context.popWorkingObject();
38  		
39  		try {
40  			if (getCommand() != null) 
41  				result = callCommand(context);
42  			else
43  				result = context.getWorkingObject();
44  		}
45  		finally {
46  			context.pushWorkingObject(stackedObject);
47  		}
48  		
49  		return result;
50      }
51  
52  	/**
53  	 * @see java.lang.Object#toString()
54  	 */
55  	@Override
56  	public String toString() {
57  		StringBuilder builder = new StringBuilder("$pop");
58  		
59  		if (getCommand() != null)
60  			builder.append(".").append(getCommand());
61  		
62  		return builder.toString();
63  	}
64  	
65  }