MYFACES-4048 TransientStateHolder values must be stored in the state if current phase is before render response (add null check to fix another tck test related to UIForm.isSubmitted)
diff --git a/api/src/main/java/javax/faces/component/UIComponentBase.java b/api/src/main/java/javax/faces/component/UIComponentBase.java
index 5c6e89e..fd8548b 100755
--- a/api/src/main/java/javax/faces/component/UIComponentBase.java
+++ b/api/src/main/java/javax/faces/component/UIComponentBase.java
@@ -1985,7 +1985,8 @@
             }
             
             Object transientState = null;
-            if (!context.getCurrentPhaseId().equals(PhaseId.RENDER_RESPONSE))
+            if (context.getCurrentPhaseId() != null && 
+                !PhaseId.RENDER_RESPONSE.equals(context.getCurrentPhaseId()))
             {
                 transientState = saveTransientState(context);
             }
@@ -2036,7 +2037,8 @@
             values[6] = _markCreated;
             values[7] = _rendererType;
             values[8] = _capabilities;
-            if (!PhaseId.RENDER_RESPONSE.equals(context.getCurrentPhaseId()))
+            if (context.getCurrentPhaseId() != null && 
+                !PhaseId.RENDER_RESPONSE.equals(context.getCurrentPhaseId()))
             {
                 values[9] = saveTransientState(context);
             }
diff --git a/api/src/main/java/javax/faces/component/UIData.java b/api/src/main/java/javax/faces/component/UIData.java
index 9477ee7..ec91f94 100644
--- a/api/src/main/java/javax/faces/component/UIData.java
+++ b/api/src/main/java/javax/faces/component/UIData.java
@@ -1528,7 +1528,8 @@
         if (initialStateMarked())
         {
             Object parentSaved = super.saveState(context);
-            if (!PhaseId.RENDER_RESPONSE.equals(context.getCurrentPhaseId()))
+            if (context.getCurrentPhaseId() != null && 
+                !PhaseId.RENDER_RESPONSE.equals(context.getCurrentPhaseId()))
             {
                 if (parentSaved == null &&_rowDeltaStates.isEmpty() && _rowStates.isEmpty())
                 {
@@ -1561,7 +1562,8 @@
         }
         else
         {
-            if (!PhaseId.RENDER_RESPONSE.equals(context.getCurrentPhaseId()))
+            if (context.getCurrentPhaseId() != null && 
+                !PhaseId.RENDER_RESPONSE.equals(context.getCurrentPhaseId()))
             {
                 Object values[] = new Object[4];
                 values[0] = super.saveState(context);
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/component/UIRepeat.java b/impl/src/main/java/org/apache/myfaces/view/facelets/component/UIRepeat.java
index c78d8f6..521997f 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/component/UIRepeat.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/component/UIRepeat.java
@@ -1567,7 +1567,8 @@
         if (initialStateMarked())
         {
             Object parentSaved = super.saveState(context);
-            if (!PhaseId.RENDER_RESPONSE.equals(context.getCurrentPhaseId()))
+            if (context.getCurrentPhaseId() != null && 
+                !PhaseId.RENDER_RESPONSE.equals(context.getCurrentPhaseId()))
             {
                 if (parentSaved == null /*&&_rowDeltaStates.isEmpty()*/ && _rowStates.isEmpty())
                 {
@@ -1601,7 +1602,8 @@
         }
         else
         {
-            if (!PhaseId.RENDER_RESPONSE.equals(context.getCurrentPhaseId()))
+            if (context.getCurrentPhaseId() != null && 
+                !PhaseId.RENDER_RESPONSE.equals(context.getCurrentPhaseId()))
             {
                 Object values[] = new Object[3];
                 values[0] = super.saveState(context);