Revision: 1282
          http://stripes.svn.sourceforge.net/stripes/?rev=1282&view=rev
Author:   bengunter
Date:     2010-09-25 02:01:10 +0000 (Sat, 25 Sep 2010)

Log Message:
-----------
STS-391: The execution of LayoutComponentTag.doStartTag() hasn't changed, but I 
switched the logic around to make it easier to understand. There is now an 
outer if/else on LayoutContext.isComponentRenderPhase() with each block having 
an inner if/else that switches based on what the parent layout tag is (render, 
definition or component).

Modified Paths:
--------------
    
branches/1.5.x/stripes/src/net/sourceforge/stripes/tag/layout/LayoutComponentTag.java

Modified: 
branches/1.5.x/stripes/src/net/sourceforge/stripes/tag/layout/LayoutComponentTag.java
===================================================================
--- 
branches/1.5.x/stripes/src/net/sourceforge/stripes/tag/layout/LayoutComponentTag.java
       2010-09-24 18:26:53 UTC (rev 1281)
+++ 
branches/1.5.x/stripes/src/net/sourceforge/stripes/tag/layout/LayoutComponentTag.java
       2010-09-25 02:01:10 UTC (rev 1282)
@@ -101,8 +101,8 @@
             LayoutContext context = getContext();
             silent = context.getOut().isSilent();
 
-            if (isChildOfRender()) {
-                if (context.isComponentRenderPhase()) {
+            if (context.isComponentRenderPhase()) {
+                if (isChildOfRender()) {
                     if (isCurrentComponent()) {
                         log.debug("Render ", getName(), " in ", 
context.getRenderPage());
                         context.getOut().setSilent(false, pageContext);
@@ -112,7 +112,23 @@
                         log.debug("No-op for ", getName(), " in ", 
context.getRenderPage());
                     }
                 }
-                else {
+                else if (isChildOfDefinition()) {
+                    log.debug("No-op for ", getName(), " in ", 
context.getDefinitionPage());
+                }
+                else if (isChildOfComponent()) {
+                    if (isCurrentComponent()) {
+                        LayoutComponentTag parent = getLayoutAncestor();
+                        if (getName().equals(parent.getName())) {
+                            log.debug("Invoke layout component renderer for 
recursive render");
+                            LayoutComponentRenderer renderer = 
(LayoutComponentRenderer) pageContext
+                                    .getAttribute(getName());
+                            renderer.write();
+                        }
+                    }
+                }
+            }
+            else {
+                if (isChildOfRender()) {
                     if (!javaIdentifierPattern.matcher(getName()).matches()) {
                         log.warn("The layout-component name '", getName(),
                                 "' is not a valid Java identifier. While this 
may work, it can ",
@@ -124,9 +140,7 @@
                     log.debug("Register component ", getName(), " with ", 
context.getRenderPage());
                     context.getComponents().put(getName(), new 
LayoutComponentRenderer(getName()));
                 }
-            }
-            else if (isChildOfDefinition()) {
-                if (!context.isComponentRenderPhase()) {
+                else if (isChildOfDefinition()) {
                     // Use a layout component renderer to do the heavy lifting
                     log.debug("Invoke layout component renderer for recursive 
render");
                     LayoutComponentRenderer renderer = new 
LayoutComponentRenderer(getName());
@@ -143,20 +157,15 @@
                         return EVAL_BODY_INCLUDE;
                     }
                 }
-                else {
-                    log.debug("No-op for ", getName(), " in ", 
context.getDefinitionPage());
+                else if (isChildOfComponent()) {
+                    /*
+                     * This condition cannot be true since component tags do 
not execute except in
+                     * component render phase, thus any component tags 
embedded with them will not
+                     * execute either. I've left this block here just as a 
placeholder for this
+                     * explanation.
+                     */
                 }
             }
-            else if (isChildOfComponent() && isCurrentComponent()
-                    && context.isComponentRenderPhase()) {
-                LayoutComponentTag parent = getLayoutAncestor();
-                if (getName().equals(parent.getName())) {
-                    log.debug("Invoke layout component renderer for recursive 
render");
-                    LayoutComponentRenderer renderer = 
(LayoutComponentRenderer) pageContext
-                            .getAttribute(getName());
-                    renderer.write();
-                }
-            }
 
             context.getOut().setSilent(true, pageContext);
             return SKIP_BODY;


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
Stripes-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-development

Reply via email to