You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by sk...@apache.org on 2008/02/12 23:05:28 UTC

svn commit: r627145 - in /myfaces/orchestra/trunk/core/src/main/java/org/apache/myfaces/orchestra/conversation: AccessScopeManager.java jsf/AccessScopePhaseListener.java

Author: skitching
Date: Tue Feb 12 14:05:27 2008
New Revision: 627145

URL: http://svn.apache.org/viewvc?rev=627145&view=rev
Log:
Count "access-scoped" conversations as accessed only when used in the RENDER_VIEW phase.

Modified:
    myfaces/orchestra/trunk/core/src/main/java/org/apache/myfaces/orchestra/conversation/AccessScopeManager.java
    myfaces/orchestra/trunk/core/src/main/java/org/apache/myfaces/orchestra/conversation/jsf/AccessScopePhaseListener.java

Modified: myfaces/orchestra/trunk/core/src/main/java/org/apache/myfaces/orchestra/conversation/AccessScopeManager.java
URL: http://svn.apache.org/viewvc/myfaces/orchestra/trunk/core/src/main/java/org/apache/myfaces/orchestra/conversation/AccessScopeManager.java?rev=627145&r1=627144&r2=627145&view=diff
==============================================================================
--- myfaces/orchestra/trunk/core/src/main/java/org/apache/myfaces/orchestra/conversation/AccessScopeManager.java (original)
+++ myfaces/orchestra/trunk/core/src/main/java/org/apache/myfaces/orchestra/conversation/AccessScopeManager.java Tue Feb 12 14:05:27 2008
@@ -36,8 +36,9 @@
 {
 	private AccessScopeManagerConfiguration accessScopeManagerConfiguration;
 
-	private Set accessedConversations = new HashSet();
+	private boolean recordAccess;
 	private boolean ignoreRequest;
+	private Set accessedConversations = new HashSet();
 
 	public static AccessScopeManager getInstance()
 	{
@@ -79,6 +80,15 @@
 	}
 
 	/**
+	 * This is invoked at the point in the request lifecycle after which we want to
+	 * start tracking use of access-scoped objects.
+	 */
+	public void beginRecording() 
+	{
+		recordAccess = true;
+	}
+
+	/**
 	 * Add a conversation to the list of accessed conversations.
 	 * <p>
 	 * Notice: this method is final for performance reasons.
@@ -91,7 +101,7 @@
 	{
 		// Don't bother tracking accessed conversations if we will never use the data.
 		// Otherwise, add this conversation name to the list of accessed conversations.
-		if (!ignoreRequest && !accessedConversations.contains(conversationName))
+		if (recordAccess && !ignoreRequest && !accessedConversations.contains(conversationName))
 		{
 			accessedConversations.add(conversationName);
 		}

Modified: myfaces/orchestra/trunk/core/src/main/java/org/apache/myfaces/orchestra/conversation/jsf/AccessScopePhaseListener.java
URL: http://svn.apache.org/viewvc/myfaces/orchestra/trunk/core/src/main/java/org/apache/myfaces/orchestra/conversation/jsf/AccessScopePhaseListener.java?rev=627145&r1=627144&r2=627145&view=diff
==============================================================================
--- myfaces/orchestra/trunk/core/src/main/java/org/apache/myfaces/orchestra/conversation/jsf/AccessScopePhaseListener.java (original)
+++ myfaces/orchestra/trunk/core/src/main/java/org/apache/myfaces/orchestra/conversation/jsf/AccessScopePhaseListener.java Tue Feb 12 14:05:27 2008
@@ -43,16 +43,20 @@
 {
 	private static final long serialVersionUID = 1L;
 
-	public void afterPhase(PhaseEvent event)
+	public PhaseId getPhaseId()
 	{
-		if (PhaseId.RENDER_RESPONSE.equals(event.getPhaseId()))
-		{
-			invalidateAccessScopedConversations(event.getFacesContext().getViewRoot().getViewId());
-		}
+		return PhaseId.RENDER_RESPONSE;
 	}
 
 	public void beforePhase(PhaseEvent event)
 	{
+		AccessScopeManager accessManager = AccessScopeManager.getInstance();
+		accessManager.beginRecording();
+	}
+
+	public void afterPhase(PhaseEvent event)
+	{
+		invalidateAccessScopedConversations(event.getFacesContext().getViewRoot().getViewId());
 	}
 
 	/**
@@ -105,10 +109,5 @@
 				conversation.invalidate();
 			}
 		}
-	}
-
-	public PhaseId getPhaseId()
-	{
-		return PhaseId.RENDER_RESPONSE;
 	}
 }