From b90efc74fbb201a28e3a42bebc20269f6e3c765f Mon Sep 17 00:00:00 2001 From: rjy7 Date: Thu, 29 Jul 2010 17:39:56 +0000 Subject: [PATCH] NIHVIVO-564 Added infrastructure for dumping template model objects. --- .../vitro/webapp/web/directives/DumpDirective.java | 10 +++++++++- .../webapp/web/templatemodels/BaseTemplateModel.java | 4 ++++ .../vitro/webapp/web/templatemodels/files/Files.java | 4 ++++ webapp/web/templates/freemarker/body/test.ftl | 9 +++++---- 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/directives/DumpDirective.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/directives/DumpDirective.java index 6088be00c..df490c66e 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/directives/DumpDirective.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/directives/DumpDirective.java @@ -13,6 +13,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.FreemarkerHelper; +import edu.cornell.mannlib.vitro.webapp.web.templatemodels.BaseTemplateModel; import freemarker.core.Environment; import freemarker.template.Configuration; import freemarker.template.SimpleScalar; @@ -26,6 +27,7 @@ import freemarker.template.TemplateModelException; import freemarker.template.TemplateNumberModel; import freemarker.template.TemplateScalarModel; import freemarker.template.TemplateSequenceModel; +import freemarker.template.utility.DeepUnwrap; public class DumpDirective extends BaseTemplateDirectiveModel { @@ -77,8 +79,14 @@ public class DumpDirective extends BaseTemplateDirectiveModel { // Just use this for now. Handles nested collections. String value = val.toString(); String type = null; + Object unwrappedModel = DeepUnwrap.permissiveUnwrap(val); - if (val instanceof TemplateScalarModel) { + // This case must precede the TemplateScalarModel case, because + // val is an instance of StringModel. + if (unwrappedModel instanceof BaseTemplateModel) { + type = unwrappedModel.getClass().getName(); + value = ((BaseTemplateModel)unwrappedModel).dump(); + } else if (val instanceof TemplateScalarModel) { type = "string"; } else if (val instanceof TemplateDateModel) { type = "date"; diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/BaseTemplateModel.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/BaseTemplateModel.java index 82c7f13de..fd7d54126 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/BaseTemplateModel.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/BaseTemplateModel.java @@ -33,6 +33,10 @@ public abstract class BaseTemplateModel { public static void setServletContext(ServletContext context) { BaseTemplateModel.servletContext = context; } + + public String dump() { + return "I'm a BaseTemplateModel object"; + } /* * public static List wrapList(List list, Class cl) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/files/Files.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/files/Files.java index 7d47887c8..6bdc136f0 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/files/Files.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/files/Files.java @@ -54,6 +54,10 @@ public abstract class Files extends BaseTemplateModel { return tags; } + public String dump() { + return list.toString(); + } + protected abstract String getThemeSubDir(); protected abstract String getTag(String url); diff --git a/webapp/web/templates/freemarker/body/test.ftl b/webapp/web/templates/freemarker/body/test.ftl index 8c060775d..52ff132f8 100644 --- a/webapp/web/templates/freemarker/body/test.ftl +++ b/webapp/web/templates/freemarker/body/test.ftl @@ -51,11 +51,12 @@ <@dump var="urls" /> <@dump var="fruit" /> <@dump var="trueStatement" /> -<@dump var="falseStatement" /> --> +<@dump var="falseStatement" /> +<@dump var="zoo1" /> --> -<@dump var="zoo1" /> -<@dumpDataModel /> ${stylesheets.addFromTheme("/sstest.css", "/sstest2.css")} ${scripts.addFromTheme("/jstest.js")} -${scripts.add("/js/script1.js", "/js/script2.js", "/js/script3.js")} \ No newline at end of file +${scripts.add("/js/script1.js", "/js/script2.js", "/js/script3.js")} + +<@dumpDataModel />