Author: mgrigorov
Date: Wed Mar 16 20:00:25 2011
New Revision: 1082283

URL: http://svn.apache.org/viewvc?rev=1082283&view=rev
Log:
WICKET-3536 Cache the value from Application.getConfigurationType()

Cache the parsed value of 'wicket.configuration' setting.
A system property or servlet init/context parameter will not ever change at 
runtime.


Modified:
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebApplication.java

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebApplication.java?rev=1082283&r1=1082282&r2=1082283&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
 Wed Mar 16 20:00:25 2011
@@ -123,6 +123,13 @@ public abstract class WebApplication ext
        private FilterFactoryManager filterFactoryManager;
 
        /**
+        * Cached value of the parsed (from system properties or Servlet 
init/context parameter)
+        * <code>wicket.configuration</code> setting. No need to re-read it 
because it wont change at
+        * runtime.
+        */
+       private RuntimeConfigurationType configurationType;
+
+       /**
         * Covariant override for easy getting the current {@link 
WebApplication} without having to cast
         * it.
         */
@@ -525,58 +532,66 @@ public abstract class WebApplication ext
        @Override
        public RuntimeConfigurationType getConfigurationType()
        {
-               String result = null;
-               try
-               {
-                       result = System.getProperty("wicket." + 
Application.CONFIGURATION);
-               }
-               catch (SecurityException e)
-               {
-                       // Ignore - we're not allowed to read system properties.
-               }
-
-               // If no system parameter check filter/servlet <init-param> and 
<context-param>
-               if (result == null)
+               if (configurationType == null)
                {
-                       result = getInitParameter("wicket." + 
Application.CONFIGURATION);
-               }
-               if (result == null)
-               {
-                       result = getServletContext().getInitParameter("wicket." 
+ Application.CONFIGURATION);
-               }
+                       String result = null;
+                       try
+                       {
+                               result = System.getProperty("wicket." + 
Application.CONFIGURATION);
+                       }
+                       catch (SecurityException e)
+                       {
+                               // Ignore - we're not allowed to read system 
properties.
+                       }
 
-               // If no system parameter check filter/servlet specific 
<init-param>
-               if (result == null)
-               {
-                       result = getInitParameter(Application.CONFIGURATION);
-               }
+                       // If no system parameter check filter/servlet 
<init-param> and <context-param>
+                       if (result == null)
+                       {
+                               result = getInitParameter("wicket." + 
Application.CONFIGURATION);
+                       }
+                       if (result == null)
+                       {
+                               result = 
getServletContext().getInitParameter("wicket." + Application.CONFIGURATION);
+                       }
 
-               // If no system parameter and no <init-param>, then check
-               // <context-param>
-               if (result == null)
-               {
-                       result = 
getServletContext().getInitParameter(Application.CONFIGURATION);
-               }
+                       // If no system parameter check filter/servlet specific 
<init-param>
+                       if (result == null)
+                       {
+                               result = 
getInitParameter(Application.CONFIGURATION);
+                       }
 
-               // Return result if we have found it, else fall back to 
DEVELOPMENT mode
-               // as the default.
-               if (result != null)
-               {
-                       try
+                       // If no system parameter and no <init-param>, then 
check
+                       // <context-param>
+                       if (result == null)
                        {
-                               return 
RuntimeConfigurationType.valueOf(result.toUpperCase());
+                               result = 
getServletContext().getInitParameter(Application.CONFIGURATION);
                        }
-                       catch (IllegalArgumentException e)
+
+                       // Return result if we have found it, else fall back to 
DEVELOPMENT mode
+                       // as the default.
+                       if (result != null)
                        {
-                               // Ignore : fall back to DEVELOPMENT mode
-                               // log.warn("Unknown runtime configuration type 
'" + result +
-                               // "', falling back to DEVELOPMENT mode.");
-                               throw new IllegalArgumentException("Invalid 
configuration type: '" + result +
-                                       "'.  Must be \"development\" or 
\"deployment\".");
+                               try
+                               {
+                                       configurationType = 
RuntimeConfigurationType.valueOf(result.toUpperCase());
+                               }
+                               catch (IllegalArgumentException e)
+                               {
+                                       // Ignore : fall back to DEVELOPMENT 
mode
+                                       // log.warn("Unknown runtime 
configuration type '" + result +
+                                       // "', falling back to DEVELOPMENT 
mode.");
+                                       throw new 
IllegalArgumentException("Invalid configuration type: '" + result +
+                                               "'.  Must be \"development\" or 
\"deployment\".");
+                               }
                        }
                }
 
-               return RuntimeConfigurationType.DEVELOPMENT;
+               if (configurationType == null)
+               {
+                       configurationType = 
RuntimeConfigurationType.DEVELOPMENT;
+               }
+
+               return configurationType;
        }
 
        /**


Reply via email to