You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gc...@apache.org on 2009/03/26 22:05:58 UTC

svn commit: r758853 - in /myfaces/trinidad/branches/1.2.11.2-branch: trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/ trinidad-api/src/test/java/org/apache/myfaces/trinidad/context/ trinidad-impl/src/main/java/org/apache/myfaces/trinidad...

Author: gcrawford
Date: Thu Mar 26 21:05:58 2009
New Revision: 758853

URL: http://svn.apache.org/viewvc?rev=758853&view=rev
Log:
TRINIDAD-1432 Need a method on RequestContext to detect an internal view

Modified:
    myfaces/trinidad/branches/1.2.11.2-branch/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/RequestContext.java
    myfaces/trinidad/branches/1.2.11.2-branch/trinidad-api/src/test/java/org/apache/myfaces/trinidad/context/MockRequestContext.java
    myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/application/ViewHandlerImpl.java
    myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextImpl.java
    myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/test/java/org/apache/myfaces/trinidadinternal/renderkit/MRequestContext.java

Modified: myfaces/trinidad/branches/1.2.11.2-branch/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/RequestContext.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.11.2-branch/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/RequestContext.java?rev=758853&r1=758852&r2=758853&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.11.2-branch/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/RequestContext.java (original)
+++ myfaces/trinidad/branches/1.2.11.2-branch/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/RequestContext.java Thu Mar 26 21:05:58 2009
@@ -226,6 +226,13 @@
    * Returns the name of the preferred skin family.
    */
   public abstract String getSkinFamily();
+  
+  /**
+   * Determines whether the current View Root is an internal view
+   * @param context Faces context
+   * @return true if the current View Root is an internal view, false otherwise
+   */
+  public abstract boolean isInternalViewRequest(FacesContext context);
 
   public enum Accessibility
   {

Modified: myfaces/trinidad/branches/1.2.11.2-branch/trinidad-api/src/test/java/org/apache/myfaces/trinidad/context/MockRequestContext.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.11.2-branch/trinidad-api/src/test/java/org/apache/myfaces/trinidad/context/MockRequestContext.java?rev=758853&r1=758852&r2=758853&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.11.2-branch/trinidad-api/src/test/java/org/apache/myfaces/trinidad/context/MockRequestContext.java (original)
+++ myfaces/trinidad/branches/1.2.11.2-branch/trinidad-api/src/test/java/org/apache/myfaces/trinidad/context/MockRequestContext.java Thu Mar 26 21:05:58 2009
@@ -363,6 +363,12 @@
   {
     throw new UnsupportedOperationException("Not implemented yet");
   }
+  
+  @Override
+  public boolean isInternalViewRequest(FacesContext context)
+  {
+    return false;
+  }
 
 
   static private final TimeZone _FIXED_TIME_ZONE =

Modified: myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/application/ViewHandlerImpl.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/application/ViewHandlerImpl.java?rev=758853&r1=758852&r2=758853&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/application/ViewHandlerImpl.java (original)
+++ myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/application/ViewHandlerImpl.java Thu Mar 26 21:05:58 2009
@@ -27,11 +27,14 @@
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Properties;
 
+import java.util.Set;
+
 import javax.faces.FacesException;
 import javax.faces.application.ViewHandler;
 import javax.faces.application.ViewHandlerWrapper;
@@ -83,6 +86,8 @@
   public UIViewRoot createView(FacesContext context, String viewId)
   {
     _initIfNeeded(context);
+    
+    _storeInternalViewIds(context);
 
     InternalView internal = _getInternalView(context, viewId);
     if (internal != null)
@@ -207,6 +212,8 @@
     FacesContext context,
     String       viewId)
   {    
+    _storeInternalViewIds(context);
+    
     //This code processes a "return" event.  Most of this logic was moved to 
     //StateManagerImpl because we ran into a problem with JSF where it didn't 
     //set up the JSF mapping properly if we didn't delegate to the default 
@@ -300,6 +307,28 @@
 
     super.writeState(context);
   }
+  
+  public static boolean isInternalViewId(FacesContext context, String id)
+  {
+    if (id == null)
+      return false;
+    
+    Set<String> ids = 
+        (Set<String>)context.getExternalContext().getRequestMap().get(_INTERNAL_VIEW_ID_SET);
+    
+    if (ids == null)
+      return false;
+    
+    return ids.contains(id);
+  }
+  
+  private void _storeInternalViewIds(FacesContext context)
+  {
+    // Save internal view Ids on the request map, so that we can retrieve them later
+    // (see RequestContext.isInternalViewRequest())
+    Set<String> ids = new HashSet<String>(_internalViews.keySet());
+    context.getExternalContext().getRequestMap().put(_INTERNAL_VIEW_ID_SET, ids);
+  }
 
   synchronized private void _initIfNeeded(FacesContext context)
   {
@@ -530,4 +559,5 @@
   private static final TrinidadLogger _LOG = TrinidadLogger.createTrinidadLogger(ViewHandlerImpl.class);
   private static final Long   _NOT_FOUND = Long.valueOf(0);
   private static final String _RENDER_VIEW_MARKER = "__trRenderViewEntry";
+  private static final String _INTERNAL_VIEW_ID_SET = "org.apache.myfaces.trinidadinternal.application._INTERNAL_IDS";
 }

Modified: myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextImpl.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextImpl.java?rev=758853&r1=758852&r2=758853&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextImpl.java (original)
+++ myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextImpl.java Thu Mar 26 21:05:58 2009
@@ -66,6 +66,7 @@
 import org.apache.myfaces.trinidadinternal.agent.AgentFactoryImpl;
 import org.apache.myfaces.trinidadinternal.agent.TrinidadAgentImpl;
 import org.apache.myfaces.trinidadinternal.application.StateManagerImpl;
+import org.apache.myfaces.trinidadinternal.application.ViewHandlerImpl;
 import org.apache.myfaces.trinidadinternal.el.FormatterMap;
 import org.apache.myfaces.trinidadinternal.el.HelpProvider;
 import org.apache.myfaces.trinidadinternal.el.OracleHelpProvider;
@@ -704,6 +705,16 @@
     return StateManagerImpl.restoreComponentTree(__getFacesContext(),
                                                  state);
   }
+  
+  @Override
+  public boolean isInternalViewRequest(FacesContext context)
+  {
+    UIViewRoot root = context.getViewRoot();
+    if (root == null)
+      return false;
+    
+    return ViewHandlerImpl.isInternalViewId(context, root.getViewId());
+  }
 
   void __setPageResolver(PageResolver pageResolver)
   {

Modified: myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/test/java/org/apache/myfaces/trinidadinternal/renderkit/MRequestContext.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/test/java/org/apache/myfaces/trinidadinternal/renderkit/MRequestContext.java?rev=758853&r1=758852&r2=758853&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/test/java/org/apache/myfaces/trinidadinternal/renderkit/MRequestContext.java (original)
+++ myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/test/java/org/apache/myfaces/trinidadinternal/renderkit/MRequestContext.java Thu Mar 26 21:05:58 2009
@@ -351,6 +351,13 @@
     throw new UnsupportedOperationException("Not implemented yet");
   }
 
+  @Override
+  public boolean isInternalViewRequest(FacesContext context)
+  {
+    return false;
+  }
+
+
   private String _skin;
   private Accessibility _accMode;
   private AccessibilityProfile _accProfile;