RE: View Loading and Caching

"Andy Zeneski" <[email protected]> Wed, 26 Feb 2003 17:06:12 -0500
Newsgroups gmane.comp.java.jpublish.devel
Message-ID <[email protected]>
One small change; I added a throws clause to the method declaration:
(full patch from latest CVS)

-Andy



Index: FreeMarkerViewRenderer.java
===================================================================
RCS file:
/cvsroot/jpublish/jpublish/src/org/jpublish/view/freemarker/FreeMarkerViewRe
nderer.java,v
retrieving revision 1.4
diff -u -r1.4 FreeMarkerViewRenderer.java
--- FreeMarkerViewRenderer.java	26 Feb 2003 21:06:15 -0000	1.4
+++ FreeMarkerViewRenderer.java	26 Feb 2003 22:05:15 -0000
@@ -129,8 +129,7 @@
     Writer out) throws IOException, ViewRenderException{
         try{
             Page page = (Page)context.get(JPublishContext.JPUBLISH_PAGE);
-            FreeMarkerViewContext viewContext =
-                new FreeMarkerViewContext(context);
+            Object viewContext = this.createTemplateContext(context, path);
             Template template = fmConfig.getTemplate(path,
page.getLocale());
             template.process(viewContext, out);
         } catch(IOException e){
@@ -154,6 +153,19 @@
     OutputStream out) throws IOException, ViewRenderException{
         render(context, path, new InputStreamReader(in),
             new OutputStreamWriter(out));
+    }
+
+    /** Create the 'root' context for the template engine
+
+        @param context The JPublishContext
+        @param path The path to the template
+        @return Object The 'root' template context
+    */
+    protected Object createTemplateContext(JPublishContext context, String
path)
+    throws ViewRenderException{
+        FreeMarkerViewContext viewContext =
+            new FreeMarkerViewContext(context);
+        return viewContext;
     }

     /** Load the configuration for the view.






===================================
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]]On Behalf Of Andy
> Zeneski
> Sent: Wednesday, February 26, 2003 4:58 PM
> To: Anthony Eden; jpublish-developer
> Subject: RE: [JPublish-developer] View Loading and Caching
>
>
>
> Anthony,
>
> Can I make one suggestion which would make extending view
> renderers easier,
> here is a patch which I made for the FreeMarkerViewHandler which could be
> used by the others too.
>
> With this patch, one could change the 'root' context for freemarker by
> overloading a single method, then the rest of the code wouldn't have to be
> maintained twice.
>
> Let me know what you think.
>
> -Andy
>
> Index: FreeMarkerViewRenderer.java
> ===================================================================
> RCS file:
> /cvsroot/jpublish/jpublish/src/org/jpublish/view/freemarker/FreeMa
> rkerViewRe
> nderer.java,v
> retrieving revision 1.4
> diff -u -r1.4 FreeMarkerViewRenderer.java
> --- FreeMarkerViewRenderer.java	26 Feb 2003 21:06:15 -0000	1.4
> +++ FreeMarkerViewRenderer.java	26 Feb 2003 21:56:00 -0000
> @@ -129,8 +129,7 @@
>      Writer out) throws IOException, ViewRenderException{
>          try{
>              Page page = (Page)context.get(JPublishContext.JPUBLISH_PAGE);
> -            FreeMarkerViewContext viewContext =
> -                new FreeMarkerViewContext(context);
> +            Object viewContext =
> this.createTemplateContext(context, path);
>              Template template = fmConfig.getTemplate(path,
> page.getLocale());
>              template.process(viewContext, out);
>          } catch(IOException e){
> @@ -154,6 +153,18 @@
>      OutputStream out) throws IOException, ViewRenderException{
>          render(context, path, new InputStreamReader(in),
>              new OutputStreamWriter(out));
> +    }
> +
> +    /** Create the 'root' context for the template engine
> +
> +        @param context The JPublishContext
> +        @param path The path to the template
> +        @return Object The 'root' template context
> +    */
> +    protected Object createTemplateContext(JPublishContext
> context, String
> path) {
> +        FreeMarkerViewContext viewContext =
> +            new FreeMarkerViewContext(context);
> +        return viewContext;
>      }
>
>      /** Load the configuration for the view.
>
> > -----Original Message-----
> > From: [email protected]
> > [mailto:[email protected]]On Behalf Of
> > Anthony Eden
> > Sent: Wednesday, February 26, 2003 4:23 PM
> > To: jpublish-developer
> > Subject: [JPublish-developer] View Loading and Caching
> >
> >
> > I just wanted to drop a note to the list to mention a new change
> > which was just added in to the CVS.  I have redesigned the view
> > system so that template engine caching of is now possible within
> > JPublish.  Prior to today the templates were reparsed every time
> > through the view engine.  With the new changes they should be
> > cached by the template engine if possible.
> >
> > Currently only the FreeMarker view does this (and it is not
> > completely tested), but I should have the Velocity view done
> > shortly (most of the work of writing a custom ResourceLoader is
> > done, I just need to get Velocity to use it).  I will also work
> > on the WebMacro implementation in the near future.
> >
> > As an interesting side note, developing this new feature has
> > actually given me a possible guide towards developing a unified
> > repository system so that a lot of redundant code could be
> > removed from JPublish (when dealing with loading stuff from the
> > file system/db/web/etc.)  I will post another message once I get
> > this worked out better.  It will probably not be until JPublish
> > 3.x though.
> >
> > Sincerely,
> > Anthony Eden
> >
> >
> >
> > -------------------------------------------------------
> > This SF.net email is sponsored by: Scholarships for Techies!
> > Can't afford IT training? All 2003 ictp students receive scholarships.
> > Get hands-on training in Microsoft, Cisco, Sun, Linux/UNIX, and more.
> > www.ictp.com/training/sourceforge.asp
> > _______________________________________________
> > Jpublish-developer mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/jpublish-developer
> >
>
>
>
>
> -------------------------------------------------------
> This SF.net email is sponsored by: Scholarships for Techies!
> Can't afford IT training? All 2003 ictp students receive scholarships.
> Get hands-on training in Microsoft, Cisco, Sun, Linux/UNIX, and more.
> www.ictp.com/training/sourceforge.asp
> _______________________________________________
> Jpublish-developer mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/jpublish-developer
>




-------------------------------------------------------
This SF.net email is sponsored by: Scholarships for Techies!
Can't afford IT training? All 2003 ictp students receive scholarships.
Get hands-on training in Microsoft, Cisco, Sun, Linux/UNIX, and more.
www.ictp.com/training/sourceforge.asp