WebObjects 4.0: Windows NT NSTimeZone Bug Workaround

The workaround described in this article has been included in WebObjects 4.0.1. Apple recommends that all WebObjects 4.0 users upgrade to WebObjects 4.0.1. This obsolete article is provided here as a convenience to our customers who have not yet upgraded.
There are two known problems with the NSTimeZone object in the Windows NT release version of WebObjects 4.0. This document discusses how to recognize these problems and provides a workaround that corrects them. These problems do not affect the Solaris or HP-UX versions of WebObjects 4.0. The problem has also been corrected in WebObjects 4.0.1.

New NSGregorianDate with new NSTimeZone raises exception
Apple reference # 2296907

PROBLEM:
Using the NSGregorianDate constructor to generate a new date with a new NSTImeZone would generate an exception; for example, calling:

NSGregorianDate getADate = new NSGregorianDate(1999, 12, 25, 12, 15, 00, new NSTimeZone("EST", true));

would generate the error:

NSInvalidArgumentException: *** -[NSConcreteTimeZone _initWithJavaHandle:]:

timeZoneWithName returns nil value
Apple reference # 2293191

PROBLEM:
The NSTimeZone timeZoneWithName method would always return a nil value.

RESOLUTION:
Both of these problems can be resolved by replacing your system's WindowsName.table file, located in:

$NEXT_ROOT/Library/Frameworks/Foundation/Resources/TimeZoneInfo/WindowsName.table

Back up your old WindowsName.table file, then download the updated file:

WindowsName.table.zip

Unzip this file, make sure the filename is WindowsName.table, then replace the original file with the version you've just downloaded. Your do not need to restart Windows NT for this workaround to take effect.

Published Date: Feb 18, 2012