Hi team,
Thanks for adding wicket-velocity. One suggestion though, can we
make VelocityPanel abstract to let the user return the
IStringResourceStream instead of passing it in the constructor?
That would be nicer.
That would also allow to simplify the example, currently building
the template inline with StringBuffer.
This is an incompatible change, but nobody depends on it already,
right?
WDYT? See patch attached.
--
Jean-Baptiste Quenot
aka John Banana Qwerty
http://caraldi.com/jbq/
Index:
jdk-1.4/wicket-velocity/src/test/java/wicket/contrib/markup/html/velocity/VelocityPage.java
===================================================================
---
jdk-1.4/wicket-velocity/src/test/java/wicket/contrib/markup/html/velocity/VelocityPage.java
(revision 535895)
+++
jdk-1.4/wicket-velocity/src/test/java/wicket/contrib/markup/html/velocity/VelocityPage.java
(working copy)
@@ -20,6 +20,7 @@
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.model.Model;
+import org.apache.wicket.util.resource.IStringResourceStream;
import org.apache.wicket.util.resource.UrlResourceStream;
import org.apache.wicket.velocity.markup.html.VelocityPanel;
@@ -39,6 +40,12 @@
{
HashMap values = new HashMap();
values.put("message", TEST_STRING);
- add(new VelocityPanel("velocityPanel", new
UrlResourceStream(this.getClass().getResource("test.html")), new
Model(values)));
+ add(new VelocityPanel("velocityPanel", new Model(values))
+ {
+ protected IStringResourceStream getTemplateResource()
+ {
+ return new
UrlResourceStream(this.getClass().getResource("test.html"));
+ }
+ });
}
}
Index:
jdk-1.4/wicket-velocity/src/test/java/wicket/contrib/markup/html/velocity/VelocityWithMarkupParsingPage.java
===================================================================
---
jdk-1.4/wicket-velocity/src/test/java/wicket/contrib/markup/html/velocity/VelocityWithMarkupParsingPage.java
(revision 535895)
+++
jdk-1.4/wicket-velocity/src/test/java/wicket/contrib/markup/html/velocity/VelocityWithMarkupParsingPage.java
(working copy)
@@ -21,6 +21,7 @@
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.Model;
+import org.apache.wicket.util.resource.IStringResourceStream;
import org.apache.wicket.util.resource.UrlResourceStream;
import org.apache.wicket.velocity.markup.html.VelocityPanel;
@@ -39,7 +40,14 @@
HashMap values = new HashMap();
values.put("labelId", "message");
VelocityPanel velocityPanel = new VelocityPanel("velocityPanel",
- new
UrlResourceStream(this.getClass().getResource("testWithMarkup.html")), new
Model(values));
+ new Model(values))
+ {
+ protected IStringResourceStream getTemplateResource()
+ {
+ return new
UrlResourceStream(this.getClass().getResource(
+ "testWithMarkup.html"));
+ }
+ };
velocityPanel.setParseGeneratedMarkup(true);
velocityPanel.add(new Label("message",
VelocityPage.TEST_STRING));
add(velocityPanel);
Index:
jdk-1.4/wicket-velocity/src/main/java/org/apache/wicket/velocity/markup/html/VelocityPanel.java
===================================================================
---
jdk-1.4/wicket-velocity/src/main/java/org/apache/wicket/velocity/markup/html/VelocityPanel.java
(revision 535895)
+++
jdk-1.4/wicket-velocity/src/main/java/org/apache/wicket/velocity/markup/html/VelocityPanel.java
(working copy)
@@ -56,7 +56,7 @@
* <code>VelocityPanel</code>.
* </p>
*/
-public final class VelocityPanel extends Panel
+public abstract class VelocityPanel extends Panel
{
/** Whether to escape HTML characters. The default value is false. */
private boolean escapeHtml = false;
@@ -64,9 +64,6 @@
/** Whether to parse the resulting Wicket markup */
private boolean parseGeneratedMarkup = false;
- /** Velocity template resource */
- private final IStringResourceStream templateResource;
-
/**
* Whether any velocity exception should be trapped and displayed on the
* panel (false) or thrown up to be handled by the exception mechanism
of
@@ -92,11 +89,9 @@
* @param model
* MapModel with variables that can be substituted by
Velocity
*/
- public VelocityPanel(final String name, final IStringResourceStream
templateResource,
- final Model model)
+ public VelocityPanel(final String name, final Model model)
{
super(name, model);
- this.templateResource = templateResource;
}
/**
@@ -182,7 +177,7 @@
*/
private Reader getTemplateReader()
{
- final String template = templateResource.asString();
+ final String template = getTemplateResource().asString();
if (template != null)
{
return new StringReader(template);
@@ -191,6 +186,11 @@
}
/**
+ * Returns the template resource passed to the constructor
+ */
+ protected abstract IStringResourceStream getTemplateResource();
+
+ /**
* Either print or rethrow the throwable.
*
* @param exception
@@ -274,8 +274,7 @@
catch (ResourceStreamNotFoundException
e)
{
throw new RuntimeException(
- "Could not
parse resulting markup from '"
-
+ templateResource + "'", e);
+ "Could not
parse resulting markup", e);
}
renderAll(new MarkupStream(markup));
}
Index:
jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/velocity/TemplatePage.java
===================================================================
---
jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/velocity/TemplatePage.java
(revision 535895)
+++
jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/velocity/TemplatePage.java
(working copy)
@@ -27,7 +27,10 @@
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.util.resource.StringBufferResourceStream;
+import org.apache.wicket.util.resource.IResourceStream;
+import org.apache.wicket.util.resource.IStringResourceStream;
+import org.apache.wicket.util.resource.PackageResourceStream;
+import org.apache.wicket.util.resource.StringResourceStream;
import org.apache.wicket.velocity.markup.html.VelocityPanel;
/**
@@ -66,24 +69,11 @@
}
/** the current template contents. */
- private StringBufferResourceStream template = new
StringBufferResourceStream();
+ private IStringResourceStream template = new
PackageResourceStream(DynamicPage.class, "persons.vm");
+
/** context to be used by the template. */
private final Model templateContext;
- {
- template.append("<fieldset>\n");
- template.append(" <legend>persons</legend>\n");
- template.append(" <ul>\n");
- template.append(" #foreach( $person in $persons )\n");
- template.append(" <li>\n");
- template.append(" ${person.lastName},\n");
- template.append(" ${person.firstName}\n");
- template.append(" </li>\n");
- template.append(" #end\n");
- template.append(" </ul>\n");
- template.append("</fieldset>\n");
- }
-
/**
* Constructor
*
@@ -97,7 +87,13 @@
templateContext = Model.valueOf(map);
add(new TemplateForm("templateForm"));
- add(new VelocityPanel("templatePanel", template,
templateContext));
+ add(new VelocityPanel("templatePanel", templateContext) {
+ @Override
+ protected IStringResourceStream getTemplateResource()
+ {
+ return template;
+ }
+ });
add(new FeedbackPanel("feedback"));
}
@@ -119,7 +115,6 @@
*/
public final void setTemplate(String template)
{
- this.template.clear();
- this.template.append(template);
+ this.template = new StringResourceStream(template);
}
}
\ No newline at end of file
Index:
jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/velocity/persons.vm
===================================================================
---
jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/velocity/persons.vm
(revision 0)
+++
jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/velocity/persons.vm
(revision 0)
@@ -0,0 +1,11 @@
+<fieldset>
+ <legend>persons</legend>
+ <ul>
+ #foreach( $person in $persons )
+ <li>
+ ${person.lastName},
+ ${person.firstName}
+ </li>
+ #end
+ </ul>
+</fieldset>