You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2009/09/23 06:48:54 UTC

svn commit: r817962 - in /myfaces/core/trunk/impl/src: main/java/org/apache/myfaces/application/ApplicationImpl.java test/java/org/apache/myfaces/application/ApplicationImplAnnotationTest.java

Author: lu4242
Date: Wed Sep 23 04:48:54 2009
New Revision: 817962

URL: http://svn.apache.org/viewvc?rev=817962&view=rev
Log:
MYFACES-2032 Implement javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE config param (Thanks to Jakob Korherr for provide this patch)

Modified:
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java
    myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/application/ApplicationImplAnnotationTest.java

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java?rev=817962&r1=817961&r2=817962&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java Wed Sep 23 04:48:54 2009
@@ -29,6 +29,7 @@
 import java.util.Locale;
 import java.util.Map;
 import java.util.MissingResourceException;
+import java.util.TimeZone;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
 
@@ -57,6 +58,7 @@
 import javax.faces.component.behavior.Behavior;
 import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
+import javax.faces.convert.DateTimeConverter;
 import javax.faces.el.MethodBinding;
 import javax.faces.el.PropertyResolver;
 import javax.faces.el.ReferenceSyntaxException;
@@ -118,6 +120,9 @@
 
     // MyFaces specific System Property to set the ProjectStage, if not present via the standard way
     public final static String MYFACES_PROJECT_STAGE_SYSTEM_PROPERTY_NAME = "org.apache.myfaces.PROJECT_STAGE";
+    
+    public final static String DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE_PARAM_NAME 
+        = "javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE";
 
     // ~ Instance fields
     // --------------------------------------------------------------------------
@@ -1346,6 +1351,17 @@
     {
         final org.apache.myfaces.config.impl.digester.elements.Converter converterConfig = _converterClassNameToConfigurationMap
                 .get(converterClass.getName());
+        
+        // if the converter is a DataTimeConverter, check the init param for the default timezone (since 2.0)
+        if (converter instanceof DateTimeConverter)
+        {    
+            String configParam = getFaceContext().getExternalContext()
+                    .getInitParameter(DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE_PARAM_NAME);
+            if (configParam != null && configParam.toLowerCase().equals("true"))
+            {
+                ((DateTimeConverter) converter).setTimeZone(TimeZone.getDefault());
+            }
+        }
 
         if (converterConfig != null)
         {

Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/application/ApplicationImplAnnotationTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/application/ApplicationImplAnnotationTest.java?rev=817962&r1=817961&r2=817962&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/application/ApplicationImplAnnotationTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/application/ApplicationImplAnnotationTest.java Wed Sep 23 04:48:54 2009
@@ -22,6 +22,7 @@
 import java.net.URLClassLoader;
 import java.util.List;
 import java.util.Map;
+import java.util.TimeZone;
 
 import javax.el.ValueExpression;
 import javax.faces.FactoryFinder;
@@ -32,6 +33,8 @@
 import javax.faces.component.UIOutput;
 import javax.faces.component.UIPanel;
 import javax.faces.component.UIViewRoot;
+import javax.faces.convert.Converter;
+import javax.faces.convert.DateTimeConverter;
 import javax.faces.event.ListenerFor;
 import javax.faces.event.PostAddToViewEvent;
 import javax.faces.lifecycle.LifecycleFactory;
@@ -118,6 +121,8 @@
         "org.apache.shale.test.mock.lifecycle.MockLifecycleFactory");
         FactoryFinder.setFactory(FactoryFinder.RENDER_KIT_FACTORY,
         "org.apache.shale.test.mock.MockRenderKitFactory");
+        FactoryFinder.setFactory(FactoryFinder.VIEW_DECLARATION_LANGUAGE_FACTORY,
+                "org.apache.myfaces.view.ViewDeclarationLanguageFactoryImpl");
 
         lifecycleFactory = (MockLifecycleFactory)
         FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
@@ -395,5 +400,13 @@
         }
     }
     
-    
+    public void testDatetimeconverterDefaultTimezoneIsSystemTimezoneInitParameter()
+    {
+        servletContext.addInitParameter(
+                "javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE", "true");
+        application.addConverter(java.util.Date.class, "javax.faces.convert.DateTimeConverter");
+        Converter converter = application.createConverter(java.util.Date.class);
+        assertEquals(((DateTimeConverter) converter).getTimeZone(), TimeZone.getDefault());
+    }
+
 }