You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gm...@apache.org on 2007/10/31 12:14:14 UTC
svn commit: r590624 - in
/myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr:
PPRPanelGroup.java PPRPanelGroupRenderer.java PPRPanelGroupTag.java
PPRPhaseListener.java
Author: gmuellan
Date: Wed Oct 31 04:14:12 2007
New Revision: 590624
URL: http://svn.apache.org/viewvc?rev=590624&view=rev
Log:
trivial change: code reformatting for pprPanelGroup stuff
Modified:
myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroup.java
myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupRenderer.java
myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupTag.java
myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPhaseListener.java
Modified: myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroup.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroup.java?rev=590624&r1=590623&r2=590624&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroup.java (original)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroup.java Wed Oct 31 04:14:12 2007
@@ -27,159 +27,170 @@
/**
* AJAX component which supports updating its children via AJAX calls. These
* updates can occur regularly or based on triggering input components.
- *
+ *
* @author Ernst Fastl
*/
-public class PPRPanelGroup extends HtmlPanelGroup {
- public static final String COMPONENT_TYPE = "org.apache.myfaces.PPRPanelGroup";
+public class PPRPanelGroup extends HtmlPanelGroup
+{
+ public static final String COMPONENT_TYPE = "org.apache.myfaces.PPRPanelGroup";
- public static final String COMPONENT_FAMILY = "org.apache.myfaces.PPRPanelGroup";
+ public static final String COMPONENT_FAMILY = "org.apache.myfaces.PPRPanelGroup";
- public static final String DEFAULT_RENDERER_TYPE = "org.apache.myfaces.PPRPanelGroup";
+ public static final String DEFAULT_RENDERER_TYPE = "org.apache.myfaces.PPRPanelGroup";
- private String _partialTriggers;
+ private String _partialTriggers;
- private Integer _periodicalUpdate;
-
- private String _periodicalTriggers;
-
- private String _partialTriggerPattern;
-
- private String _inlineLoadingMessage;
-
- private Boolean _showDebugMessages = new Boolean(false);
-
- private Boolean _stateUpdate = new Boolean(true);
-
- public PPRPanelGroup()
- {
- setRendererType(DEFAULT_RENDERER_TYPE);
- }
-
- public String getFamily()
- {
- return COMPONENT_FAMILY;
- }
-
- public String getPartialTriggers()
- {
- if (_partialTriggers != null)
- return _partialTriggers;
- ValueBinding vb = getValueBinding("partialTriggers");
- return vb != null ? RendererUtils.getStringValue(getFacesContext(), vb) : null;
- }
-
- public void setPartialTriggers(String partialTriggers)
- {
- this._partialTriggers = partialTriggers;
- }
-
- public Integer getPeriodicalUpdate()
- {
- if (_periodicalUpdate != null)
- return _periodicalUpdate;
- ValueBinding vb = getValueBinding("periodicalUpdate");
- return (vb != null) ? (Integer) vb.getValue(getFacesContext()) : null;
- }
-
- public void setPeriodicalUpdate(Integer periodicalUpdate)
- {
- _periodicalUpdate = periodicalUpdate;
- }
-
- public String getPeriodicalTriggers()
- {
- if (_periodicalTriggers != null)
- return _periodicalTriggers;
- ValueBinding vb = getValueBinding("periodicalTriggers");
- return (vb != null) ? (String) vb.getValue(getFacesContext()) : null;
- }
-
- public void setPeriodicalTriggers(String periodicalTriggers)
- {
- _periodicalTriggers = periodicalTriggers;
- }
-
- public String getPartialTriggerPattern()
- {
- if (_partialTriggerPattern != null)
- return _partialTriggerPattern;
- ValueBinding vb = getValueBinding("partialTriggerPattern");
- return vb != null ? RendererUtils.getStringValue(getFacesContext(), vb) : null;
- }
-
- public void setPartialTriggerPattern(String partialTriggerPattern)
- {
- this._partialTriggerPattern = partialTriggerPattern;
- }
-
- public String getInlineLoadingMessage()
- {
- if (_inlineLoadingMessage != null)
- return _inlineLoadingMessage;
- ValueBinding vb = getValueBinding("inlineLoadingMessage");
- return vb != null ? RendererUtils.getStringValue(getFacesContext(), vb) : null;
- }
-
- public void setInlineLoadingMessage(String inlineLoadingMessage)
- {
- this._inlineLoadingMessage = inlineLoadingMessage;
- }
-
- public Boolean getShowDebugMessages()
- {
- if (_showDebugMessages != null)
- {
- return _showDebugMessages;
- }
- ValueBinding vb = getValueBinding("showDebugMessages");
- return vb != null ? (Boolean) vb.getValue(getFacesContext()) : null;
- }
-
- public void setShowDebugMessages(Boolean showDebugMessages)
- {
- _showDebugMessages = showDebugMessages;
- }
-
- public Boolean getStateUpdate()
- {
- if (_stateUpdate != null)
- {
- return _stateUpdate;
- }
- ValueBinding vb = getValueBinding("stateUpdate");
- return vb != null ? (Boolean) vb.getValue(getFacesContext()) : null;
- }
-
- public void setStateUpdate(Boolean stateUpdate)
- {
- _stateUpdate = stateUpdate;
- }
-
- public void restoreState(FacesContext context, Object state)
- {
-
- Object[] values = (Object[]) state;
- super.restoreState(context, values[0]);
- _partialTriggers = (String) values[1];
- _partialTriggerPattern = (String) values[2];
- _periodicalUpdate = (Integer) values[3];
- _periodicalTriggers = (String) values[4];
- _showDebugMessages = (Boolean) values[5];
- _stateUpdate = (Boolean) values[6];
-
- }
-
- public Object saveState(FacesContext context)
- {
- Object[] values = new Object[7];
- values[0] = super.saveState(context);
- values[1] = _partialTriggers;
- values[2] = _partialTriggerPattern;
- values[3] = _periodicalUpdate;
- values[4] = _periodicalTriggers;
- values[5] = _showDebugMessages;
- values[6] = _stateUpdate;
- return values;
- }
+ private Integer _periodicalUpdate;
+
+ private String _periodicalTriggers;
+
+ private String _partialTriggerPattern;
+
+ private String _inlineLoadingMessage;
+
+ private Boolean _showDebugMessages = new Boolean(false);
+
+ private Boolean _stateUpdate = new Boolean(true);
+
+ public PPRPanelGroup()
+ {
+ setRendererType(DEFAULT_RENDERER_TYPE);
+ }
+
+ public String getFamily()
+ {
+ return COMPONENT_FAMILY;
+ }
+
+ public String getPartialTriggers()
+ {
+ if(_partialTriggers != null)
+ {
+ return _partialTriggers;
+ }
+ ValueBinding vb = getValueBinding("partialTriggers");
+ return vb != null ? RendererUtils.getStringValue(getFacesContext(), vb) : null;
+ }
+
+ public void setPartialTriggers(String partialTriggers)
+ {
+ this._partialTriggers = partialTriggers;
+ }
+
+ public Integer getPeriodicalUpdate()
+ {
+ if(_periodicalUpdate != null)
+ {
+ return _periodicalUpdate;
+ }
+ ValueBinding vb = getValueBinding("periodicalUpdate");
+ return (vb != null) ? (Integer) vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setPeriodicalUpdate(Integer periodicalUpdate)
+ {
+ _periodicalUpdate = periodicalUpdate;
+ }
+
+ public String getPeriodicalTriggers()
+ {
+ if(_periodicalTriggers != null)
+ {
+ return _periodicalTriggers;
+ }
+ ValueBinding vb = getValueBinding("periodicalTriggers");
+ return (vb != null) ? (String) vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setPeriodicalTriggers(String periodicalTriggers)
+ {
+ _periodicalTriggers = periodicalTriggers;
+ }
+
+ public String getPartialTriggerPattern()
+ {
+ if(_partialTriggerPattern != null)
+ {
+ return _partialTriggerPattern;
+ }
+ ValueBinding vb = getValueBinding("partialTriggerPattern");
+ return vb != null ? RendererUtils.getStringValue(getFacesContext(), vb) : null;
+ }
+
+ public void setPartialTriggerPattern(String partialTriggerPattern)
+ {
+ this._partialTriggerPattern = partialTriggerPattern;
+ }
+
+ public String getInlineLoadingMessage()
+ {
+ if(_inlineLoadingMessage != null)
+ {
+ return _inlineLoadingMessage;
+ }
+ ValueBinding vb = getValueBinding("inlineLoadingMessage");
+ return vb != null ? RendererUtils.getStringValue(getFacesContext(), vb) : null;
+ }
+
+ public void setInlineLoadingMessage(String inlineLoadingMessage)
+ {
+ this._inlineLoadingMessage = inlineLoadingMessage;
+ }
+
+ public Boolean getShowDebugMessages()
+ {
+ if(_showDebugMessages != null)
+ {
+ return _showDebugMessages;
+ }
+ ValueBinding vb = getValueBinding("showDebugMessages");
+ return vb != null ? (Boolean) vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setShowDebugMessages(Boolean showDebugMessages)
+ {
+ _showDebugMessages = showDebugMessages;
+ }
+
+ public Boolean getStateUpdate()
+ {
+ if(_stateUpdate != null)
+ {
+ return _stateUpdate;
+ }
+ ValueBinding vb = getValueBinding("stateUpdate");
+ return vb != null ? (Boolean) vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setStateUpdate(Boolean stateUpdate)
+ {
+ _stateUpdate = stateUpdate;
+ }
+
+ public void restoreState(FacesContext context, Object state)
+ {
+
+ Object[] values = (Object[]) state;
+ super.restoreState(context, values[0]);
+ _partialTriggers = (String) values[1];
+ _partialTriggerPattern = (String) values[2];
+ _periodicalUpdate = (Integer) values[3];
+ _periodicalTriggers = (String) values[4];
+ _showDebugMessages = (Boolean) values[5];
+ _stateUpdate = (Boolean) values[6];
+
+ }
+
+ public Object saveState(FacesContext context)
+ {
+ Object[] values = new Object[7];
+ values[0] = super.saveState(context);
+ values[1] = _partialTriggers;
+ values[2] = _partialTriggerPattern;
+ values[3] = _periodicalUpdate;
+ values[4] = _periodicalTriggers;
+ values[5] = _showDebugMessages;
+ values[6] = _stateUpdate;
+ return values;
+ }
}
Modified: myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupRenderer.java?rev=590624&r1=590623&r2=590624&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupRenderer.java (original)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupRenderer.java Wed Oct 31 04:14:12 2007
@@ -45,334 +45,323 @@
/**
* @author Ernst Fastl
*/
-public class PPRPanelGroupRenderer extends HtmlGroupRenderer {
- public static final String PPR_INITIALIZED = "org.apache.myfaces.ppr.INITIALIZED";
+public class PPRPanelGroupRenderer extends HtmlGroupRenderer
+{
+ public static final String PPR_INITIALIZED = "org.apache.myfaces.ppr.INITIALIZED";
- private static Log log = LogFactory.getLog(PPRPanelGroupRenderer.class);
+ private static Log log = LogFactory.getLog(PPRPanelGroupRenderer.class);
- private static final String ADD_PARTIAL_TRIGGER_FUNCTION = "addPartialTrigger";
+ private static final String ADD_PARTIAL_TRIGGER_FUNCTION = "addPartialTrigger";
- private static final String ADD_PERIODICAL_TRIGGER_FUNCTION = "addPeriodicalTrigger";
+ private static final String ADD_PERIODICAL_TRIGGER_FUNCTION = "addPeriodicalTrigger";
- private static final String ADD_PARTIAL_TRIGGER_PATTERN_FUNCTION = "addPartialTriggerPattern";
+ private static final String ADD_PARTIAL_TRIGGER_PATTERN_FUNCTION = "addPartialTriggerPattern";
private static final String SET_SUBFORM_ID_FUNCTION = "setSubFormId";
private static final String ADD_INLINE_LOADING_MESSAGE_FUNCTION = "addInlineLoadingMessage";
- private static final String PPR_JS_FILE = "ppr.js";
+ private static final String PPR_JS_FILE = "ppr.js";
- private static final String MY_FACES_PPR_INIT_CODE = "new org.apache.myfaces.PPRCtrl";
+ private static final String MY_FACES_PPR_INIT_CODE = "new org.apache.myfaces.PPRCtrl";
- private static final String DISABLE_RENDER_CHILDREN = "org.apache.myfaces.PPRPanelGroup.disableRenderChildren";
+ private static final String DISABLE_RENDER_CHILDREN = "org.apache.myfaces.PPRPanelGroup.disableRenderChildren";
- public static final String TRANSIENT_MARKER_ATTRIBUTE = "org.apache.myfaces.PPRPanelGroup.transientComponent";
+ public static final String TRANSIENT_MARKER_ATTRIBUTE = "org.apache.myfaces.PPRPanelGroup.transientComponent";
- /**
- * Renders the start of a span element. Iterates over all child
- * components and sets transient components to transient=false. Those
- * components are marked with the TRANSIENT_MARKER_ATTRIBUTE so the
- * {@link PPRPhaseListener} can reset them to transient in the next
- * non-PPR Request
- *
- * @param facesContext
- * the current {@link FacesContext}
- * @param uiComponent
- * the {@link PPRPanelGroup} to render
- */
- public void encodeBegin(FacesContext facesContext, UIComponent uiComponent) throws IOException
- {
- if (uiComponent.getId() == null || uiComponent.getId().startsWith(UIViewRoot.UNIQUE_ID_PREFIX))
+ /**
+ * Renders the start of a span element. Iterates over all child
+ * components and sets transient components to transient=false. Those
+ * components are marked with the TRANSIENT_MARKER_ATTRIBUTE so the
+ * {@link PPRPhaseListener} can reset them to transient in the next
+ * non-PPR Request
+ *
+ * @param facesContext the current {@link FacesContext}
+ * @param uiComponent the {@link PPRPanelGroup} to render
+ */
+ public void encodeBegin(FacesContext facesContext, UIComponent uiComponent) throws IOException
{
- throw new IllegalArgumentException("'id' is a required attribute for the PPRPanelGroup");
+ if(uiComponent.getId() == null || uiComponent.getId().startsWith(UIViewRoot.UNIQUE_ID_PREFIX))
+ {
+ throw new IllegalArgumentException("'id' is a required attribute for the PPRPanelGroup");
+ }
+
+ // todo: in 1.2, better use a combo of
+ // invokeComponent/RendererUtils.renderChildren() instead
+ uiComponent.getAttributes().put(DISABLE_RENDER_CHILDREN, Boolean.TRUE);
+
+ // Iterate over the transient child components and set transient to
+ // false
+ // This is necessary to have those components available for PPR
+ // responses later on
+ for(Iterator iter = uiComponent.getChildren().iterator(); iter.hasNext();)
+ {
+ UIComponent child = (UIComponent) iter.next();
+ if(child.isTransient())
+ {
+ child.setTransient(false);
+ child.getAttributes().put(TRANSIENT_MARKER_ATTRIBUTE, Boolean.TRUE);
+ }
+ }
+
+ super.encodeBegin(facesContext, uiComponent);
}
- // todo: in 1.2, better use a combo of
- // invokeComponent/RendererUtils.renderChildren() instead
- uiComponent.getAttributes().put(DISABLE_RENDER_CHILDREN, Boolean.TRUE);
-
- // Iterate over the transient child components and set transient to
- // false
- // This is necessary to have those components available for PPR
- // responses later on
- for (Iterator iter = uiComponent.getChildren().iterator(); iter.hasNext();)
+ /**
+ * todo: in 1.2, better use a combo of
+ * invokeComponent/RendererUtils.renderChildren() instead
+ *
+ * @param context
+ * @param component
+ * @throws IOException
+ */
+ public void encodeChildren(FacesContext context, UIComponent component) throws IOException
{
- UIComponent child = (UIComponent) iter.next();
- if (child.isTransient())
- {
- child.setTransient(false);
- child.getAttributes().put(TRANSIENT_MARKER_ATTRIBUTE, Boolean.TRUE);
- }
+ Boolean disableRenderChildren = (Boolean) component.getAttributes().get(DISABLE_RENDER_CHILDREN);
+
+ if(disableRenderChildren != null && disableRenderChildren.booleanValue() == false)
+ {
+ RendererUtils.renderChildren(context, component);
+ }
}
- super.encodeBegin(facesContext, uiComponent);
- }
+ /**
+ * Encodes the end of the span-element and afterwards the inline
+ * JavaScript for the client side initialization of the
+ * {@link PPRPanelGroup}.
+ *
+ * @param facesContext the current {@link FacesContext}
+ * @param uiComponent the {@link PPRPanelGroup} to render
+ */
+ public void encodeEnd(FacesContext facesContext, UIComponent uiComponent) throws IOException
+ {
+ // Render the span end element
+ super.encodeEnd(facesContext, uiComponent);
+ if(uiComponent instanceof PPRPanelGroup)
+ {
+ PPRPanelGroup pprGroup = (PPRPanelGroup) uiComponent;
- /**
- * todo: in 1.2, better use a combo of
- * invokeComponent/RendererUtils.renderChildren() instead
- *
- * @param context
- * @param component
- * @throws IOException
- */
- public void encodeChildren(FacesContext context, UIComponent component) throws IOException
- {
- Boolean disableRenderChildren = (Boolean) component.getAttributes().get(DISABLE_RENDER_CHILDREN);
-
- if (disableRenderChildren != null && disableRenderChildren.booleanValue() == false)
- RendererUtils.renderChildren(context, component);
- }
-
- /**
- * Encodes the end of the span-element and afterwards the inline
- * JavaScript for the client side initialization of the
- * {@link PPRPanelGroup}.
- *
- * @param facesContext
- * the current {@link FacesContext}
- * @param uiComponent
- * the {@link PPRPanelGroup} to render
- */
- public void encodeEnd(FacesContext facesContext, UIComponent uiComponent) throws IOException
- {
- // Render the span end element
- super.encodeEnd(facesContext, uiComponent);
- if (uiComponent instanceof PPRPanelGroup)
+ final String triggers = pprGroup.getPartialTriggers();
+ final String triggerPattern = pprGroup.getPartialTriggerPattern();
+
+ // Check if triggers, a pattern or a periodical update is
+ // defined
+ if((triggers != null && triggers.length() > 0) || (triggerPattern != null && triggerPattern.length() > 0) || pprGroup.getPeriodicalUpdate() != null)
+ {
+ // encode the initialization inline JavaScript
+ encodeJavaScript(facesContext, pprGroup);
+ }
+ }
+
+ // todo: in 1.2, better use a combo of
+ // invokeComponent/RendererUtils.renderChildren() instead
+ uiComponent.getAttributes().put(DISABLE_RENDER_CHILDREN, Boolean.FALSE);
+ }
+
+ /**
+ * Renders inline JavaScript registering an onLoad function for:
+ * <ul>
+ * <li>Initializing the PPRCtrl for the current Form</li>
+ * <li>Registering partialTriggers</li>
+ * <li>Registering partialTriggerPatterns</li>
+ * <li>Starting periodical updates</li>
+ * <li>Registering inline Loading messages</li>
+ * </ul>
+ *
+ * @param facesContext the current {@link FacesContext}
+ * @param pprGroup the currently rendered {@link PPRPanelGroup}
+ * @throws IOException if the underlying Layer throws an {@link IOException}
+ * it is passed through
+ */
+ private void encodeJavaScript(FacesContext facesContext, PPRPanelGroup pprGroup) throws IOException
{
- PPRPanelGroup pprGroup = (PPRPanelGroup) uiComponent;
- final String triggers = pprGroup.getPartialTriggers();
- final String triggerPattern = pprGroup.getPartialTriggerPattern();
+ final ExternalContext externalContext = facesContext.getExternalContext();
- // Check if triggers, a pattern or a periodical update is
- // defined
- if ((triggers != null && triggers.length() > 0) || (triggerPattern != null && triggerPattern.length() > 0)
- || pprGroup.getPeriodicalUpdate() != null)
- {
- // encode the initialization inline JavaScript
- encodeJavaScript(facesContext, pprGroup);
- }
- }
+ final Map requestMap = externalContext.getRequestMap();
- // todo: in 1.2, better use a combo of
- // invokeComponent/RendererUtils.renderChildren() instead
- uiComponent.getAttributes().put(DISABLE_RENDER_CHILDREN, Boolean.FALSE);
- }
-
- /**
- * Renders inline JavaScript registering an onLoad function for:
- * <ul>
- * <li>Initializing the PPRCtrl for the current Form</li>
- * <li>Registering partialTriggers</li>
- * <li>Registering partialTriggerPatterns</li>
- * <li>Starting periodical updates</li>
- * <li>Registering inline Loading messages</li>
- * </ul>
- *
- * @param facesContext
- * the current {@link FacesContext}
- * @param pprGroup
- * the currently rendered {@link PPRPanelGroup}
- * @throws IOException
- * if the underlying Layer throws an {@link IOException}
- * it is passed through
- */
- private void encodeJavaScript(FacesContext facesContext, PPRPanelGroup pprGroup) throws IOException
- {
+ // Do not render the JavaScript if answering to a PPR response
+ if(PPRPhaseListener.isPartialRequest(facesContext))
+ {
+ return;
+ }
- final ExternalContext externalContext = facesContext.getExternalContext();
+ FormInfo fi = RendererUtils.findNestingForm(pprGroup, facesContext);
+ if(fi == null)
+ {
+ throw new FacesException("PPRPanelGroup must be embedded in a form.");
+ }
- final Map requestMap = externalContext.getRequestMap();
+ //Initialize the client side PPR engine
+ if(!requestMap.containsKey(PPR_INITIALIZED))
+ {
+ requestMap.put(PPR_INITIALIZED, Boolean.TRUE);
- // Do not render the JavaScript if answering to a PPR response
- if (PPRPhaseListener.isPartialRequest(facesContext))
- {
- return;
- }
+ String encoding = "UTF-8"; // Hardcoded default
+ if(facesContext.getResponseWriter().getCharacterEncoding() != null)
+ {
+ encoding = facesContext.getResponseWriter().getCharacterEncoding();
+ }
- FormInfo fi = RendererUtils.findNestingForm(pprGroup, facesContext);
- if (fi == null)
- {
- throw new FacesException("PPRPanelGroup must be embedded in a form.");
- }
+ DojoConfig currentConfig = DojoUtils.getDjConfigInstance(facesContext);
+ currentConfig.setBindEncoding(encoding);
- //Initialize the client side PPR engine
- if (!requestMap.containsKey(PPR_INITIALIZED))
- {
- requestMap.put(PPR_INITIALIZED, Boolean.TRUE);
+ String javascriptLocation = (String) pprGroup.getAttributes().get(JSFAttr.JAVASCRIPT_LOCATION);
+ AddResource addResource = AddResourceFactory.getInstance(facesContext);
+ DojoUtils.addMainInclude(facesContext, pprGroup, javascriptLocation, currentConfig);
+ DojoUtils.addRequire(facesContext, pprGroup, "dojo.io.*");
+ DojoUtils.addRequire(facesContext, pprGroup, "dojo.event.*");
+ DojoUtils.addRequire(facesContext, pprGroup, "dojo.xml.*");
+ addResource.addJavaScriptAtPosition(facesContext, AddResource.HEADER_BEGIN, PPRPanelGroup.class, PPR_JS_FILE);
+ }
- String encoding = "UTF-8" ; // Hardcoded default
- if(facesContext.getResponseWriter().getCharacterEncoding() != null)
- encoding = facesContext.getResponseWriter().getCharacterEncoding();
-
- DojoConfig currentConfig = DojoUtils.getDjConfigInstance(facesContext);
- currentConfig.setBindEncoding(encoding);
-
- String javascriptLocation = (String) pprGroup.getAttributes().get(JSFAttr.JAVASCRIPT_LOCATION);
- AddResource addResource = AddResourceFactory.getInstance(facesContext);
- DojoUtils.addMainInclude(facesContext, pprGroup, javascriptLocation, currentConfig);
- DojoUtils.addRequire(facesContext, pprGroup, "dojo.io.*");
- DojoUtils.addRequire(facesContext, pprGroup, "dojo.event.*");
- DojoUtils.addRequire(facesContext, pprGroup, "dojo.xml.*");
- addResource.addJavaScriptAtPosition(facesContext, AddResource.HEADER_BEGIN, PPRPanelGroup.class,
- PPR_JS_FILE);
- }
+ StringBuffer script = new StringBuffer();
- StringBuffer script = new StringBuffer();
+ // all JS is put inside a function passed to dojoOnLoad
+ // this is necessary in order to be able to replace all button onClick
+ // handlers
- // all JS is put inside a function passed to dojoOnLoad
- // this is necessary in order to be able to replace all button onClick
- // handlers
+ script.append("dojo.addOnLoad( function(){ ");
- script.append("dojo.addOnLoad( function(){ ");
+ final String formName = fi.getFormName();
- final String formName = fi.getFormName();
+ String pprCtrlReference = "dojo.byId('" + formName + "').myFacesPPRCtrl";
- String pprCtrlReference = "dojo.byId('" + formName + "').myFacesPPRCtrl";
+ //Each form containing PPRPanelGroups has its own PPRCtrl
+ if(!requestMap.containsKey(PPR_INITIALIZED + "." + formName))
+ {
+ requestMap.put(PPR_INITIALIZED + "." + formName, Boolean.TRUE);
- //Each form containing PPRPanelGroups has its own PPRCtrl
- if (!requestMap.containsKey(PPR_INITIALIZED + "." + formName))
- {
- requestMap.put(PPR_INITIALIZED + "." + formName, Boolean.TRUE);
+ script.append(pprCtrlReference + "=" + MY_FACES_PPR_INIT_CODE + "('" + formName + "'," + pprGroup.getShowDebugMessages().booleanValue() + "," + pprGroup.getStateUpdate().booleanValue() + ");\n");
- script.append(pprCtrlReference + "=" + MY_FACES_PPR_INIT_CODE + "('" + formName + "',"
- + pprGroup.getShowDebugMessages().booleanValue() + "," + pprGroup.getStateUpdate().booleanValue()
- + ");\n");
-
- if (pprGroup.getPeriodicalUpdate() != null)
- {
- script.append(pprCtrlReference + ".registerOnSubmitInterceptor();");
- }
+ if(pprGroup.getPeriodicalUpdate() != null)
+ {
+ script.append(pprCtrlReference + ".registerOnSubmitInterceptor();");
+ }
- }
+ }
- String clientId = pprGroup.getClientId(facesContext);
+ String clientId = pprGroup.getClientId(facesContext);
- //Handle periodical updates
- if (pprGroup.getPeriodicalUpdate() != null)
- {
- String periodicalTriggers = pprGroup.getPeriodicalTriggers();
- // If no periodicalTriggers are set just start the periodical
- // update
- if (periodicalTriggers == null || periodicalTriggers.trim().length() <= 0)
- {
- script.append(pprCtrlReference + ".startPeriodicalUpdate(" + pprGroup.getPeriodicalUpdate() + ",'"
- + clientId + "');");
- }
- // Otherwise start it when the trigger happens
- else
- {
- List partialTriggers = (new PartialTriggerParser()).parse(periodicalTriggers);
- String periodicalTriggerId;
- String periodicalTriggerClientId;
- UIComponent periodicalTriggerComponent;
- for (int i = 0; i < partialTriggers.size(); i++)
- {
- PartialTriggerParser.PartialTrigger trigger = (PartialTriggerParser.PartialTrigger) partialTriggers
- .get(i);
- periodicalTriggerId = trigger.getPartialTriggerId();
- periodicalTriggerComponent = pprGroup.findComponent(periodicalTriggerId);
- if (periodicalTriggerComponent == null)
- {
- periodicalTriggerComponent = facesContext.getViewRoot().findComponent(periodicalTriggerId);
- }
-
- // Component found
- if (periodicalTriggerComponent != null)
- {
- periodicalTriggerClientId = periodicalTriggerComponent.getClientId(facesContext);
- script.append(pprCtrlReference + "." + ADD_PERIODICAL_TRIGGER_FUNCTION + "('"
- + periodicalTriggerClientId + "'," + encodeArray(trigger.getEventHooks()) + ",'"
- + clientId + "', " + pprGroup.getPeriodicalUpdate() + ");");
-
- // Component missing
- } else
- {
- if (log.isDebugEnabled())
+ //Handle periodical updates
+ if(pprGroup.getPeriodicalUpdate() != null)
+ {
+ String periodicalTriggers = pprGroup.getPeriodicalTriggers();
+ // If no periodicalTriggers are set just start the periodical
+ // update
+ if(periodicalTriggers == null || periodicalTriggers.trim().length() <= 0)
{
- log.debug("PPRPanelGroupRenderer Component with id " + periodicalTriggerId + " not found!");
+ script.append(pprCtrlReference + ".startPeriodicalUpdate(" + pprGroup.getPeriodicalUpdate() + ",'" + clientId + "');");
+ }
+ // Otherwise start it when the trigger happens
+ else
+ {
+ List partialTriggers = (new PartialTriggerParser()).parse(periodicalTriggers);
+ String periodicalTriggerId;
+ String periodicalTriggerClientId;
+ UIComponent periodicalTriggerComponent;
+ for(int i = 0; i < partialTriggers.size(); i++)
+ {
+ PartialTriggerParser.PartialTrigger trigger = (PartialTriggerParser.PartialTrigger) partialTriggers
+ .get(i);
+ periodicalTriggerId = trigger.getPartialTriggerId();
+ periodicalTriggerComponent = pprGroup.findComponent(periodicalTriggerId);
+ if(periodicalTriggerComponent == null)
+ {
+ periodicalTriggerComponent = facesContext.getViewRoot().findComponent(periodicalTriggerId);
+ }
+
+ // Component found
+ if(periodicalTriggerComponent != null)
+ {
+ periodicalTriggerClientId = periodicalTriggerComponent.getClientId(facesContext);
+ script.append(pprCtrlReference + "." + ADD_PERIODICAL_TRIGGER_FUNCTION + "('" + periodicalTriggerClientId + "'," + encodeArray(trigger.getEventHooks()) + ",'" + clientId + "', " + pprGroup.getPeriodicalUpdate() + ");");
+
+ // Component missing
+ }
+ else
+ {
+ if(log.isDebugEnabled())
+ {
+ log.debug("PPRPanelGroupRenderer Component with id " + periodicalTriggerId + " not found!");
+ }
+ }
+ }
}
- }
}
- }
- }
- String partialTriggerId;
- String partialTriggerClientId;
- UIComponent partialTriggerComponent;
+ String partialTriggerId;
+ String partialTriggerClientId;
+ UIComponent partialTriggerComponent;
- String partialTriggers = pprGroup.getPartialTriggers();
+ String partialTriggers = pprGroup.getPartialTriggers();
- String partialTriggerPattern = pprGroup.getPartialTriggerPattern();
+ String partialTriggerPattern = pprGroup.getPartialTriggerPattern();
- //handle partial trigger patterns
- if (partialTriggerPattern != null && partialTriggerPattern.trim().length() > 0)
- {
- script.append(pprCtrlReference + "." + ADD_PARTIAL_TRIGGER_PATTERN_FUNCTION + "('" + partialTriggerPattern
- + "','" + clientId + "');");
- }
+ //handle partial trigger patterns
+ if(partialTriggerPattern != null && partialTriggerPattern.trim().length() > 0)
+ {
+ script.append(pprCtrlReference + "." + ADD_PARTIAL_TRIGGER_PATTERN_FUNCTION + "('" + partialTriggerPattern + "','" + clientId + "');");
+ }
- SubForm subFormParent = findParentSubForm(pprGroup);
- if (subFormParent != null)
- {
- script.append(pprCtrlReference + "." + SET_SUBFORM_ID_FUNCTION + "('" + subFormParent.getId()
- + "','" + clientId + "');");
- }
+ SubForm subFormParent = findParentSubForm(pprGroup);
+ if(subFormParent != null)
+ {
+ script.append(pprCtrlReference + "." + SET_SUBFORM_ID_FUNCTION + "('" + subFormParent.getId() + "','" + clientId + "');");
+ }
- String inlineLoadingMessage = pprGroup.getInlineLoadingMessage();
+ String inlineLoadingMessage = pprGroup.getInlineLoadingMessage();
- //handle inline loading messages
- if (inlineLoadingMessage != null && inlineLoadingMessage.trim().length() > 0)
- {
- script.append(pprCtrlReference + "." + ADD_INLINE_LOADING_MESSAGE_FUNCTION + "('" + inlineLoadingMessage
- + "','" + clientId + "');");
- }
+ //handle inline loading messages
+ if(inlineLoadingMessage != null && inlineLoadingMessage.trim().length() > 0)
+ {
+ script.append(pprCtrlReference + "." + ADD_INLINE_LOADING_MESSAGE_FUNCTION + "('" + inlineLoadingMessage + "','" + clientId + "');");
+ }
- //handle partial triggers
- if (partialTriggers != null && partialTriggers.trim().length() > 0)
- {
- List partialTriggerIds = (new PartialTriggerParser()).parse(partialTriggers);
- for (int i = 0; i < partialTriggerIds.size(); i++)
- {
- PartialTriggerParser.PartialTrigger trigger = (PartialTriggerParser.PartialTrigger) partialTriggerIds
- .get(i);
- partialTriggerId = trigger.getPartialTriggerId();
- partialTriggerComponent = pprGroup.findComponent(partialTriggerId);
- if (partialTriggerComponent == null)
- {
- partialTriggerComponent = facesContext.getViewRoot().findComponent(partialTriggerId);
- }
- if (partialTriggerComponent != null)
- {
- partialTriggerClientId = partialTriggerComponent.getClientId(facesContext);
- script.append(pprCtrlReference + "." + ADD_PARTIAL_TRIGGER_FUNCTION + "('" + partialTriggerClientId
- + "'," + encodeArray(trigger.getEventHooks()) + ",'" + clientId + "');");
- } else
- {
- if (log.isDebugEnabled())
- {
- log.debug("PPRPanelGroupRenderer Component with id " + partialTriggerId + " not found!");
- }
+ //handle partial triggers
+ if(partialTriggers != null && partialTriggers.trim().length() > 0)
+ {
+ List partialTriggerIds = (new PartialTriggerParser()).parse(partialTriggers);
+ for(int i = 0; i < partialTriggerIds.size(); i++)
+ {
+ PartialTriggerParser.PartialTrigger trigger = (PartialTriggerParser.PartialTrigger) partialTriggerIds
+ .get(i);
+ partialTriggerId = trigger.getPartialTriggerId();
+ partialTriggerComponent = pprGroup.findComponent(partialTriggerId);
+ if(partialTriggerComponent == null)
+ {
+ partialTriggerComponent = facesContext.getViewRoot().findComponent(partialTriggerId);
+ }
+ if(partialTriggerComponent != null)
+ {
+ partialTriggerClientId = partialTriggerComponent.getClientId(facesContext);
+ script.append(pprCtrlReference + "." + ADD_PARTIAL_TRIGGER_FUNCTION + "('" + partialTriggerClientId + "'," + encodeArray(trigger.getEventHooks()) + ",'" + clientId + "');");
+ }
+ else
+ {
+ if(log.isDebugEnabled())
+ {
+ log.debug("PPRPanelGroupRenderer Component with id " + partialTriggerId + " not found!");
+ }
+ }
+ }
}
- }
- }
- // closing the dojo.addOnLoad call
- script.append("});");
+ // closing the dojo.addOnLoad call
+ script.append("});");
- //Really render the script
- renderInlineScript(facesContext, pprGroup, script.toString());
- }
+ //Really render the script
+ renderInlineScript(facesContext, pprGroup, script.toString());
+ }
private SubForm findParentSubForm(UIComponent base)
{
- if (base == null)
+ if(base == null)
{
return null;
}
- if (base instanceof SubForm)
+ if(base instanceof SubForm)
{
return (SubForm) base;
}
@@ -381,50 +370,48 @@
}
private String encodeArray(List eventHooks)
- {
- if (eventHooks == null || eventHooks.size() == 0)
{
- return "null";
- } else
- {
- StringBuffer buf = new StringBuffer();
- buf.append("[");
+ if(eventHooks == null || eventHooks.size() == 0)
+ {
+ return "null";
+ }
+ else
+ {
+ StringBuffer buf = new StringBuffer();
+ buf.append("[");
- for (int i = 0; i < eventHooks.size(); i++)
- {
- if (i > 0)
- buf.append(",");
- String eventHook = (String) eventHooks.get(i);
- buf.append("'");
- buf.append(eventHook);
- buf.append("'");
- }
- buf.append("]");
+ for(int i = 0; i < eventHooks.size(); i++)
+ {
+ if(i > 0)
+ {
+ buf.append(",");
+ }
+ String eventHook = (String) eventHooks.get(i);
+ buf.append("'");
+ buf.append(eventHook);
+ buf.append("'");
+ }
+ buf.append("]");
- return buf.toString();
+ return buf.toString();
+ }
}
- }
- /**
- * Helper to write an inline javascript at the exact resource location
- * of the call.
- *
- * @param facesContext
- * The current faces-context.
- * @param component
- * The component for which the script is written.
- * @param script
- * The script to be written.
- * @throws IOException
- * A forwarded exception from the underlying renderer.
- */
- private static void renderInlineScript(FacesContext facesContext, UIComponent component, String script)
- throws IOException
- {
- ResponseWriter writer = facesContext.getResponseWriter();
- writer.startElement(HTML.SCRIPT_ELEM, component);
- writer.writeAttribute(HTML.TYPE_ATTR, HTML.SCRIPT_TYPE_TEXT_JAVASCRIPT, null);
- writer.write(script);
- writer.endElement(HTML.SCRIPT_ELEM);
- }
+ /**
+ * Helper to write an inline javascript at the exact resource location
+ * of the call.
+ *
+ * @param facesContext The current faces-context.
+ * @param component The component for which the script is written.
+ * @param script The script to be written.
+ * @throws IOException A forwarded exception from the underlying renderer.
+ */
+ private static void renderInlineScript(FacesContext facesContext, UIComponent component, String script) throws IOException
+ {
+ ResponseWriter writer = facesContext.getResponseWriter();
+ writer.startElement(HTML.SCRIPT_ELEM, component);
+ writer.writeAttribute(HTML.TYPE_ATTR, HTML.SCRIPT_TYPE_TEXT_JAVASCRIPT, null);
+ writer.write(script);
+ writer.endElement(HTML.SCRIPT_ELEM);
+ }
}
Modified: myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupTag.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupTag.java?rev=590624&r1=590623&r2=590624&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupTag.java (original)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupTag.java Wed Oct 31 04:14:12 2007
@@ -25,7 +25,8 @@
/**
* @author Ernst Fastl
*/
-public class PPRPanelGroupTag extends HtmlPanelGroupTag {
+public class PPRPanelGroupTag extends HtmlPanelGroupTag
+{
private String _partialTriggers;
private String _partialTriggerPattern;
@@ -34,82 +35,97 @@
private String _periodicalUpdate;
- private String _periodicalTriggers;
+ private String _periodicalTriggers;
- private String _showDebugMessages;
+ private String _showDebugMessages;
private String _stateUpdate;
- public String getComponentType() {
+ public String getComponentType()
+ {
return PPRPanelGroup.COMPONENT_TYPE;
}
- public String getRendererType() {
+ public String getRendererType()
+ {
return PPRPanelGroup.DEFAULT_RENDERER_TYPE;
}
- public void release() {
+ public void release()
+ {
super.release();
_partialTriggers = null;
_periodicalUpdate = null;
- _periodicalTriggers = null;
- _showDebugMessages = null;
+ _periodicalTriggers = null;
+ _showDebugMessages = null;
_stateUpdate = null;
}
- protected void setProperties(UIComponent component) {
+ protected void setProperties(UIComponent component)
+ {
super.setProperties(component);
setStringProperty(component, "partialTriggers", _partialTriggers);
setStringProperty(component, "partialTriggerPattern", _partialTriggerPattern);
setStringProperty(component, "inlineLoadingMessage", _inlineLoadingMessage);
setIntegerProperty(component, "periodicalUpdate", _periodicalUpdate);
- setStringProperty(component, "periodicalTriggers", _periodicalTriggers);
- setBooleanProperty(component, "showDebugMessages", _showDebugMessages);
+ setStringProperty(component, "periodicalTriggers", _periodicalTriggers);
+ setBooleanProperty(component, "showDebugMessages", _showDebugMessages);
setBooleanProperty(component, "stateUpdate", _stateUpdate);
}
- public String getPartialTriggers() {
+ public String getPartialTriggers()
+ {
return _partialTriggers;
}
- public void setPartialTriggers(String partialTriggers) {
+ public void setPartialTriggers(String partialTriggers)
+ {
this._partialTriggers = partialTriggers;
}
- public String getPartialTriggerPattern() {
+ public String getPartialTriggerPattern()
+ {
return _partialTriggerPattern;
}
- public void setPartialTriggerPattern(String triggerPattern) {
+ public void setPartialTriggerPattern(String triggerPattern)
+ {
_partialTriggerPattern = triggerPattern;
}
- public String getInlineLoadingMessage() {
+ public String getInlineLoadingMessage()
+ {
return _inlineLoadingMessage;
}
- public void setInlineLoadingMessage(String loadingMessage) {
+ public void setInlineLoadingMessage(String loadingMessage)
+ {
_inlineLoadingMessage = loadingMessage;
}
- public void setPeriodicalUpdate(String periodicalUpdate) {
+ public void setPeriodicalUpdate(String periodicalUpdate)
+ {
_periodicalUpdate = periodicalUpdate;
}
- public String getPeriodicalTriggers() {
+ public String getPeriodicalTriggers()
+ {
return _periodicalTriggers;
}
- public void setPeriodicalTriggers(String periodicalTriggers) {
+ public void setPeriodicalTriggers(String periodicalTriggers)
+ {
_periodicalTriggers = periodicalTriggers;
}
- public void setShowDebugMessages(String showDebugMessages) {
+ public void setShowDebugMessages(String showDebugMessages)
+ {
_showDebugMessages = showDebugMessages;
}
- public void setStateUpdate(String stateUpdate) {
+ public void setStateUpdate(String stateUpdate)
+ {
_stateUpdate = stateUpdate;
}
}
Modified: myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPhaseListener.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPhaseListener.java?rev=590624&r1=590623&r2=590624&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPhaseListener.java (original)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPhaseListener.java Wed Oct 31 04:14:12 2007
@@ -45,277 +45,271 @@
* Before RenderResponse PhaseListener for processing Ajax requests from
* {@link PPRPanelGroup}. It also participates in handling transient components
* in PPR Requests
- *
+ *
* @author Ernst Fastl
*/
-public class PPRPhaseListener implements PhaseListener {
- private static Log log = LogFactory.getLog(PPRPhaseListener.class);
+public class PPRPhaseListener implements PhaseListener
+{
+ private static Log log = LogFactory.getLog(PPRPhaseListener.class);
+
+ /**
+ * Request parameter which marks a request as PPR request
+ */
+ private static final String PPR_PARAMETER = "org.apache.myfaces.PPRCtrl.ajaxRequest";
+
+ /**
+ * Request parameter containing a comma separated list of component IDs
+ * of the to be updated components
+ */
+ private static final String TRIGGERED_COMPONENTS_PARAMETER = "org.apache.myfaces.PPRCtrl.triggeredComponents";
- /**
- * Request parameter which marks a request as PPR request
- */
- private static final String PPR_PARAMETER = "org.apache.myfaces.PPRCtrl.ajaxRequest";
-
- /**
- * Request parameter containing a comma separated list of component IDs
- * of the to be updated components
- */
- private static final String TRIGGERED_COMPONENTS_PARAMETER = "org.apache.myfaces.PPRCtrl.triggeredComponents";
-
- private static final String XML_HEADER = "<?xml version=\"1.0\"?>\n";
-
- public void afterPhase(PhaseEvent phaseEvent)
- {
- }
-
- /**
- * Determines wether the currently processed request is a PPR request
- * (by searching for PPR_PARAMETER in the request parameter map) or an
- * ordinary HTTP request. If the request is a PPR request the triggered
- * components are encoded. Otherwise transient components which have
- * previously been marked not transient by the
- * {@link PPRPanelGroupRenderer} are set to transient again
- */
- public void beforePhase(PhaseEvent event)
- {
- if (log.isDebugEnabled())
+ private static final String XML_HEADER = "<?xml version=\"1.0\"?>\n";
+
+ public void afterPhase(PhaseEvent phaseEvent)
{
- log.debug("In PPRPhaseListener beforePhase");
}
- final FacesContext context = event.getFacesContext();
- final ExternalContext externalContext = context.getExternalContext();
+ /**
+ * Determines wether the currently processed request is a PPR request
+ * (by searching for PPR_PARAMETER in the request parameter map) or an
+ * ordinary HTTP request. If the request is a PPR request the triggered
+ * components are encoded. Otherwise transient components which have
+ * previously been marked not transient by the
+ * {@link PPRPanelGroupRenderer} are set to transient again
+ */
+ public void beforePhase(PhaseEvent event)
+ {
+ if(log.isDebugEnabled())
+ {
+ log.debug("In PPRPhaseListener beforePhase");
+ }
- Map requestMap = externalContext.getRequestMap();
+ final FacesContext context = event.getFacesContext();
+ final ExternalContext externalContext = context.getExternalContext();
- if (isPartialRequest(context))
- {
- processPartialPageRequest(context, externalContext, requestMap);
- } else
- {
- // Iterate over the component tree and set all previously
- // transient components to transient again
- resetTransientComponents(context.getViewRoot());
+ Map requestMap = externalContext.getRequestMap();
+
+ if(isPartialRequest(context))
+ {
+ processPartialPageRequest(context, externalContext, requestMap);
+ }
+ else
+ {
+ // Iterate over the component tree and set all previously
+ // transient components to transient again
+ resetTransientComponents(context.getViewRoot());
+ }
}
- }
- /**
- * if the provided component was marked transient in the last request
- * set it to transient. Recursively do the same for all children
- *
- * @param comp
- * the component to reset
- */
- private void resetTransientComponents(UIComponent comp)
- {
- if (comp.getAttributes().containsKey(PPRPanelGroupRenderer.TRANSIENT_MARKER_ATTRIBUTE))
+ /**
+ * if the provided component was marked transient in the last request
+ * set it to transient. Recursively do the same for all children
+ *
+ * @param comp the component to reset
+ */
+ private void resetTransientComponents(UIComponent comp)
{
- comp.setTransient(true);
+ if(comp.getAttributes().containsKey(PPRPanelGroupRenderer.TRANSIENT_MARKER_ATTRIBUTE))
+ {
+ comp.setTransient(true);
+ }
+ for(Iterator iter = comp.getChildren().iterator(); iter.hasNext();)
+ {
+ UIComponent child = (UIComponent) iter.next();
+ resetTransientComponents(child);
+ }
}
- for (Iterator iter = comp.getChildren().iterator(); iter.hasNext();)
+
+ /**
+ * Checks if the currently processed Request is an AJAX request from a
+ * PPRPanelGroup
+ *
+ * @param context the current {@link FacesContext}
+ * @return true if a PPR request is being processed , false otherwise
+ */
+ public static boolean isPartialRequest(FacesContext context)
{
- UIComponent child = (UIComponent) iter.next();
- resetTransientComponents(child);
+ return context.getExternalContext().getRequestParameterMap().containsKey(PPR_PARAMETER);
}
- }
- /**
- * Checks if the currently processed Request is an AJAX request from a
- * PPRPanelGroup
- *
- * @param context
- * the current {@link FacesContext}
- * @return true if a PPR request is being processed , false otherwise
- */
- public static boolean isPartialRequest(FacesContext context)
- {
- return context.getExternalContext().getRequestParameterMap().containsKey(PPR_PARAMETER);
- }
-
- /**
- * Respond to an AJAX request from a {@link PPRPanelGroup}. The
- * triggered components are determined by reading the
- * TRIGGERED_COMPONENTS_PARAMETER from either the RequestParameterMap or
- * the Request Map. Those componenets are encoded into an XML response.
- * The lifecycle is quit afterwards.
- *
- * @param context
- * the current {@link FacesContext}
- * @param externalContext
- * the current {@link ExternalContext}
- * @param requestMap
- * Map containing the request attributes
- */
- private void processPartialPageRequest(FacesContext context, final ExternalContext externalContext, Map requestMap)
- {
-
- ServletResponse response = (ServletResponse) externalContext.getResponse();
- ServletRequest request = (ServletRequest) externalContext.getRequest();
-
- UIViewRoot viewRoot = context.getViewRoot();
-
- // Set Character encoding, contentType and locale for the response
- final String characterEncoding = request.getCharacterEncoding();
- String contentType = getContentType("text/xml", characterEncoding);
- response.setContentType(contentType);
- response.setLocale(viewRoot.getLocale());
+ /**
+ * Respond to an AJAX request from a {@link PPRPanelGroup}. The
+ * triggered components are determined by reading the
+ * TRIGGERED_COMPONENTS_PARAMETER from either the RequestParameterMap or
+ * the Request Map. Those componenets are encoded into an XML response.
+ * The lifecycle is quit afterwards.
+ *
+ * @param context the current {@link FacesContext}
+ * @param externalContext the current {@link ExternalContext}
+ * @param requestMap Map containing the request attributes
+ */
+ private void processPartialPageRequest(FacesContext context, final ExternalContext externalContext, Map requestMap)
+ {
+
+ ServletResponse response = (ServletResponse) externalContext.getResponse();
+ ServletRequest request = (ServletRequest) externalContext.getRequest();
+
+ UIViewRoot viewRoot = context.getViewRoot();
+
+ // Set Character encoding, contentType and locale for the response
+ final String characterEncoding = request.getCharacterEncoding();
+ String contentType = getContentType("text/xml", characterEncoding);
+ response.setContentType(contentType);
+ response.setLocale(viewRoot.getLocale());
- // Fetch the comma-separated list of triggered components
- String triggeredComponents = getTriggeredComponents(context);
+ // Fetch the comma-separated list of triggered components
+ String triggeredComponents = getTriggeredComponents(context);
- try
- {
- PrintWriter out = response.getWriter();
- context.setResponseWriter(new HtmlResponseWriterImpl(out, contentType, characterEncoding));
- out.print(XML_HEADER);
- out.print("<response>\n");
- encodeTriggeredComponents(out, triggeredComponents, viewRoot, context);
- out.print("</response>");
- out.flush();
- } catch (IOException e)
- {
- throw new FacesException(e);
- }
-
- context.responseComplete();
- }
+ try
+ {
+ PrintWriter out = response.getWriter();
+ context.setResponseWriter(new HtmlResponseWriterImpl(out, contentType, characterEncoding));
+ out.print(XML_HEADER);
+ out.print("<response>\n");
+ encodeTriggeredComponents(out, triggeredComponents, viewRoot, context);
+ out.print("</response>");
+ out.flush();
+ }
+ catch(IOException e)
+ {
+ throw new FacesException(e);
+ }
- /**
- * Fetch the comma-separated list of triggered components. They are
- * either obtained from the Request Parameter Map where they had
- * previously been set using
- * {@link PPRPhaseListener#addTriggeredComponent(FacesContext, String))
- * or from the request parameter map.
- *
- * @param fc
- * the current {@link FacesContext}
- * @return a comma separated list of component IDs of the components
- * which are to be updated
- */
- private static String getTriggeredComponents(FacesContext fc)
- {
- String triggeredComponents = (String) fc.getExternalContext().getRequestMap().get(
- TRIGGERED_COMPONENTS_PARAMETER);
+ context.responseComplete();
+ }
- if (triggeredComponents == null)
+ /**
+ * Fetch the comma-separated list of triggered components. They are
+ * either obtained from the Request Parameter Map where they had
+ * previously been set using
+ * {@link PPRPhaseListener#addTriggeredComponent(FacesContext, String))
+ * or from the request parameter map.
+ *
+ * @param fc the current {@link FacesContext}
+ * @return a comma separated list of component IDs of the components
+ * which are to be updated
+ */
+ private static String getTriggeredComponents(FacesContext fc)
{
- triggeredComponents = (String) fc.getExternalContext().getRequestParameterMap().get(
- TRIGGERED_COMPONENTS_PARAMETER);
- }
+ String triggeredComponents = (String) fc.getExternalContext().getRequestMap().get(TRIGGERED_COMPONENTS_PARAMETER);
- return triggeredComponents;
- }
+ if(triggeredComponents == null)
+ {
+ triggeredComponents = (String) fc.getExternalContext().getRequestParameterMap().get(TRIGGERED_COMPONENTS_PARAMETER);
+ }
- /**
- * API method for adding triggeredComponents programmatically.
- *
- * @param fc
- * the current {@link FacesContext}
- * @param triggeredComponentClientId
- * client ID of the component which is to be updated in
- * case of a PPR Response
- */
- public static void addTriggeredComponent(FacesContext fc, String triggeredComponentClientId)
- {
- String triggeredComponents = getTriggeredComponents(fc);
+ return triggeredComponents;
+ }
- if (triggeredComponents == null || triggeredComponents.trim().length() == 0)
- {
- triggeredComponents = new String();
- } else
+ /**
+ * API method for adding triggeredComponents programmatically.
+ *
+ * @param fc the current {@link FacesContext}
+ * @param triggeredComponentClientId client ID of the component which is to be updated in
+ * case of a PPR Response
+ */
+ public static void addTriggeredComponent(FacesContext fc, String triggeredComponentClientId)
{
- triggeredComponents = triggeredComponents + ",";
- }
+ String triggeredComponents = getTriggeredComponents(fc);
+
+ if(triggeredComponents == null || triggeredComponents.trim().length() == 0)
+ {
+ triggeredComponents = new String();
+ }
+ else
+ {
+ triggeredComponents = triggeredComponents + ",";
+ }
- triggeredComponents = triggeredComponents + triggeredComponentClientId;
+ triggeredComponents = triggeredComponents + triggeredComponentClientId;
- fc.getExternalContext().getRequestMap().put(TRIGGERED_COMPONENTS_PARAMETER, triggeredComponents);
- }
+ fc.getExternalContext().getRequestMap().put(TRIGGERED_COMPONENTS_PARAMETER, triggeredComponents);
+ }
- /**
- * Generate content-type String either containing only the mime-type or
- * mime-type and character enconding.
- *
- * @param contentType
- * the contentType/mimeType
- * @param charset
- * the character set
- * @return the content-type String to be used in an HTTP response
- */
- private String getContentType(String contentType, String charset)
- {
- if (charset == null || charset.trim().length() == 0)
- return contentType;
- else
- return contentType + ";charset=" + charset;
- }
-
- /**
- * Writes the XML elements for the triggered components to the provided
- * {@link PrintWriter}. Also encode the current state in a separate XML
- * element.
- *
- * @param out
- * the output Writer
- * @param triggeredComponents
- * comma-separated list of component IDs
- * @param viewRoot
- * the current ViewRoot
- * @param context
- * the current {@link FacesContext}
- */
- private void encodeTriggeredComponents(PrintWriter out, String triggeredComponents, UIViewRoot viewRoot,
- FacesContext context)
- {
- StringTokenizer st = new StringTokenizer(triggeredComponents, ",", false);
- String clientId;
- UIComponent component;
- // Iterate over the individual client IDs
- while (st.hasMoreTokens())
+ /**
+ * Generate content-type String either containing only the mime-type or
+ * mime-type and character enconding.
+ *
+ * @param contentType the contentType/mimeType
+ * @param charset the character set
+ * @return the content-type String to be used in an HTTP response
+ */
+ private String getContentType(String contentType, String charset)
{
- clientId = st.nextToken();
- component = viewRoot.findComponent(clientId);
- if (component != null)
- {
- // Write a component tag which contains a CDATA section whith
- // the rendered HTML
- // of the component children
- out.print("<component id=\"" + component.getClientId(context) + "\"><![CDATA[");
- boolean oldValue = HtmlRendererUtils.isAllowedCdataSection(context);
- HtmlRendererUtils.allowCdataSection(context, false);
- try
+ if(charset == null || charset.trim().length() == 0)
{
- component.encodeChildren(context);
- } catch (IOException e)
+ return contentType;
+ }
+ else
{
- throw new FacesException(e);
+ return contentType + ";charset=" + charset;
}
- HtmlRendererUtils.allowCdataSection(context, oldValue);
- out.print("]]></component>");
- } else
- {
- log.debug("PPRPhaseListener component with id" + clientId + "not found!");
- }
- }
- // Write the serialized state into a separate XML element
- out.print("<state>");
- FacesContext facesContext = FacesContext.getCurrentInstance();
- StateManager stateManager = facesContext.getApplication().getStateManager();
- StateManager.SerializedView serializedView = stateManager.saveSerializedView(facesContext);
- try
- {
- stateManager.writeState(facesContext, serializedView);
- } catch (IOException e)
- {
- throw new FacesException(e);
}
- out.print("</state>");
+ /**
+ * Writes the XML elements for the triggered components to the provided
+ * {@link PrintWriter}. Also encode the current state in a separate XML
+ * element.
+ *
+ * @param out the output Writer
+ * @param triggeredComponents comma-separated list of component IDs
+ * @param viewRoot the current ViewRoot
+ * @param context the current {@link FacesContext}
+ */
+ private void encodeTriggeredComponents(PrintWriter out, String triggeredComponents, UIViewRoot viewRoot, FacesContext context)
+ {
+ StringTokenizer st = new StringTokenizer(triggeredComponents, ",", false);
+ String clientId;
+ UIComponent component;
+ // Iterate over the individual client IDs
+ while(st.hasMoreTokens())
+ {
+ clientId = st.nextToken();
+ component = viewRoot.findComponent(clientId);
+ if(component != null)
+ {
+ // Write a component tag which contains a CDATA section whith
+ // the rendered HTML
+ // of the component children
+ out.print("<component id=\"" + component.getClientId(context) + "\"><![CDATA[");
+ boolean oldValue = HtmlRendererUtils.isAllowedCdataSection(context);
+ HtmlRendererUtils.allowCdataSection(context, false);
+ try
+ {
+ component.encodeChildren(context);
+ }
+ catch(IOException e)
+ {
+ throw new FacesException(e);
+ }
+ HtmlRendererUtils.allowCdataSection(context, oldValue);
+ out.print("]]></component>");
+ }
+ else
+ {
+ log.debug("PPRPhaseListener component with id" + clientId + "not found!");
+ }
+ }
+ // Write the serialized state into a separate XML element
+ out.print("<state>");
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ StateManager stateManager = facesContext.getApplication().getStateManager();
+ StateManager.SerializedView serializedView = stateManager.saveSerializedView(facesContext);
+ try
+ {
+ stateManager.writeState(facesContext, serializedView);
+ }
+ catch(IOException e)
+ {
+ throw new FacesException(e);
+ }
+
+ out.print("</state>");
- }
+ }
- public PhaseId getPhaseId()
- {
- return PhaseId.RENDER_RESPONSE;
- }
+ public PhaseId getPhaseId()
+ {
+ return PhaseId.RENDER_RESPONSE;
+ }
}