jvanzyl     02/01/18 19:23:27

  Modified:    src/java/org/apache/turbine/pipeline
                        DefaultACLCreationValve.java
                        DefaultActionValve.java DefaultLoginValve.java
                        DefaultResolver.java
                        DefaultSessionTimeoutValve.java
                        DefaultSessionValidationValve.java
                        DefaultTargetValve.java DirectRenderer.java
                        DirectTargetValve.java Renderer.java
               src/rttest/testapp/templates/app/layouts Default.vm
  Log:
  - Applying patch submitted by James Taylor that allows the renderer
    to be used in templates with the $data parameter which is definitely
    better as a designer wouldn't really know what $data is and it's
    not require as the renderer has access to Rundata before being placed
    in the context. A very good improvement.
  
    NOTE: this change will break templates using
  
    $renderer.render(type, $data, $template)
  
    and will have to be changed to
  
    $renderer.render(type, $template);
  
  Revision  Changes    Path
  1.2       +2 -2      
jakarta-turbine-3/src/java/org/apache/turbine/pipeline/DefaultACLCreationValve.java
  
  Index: DefaultACLCreationValve.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-3/src/java/org/apache/turbine/pipeline/DefaultACLCreationValve.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefaultACLCreationValve.java      18 Jan 2002 22:33:55 -0000      1.1
  +++ DefaultACLCreationValve.java      19 Jan 2002 03:23:26 -0000      1.2
  @@ -74,13 +74,13 @@
    * pipeline (from the Turbine 2.x series).
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Jason van Zyl</a>
  - * @version $Id: DefaultACLCreationValve.java,v 1.1 2002/01/18 22:33:55 jvanzyl Exp 
$
  + * @version $Id: DefaultACLCreationValve.java,v 1.2 2002/01/19 03:23:26 jvanzyl Exp 
$
    */
   public class DefaultACLCreationValve
       implements Valve, TurbineConstants
   {
       private static final Category log =
  -        Category.getInstance( DefaultACLCreationValve.class );
  +        Category.getInstance(DefaultACLCreationValve.class);
           
       protected AccessController accessController = null;
   
  
  
  
  1.6       +2 -2      
jakarta-turbine-3/src/java/org/apache/turbine/pipeline/DefaultActionValve.java
  
  Index: DefaultActionValve.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-3/src/java/org/apache/turbine/pipeline/DefaultActionValve.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- DefaultActionValve.java   18 Jan 2002 22:33:55 -0000      1.5
  +++ DefaultActionValve.java   19 Jan 2002 03:23:26 -0000      1.6
  @@ -80,13 +80,13 @@
    * @author <a href="mailto:[EMAIL PROTECTED]";>Jon S. Stevens</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Mike Haberman</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Daniel Rall</a>
  - * @version $Id: DefaultActionValve.java,v 1.5 2002/01/18 22:33:55 jvanzyl Exp $
  + * @version $Id: DefaultActionValve.java,v 1.6 2002/01/19 03:23:26 jvanzyl Exp $
    */
   public class DefaultActionValve
       implements Valve, TurbineConstants
   {
       private static final Category log =
  -        Category.getInstance( DefaultActionValve.class );
  +        Category.getInstance(DefaultActionValve.class);
           
       /**
        * Here we can setup objects that are thread safe and can be
  
  
  
  1.2       +2 -2      
jakarta-turbine-3/src/java/org/apache/turbine/pipeline/DefaultLoginValve.java
  
  Index: DefaultLoginValve.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-3/src/java/org/apache/turbine/pipeline/DefaultLoginValve.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefaultLoginValve.java    18 Jan 2002 22:33:55 -0000      1.1
  +++ DefaultLoginValve.java    19 Jan 2002 03:23:26 -0000      1.2
  @@ -76,13 +76,13 @@
    * cycle.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Jason van Zyl</a>
  - * @version $Id: DefaultLoginValve.java,v 1.1 2002/01/18 22:33:55 jvanzyl Exp $
  + * @version $Id: DefaultLoginValve.java,v 1.2 2002/01/19 03:23:26 jvanzyl Exp $
    */
   public class DefaultLoginValve
       implements Valve, TurbineConstants
   {
       private static final Category log =
  -        Category.getInstance( DefaultLoginValve.class );
  +        Category.getInstance(DefaultLoginValve.class);
           
       /**
        * Here we can setup objects that are thread safe and can be
  
  
  
  1.12      +2 -2      
jakarta-turbine-3/src/java/org/apache/turbine/pipeline/DefaultResolver.java
  
  Index: DefaultResolver.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-3/src/java/org/apache/turbine/pipeline/DefaultResolver.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- DefaultResolver.java      18 Jan 2002 03:33:58 -0000      1.11
  +++ DefaultResolver.java      19 Jan 2002 03:23:26 -0000      1.12
  @@ -134,13 +134,13 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Jason van Zyl</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Mike Haberman</a>
  - * @version $Id: DefaultResolver.java,v 1.11 2002/01/18 03:33:58 jvanzyl Exp $
  + * @version $Id: DefaultResolver.java,v 1.12 2002/01/19 03:23:26 jvanzyl Exp $
    */
   public class DefaultResolver
       implements Resolver, TurbineConstants
   {
       private static final Category log = 
  -        Category.getInstance( DefaultResolver.class );
  +        Category.getInstance(DefaultResolver.class);
       
       protected String defaultTemplate;
   
  
  
  
  1.2       +2 -2      
jakarta-turbine-3/src/java/org/apache/turbine/pipeline/DefaultSessionTimeoutValve.java
  
  Index: DefaultSessionTimeoutValve.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-3/src/java/org/apache/turbine/pipeline/DefaultSessionTimeoutValve.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefaultSessionTimeoutValve.java   18 Jan 2002 22:33:55 -0000      1.1
  +++ DefaultSessionTimeoutValve.java   19 Jan 2002 03:23:26 -0000      1.2
  @@ -71,13 +71,13 @@
    * pipeline (from the Turbine 2.x series).
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Jason van Zyl</a>
  - * @version $Id: DefaultSessionTimeoutValve.java,v 1.1 2002/01/18 22:33:55 jvanzyl 
Exp $
  + * @version $Id: DefaultSessionTimeoutValve.java,v 1.2 2002/01/19 03:23:26 jvanzyl 
Exp $
    */
   public class DefaultSessionTimeoutValve
       implements Valve, TurbineConstants
   {
       private static final Category log =
  -        Category.getInstance( DefaultSessionTimeoutValve.class );
  +        Category.getInstance(DefaultSessionTimeoutValve.class);
           
       /**
        * The default session timeout.
  
  
  
  1.2       +2 -2      
jakarta-turbine-3/src/java/org/apache/turbine/pipeline/DefaultSessionValidationValve.java
  
  Index: DefaultSessionValidationValve.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-3/src/java/org/apache/turbine/pipeline/DefaultSessionValidationValve.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefaultSessionValidationValve.java        18 Jan 2002 22:33:55 -0000      1.1
  +++ DefaultSessionValidationValve.java        19 Jan 2002 03:23:26 -0000      1.2
  @@ -76,13 +76,13 @@
    * pipeline (from the Turbine 2.x series).
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Jason van Zyl</a>
  - * @version $Id: DefaultSessionValidationValve.java,v 1.1 2002/01/18 22:33:55 
jvanzyl Exp $
  + * @version $Id: DefaultSessionValidationValve.java,v 1.2 2002/01/19 03:23:26 
jvanzyl Exp $
    */
   public class DefaultSessionValidationValve
       implements Valve, TurbineConstants
   {
       private static final Category log =
  -        Category.getInstance( DefaultSessionValidationValve.class );
  +        Category.getInstance(DefaultSessionValidationValve.class);
           
       protected SessionValidator sessionValidator = null;
   
  
  
  
  1.7       +6 -6      
jakarta-turbine-3/src/java/org/apache/turbine/pipeline/DefaultTargetValve.java
  
  Index: DefaultTargetValve.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-3/src/java/org/apache/turbine/pipeline/DefaultTargetValve.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- DefaultTargetValve.java   18 Jan 2002 15:53:42 -0000      1.6
  +++ DefaultTargetValve.java   19 Jan 2002 03:23:26 -0000      1.7
  @@ -81,13 +81,13 @@
    * @author <a href="mailto:[EMAIL PROTECTED]";>Daniel Rall</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Mike Haberman</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>James Taylor</a>
  - * @version $Id: DefaultTargetValve.java,v 1.6 2002/01/18 15:53:42 jvanzyl Exp $
  + * @version $Id: DefaultTargetValve.java,v 1.7 2002/01/19 03:23:26 jvanzyl Exp $
    */
   public class DefaultTargetValve
       implements Valve
   {
       private static final Category log = 
  -         Category.getInstance( DefaultTargetValve.class );
  +         Category.getInstance(DefaultTargetValve.class);
   
       protected static final String DEFAULT_MODULE_TYPE = "screens";
   
  @@ -170,15 +170,15 @@
               log.debug( "Rendering target " + target );
           }
   
  -        Renderer r = new Renderer();
  +        Renderer r = new Renderer( data );
           
  -        // FIXME: Can we remove some hardcoding here?
  +        // FIXME: Can we remove hardcoding here?
           
  -        context.put("renderer", r);
  +        context.put( "renderer", r );
   
           // Render the target
           
  -        String out = r.render(data, target);
  +        String out = r.render( target );
   
           // Write the composed string to the response
           
  
  
  
  1.5       +11 -33    
jakarta-turbine-3/src/java/org/apache/turbine/pipeline/DirectRenderer.java
  
  Index: DirectRenderer.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-3/src/java/org/apache/turbine/pipeline/DirectRenderer.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DirectRenderer.java       18 Jan 2002 23:21:38 -0000      1.4
  +++ DirectRenderer.java       19 Jan 2002 03:23:26 -0000      1.5
  @@ -63,63 +63,41 @@
   import org.apache.log4j.Category;
   
   /**
  - * This class is used in the context to render templates.
  + * Helper class for rendering templates. Unlike its parent, it renders directly 
  + * to the Writer associated with its RunData. 
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Jason van Zyl</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Jon S. Stevens</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>John McNally</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>James Taylor</a>
  - * @version $Id: DirectRenderer.java,v 1.4 2002/01/18 23:21:38 jvanzyl Exp $
  + * @version $Id: DirectRenderer.java,v 1.5 2002/01/19 03:23:26 jvanzyl Exp $
    */
   public class DirectRenderer 
       extends Renderer
   {
       private static final Category log =
  -        Category.getInstance( DirectRenderer.class );
  +        Category.getInstance(DirectRenderer.class);
       
       private static final String EMPTY = "";
   
  -    private Writer writer;
  -
  -    public DirectRenderer(Writer writer)
  +    public DirectRenderer(RunData data)
       {
  -        this.writer = writer;
  +        super(data);
       }
   
       /**
  -     * @see org.apache.turbine.pipeline.Renderer#render(TemplateContext,String)
  -     * @return zero length String
  -     */
  -    public String render(TemplateContext context, String target)
  -        throws TurbineException,Exception
  -    {
  -        try
  -        {
  -            log.debug("Rendering target " + target);
  -            Module.handleRequest(context, target, writer);
  -        }
  -        catch (Exception e)
  -        {
  -            log.error("Rendering failed", e);
  -            Module.handleRequest(context, "screens/Error.vm", writer);
  -        }
  -        
  -        return EMPTY;
  -    }
  -    
  -    /**
  -     * @see org.apache.turbine.pipeline.Renderer#render(RunData,String)
  +     * @see org.apache.turbine.pipeline.Renderer#render( String )
        * @return zero length String
        */
  -    public String render(RunData data, String target)
  +    public String render(String template)
           throws TurbineException, Exception
       {
  -        log.debug("Rendering target " + target);
  +        log.debug("Rendering template " + template);
           
           TemplateContext context = Module.getTemplateContext(data);
           
  -        Module.handleRequest(context, target, writer);
  -        
  +        Module.handleRequest(context, template, data.getOut());
  +
           return EMPTY;
       }
   }
  
  
  
  1.4       +8 -10     
jakarta-turbine-3/src/java/org/apache/turbine/pipeline/DirectTargetValve.java
  
  Index: DirectTargetValve.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-3/src/java/org/apache/turbine/pipeline/DirectTargetValve.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DirectTargetValve.java    18 Jan 2002 15:53:42 -0000      1.3
  +++ DirectTargetValve.java    19 Jan 2002 03:23:26 -0000      1.4
  @@ -70,14 +70,14 @@
    * @author <a href="mailto:[EMAIL PROTECTED]";>John McNally</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Daniel Rall</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>James Taylor</a>
  - * @version $Id: DirectTargetValve.java,v 1.3 2002/01/18 15:53:42 jvanzyl Exp $
  + * @version $Id: DirectTargetValve.java,v 1.4 2002/01/19 03:23:26 jvanzyl Exp $
    * @see org.apache.turbine.pipeline.ClassicPipeline
    */
   public class DirectTargetValve 
       extends DefaultTargetValve
   {
       private static final Category log = 
  -        Category.getInstance( DirectTargetValve.class );
  +        Category.getInstance(DirectTargetValve.class);
       
       /**
        * Renders and writes result to the output stream in an
  @@ -85,23 +85,21 @@
        *
        * @see org.apache.turbine.pipeline.DefaultTargetValve#execute(RunData)
        */
  -    protected void render( RunData data, TemplateContext context, String target  )
  +    protected void render(RunData data, TemplateContext context, String target)
           throws Exception
       {   
  -        if ( log.isDebugEnabled() )
  +        if (log.isDebugEnabled())
           {
  -            log.debug( "Rendering target " + target );
  +            log.debug("Rendering target " + target);
           }
   
  -        Renderer r = new DirectRenderer( data.getOut() );
  -        
  -        // FIXME: Can we remove some hardcoding here?
  +        Renderer r = new DirectRenderer(data);
           
  +        // FIXME: Can we remove hardcoding here?
           context.put("renderer", r);
   
           // Render the target directly to the response
  -        
  -        r.render( data, target );
  +        r.render(target);
       }
   }
   
  
  
  
  1.7       +44 -46    
jakarta-turbine-3/src/java/org/apache/turbine/pipeline/Renderer.java
  
  Index: Renderer.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-3/src/java/org/apache/turbine/pipeline/Renderer.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Renderer.java     18 Jan 2002 03:33:58 -0000      1.6
  +++ Renderer.java     19 Jan 2002 03:23:26 -0000      1.7
  @@ -63,85 +63,83 @@
   import org.apache.log4j.Category;
   
   /**
  - * This class is used in the context to render templates.
  + * Helper class for rendering templates. This is used by valves to render
  + * templates. It can also be placed on the context to allow templates to render
  + * other templates. 
  + *
  + * Renderers are not thread safe, they must be constructed for and used by a
  + * single RunData. In the future this class is a candidate for being made thread
  + * safe or poolable.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Jason van Zyl</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Jon S. Stevens</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Mike Haberman</a>
  - * @version $Id: Renderer.java,v 1.6 2002/01/18 03:33:58 jvanzyl Exp $
  + * @author <a href="mailto:[EMAIL PROTECTED]";>James Taylor</a>
  + * @version $Id: Renderer.java,v 1.7 2002/01/19 03:23:26 jvanzyl Exp $
    */
   public class Renderer
   {
       private static final Category log = 
  -        Category.getInstance( Renderer.class );
  -    
  -    public String render(TemplateContext context, String target)
  -        throws TurbineException, Exception
  -    {
  -        try
  -        {
  -            log.debug("Rendering target " + target);
  -            return Module.handleRequest(context, target);
  -        }
  -        catch (Exception e)
  -        {
  -            log.error("Rendering failed", e);
  -            return Module.handleRequest(context, "screens/Error.vm");
  -        }
  -    }
  +        Category.getInstance(Renderer.class);
  +
  +    /**
  +     * RunData of the request this Renderer is for.
  +     */
  +    protected RunData data = null;
   
       /**
  -     * use the resolver to find the template
  +     * Construct a renderer for the given RunData.
        */
  -    public String render(String moduleType, RunData data, String template)
  -        throws TurbineException,Exception
  +    public Renderer(RunData data)
       {
  -        String target = Turbine.getResolver().getTemplate(moduleType, template);
  -        return render(data, target);
  +        this.data = data;
       }
   
       /**
  -     * This method is called in the ClassicPipeline because it doesn't
  -     * catch exceptions when attempting to render the template. That way,
  -     * exceptions can be caught way up in the Turbine class and the
  -     * error page can be dealt with properly without a lot of extra code
  -     * here.
  +     * Render the given template. TemplateContext to use will be extracted from
  +     * the RunData with which this Renderer was constructer. 
  +     *
  +     * @param template name/path of template in the format expected by the
  +     *                 appropriate template engine service
  +     * @return Result of template merge
        */
  -    public String render(RunData data, String target)
  +    public String render(String template)
           throws TurbineException, Exception
       {
  -        log.debug("Rendering target " + target);
  +        log.debug("Rendering template " + template);
  +        
           TemplateContext context = Module.getTemplateContext(data);
  -        return Module.handleRequest(context, target);
  +        
  +        return Module.handleRequest( context, template );
       }
   
  -    public String render(String moduleType, TemplateContext context, 
  -                         String template)
  +    /**
  +     * Use the resolver to find the template, then render.
  +     */
  +    public String render(String type, String target)
           throws TurbineException, Exception
       {
  -        String target = Turbine.getResolver().getTemplate(moduleType, template);
  -        return render(context, target);
  +        String template = Turbine.getResolver().getTemplate(type, target);
  +        
  +        return render( template );
       }
   
       /**
  -     * Attemps to locate the template and if it can't find it, then
  -     * it will attempt to render the defaultTemplate
  +     * Attemps to locate the template for target and render, if it can't find 
  +     * it, then it will attempt to render the template for defaultTarget
        */
  -    public String render(String moduleType, RunData data, 
  -                         String template, String defaultTemplate)
  -        throws TurbineException,Exception
  +    public String render(String type, String target, String defaultTarget)
  +        throws TurbineException, Exception
       {
  -        String target = Turbine.getResolver().getTemplate(moduleType, template);
  +        String template = Turbine.getResolver().getTemplate(type, target);
   
  -        String output = null;
  -        if (Module.templateExists(target))
  +        if (Module.templateExists(template))
           {
  -            output = render(data, target);
  +            return render(template);
           }
           else
           {
  -            output = render(moduleType, data, defaultTemplate);            
  +            return render(type, defaultTarget);
           }
  -        return output;
       }
   }
  
  
  
  1.4       +6 -6      
jakarta-turbine-3/src/rttest/testapp/templates/app/layouts/Default.vm
  
  Index: Default.vm
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-3/src/rttest/testapp/templates/app/layouts/Default.vm,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Default.vm        19 Jan 2002 02:53:39 -0000      1.3
  +++ Default.vm        19 Jan 2002 03:23:26 -0000      1.4
  @@ -7,20 +7,20 @@
   </head>
   <body bgcolor="#ffffff">
   
  -<table id="layout" width="100%">
  +<table id=layout width="100%">
     <tr>
  -    <td id="topNav">
  -      $renderer.render("navigations", $data, "/DefaultTop.vm")
  +    <td id=topNav>
  +      $renderer.render("navigations", "/DefaultTop.vm")
       </td>
     </tr>
     <tr>
       <td align="left" valign="top" id="screen">
  -      $renderer.render("screens", $data, $template)
  +      $renderer.render("screens", $template)
       </td>
     </tr>
     <tr>
  -    <td id="bottomNav">
  -      $renderer.render("navigations", $data, "/DefaultBottom.vm")
  +    <td id=bottomNav>
  +      $renderer.render("navigations", "/DefaultBottom.vm")
       </td>
     </tr>
   </table>
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to