[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