dev@javaserverfaces.java.net

Review: Fix for Issue 146, 151,144

From: Jayashri Visvanathan <Jayashri.Visvanathan_at_Sun.COM>
Date: Mon, 18 Jul 2005 14:21:08 -0700

M src/com/sun/faces/context/ExternalContextImpl.java
  Fix for issue 146
   ServletRequest.getRequestDispatcher() returns null,
but the code doesn't check for null. The proper fix would be checking
for null and calling response.sendError(HttpServletResponse.SC_NOT_FOUND).
(Already reviewed by Adam)

M src/com/sun/faces/renderkit/ResponseStateManagerImpl.java
  Fix for issue 151
  Throw FacesException that wraps the original exception when
  restore tree structure/tree state fails.


M src/com/sun/faces/renderkit/html_basic/CommandLinkRenderer.java
  Fix for Issue 144. Add a "//" before the beginning of the CDATA
  block to make it readable in Mozilla.
(Already reviewed by Jacob)

Diffs are also posted to the issues.


Index: src/com/sun/faces/context/ExternalContextImpl.java
===================================================================
RCS file: /cvs/javaserverfaces-sources/jsf-ri/src/com/sun/faces/context/ExternalContextImpl.java,v
retrieving revision 1.32
diff -u -r1.32 ExternalContextImpl.java
--- src/com/sun/faces/context/ExternalContextImpl.java 1 Jun 2005 14:03:31 -0000 1.32
+++ src/com/sun/faces/context/ExternalContextImpl.java 16 Jul 2005 00:52:02 -0000
@@ -344,6 +344,11 @@
     public void dispatch(String requestURI) throws IOException, FacesException {
         RequestDispatcher requestDispatcher = request.getRequestDispatcher(
             requestURI);
+ if (requestDispatcher == null) {
+ ((HttpServletResponse) response).
+ sendError(HttpServletResponse.SC_NOT_FOUND);
+ return;
+ }
         try {
             requestDispatcher.forward(this.request, this.response);
         } catch (IOException ioe) {
Index: src/com/sun/faces/renderkit/ResponseStateManagerImpl.java
===================================================================
RCS file: /cvs/javaserverfaces-sources/jsf-ri/src/com/sun/faces/renderkit/ResponseStateManagerImpl.java,v
retrieving revision 1.22
diff -u -r1.22 ResponseStateManagerImpl.java
--- src/com/sun/faces/renderkit/ResponseStateManagerImpl.java 23 Jun 2005 15:31:33 -0000 1.22
+++ src/com/sun/faces/renderkit/ResponseStateManagerImpl.java 16 Jul 2005 00:52:02 -0000
@@ -25,6 +25,7 @@
 import javax.faces.context.ResponseWriter;
 import javax.faces.render.RenderKitFactory;
 import javax.faces.render.ResponseStateManager;
+import javax.faces.FacesException;
 
 import com.sun.faces.util.Base64;
 import com.sun.faces.util.Util;
@@ -153,10 +154,13 @@
                 ois.close();
             } catch (java.io.OptionalDataException ode) {
                 logger.log(Level.SEVERE, ode.getMessage(), ode);
+ throw new FacesException(ode);
             } catch (java.lang.ClassNotFoundException cnfe) {
                 logger.log(Level.SEVERE,cnfe.getMessage(), cnfe);
+ throw new FacesException(cnfe);
             } catch (java.io.IOException iox) {
                 logger.log(Level.SEVERE,iox.getMessage(), iox);
+ throw new FacesException(iox);
             }
         }
         else {
Index: src/com/sun/faces/renderkit/html_basic/CommandLinkRenderer.java
===================================================================
RCS file: /cvs/javaserverfaces-sources/jsf-ri/src/com/sun/faces/renderkit/html_basic/CommandLinkRenderer.java,v
retrieving revision 1.32
diff -u -r1.32 CommandLinkRenderer.java
--- src/com/sun/faces/renderkit/html_basic/CommandLinkRenderer.java 9 Jun 2005 22:37:47 -0000 1.32
+++ src/com/sun/faces/renderkit/html_basic/CommandLinkRenderer.java 16 Jul 2005 00:52:02 -0000
@@ -385,11 +385,12 @@
         String formName = myForm.getClientId(context);
         writer.startElement("script", component);
         writer.writeAttribute("type", "text/javascript", "type");
- writer.writeAttribute("language", "Javascript", "language");
- writer.write("<!--\n");
+ writer.writeAttribute("language", "Javascript", "language");
         if (isXHTML) {
- writer.write("<![CDATA[\n");
- }
+ writer.write("//<![CDATA[\n");
+ } else {
+ writer.write("<!--\n");
+ }
         writer.write("\nfunction ");
         String functionName = (CLEAR_HIDDEN_FIELD_FN_NAME + "_" + formName.replace(NamingContainer.SEPARATOR_CHAR, '_'));
         writer.write(functionName);
@@ -414,9 +415,10 @@
         writer.write("\n}\n");
 
         if (isXHTML) {
- writer.write("]]>\n");
- }
- writer.write("//-->\n");
+ writer.write("//]]>\n");
+ } else {
+ writer.write("//-->\n");
+ }
         writer.endElement("script");
 
         // say that we've already rendered the script for this form