You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by aw...@apache.org on 2007/08/22 06:30:28 UTC
svn commit: r568410 - in
/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal:
io/ renderkit/core/desktop/ renderkit/core/ppr/ renderkit/core/xhtml/
Author: awiner
Date: Tue Aug 21 21:30:23 2007
New Revision: 568410
URL: http://svn.apache.org/viewvc?rev=568410&view=rev
Log:
TRINIDAD-641: PPR can easily trim content of leaves and NamingContainers
- For the following leaf components, don't bother rendering anything during PPR unless they're
a target:
- chart
- chooseDate
- icon
- outputText
- image
- inputHidden
- media
- most input components
- goButton
- commandButton
- singleStepButtonBar
- outputFormatted
- And for the following naming containers, don't bother rendering anything during PPR
unless it's a target or it contains a target
- table
- treeTable
- tree
- navigationPane
- train
Modified:
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/io/DebugHtmlResponseWriter.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/desktop/ChartRenderer.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/desktop/TrainRenderer.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/ppr/PPRResponseWriter.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ChooseDateRenderer.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/CommandButtonRenderer.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/GoButtonRenderer.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/IconRenderer.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ImageRenderer.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/InputHiddenRenderer.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/InputLabelAndMessageRenderer.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/LabelAndMessageRenderer.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/MediaRenderer.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/MessageRenderer.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/NavigationPaneRenderer.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/OutputFormattedRenderer.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/OutputTextRenderer.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PartialPageUtils.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/SingleStepButtonBarRenderer.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/TableRenderer.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/TreeRenderer.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlRenderer.java
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/io/DebugHtmlResponseWriter.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/io/DebugHtmlResponseWriter.java?rev=568410&r1=568409&r2=568410&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/io/DebugHtmlResponseWriter.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/io/DebugHtmlResponseWriter.java Tue Aug 21 21:30:23 2007
@@ -30,6 +30,7 @@
import javax.faces.component.UIComponent;
import javax.faces.context.ResponseWriter;
+import org.apache.myfaces.trinidad.context.RenderingContext;
import org.apache.myfaces.trinidad.logging.TrinidadLogger;
@@ -81,8 +82,12 @@
}
- // Check for elements that are not allowed inside each other
- if (!_elementStack.empty())
+ // Check for elements that are not allowed inside each other -
+ // but only when PPR is off (with PPR, we're not rendering the
+ // whole tree, so it's easy for supposedly illegal combinations)
+ RenderingContext rc = RenderingContext.getCurrentInstance();
+ if (((rc == null) || (rc.getPartialPageContext() == null)) &&
+ !_elementStack.empty())
{
String parent = _elementStack.peek();
Collection<String> allowedParents = _sAllowedParents.get(lowerName);
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/desktop/ChartRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/desktop/ChartRenderer.java?rev=568410&r1=568409&r2=568410&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/desktop/ChartRenderer.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/desktop/ChartRenderer.java Tue Aug 21 21:30:23 2007
@@ -184,6 +184,9 @@
UIComponent component,
FacesBean bean) throws IOException
{
+ if (canSkipRendering(context, arc, component))
+ return;
+
ResponseWriter rw = context.getResponseWriter();
rw.startElement(XhtmlConstants.DIV_ELEMENT, component);
renderId(context, component);
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/desktop/TrainRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/desktop/TrainRenderer.java?rev=568410&r1=568409&r2=568410&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/desktop/TrainRenderer.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/desktop/TrainRenderer.java Tue Aug 21 21:30:23 2007
@@ -43,6 +43,7 @@
import org.apache.myfaces.trinidad.logging.TrinidadLogger;
import org.apache.myfaces.trinidad.skin.Icon;
import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.OutputUtils;
+import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.PartialPageUtils;
import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.ProcessUtils;
import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.SkinProperties;
import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.SkinSelectors;
@@ -161,6 +162,15 @@
FacesBean bean)
throws IOException
{
+ // Since Train is a naming container, we can be more
+ // efficient about skipping its children
+ if (!PartialPageUtils.containsPprTargets(arc,
+ component,
+ getClientId(context, component)))
+ {
+ return;
+ }
+
if(!(component instanceof UIXProcess))
{
throw new ClassCastException(_LOG.getMessage(
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/ppr/PPRResponseWriter.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/ppr/PPRResponseWriter.java?rev=568410&r1=568409&r2=568410&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/ppr/PPRResponseWriter.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/ppr/PPRResponseWriter.java Tue Aug 21 21:30:23 2007
@@ -509,7 +509,8 @@
{
if (_state.enteringPPR != null)
{
- _LOG.warning("NO_PPR_CAPABLE_ID", _state.enteringPPR);
+ _LOG.warning("NO_PPR_CAPABLE_ID_FOUND_FOR_COMPONENT",
+ _state.enteringPPR);
_state.enteringPPR = null;
}
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ChooseDateRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ChooseDateRenderer.java?rev=568410&r1=568409&r2=568410&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ChooseDateRenderer.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ChooseDateRenderer.java Tue Aug 21 21:30:23 2007
@@ -94,12 +94,15 @@
@Override
protected final void encodeAll(
FacesContext context,
- RenderingContext arc,
+ RenderingContext arc,
UIComponent component,
FacesBean bean) throws IOException
{
// Currently, we require scripting to render anything
if (!supportsScripting(arc))
+ return;
+
+ if (canSkipRendering(context, arc, component))
return;
// If we are running in inline mode, make sure that we are
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/CommandButtonRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/CommandButtonRenderer.java?rev=568410&r1=568409&r2=568410&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/CommandButtonRenderer.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/CommandButtonRenderer.java Tue Aug 21 21:30:23 2007
@@ -67,12 +67,15 @@
UIComponent component,
FacesBean bean) throws IOException
{
+ String clientId = getClientId(context, component);
+ if (canSkipRendering(arc, clientId))
+ return;
+
if (getPartialSubmit(bean))
{
AutoSubmitUtils.writeDependencies(context, arc);
}
- String clientId = getClientId(context, component);
// Make sure we don't have anything to save
assert(arc.getCurrentClientId() == null);
arc.setCurrentClientId(clientId);
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/GoButtonRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/GoButtonRenderer.java?rev=568410&r1=568409&r2=568410&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/GoButtonRenderer.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/GoButtonRenderer.java Tue Aug 21 21:30:23 2007
@@ -72,6 +72,9 @@
FacesBean bean) throws IOException
{
String clientId = component.getClientId(context);
+ if (canSkipRendering(arc, clientId))
+ return;
+
// Make sure we don't have anything to save
assert(arc.getCurrentClientId() == null);
arc.setCurrentClientId(clientId);
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/IconRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/IconRenderer.java?rev=568410&r1=568409&r2=568410&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/IconRenderer.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/IconRenderer.java Tue Aug 21 21:30:23 2007
@@ -55,6 +55,9 @@
UIComponent comp,
FacesBean bean) throws IOException
{
+ if (canSkipRendering(context, arc, comp))
+ return;
+
String name = getName(bean);
if ("logo".equals(name))
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ImageRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ImageRenderer.java?rev=568410&r1=568409&r2=568410&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ImageRenderer.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ImageRenderer.java Tue Aug 21 21:30:23 2007
@@ -48,12 +48,20 @@
}
@Override
- protected void encodeBegin(
+ public boolean getRendersChildren()
+ {
+ return true;
+ }
+
+ @Override
+ protected void encodeAll(
FacesContext context,
- RenderingContext arc,
+ RenderingContext arc,
UIComponent comp,
FacesBean bean) throws IOException
{
+ if (canSkipRendering(context, arc, comp))
+ return;
ResponseWriter rw = context.getResponseWriter();
rw.startElement("img", comp);
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/InputHiddenRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/InputHiddenRenderer.java?rev=568410&r1=568409&r2=568410&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/InputHiddenRenderer.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/InputHiddenRenderer.java Tue Aug 21 21:30:23 2007
@@ -58,10 +58,13 @@
UIComponent component,
FacesBean bean) throws IOException
{
+ String id = getClientId(context, component);
+ if (canSkipRendering(arc, id))
+ return;
+
ResponseWriter rw = context.getResponseWriter();
rw.startElement("input", component);
rw.writeAttribute("type", "hidden", null);
- String id = getClientId(context, component);
rw.writeAttribute("id", id, "id");
rw.writeAttribute("name", id, "id");
rw.writeAttribute("value",
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/InputLabelAndMessageRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/InputLabelAndMessageRenderer.java?rev=568410&r1=568409&r2=568410&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/InputLabelAndMessageRenderer.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/InputLabelAndMessageRenderer.java Tue Aug 21 21:30:23 2007
@@ -85,14 +85,18 @@
@Override
protected void encodeAll(
FacesContext context,
- RenderingContext arc,
+ RenderingContext arc,
UIComponent component,
FacesBean bean) throws IOException
{
if (getSimple(bean))
{
- String saved = arc.getCurrentClientId();
String clientId = component.getClientId(context);
+ // If we're a leaf component, see if we can skip our rendering
+ if (isLeafRenderer() && canSkipRendering(arc, clientId))
+ return;
+
+ String saved = arc.getCurrentClientId();
arc.setCurrentClientId(clientId);
// add the label to FormData so that it can be used in
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/LabelAndMessageRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/LabelAndMessageRenderer.java?rev=568410&r1=568409&r2=568410&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/LabelAndMessageRenderer.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/LabelAndMessageRenderer.java Tue Aug 21 21:30:23 2007
@@ -170,8 +170,20 @@
UIComponent component,
FacesBean bean) throws IOException
{
+ String clientId = component.getClientId(context);
+
+ // If we're a leaf component, see if we can skip our rendering
+ if (isLeafRenderer() && canSkipRendering(arc, clientId))
+ {
+ // Except we really do have a "help" facet, so render that one...
+ UIComponent help = getFacet(component, "help");
+ if (help != null)
+ encodeChild(context, help);
+ return;
+ }
+
String saved = arc.getCurrentClientId();
- arc.setCurrentClientId(component.getClientId(context));
+ arc.setCurrentClientId(clientId);
boolean isInTable = _isInTable();
@@ -417,9 +429,8 @@
UIComponent component,
FacesBean bean)
{
- UIComponent help = component.getFacet("help");
- if ( help != null &&
- help.isRendered())
+ UIComponent help = getFacet(component, "help");
+ if (help != null)
return true;
String id = getLabelFor(context, arc, component, bean);
@@ -445,6 +456,11 @@
{
return (super.getClientId(context, component) +
XhtmlConstants.COMPOSITE_ID_EXTENSION);
+ }
+
+ protected boolean isLeafRenderer()
+ {
+ return true;
}
protected String getDefaultLabelValign(FacesBean bean)
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/MediaRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/MediaRenderer.java?rev=568410&r1=568409&r2=568410&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/MediaRenderer.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/MediaRenderer.java Tue Aug 21 21:30:23 2007
@@ -148,6 +148,9 @@
UIComponent component,
FacesBean bean) throws IOException
{
+ if (canSkipRendering(context, arc, component))
+ return;
+
// get the mime type
String mimeType = _getMimeType(bean);
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/MessageRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/MessageRenderer.java?rev=568410&r1=568409&r2=568410&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/MessageRenderer.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/MessageRenderer.java Tue Aug 21 21:30:23 2007
@@ -90,7 +90,7 @@
}
}
- UIComponent help = component.getFacet("help");
+ UIComponent help = getFacet(component, "help");
boolean isError = CoreMessage.MESSAGE_TYPE_ERROR.equals(messageType);
@@ -107,7 +107,7 @@
inlineStyle = null;
}
- boolean hasHelp = (help != null && help.isRendered());
+ boolean hasHelp = (help != null);
boolean hasMessage = (message != null);
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/NavigationPaneRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/NavigationPaneRenderer.java?rev=568410&r1=568409&r2=568410&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/NavigationPaneRenderer.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/NavigationPaneRenderer.java Tue Aug 21 21:30:23 2007
@@ -67,10 +67,19 @@
@Override
protected void encodeAll(
FacesContext context,
- RenderingContext arc,
+ RenderingContext arc,
UIComponent component,
FacesBean bean) throws IOException
{
+ // Since NavigationPane is a naming container, we can be more
+ // efficient about skipping its children
+ if (!PartialPageUtils.containsPprTargets(arc,
+ component,
+ getClientId(context, component)))
+ {
+ return;
+ }
+
ResponseWriter writer = context.getResponseWriter();
writer.startElement("div", component);
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/OutputFormattedRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/OutputFormattedRenderer.java?rev=568410&r1=568409&r2=568410&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/OutputFormattedRenderer.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/OutputFormattedRenderer.java Tue Aug 21 21:30:23 2007
@@ -46,27 +46,27 @@
}
@Override
- protected void encodeBegin(
+ public boolean getRendersChildren()
+ {
+ return true;
+ }
+
+ @Override
+ protected void encodeAll(
FacesContext context,
RenderingContext arc,
UIComponent comp,
FacesBean bean) throws IOException
{
+ if (canSkipRendering(context, arc, comp))
+ return;
+
ResponseWriter rw = context.getResponseWriter();
rw.startElement("span", comp);
renderId(context, comp);
renderAllAttributes(context, arc, bean);
- }
- @Override
- public void encodeEnd(
- FacesContext context,
- RenderingContext arc,
- UIComponent comp,
- FacesBean bean) throws IOException
- {
- ResponseWriter rw = context.getResponseWriter();
String value = getConvertedString(context, comp, bean);
renderFormattedText(context, value);
rw.endElement("span");
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/OutputTextRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/OutputTextRenderer.java?rev=568410&r1=568409&r2=568410&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/OutputTextRenderer.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/OutputTextRenderer.java Tue Aug 21 21:30:23 2007
@@ -49,34 +49,32 @@
}
@Override
- protected void encodeBegin(
- FacesContext context,
- RenderingContext arc,
- UIComponent comp,
- FacesBean bean) throws IOException
+ public boolean getRendersChildren()
{
- if (getEscape(bean))
- {
- ResponseWriter rw = context.getResponseWriter();
- rw.startElement("span", comp);
-
- renderId(context, comp);
- renderAllAttributes(context, arc, bean);
- }
+ return true;
}
@Override
- public void encodeEnd(
+ protected void encodeAll(
FacesContext context,
- RenderingContext arc,
+ RenderingContext arc,
UIComponent comp,
FacesBean bean) throws IOException
{
+ if (canSkipRendering(context, arc, comp))
+ return;
+
ResponseWriter rw = context.getResponseWriter();
String value = getConvertedString(context, comp, bean);
+ boolean escape = getEscape(bean);
- if (getEscape(bean))
+ if (escape)
{
+ rw.startElement("span", comp);
+
+ renderId(context, comp);
+ renderAllAttributes(context, arc, bean);
+
_renderDescription(context, arc, bean);
if (value != null)
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PartialPageUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PartialPageUtils.java?rev=568410&r1=568409&r2=568410&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PartialPageUtils.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PartialPageUtils.java Tue Aug 21 21:30:23 2007
@@ -18,8 +18,11 @@
*/
package org.apache.myfaces.trinidadinternal.renderkit.core.xhtml;
+import java.util.Iterator;
import java.util.Map;
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import org.apache.myfaces.trinidad.context.Agent;
@@ -42,6 +45,46 @@
{
private PartialPageUtils()
{
+ }
+
+ /**
+ * Check if a NamingContainer has any partial targets
+ */
+ public static boolean containsPprTargets(
+ RenderingContext rc,
+ UIComponent component,
+ String clientId)
+ {
+ // This function can only be called with NamingContainers, so
+ // throw an exception if anyone tries otherwise
+ if (!(component instanceof NamingContainer))
+ throw new IllegalArgumentException();
+
+ // If PPR is off (ppc == null), or we're already rendering
+ // (isInsidePartialTarget()), then we have to render, so return true
+ PartialPageContext ppc = rc.getPartialPageContext();
+ if ((ppc == null) || ppc.isInsidePartialTarget())
+ return true;
+
+ // And if we're a partial target ourselves, return true
+ if (ppc.isPartialTarget(clientId))
+ return true;
+
+ // See if anything starts with our prefix
+ String clientIdPrefix = clientId + NamingContainer.SEPARATOR_CHAR;
+ Iterator<String> targets = ppc.getPartialTargets();
+ while (targets.hasNext())
+ {
+ String target = targets.next();
+ if (target == null)
+ continue;
+ // Found one!
+ if (target.startsWith(clientIdPrefix))
+ return true;
+ }
+
+ // Couldn't find any: bail
+ return false;
}
public static boolean isPartialRequest(FacesContext context)
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/SingleStepButtonBarRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/SingleStepButtonBarRenderer.java?rev=568410&r1=568409&r2=568410&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/SingleStepButtonBarRenderer.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/SingleStepButtonBarRenderer.java Tue Aug 21 21:30:23 2007
@@ -103,10 +103,13 @@
@Override
protected void encodeAll(
FacesContext context,
- RenderingContext arc,
+ RenderingContext arc,
UIComponent component,
FacesBean bean) throws IOException
{
+ if (canSkipRendering(context, arc, component))
+ return;
+
long currentValue = getSelectedStep(bean);
// get max value
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/TableRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/TableRenderer.java?rev=568410&r1=568409&r2=568410&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/TableRenderer.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/TableRenderer.java Tue Aug 21 21:30:23 2007
@@ -22,9 +22,13 @@
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Set;
+import javax.faces.component.NamingContainer;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
@@ -43,14 +47,16 @@
import org.apache.myfaces.trinidad.context.Agent;
import org.apache.myfaces.trinidad.context.FormData;
import org.apache.myfaces.trinidad.context.RequestContext;
+import org.apache.myfaces.trinidad.context.PartialPageContext;
+import org.apache.myfaces.trinidad.context.RenderingContext;
import org.apache.myfaces.trinidad.event.RowDisclosureEvent;
import org.apache.myfaces.trinidad.event.RangeChangeEvent;
import org.apache.myfaces.trinidad.event.SortEvent;
import org.apache.myfaces.trinidad.model.RowKeySet;
import org.apache.myfaces.trinidad.model.SortCriterion;
-
-import org.apache.myfaces.trinidad.context.RenderingContext;
+import org.apache.myfaces.trinidad.render.ClientRowKeyManager;
import org.apache.myfaces.trinidad.render.CoreRenderer;
+
import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.table.CellUtils;
import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.table.ColumnData;
import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.table.DetailColumnRenderer;
@@ -140,6 +146,69 @@
return _createRangeChangeEvent(table, newStart, newEnd);
}
+
+ /**
+ * Returns the set of row keys identified by PPR. Returns
+ * the empty set if no row keys are present, and null
+ * if row keys could not be properly identified.
+ */
+ static public Set<Object> getPartialRowKeys(
+ FacesContext context,
+ RenderingContext arc,
+ UIComponent component,
+ String clientId)
+ {
+ ClientRowKeyManager rowKeyManager = null;
+ if (component instanceof UIXCollection)
+ rowKeyManager = ((UIXCollection) component).getClientRowKeyManager();
+
+ Set<Object> rowKeys = null;
+ String tablePrefix = clientId + NamingContainer.SEPARATOR_CHAR;
+ // Search for any PPR targets that start with "<tableClientId>:"
+ PartialPageContext ppc = arc.getPartialPageContext();
+ Iterator<String> targets = ppc.getPartialTargets();
+ while (targets.hasNext())
+ {
+ String target = targets.next();
+ if (target == null)
+ continue;
+ if (target.startsWith(tablePrefix))
+ {
+ // If we don't have a rowkeymanager, we know that the table
+ // has partial targets, but we can't process the rows individually
+ if (rowKeyManager == null)
+ return null;
+
+ // Extract the client rowkey from the clientId
+ String clientRowKey = target.substring(tablePrefix.length());
+ int ncIndex = clientRowKey.indexOf(NamingContainer.SEPARATOR_CHAR);
+ // If we have a target that is in the table, but is not in a
+ // particular row, just repaint the whole table
+ if (ncIndex < 0)
+ return null;
+
+ clientRowKey = clientRowKey.substring(0, ncIndex);
+
+ // Try to turn it into a server rowkey
+ Object rowKey = rowKeyManager.getRowKey(context, component, clientRowKey);
+ // if this fails, we have to process the whole table
+ if (rowKey == null)
+ return null;
+
+ // We know this row exists, and needs to be processed
+ if (rowKeys == null)
+ rowKeys = new HashSet<Object>();
+ rowKeys.add(rowKey);
+ }
+ }
+
+ // If we never found a rowkey, return the empty set, indicating
+ // that there are no rows to process
+ if (rowKeys == null)
+ rowKeys = Collections.emptySet();
+ return rowKeys;
+ }
+
private static RangeChangeEvent _createRangeChangeEvent(
CollectionComponent table,
int newStart,
@@ -242,6 +311,27 @@
UIComponent component,
FacesBean bean) throws IOException
{
+ Set<Object> keysToRender = null;
+ // See if we can skip rendering altogether
+ if (canSkipRendering(context, arc, component))
+ {
+ // If we're in here, then the table itself as a whole doesn't
+ // need to be re-rendered - but the contents might need to be!
+ keysToRender = getPartialRowKeys(context,
+ arc,
+ component,
+ getClientId(context, component));
+ // getPartialRowKeys() has a weird API. null means there are contents
+ // that need to be rendered, but we couldn't figure out what row key
+ // they match up to, so just re-render everything and let PPR figure it
+ // out. An empty set means *there's nothing*, so bail
+ //
+ if ((keysToRender != null) && keysToRender.isEmpty())
+ return;
+
+ // TODO: use keysToRender to only iterate onto rows
+ // that have targets
+ }
// save current skin resource map, if any, on the local property
Map<String, String> oldSkinResourceMap = arc.getSkinResourceKeyMap();
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/TreeRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/TreeRenderer.java?rev=568410&r1=568409&r2=568410&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/TreeRenderer.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/TreeRenderer.java Tue Aug 21 21:30:23 2007
@@ -111,6 +111,15 @@
UIComponent component,
FacesBean bean) throws IOException
{
+ // Since Train is a naming container, we can be more
+ // efficient about skipping its children
+ if (!PartialPageUtils.containsPprTargets(rc,
+ component,
+ getClientId(context, component)))
+ {
+ return;
+ }
+
UIXHierarchy tree = (UIXHierarchy) component;
TreeUtils.expandFocusRowKey((UIXTree) component);
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlRenderer.java?rev=568410&r1=568409&r2=568410&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlRenderer.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlRenderer.java Tue Aug 21 21:30:23 2007
@@ -254,6 +254,54 @@
/**
+ * Returns true if the component can skip its own rendering;
+ * true if PPR is on for this request, is not currently active,
+ * and this component not a target. Note that if
+ * the component is not a leaf, then you'd still have to
+ * render the children.
+ * <p>
+ * Call this overload if you have the clientId already.
+ */
+ protected boolean canSkipRendering(
+ RenderingContext rc,
+ String clientId)
+ {
+ PartialPageContext ppc = rc.getPartialPageContext();
+ if ((ppc == null) ||
+ ppc.isInsidePartialTarget() ||
+ ppc.isPartialTarget(clientId))
+ return false;
+
+ return true;
+ }
+
+ /**
+ * Returns true if the component can skip its own rendering;
+ * true if PPR is on for this request, is not currently active,
+ * and this component not a target. Note that if
+ * the component is not a leaf, then you'd still have to
+ * render the children.
+ * <p>
+ * Call this overload if you don't have the clientId already.
+ */
+ protected boolean canSkipRendering(
+ FacesContext context,
+ RenderingContext rc,
+ UIComponent component)
+ {
+ PartialPageContext ppc = rc.getPartialPageContext();
+ if ((ppc == null) ||
+ ppc.isInsidePartialTarget())
+ return false;
+
+ String clientId = component.getClientId(context);
+ if (ppc.isPartialTarget(clientId))
+ return false;
+
+ return true;
+ }
+
+ /**
* Returns true if the component should render an ID. Components
* that deliver events should always return "true".
* @todo Profile and possibly optimize.