Author: manaRH
Date: 2012-02-20 06:11:59 -0500 (Mon, 20 Feb 2012)
New Revision: 14327
Modified:
branches/community/Seam_2_3/jboss-seam-jsf2/src/main/java/org/jboss/seam/contexts/Contexts.java
branches/community/Seam_2_3/jboss-seam-jsf2/src/main/java/org/jboss/seam/jsf/SeamPhaseListener.java
branches/community/Seam_2_3/jboss-seam-jsf2/src/main/java/org/jboss/seam/mock/AbstractSeamTest.java
branches/community/Seam_2_3/jboss-seam-jsf2/src/test/java/org/jboss/seam/test/unit/PhaseListenerTest.java
branches/community/Seam_2_3/seam-integration-tests/src/test/java/org/jboss/seam/test/integration/ConversationTest.java
branches/community/Seam_2_3/seam-integration-tests/src/test/java/org/jboss/seam/test/integration/EntityPassivationTest.java
branches/community/Seam_2_3/seam-integration-tests/src/test/java/org/jboss/seam/test/integration/EntityTest.java
Log:
JBSEAM-4898 applied patch from jira issue
Modified:
branches/community/Seam_2_3/jboss-seam-jsf2/src/main/java/org/jboss/seam/contexts/Contexts.java
===================================================================
---
branches/community/Seam_2_3/jboss-seam-jsf2/src/main/java/org/jboss/seam/contexts/Contexts.java 2012-02-20
08:18:11 UTC (rev 14326)
+++
branches/community/Seam_2_3/jboss-seam-jsf2/src/main/java/org/jboss/seam/contexts/Contexts.java 2012-02-20
11:11:59 UTC (rev 14327)
@@ -8,6 +8,9 @@
import java.util.Map;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+
import org.jboss.seam.Component;
import org.jboss.seam.ScopeType;
import org.jboss.seam.bpm.BusinessProcess;
@@ -91,6 +94,19 @@
public static boolean isPageContextActive()
{
+ if (pageContext.get() == null) {
+ try {
+ // lazy initialize the page context during restore view
+ // this is similar to the ViewScopedContext.isActive() in Seam 3
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ if (facesContext != null) {
+ UIViewRoot viewRoot = facesContext.getViewRoot();
+ if (viewRoot != null) {
+ pageContext.set( new PageContext() );
+ }
+ }
+ } catch (NoClassDefFoundError e) {} // seam-remote does not have this
dependency
+ }
return pageContext.get() != null;
}
Modified:
branches/community/Seam_2_3/jboss-seam-jsf2/src/main/java/org/jboss/seam/jsf/SeamPhaseListener.java
===================================================================
---
branches/community/Seam_2_3/jboss-seam-jsf2/src/main/java/org/jboss/seam/jsf/SeamPhaseListener.java 2012-02-20
08:18:11 UTC (rev 14326)
+++
branches/community/Seam_2_3/jboss-seam-jsf2/src/main/java/org/jboss/seam/jsf/SeamPhaseListener.java 2012-02-20
11:11:59 UTC (rev 14327)
@@ -378,6 +378,12 @@
protected void beforeRestoreView(FacesContext facesContext)
{
FacesLifecycle.beginRequest( facesContext.getExternalContext() );
+
+ // this is the same place that WELD restores the conversation
+ Map parameters = facesContext.getExternalContext().getRequestParameterMap();
+ ConversationPropagation.instance().restoreConversationId(parameters);
+ boolean conversationFound = Manager.instance().restoreConversation();
+ FacesLifecycle.resumeConversation( facesContext.getExternalContext() );
}
/**
@@ -387,9 +393,9 @@
{
FacesLifecycle.resumePage();
Map parameters = facesContext.getExternalContext().getRequestParameterMap();
- ConversationPropagation.instance().restoreConversationId(parameters);
+// ConversationPropagation.instance().restoreConversationId(parameters);
boolean conversationFound = Manager.instance().restoreConversation();
- FacesLifecycle.resumeConversation( facesContext.getExternalContext() );
+// FacesLifecycle.resumeConversation( facesContext.getExternalContext() );
postRestorePage(facesContext, parameters, conversationFound);
}
Modified:
branches/community/Seam_2_3/jboss-seam-jsf2/src/main/java/org/jboss/seam/mock/AbstractSeamTest.java
===================================================================
---
branches/community/Seam_2_3/jboss-seam-jsf2/src/main/java/org/jboss/seam/mock/AbstractSeamTest.java 2012-02-20
08:18:11 UTC (rev 14326)
+++
branches/community/Seam_2_3/jboss-seam-jsf2/src/main/java/org/jboss/seam/mock/AbstractSeamTest.java 2012-02-20
11:11:59 UTC (rev 14327)
@@ -118,6 +118,11 @@
return Manager.instance().isLongRunningConversation();
}
+ protected String getConversationIdParameter()
+ {
+ return "conversationId";
+ }
+
/**
* Search in all contexts
*/
@@ -729,6 +734,11 @@
private void restoreViewPhase()
{
+ if (conversationId != null)
+ {
+ setParameter(getConversationIdParameter(), conversationId);
+ }
+
phases.beforePhase(new PhaseEvent(facesContext, PhaseId.RESTORE_VIEW,
MockLifecycle.INSTANCE));
try
{
Modified:
branches/community/Seam_2_3/jboss-seam-jsf2/src/test/java/org/jboss/seam/test/unit/PhaseListenerTest.java
===================================================================
---
branches/community/Seam_2_3/jboss-seam-jsf2/src/test/java/org/jboss/seam/test/unit/PhaseListenerTest.java 2012-02-20
08:18:11 UTC (rev 14326)
+++
branches/community/Seam_2_3/jboss-seam-jsf2/src/test/java/org/jboss/seam/test/unit/PhaseListenerTest.java 2012-02-20
11:11:59 UTC (rev 14327)
@@ -92,7 +92,7 @@
assert Contexts.isEventContextActive();
assert Contexts.isSessionContextActive();
assert Contexts.isApplicationContextActive();
- assert !Contexts.isConversationContextActive();
+ assert Contexts.isConversationContextActive();
phases.afterPhase( new PhaseEvent(facesContext, PhaseId.RESTORE_VIEW,
MockLifecycle.INSTANCE ) );
@@ -163,7 +163,7 @@
assert Contexts.isEventContextActive();
assert Contexts.isSessionContextActive();
assert Contexts.isApplicationContextActive();
- assert !Contexts.isConversationContextActive();
+ assert Contexts.isConversationContextActive();
phases.afterPhase( new PhaseEvent(facesContext, PhaseId.RESTORE_VIEW,
MockLifecycle.INSTANCE ) );
@@ -226,7 +226,7 @@
assert Contexts.isEventContextActive();
assert Contexts.isSessionContextActive();
assert Contexts.isApplicationContextActive();
- assert !Contexts.isConversationContextActive();
+ assert Contexts.isConversationContextActive();
phases.afterPhase( new PhaseEvent(facesContext, PhaseId.RESTORE_VIEW,
MockLifecycle.INSTANCE ) );
@@ -283,7 +283,7 @@
assert Contexts.isEventContextActive();
assert Contexts.isSessionContextActive();
assert Contexts.isApplicationContextActive();
- assert !Contexts.isConversationContextActive();
+ assert Contexts.isConversationContextActive();
phases.afterPhase( new PhaseEvent(facesContext, PhaseId.RESTORE_VIEW,
MockLifecycle.INSTANCE ) );
@@ -325,7 +325,7 @@
assert Contexts.isEventContextActive();
assert Contexts.isSessionContextActive();
assert Contexts.isApplicationContextActive();
- assert !Contexts.isConversationContextActive();
+ assert Contexts.isConversationContextActive();
phases.afterPhase( new PhaseEvent(facesContext, PhaseId.RESTORE_VIEW,
MockLifecycle.INSTANCE ) );
Modified:
branches/community/Seam_2_3/seam-integration-tests/src/test/java/org/jboss/seam/test/integration/ConversationTest.java
===================================================================
---
branches/community/Seam_2_3/seam-integration-tests/src/test/java/org/jboss/seam/test/integration/ConversationTest.java 2012-02-20
08:18:11 UTC (rev 14326)
+++
branches/community/Seam_2_3/seam-integration-tests/src/test/java/org/jboss/seam/test/integration/ConversationTest.java 2012-02-20
11:11:59 UTC (rev 14327)
@@ -438,4 +438,9 @@
}.run();
}
+
+ protected String getConversationIdParameter()
+ {
+ return "cid";
+ }
}
Modified:
branches/community/Seam_2_3/seam-integration-tests/src/test/java/org/jboss/seam/test/integration/EntityPassivationTest.java
===================================================================
---
branches/community/Seam_2_3/seam-integration-tests/src/test/java/org/jboss/seam/test/integration/EntityPassivationTest.java 2012-02-20
08:18:11 UTC (rev 14326)
+++
branches/community/Seam_2_3/seam-integration-tests/src/test/java/org/jboss/seam/test/integration/EntityPassivationTest.java 2012-02-20
11:11:59 UTC (rev 14327)
@@ -231,6 +231,11 @@
}
+ protected String getConversationIdParameter()
+ {
+ return "cid";
+ }
+
@Name("entitytest.nestedComponent")
@Scope(ScopeType.CONVERSATION)
@AutoCreate
Modified:
branches/community/Seam_2_3/seam-integration-tests/src/test/java/org/jboss/seam/test/integration/EntityTest.java
===================================================================
---
branches/community/Seam_2_3/seam-integration-tests/src/test/java/org/jboss/seam/test/integration/EntityTest.java 2012-02-20
08:18:11 UTC (rev 14326)
+++
branches/community/Seam_2_3/seam-integration-tests/src/test/java/org/jboss/seam/test/integration/EntityTest.java 2012-02-20
11:11:59 UTC (rev 14327)
@@ -136,6 +136,11 @@
}
}
+ protected String getConversationIdParameter()
+ {
+ return "cid";
+ }
+
@Name("entityExceptionObserver")
public static class EntityExceptionObserver {