You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ma...@apache.org on 2008/07/29 17:11:04 UTC

svn commit: r680731 - in /myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main: java/org/apache/myfaces/trinidadinternal/application/ViewHandlerImpl.java xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts

Author: matzew
Date: Tue Jul 29 08:11:03 2008
New Revision: 680731

URL: http://svn.apache.org/viewvc?rev=680731&view=rev
Log:
TRINIDAD-1167 - Need to warn when Trinidad's ViewHandler is registered more than once

Thanks to Max Starets for his patch

Modified:
    myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/application/ViewHandlerImpl.java
    myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/application/ViewHandlerImpl.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/application/ViewHandlerImpl.java?rev=680731&r1=680730&r2=680731&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/application/ViewHandlerImpl.java (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/application/ViewHandlerImpl.java Tue Jul 29 08:11:03 2008
@@ -148,6 +148,18 @@
     UIViewRoot   viewToRender) throws IOException, FacesException
   {
     _initIfNeeded(context);
+    
+    // Check whether Trinidad's ViewHandler is registered more than once.
+    // This happens when the implementation jar is loaded multiple times.
+    Map<String, Object> reqMap = context.getExternalContext().getRequestMap();
+    if (reqMap.get(_RENDER_VIEW_MARKER) != null)
+    {
+      _LOG.warning("DUPLICATE_VIEWHANDLER_REGISTRATION");
+    }
+    else
+    {
+      reqMap.put(_RENDER_VIEW_MARKER, Boolean.TRUE);
+    }
 
     // See if there is a possiblity of short-circuiting the current
     // Render Response
@@ -185,6 +197,9 @@
           service.encodeFinally(context);
       }
     }
+    
+    // Remove the 'marker' from the request map just in case the entire tree is rendered again
+    reqMap.remove(_RENDER_VIEW_MARKER);
   }
 
   @Override
@@ -517,4 +532,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";
 }

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts?rev=680731&r1=680730&r2=680731&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts Tue Jul 29 08:11:03 2008
@@ -75,6 +75,9 @@
 <!-- CANNOT_LOAD_VIEWHANDLER -->
 <resource key="CANNOT_LOAD_VIEWHANDLER">Could not load ViewHandler {0}</resource>
 
+<!-- DUPLICATE_VIEWHANDLER_REGISTRATION -->
+<resource key="DUPLICATE_VIEWHANDLER_REGISTRATION">Trinidad's ViewHandler is registered more than once. To avoid initialization problems, make sure that only one Trinidad implementation jar is loaded</resource>
+
 <!-- TIMESTAMP_CHECKING_ENABLED_SHOULDNOT_IN_PRODUCTION -->
 <resource key="TIMESTAMP_CHECKING_ENABLED_SHOULDNOT_IN_PRODUCTION">Apache Trinidad is running with time-stamp checking enabled. This should not be used in a production environment. See the {0} property in WEB-INF/web.xml</resource>
 
@@ -624,8 +627,8 @@
 <resource key="REQUIRED_TRINIDADFILTER_NOT_INSTALLED">The TrinidadFilter has not been installed.  Apache Trinidad requires this filter for proper execution.</resource>
 
 <resource key="INVALID_ENUM_IN_CONFIG">The value ''{0}'' is not a legal value for &lt;''{1}''&gt;</resource>
-
-<resource key="INVALID_ACC_PROFILE">The value ''{0}'' is not a valid accessibility-profile property</resource>
+
+<resource key="INVALID_ACC_PROFILE">The value ''{0}'' is not a valid accessibility-profile property</resource>
 
  <!-- MERGECAPABILITIES_ONLY_USED_WITH_AGENTS_CREATED_BY_THIS_CLASS -->
  <resource key="MERGECAPABILITIES_ONLY_USED_WITH_AGENTS_CREATED_BY_THIS_CLASS">mergeCapabilities() may only be used with Agents created by this class.</resource>