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 2007/09/26 09:45:19 UTC

svn commit: r579496 - in /myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main: java/org/apache/myfaces/trinidadinternal/config/ java/org/apache/myfaces/trinidadinternal/taglib/util/ java/org/apache/myfaces/trinidadinternal/util/ xrts/org/apache/myfa...

Author: matzew
Date: Wed Sep 26 00:45:18 2007
New Revision: 579496

URL: http://svn.apache.org/viewvc?rev=579496&view=rev
Log:
TRINIDAD-739 - Timezone handling in trinidad-config.xml and ConvertDateTimeTag does not give notice on errors

Thx to Yee-Wah Lee for her patch!

Added:
    myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/util/DateUtils.java
Modified:
    myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/ConfigParser.java
    myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/taglib/util/TagUtils.java
    myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts

Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/ConfigParser.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/ConfigParser.java?rev=579496&r1=579495&r2=579496&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/ConfigParser.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/ConfigParser.java Wed Sep 26 00:45:18 2007
@@ -37,6 +37,7 @@
 import org.apache.myfaces.trinidadinternal.config.upload.UploadedFileProcessorImpl;
 import org.apache.myfaces.trinidadinternal.context.RequestContextBean;
 import org.apache.myfaces.trinidadinternal.util.nls.LocaleUtils;
+import org.apache.myfaces.trinidadinternal.util.DateUtils;
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
@@ -218,7 +219,11 @@
             }
             else if (key.getType() == TimeZone.class)
             {
-              value = TimeZone.getTimeZone(currentText);
+              value = DateUtils.getSupportedTimeZone(currentText);
+              if (value == null)
+              {
+                _LOG.warning("INVALID_TIMEZONE_IN_CONFIG", currentText);
+              }
             }
             else if (key.getType() == Locale.class)
             {

Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/taglib/util/TagUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/taglib/util/TagUtils.java?rev=579496&r1=579495&r2=579496&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/taglib/util/TagUtils.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/taglib/util/TagUtils.java Wed Sep 26 00:45:18 2007
@@ -37,6 +37,7 @@
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
 
 import org.apache.myfaces.trinidadinternal.share.xml.XMLUtils;
+import org.apache.myfaces.trinidadinternal.util.DateUtils;
 
 
 /**
@@ -179,7 +180,7 @@
   public static TimeZone getTimeZone(
     String value)
   {
-     return TimeZone.getTimeZone(value);
+    return DateUtils.getSupportedTimeZone(value);
   }
 
   public static boolean isValueReference(String expression)

Added: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/util/DateUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/util/DateUtils.java?rev=579496&view=auto
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/util/DateUtils.java (added)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/util/DateUtils.java Wed Sep 26 00:45:18 2007
@@ -0,0 +1,68 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.trinidadinternal.util;
+
+import java.util.HashMap;
+import java.util.TimeZone;
+
+import org.apache.myfaces.trinidad.logging.TrinidadLogger;
+import org.apache.myfaces.trinidadinternal.config.ConfigParser;
+
+/**
+ * Utility class for Date related functions. 
+ */
+public final class DateUtils
+{
+
+    //empty, private constructor
+    private DateUtils()
+    {
+    }
+
+    public static TimeZone getSupportedTimeZone (String id) 
+    {
+      // If the timezone was specified using String, it may
+      //not be in the correct case and TimeZone.getTimeZone(..) doesn't give
+      //any warning, just returning GMT (on Unix)
+      String officialId = _supportedTimeZoneIdsMap.get(id.toLowerCase());
+      
+      if (officialId != null)
+      {
+        // The ID was found in the map of TimeZone.getAvailableIDs(), so 
+        // TimeZone.getTimeZone(id) should succeed
+        return (TimeZone.getTimeZone(officialId));        
+      }
+      
+      _LOG.warning("CANNOT_FIND_TIMEZONE", id);
+      return null;
+    }
+    
+    static private final TrinidadLogger _LOG = TrinidadLogger.createTrinidadLogger(DateUtils.class);
+    private static HashMap<String, String> _supportedTimeZoneIdsMap;
+
+    static{
+        String[] supportedIds = TimeZone.getAvailableIDs();
+        _supportedTimeZoneIdsMap = new HashMap<String, String> (supportedIds.length);
+        for (int i = 0; i < supportedIds.length; i++)
+        {
+            String id = supportedIds[i];
+            _supportedTimeZoneIdsMap.put (id.toLowerCase(), id);
+        }      
+    }
+}

Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts?rev=579496&r1=579495&r2=579496&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts Wed Sep 26 00:45:18 2007
@@ -1031,4 +1031,10 @@
 <!-- COMPONENT_REQUIRES_FORM -->
 <resource key="COMPONENT_REQUIRES_FORM">The {0} component must be inside of a form to function correctly.</resource>
 
+<!-- CANNOT_FIND_TIMEZONE -->
+<resource key="CANNOT_FIND_TIMEZONE">Timezone with id {0} was requested, but it is not available through the TimeZone.getTimeZone(String id) API. Please check that the ID matches, including case, an ID returned by TimeZone.getAvailableIDs()</resource>
+
+<!-- INVALID_TIMEZONE_IN_CONFIG -->
+<resource key="INVALID_TIMEZONE_IN_CONFIG">The trinidad-config.xml contains an invalid value for time-zone ({0}). The default timezone will be used instead.</resource>
+
 </resources>