You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ja...@apache.org on 2010/05/31 23:12:05 UTC
svn commit: r949866 - in /myfaces/core/trunk/impl/src:
main/java/org/apache/myfaces/lifecycle/
test/java/org/apache/myfaces/lifecycle/
Author: jakobk
Date: Mon May 31 21:12:04 2010
New Revision: 949866
URL: http://svn.apache.org/viewvc?rev=949866&view=rev
Log:
MYFACES-2734 Character encoding not set correctly before Restore View
Modified:
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/ApplyRequestValuesExecutor.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/InvokeApplicationExecutor.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleImpl.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/PhaseExecutor.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/ProcessValidationsExecutor.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RenderResponseExecutor.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RestoreViewExecutor.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/UpdateModelValuesExecutor.java
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/lifecycle/RestoreViewExecutorTest.java
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/ApplyRequestValuesExecutor.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/ApplyRequestValuesExecutor.java?rev=949866&r1=949865&r2=949866&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/ApplyRequestValuesExecutor.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/ApplyRequestValuesExecutor.java Mon May 31 21:12:04 2010
@@ -22,13 +22,12 @@ import javax.faces.context.FacesContext;
import javax.faces.event.PhaseId;
/**
- * Implements the lifecycle as described in Spec. 1.0 PFD Chapter 2
+ * Implements the apply request values phase (JSF Spec 2.2.2)
*
- * @author Nikolay Petrov
- *
- * Apply request values phase (JSF Spec 2.2.2)
+ * @author Nikolay Petrov (latest modification by $Author$)
+ * @version $Revision$ $Date$
*/
-class ApplyRequestValuesExecutor implements PhaseExecutor
+class ApplyRequestValuesExecutor extends PhaseExecutor
{
public boolean execute(FacesContext facesContext)
{
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/InvokeApplicationExecutor.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/InvokeApplicationExecutor.java?rev=949866&r1=949865&r2=949866&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/InvokeApplicationExecutor.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/InvokeApplicationExecutor.java Mon May 31 21:12:04 2010
@@ -22,13 +22,12 @@ import javax.faces.context.FacesContext;
import javax.faces.event.PhaseId;
/**
- * Implements the lifecycle as described in Spec. 1.0 PFD Chapter 2
+ * Implements the invoke application phase (JSF Spec 2.2.5)
*
- * @author Nikolay Petrov
- *
- * Invoke application phase (JSF Spec 2.2.5)
+ * @author Nikolay Petrov (latest modification by $Author$)
+ * @version $Revision$ $Date$
*/
-class InvokeApplicationExecutor implements PhaseExecutor
+class InvokeApplicationExecutor extends PhaseExecutor
{
public boolean execute(FacesContext facesContext)
{
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleImpl.java?rev=949866&r1=949865&r2=949866&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleImpl.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleImpl.java Mon May 31 21:12:04 2010
@@ -130,6 +130,9 @@ public class LifecycleImpl extends Lifec
context.setCurrentPhaseId(currentPhaseId);
flash.doPrePhaseActions(context);
+
+ // let the PhaseExecutor do some pre-phase actions
+ executor.doPrePhaseActions(context);
phaseListenerMgr.informPhaseListenersBefore(currentPhaseId);
@@ -200,6 +203,10 @@ public class LifecycleImpl extends Lifec
facesContext.setCurrentPhaseId(renderExecutor.getPhase());
flash.doPrePhaseActions(facesContext);
+
+ // let the PhaseExecutor do some pre-phase actions
+ renderExecutor.doPrePhaseActions(facesContext);
+
boolean renderResponse = phaseListenerMgr.informPhaseListenersBefore(renderExecutor.getPhase());
// also possible that one of the listeners completed the response
if (isResponseComplete(facesContext, renderExecutor.getPhase(), true))
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/PhaseExecutor.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/PhaseExecutor.java?rev=949866&r1=949865&r2=949866&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/PhaseExecutor.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/PhaseExecutor.java Mon May 31 21:12:04 2010
@@ -24,10 +24,10 @@ import javax.faces.event.PhaseId;
/**
* Implements the PhaseExecutor for a lifecycle
*
- * @author Nikolay Petrov
- *
+ * @author Nikolay Petrov (latest modification by $Author$)
+ * @version $Revision$ $Date$
*/
-interface PhaseExecutor
+abstract class PhaseExecutor
{
/**
@@ -38,12 +38,26 @@ interface PhaseExecutor
* The <code>FacesContext</code> for the current request we are processing
* @return <code>true</code> if execution should be stopped
*/
- boolean execute(FacesContext facesContext);
+ public abstract boolean execute(FacesContext facesContext);
/**
* Returns the <code>PhaseId</code> for which the implemented executor is invoked
*
* @return
*/
- PhaseId getPhase();
-}
\ No newline at end of file
+ public abstract PhaseId getPhase();
+
+ /**
+ * This method will be called by LifecycleImpl before the phase associated with this
+ * PhaseExecutor actually starts (before the before-PhaseListeners are called).
+ * Thus the PhaseExecutor implementation will be able to do some pre-phase initialisation work.
+ *
+ * @param facesContext
+ * @since 2.0.1
+ */
+ public void doPrePhaseActions(FacesContext facesContext)
+ {
+ // default: nothing
+ }
+
+}
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/ProcessValidationsExecutor.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/ProcessValidationsExecutor.java?rev=949866&r1=949865&r2=949866&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/ProcessValidationsExecutor.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/ProcessValidationsExecutor.java Mon May 31 21:12:04 2010
@@ -22,13 +22,12 @@ import javax.faces.context.FacesContext;
import javax.faces.event.PhaseId;
/**
- * Implements the lifecycle as described in Spec. 1.0 PFD Chapter 2
+ * Implements the process validations phase (JSF Spec 2.2.3)
*
- * @author Nikolay Petrov
- *
- * Process validations phase (JSF Spec 2.2.3)
+ * @author Nikolay Petrov (latest modification by $Author$)
+ * @version $Revision$ $Date$
*/
-class ProcessValidationsExecutor implements PhaseExecutor
+class ProcessValidationsExecutor extends PhaseExecutor
{
public boolean execute(FacesContext facesContext)
{
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RenderResponseExecutor.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RenderResponseExecutor.java?rev=949866&r1=949865&r2=949866&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RenderResponseExecutor.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RenderResponseExecutor.java Mon May 31 21:12:04 2010
@@ -33,13 +33,12 @@ import javax.faces.event.PreRenderViewEv
import javax.faces.view.ViewDeclarationLanguage;
/**
- * Implements the lifecycle as described in Spec. 1.0 PFD Chapter 2
+ * Implements the render response phase (JSF Spec 2.2.6)
*
- * @author Nikolay Petrov
- *
- * render response phase (JSF Spec 2.2.6)
+ * @author Nikolay Petrov (latest modification by $Author$)
+ * @version $Revision$ $Date$
*/
-class RenderResponseExecutor implements PhaseExecutor
+class RenderResponseExecutor extends PhaseExecutor
{
private static final Logger log = Logger.getLogger(RenderResponseExecutor.class.getName());
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RestoreViewExecutor.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RestoreViewExecutor.java?rev=949866&r1=949865&r2=949866&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RestoreViewExecutor.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RestoreViewExecutor.java Mon May 31 21:12:04 2010
@@ -40,18 +40,27 @@ import org.apache.myfaces.renderkit.Erro
/**
* Implements the Restore View Phase (JSF Spec 2.2.1)
*
- * @author Nikolay Petrov
+ * @author Nikolay Petrov (latest modification by $Author$)
* @author Bruno Aranda (JSF 1.2)
* @version $Revision$ $Date$
- *
*/
-class RestoreViewExecutor implements PhaseExecutor
+class RestoreViewExecutor extends PhaseExecutor
{
//private static final Log log = LogFactory.getLog(RestoreViewExecutor.class);
private static final Logger log = Logger.getLogger(RestoreViewExecutor.class.getName());
private RestoreViewSupport _restoreViewSupport;
+
+ @Override
+ public void doPrePhaseActions(FacesContext facesContext)
+ {
+ // Call initView() on the ViewHandler.
+ // This will set the character encoding properly for this request.
+ // Note that we are doing this here, because we need the character encoding
+ // to be set as early as possible (before any PhaseListener is executed).
+ facesContext.getApplication().getViewHandler().initView(facesContext);
+ }
public boolean execute(FacesContext facesContext)
{
@@ -60,15 +69,10 @@ class RestoreViewExecutor implements Pha
throw new FacesException("FacesContext is null");
}
- // init the View
+ // get some required Objects
Application application = facesContext.getApplication();
ViewHandler viewHandler = application.getViewHandler();
-
- // Call initView() on the ViewHandler. This will set the character encoding properly for this request.
- viewHandler.initView(facesContext);
-
UIViewRoot viewRoot = facesContext.getViewRoot();
-
RestoreViewSupport restoreViewSupport = getRestoreViewSupport();
// Examine the FacesContext instance for the current request. If it already contains a UIViewRoot
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/UpdateModelValuesExecutor.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/UpdateModelValuesExecutor.java?rev=949866&r1=949865&r2=949866&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/UpdateModelValuesExecutor.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/UpdateModelValuesExecutor.java Mon May 31 21:12:04 2010
@@ -22,13 +22,12 @@ import javax.faces.context.FacesContext;
import javax.faces.event.PhaseId;
/**
- * Implements the lifecycle as described in Spec. 1.0 PFD Chapter 2
+ * Implements the update model values phase (JSF Spec 2.2.4)
*
- * @author Nikolay Petrov
- *
- * Update model values phase (JSF Spec 2.2.4)
+ * @author Nikolay Petrov (latest modification by $Author$)
+ * @version $Revision$ $Date$
*/
-class UpdateModelValuesExecutor implements PhaseExecutor
+class UpdateModelValuesExecutor extends PhaseExecutor
{
public boolean execute(FacesContext facesContext)
{
Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/lifecycle/RestoreViewExecutorTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/lifecycle/RestoreViewExecutorTest.java?rev=949866&r1=949865&r2=949866&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/lifecycle/RestoreViewExecutorTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/lifecycle/RestoreViewExecutorTest.java Mon May 31 21:12:04 2010
@@ -74,6 +74,7 @@ public class RestoreViewExecutorTest ext
_restoreViewSupport.processComponentBinding(same(_facesContext), same(viewRoot));
_mocksControl.replay();
+ _testimpl.doPrePhaseActions(_facesContext);
_testimpl.execute(_facesContext);
_mocksControl.verify();
}
@@ -105,6 +106,7 @@ public class RestoreViewExecutorTest ext
_facesContext.setViewRoot(same(viewRoot));
_mocksControl.replay();
+ _testimpl.doPrePhaseActions(_facesContext);
_testimpl.execute(_facesContext);
_mocksControl.verify();
}
@@ -127,6 +129,7 @@ public class RestoreViewExecutorTest ext
_facesContext.setProcessingEvents(eq(false));
_mocksControl.replay();
+ _testimpl.doPrePhaseActions(_facesContext);
_testimpl.execute(_facesContext);
_mocksControl.verify();
}
@@ -150,6 +153,7 @@ public class RestoreViewExecutorTest ext
{
public void run() throws Throwable
{
+ _testimpl.doPrePhaseActions(_facesContext);
_testimpl.execute(_facesContext);
};
});