New issue 57 by louis...@rogers.com: Unbalanced section push and pop in the
Java implementation
http://code.google.com/p/json-template/issues/detail?id=57
When the data is missing for the template section, the
SectionStatement.java caused the exception in public Object
pushSection(String sectionName) of the file ScopedContext.java. It starts
happening for the second section of missing data.
Please see my fix bellow.
Regards,
Louis
///////////////////////////////////////////////////////////
public void execute(ScopedContext context, ITemplateRenderCallback
callback) {
// push a context first
Object cursorPosition = context
.pushSection(this.block.getSectionName());
if (!context.isEmptyContext(cursorPosition)) {
TemplateExecutor.execute(this.block.getStatements(), context,
callback);
//context.pop(); // Louis fix, remove this line
} else {
TemplateExecutor.execute(this.block.getStatements("or"), context,
callback);
}
context.pop(); // Louis fix, add this line
}
////////////////////////////////////////////////////////
Thanks, Louis, for pointing to issue source. But general problem is that
while processing 'or' statement stack top contains 'null' value. This value
remained after unsuccessful lookup for beginning of 'section' statement and
must be removed before executing 'or' section. So fix should looks like this
///////////////////////////////////////////////////////////
public void execute(ScopedContext context, ITemplateRenderCallback
callback) {
// push a context first
Object cursorPosition = context
.pushSection(this.block.getSectionName());
if (!context.isEmptyContext(cursorPosition)) {
TemplateExecutor.execute(this.block.getStatements(), context,
callback);
context.pop(); // leave as is
} else {
context.pop(); // add this line
TemplateExecutor.execute(this.block.getStatements("or"), context,
callback);
}
}
////////////////////////////////////////////////////////
Comment #3 on issue 57 by isungu...@issart.com: Unbalanced section push and
pop in the Java implementation
http://code.google.com/p/json-template/issues/detail?id=57
(No comment was entered for this change.)