You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by de...@apache.org on 2017/09/16 05:46:38 UTC

[myfaces-tobago] 06/10: (TOBAGO-409) in a Container without layoutmanager breaks with ClassCastException

This is an automated email from the ASF dual-hosted git repository.

deki pushed a commit to tag tobago-1.0.11
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git

commit b04bbe9c1a24635f2130a57667d46079662e9a30
Author: Bernd Bohmann <bo...@apache.org>
AuthorDate: Wed May 23 20:36:45 2007 +0000

    (TOBAGO-409) <tc:form> in a Container without layoutmanager breaks with ClassCastException
---
 .../org/apache/myfaces/tobago/component/ComponentUtil.java     | 10 ++++++++--
 .../apache/myfaces/tobago/renderkit/html/HtmlRendererUtil.java | 10 +++++++---
 2 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java b/core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java
index c7f841d..1401b9d 100644
--- a/core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java
+++ b/core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java
@@ -81,6 +81,7 @@ import javax.faces.event.ValueChangeEvent;
 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 @@ public class ComponentUtil {
       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;
   }
diff --git a/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlRendererUtil.java b/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlRendererUtil.java
index f189809..2411a3a 100644
--- a/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlRendererUtil.java
+++ b/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlRendererUtil.java
@@ -39,6 +39,7 @@ import org.apache.myfaces.tobago.renderkit.LabelWithAccessKey;
 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 final class HtmlRendererUtil {
 
   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 @@ public final class HtmlRendererUtil {
     //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 @@ public final class HtmlRendererUtil {
       boolean width) {
 
     // prepare html 'style' attribute
-
     Integer layoutSpace;
     String layoutAttribute;
     String styleAttribute;

-- 
To stop receiving notification emails like this one, please contact
"commits@myfaces.apache.org" <co...@myfaces.apache.org>.