You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by bo...@apache.org on 2007/05/23 22:36:46 UTC

svn commit: r541060 - in /myfaces/tobago/tags/tobago-1.0.11/core/src/main/java/org/apache/myfaces/tobago: component/ComponentUtil.java renderkit/html/HtmlRendererUtil.java

Author: bommel
Date: Wed May 23 13:36:45 2007
New Revision: 541060

URL: http://svn.apache.org/viewvc?view=rev&rev=541060
Log:
(TOBAGO-409) <tc:form> in a Container without layoutmanager breaks with ClassCastException

Modified:
    myfaces/tobago/tags/tobago-1.0.11/core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java
    myfaces/tobago/tags/tobago-1.0.11/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlRendererUtil.java

Modified: myfaces/tobago/tags/tobago-1.0.11/core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/tags/tobago-1.0.11/core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java?view=diff&rev=541060&r1=541059&r2=541060
==============================================================================
--- myfaces/tobago/tags/tobago-1.0.11/core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java (original)
+++ myfaces/tobago/tags/tobago-1.0.11/core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java Wed May 23 13:36:45 2007
@@ -81,6 +81,7 @@
 import javax.faces.model.SelectItem;
 import javax.faces.render.RenderKit;
 import javax.faces.render.RenderKitFactory;
+import javax.faces.render.Renderer;
 import javax.faces.webapp.UIComponentTag;
 import javax.servlet.jsp.JspException;
 import java.util.ArrayList;
@@ -464,8 +465,13 @@
       RenderKitFactory rkFactory = (RenderKitFactory)
           FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
       RenderKit renderKit = rkFactory.getRenderKit(facesContext, facesContext.getViewRoot().getRenderKitId());
-      renderer = (LayoutableRendererBase) renderKit.getRenderer(family, rendererType);
-      requestMap.put(RENDER_KEY_PREFIX + rendererType, renderer);
+      Renderer myRenderer = renderKit.getRenderer(family, rendererType);
+      if (myRenderer instanceof LayoutableRendererBase) {
+        requestMap.put(RENDER_KEY_PREFIX + rendererType, myRenderer);
+        renderer = (LayoutableRendererBase) myRenderer;
+      } else {
+        return null;
+      }
     }
     return renderer;
   }

Modified: myfaces/tobago/tags/tobago-1.0.11/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlRendererUtil.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/tags/tobago-1.0.11/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlRendererUtil.java?view=diff&rev=541060&r1=541059&r2=541060
==============================================================================
--- myfaces/tobago/tags/tobago-1.0.11/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlRendererUtil.java (original)
+++ myfaces/tobago/tags/tobago-1.0.11/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlRendererUtil.java Wed May 23 13:36:45 2007
@@ -39,6 +39,7 @@
 import org.apache.myfaces.tobago.renderkit.LayoutInformationProvider;
 import org.apache.myfaces.tobago.renderkit.RenderUtil;
 import org.apache.myfaces.tobago.renderkit.RendererBaseWrapper;
+import org.apache.myfaces.tobago.renderkit.LayoutableRendererBase;
 import org.apache.myfaces.tobago.util.LayoutUtil;
 import org.apache.myfaces.tobago.webapp.TobagoResponseWriter;
 import org.apache.myfaces.tobago.webapp.TobagoResponseWriterWrapper;
@@ -86,7 +87,8 @@
 
   public static void prepareRender(FacesContext facesContext, UIComponent component) {
     // xxx find a better way for this question: isTobago or isLayoutable something like that.
-    if (!(ComponentUtil.getRenderer(facesContext, component) instanceof RendererBaseWrapper)) {
+    LayoutableRendererBase layoutRendererBase = ComponentUtil.getRenderer(facesContext, component);
+    if (layoutRendererBase != null && !(layoutRendererBase instanceof RendererBaseWrapper)) {
       createCssClass(facesContext, component);
       layoutWidth(facesContext, component);
       layoutHeight(facesContext, component);
@@ -122,7 +124,10 @@
     //final String family = component.getFamily();
     if (rendererType != null//&& !"facelets".equals(family)
        ) {
-      return ComponentUtil.getRenderer(facesContext, component).getRendererName(rendererType);
+      LayoutableRendererBase layoutableRendererBase = ComponentUtil.getRenderer(facesContext, component);
+      if (layoutableRendererBase != null) {
+        return layoutableRendererBase.getRendererName(rendererType);
+      }
     }
     return null;
   }
@@ -312,7 +317,6 @@
       boolean width) {
 
     // prepare html 'style' attribute
-
     Integer layoutSpace;
     String layoutAttribute;
     String styleAttribute;