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>