[jboss-cvs] jboss-seam/ui/src/main/java/org/jboss/seam/ui/facelet ...

Peter Muir peter at bleepbleep.org.uk
Fri Aug 31 12:42:54 EDT 2007


  User: pmuir   
  Date: 07/08/31 12:42:54

  Modified:    ui/src/main/java/org/jboss/seam/ui/facelet 
                        FaceletsRenderer.java
  Log:
  Better design
  
  Revision  Changes    Path
  1.9       +42 -25    jboss-seam/ui/src/main/java/org/jboss/seam/ui/facelet/FaceletsRenderer.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: FaceletsRenderer.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/ui/src/main/java/org/jboss/seam/ui/facelet/FaceletsRenderer.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -b -r1.8 -r1.9
  --- FaceletsRenderer.java	2 Aug 2007 10:54:22 -0000	1.8
  +++ FaceletsRenderer.java	31 Aug 2007 16:42:54 -0000	1.9
  @@ -33,10 +33,10 @@
   public class FaceletsRenderer extends Renderer
   {
      
  -   private class Context 
  +   private abstract class RenderingContext 
      {
         
  -      public Context(String viewId)
  +      public RenderingContext(String viewId)
         {
            this.viewId = viewId;
         }
  @@ -48,7 +48,20 @@
         private UIViewRoot originalViewRoot;
         private StringWriter writer = new StringWriter();
         
  -      public Context wrap() 
  +      public void run() 
  +      {
  +         try
  +         {
  +            init();
  +            process();
  +         }
  +         finally
  +         {
  +            cleanup();
  +         }
  +      }
  +      
  +      private void init()
         {
            // Make sure we are using the correct ClassLoader
            originalClassLoader = Thread.currentThread().getContextClassLoader();
  @@ -76,10 +89,9 @@
            viewRoot.setViewId(viewId);
            viewRoot.setLocale(originalViewRoot.getLocale());
            facesContext.setViewRoot(viewRoot);
  -         return this;
         }
         
  -      public void unwrap() 
  +      private void cleanup()
         {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            if (originalResponseWriter != null)
  @@ -91,36 +103,41 @@
               facesContext.setViewRoot(originalViewRoot);
            }
            Thread.currentThread().setContextClassLoader(originalClassLoader);
  -         
         }
         
  -      public String getWrittenOutput() 
  +      public String getOutput() 
         {
            return writer.getBuffer().toString(); 
         }
         
  +      public abstract void process();
  +      
      }
      
   
      @Override
  -   public String render(String viewId)
  +   public String render(final String viewId)
      {
  -      Context context = new Context(viewId);
  -      try
  +      RenderingContext context = new RenderingContext(viewId) {
  +         
  +         @Override
  +         public void process()
         {
  -         context.wrap();
            FacesContext facesContext = FacesContext.getCurrentInstance();
  +            try
  +            {
            renderFacelet(facesContext, faceletForURL(resourceURL(viewId)));
  -         return context.getWrittenOutput();
         }
         catch (IOException e)
         {
  -         throw new RuntimeException(e);
  +               throw new RuntimeException("Error rendering view", e);
         }
  -      finally
  -      {
  -         context.unwrap();
         }
  +         
  +      };
  +      context.run();
  +      
  +      return context.getOutput();
      }
   
      protected URL resourceURL(String viewId)
  
  
  



More information about the jboss-cvs-commits mailing list