/* vim: set ts=2 et sw=2 cindent fo=qroca: */
package com.globant.katari.core.web;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.globant.katari.core.application.JsonRepresentation;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.TemplateModel;
import freemarker.template.TemplateModelException;
/** A Freemarker JsonRepresentation wrapper to access the Json objects from
* freemarker.
*
* TODO: See if we should call setSimpleMapWrapper(true) to support non-string
* keys in freemarker.
*/
public final class JsonRepresentationWrapper extends DefaultObjectWrapper {
/** The class logger.
*/
private static Logger log = LoggerFactory.getLogger(
JsonRepresentationWrapper.class);
/** {@inheritDoc}
*/
public TemplateModel wrap(final Object object)
throws TemplateModelException {
log.trace("Entering wrap");
TemplateModel model;
if (object instanceof JsonRepresentation) {
model = new JsonRepresentationModel((JsonRepresentation) object, this);
log.trace("Leaving wrap with JsonRepresentationWrapper");
} else {
model = super.wrap(object);
log.trace("Leaving wrap with a default wrapper");
}
return model;
}
}