TITLE
    WebObjects 4.0.1 Patch 3
Article ID:
Created:
Modified:
70159
4/14/00
6/8/00

TOPIC

    This document contains an overview and download information for Apple's Patch 3 for WebObjects Release 4.0.1 running on Mac OS X Server version 1.2. Apple recommends that all users of WebObjects 4.0.1 on Mac OS X Server 1.2 install this patch. WebObjects 4.0.1 Patch 3 includes all relevant fixes from WebObjects 4.0.1 Patch 1 and WebObjects 4.0.1 Patch 2. Because this is the first patch Apple has produced for this platform, you do not need to install any other patch before you install this patch.

    The WebObjects Current Patch List, TIL article 70037 , contains information on all available patches and workarounds for all versions of WebObjects, including EOF patches. Please read this document if you're not sure which patches you need on your system.


DISCUSSION

    Installing WebObjects 4.0.1 Patch 3 on MacOS X Server 1.2

    1. Download WO401MacOSXSPatch3.pkg.tar , the patch installer for Mac OS X Server.

    2. Untar the patch file. Your web browser or FTP client may perform this step for you. Otherwise, double-click on the .tar file to uncompress it.

    2. Log in as root on your Mac OS X Server system. If you're not sure how to log in as root, see your system administrator.

    3. Double-click on the WO401MacOSXSPatch3.pkg file.

    4. Click the Install button in the Installer package window. An Install Package panel will open.

    5. Make sure that there are no other WebObjects or EOF applications running.

    6. Click 'Install' in the Install Package panel and, when prompted for confirmation, click OK to proceed. The Installer window displays information about the progress of the installation, which may take several minutes.

    7. The system must now be rebooted. Log out and use the reboot button on the login panel.

    After installing the patch, if you encounter compile-time warnings such as:

    warning: could not use precompiled header

    run the command:

    /usr/bin/fixPrecomps

    to update your pre-compiled headers.

    Issues Addressed

    Addressed in WebObjects 4.0.1 Patch 3


    Fetch strips trailing spaces
    Apple reference #2436771

    ISSUE:
    In the 4.0.1 release, the OracleEOAdaptor stripped trailing spaces from VARCHAR2 data fetched or committed to an Oracle database. The WebObjects 4.0.1 patch 2 changed this behavior so that trailing whitespace was no longer stripped when data is committed but not when it is fetched (Apple reference #2315268). This would allow EOF to write a row which could then not be updated.

    RESOLUTION:
    OracleEOAdaptor now only strips whitespace from CHAR data.

    NSCalendarDate not correctly creating dates with the dateByAddingYears: method
    Apple reference #2431158

    ISSUE:
    When a new date is created with the NSCalendarDate method dateByAddingYears:months:.... the clock time is not preserved in the new returned date.

    RESOLUTION:
    The clock time is now preserved in the new returned date.


    Leak: +[NSTask launchedTaskWithLaunchPath:arguments:]
    Apple reference #2438765

    ISSUE:
    Newly created NSTask objects were not being autoreleased, so they were never freed.

    RESOLUTION:
    Newly created NSTask objects are now properly autoreleased.


    Adding days hangs at 1/1/2002
    Apple reference #2437292

    ISSUE:
    The NSCalendarDate method -dateByAddingYears:months:days:hours:minutes:seconds: could get stuck in an infinite loop for some values of the calculated resulting date.

    RESOLUTION:
    NSCalendarDate now correctly calculates the resulting date.

    Addressed in WebObjects 4.0.1 Patch 2


    Application hangs if a Sybase stored procedure is missing from the database
    Apple reference #2309889

    ISSUE:

    If an EOF application called a stored procedure that was not actually in the database, the db_ctx structure that ct_lib uses was not cleaned up, leaving the entire application unusable.

    RESOLUTION:
    EOF now detects that a stored procedure is missing, cleans up the server command structure, and raises an exception normally in the application.


    SybaseChannel doesn't raise an exception when execution of a stored procedure fails.
    Apple reference # 2309891

    ISSUE:

    The SybaseEOAdaptor did not raise the current exception if execution of a stored procedure failed. Thus, in some cases, the developer had no way to handle the failure.

    RESOLUTION:
    An exception is now raised in the failure case. See also Apple Reference 2309889.

    String conversion for case-insensitive comparison should all be done by the database
    Apple reference #2309907

    ISSUE:

    In case-insensitive comparison of a value string with a database column, the EOF adaptors uppercased the value string but relied on the database itself to uppercase the column. If there was any difference in the way uppercasing was performed by the adaptor and the database, comparison would fail incorrectly.

    RESOLUTION:
    The EOF adaptors now have the database uppercase both the value string and the column, to eliminate possible inconsistency.


    Sybase varbinary type mapped to incorrect Foundation type
    Apple reference #2309912


    ISSUE:
    The SybaseEOAdaptor's -internalTypeForExternalType: model: method incorrectly mapped the Sybase "varbinary" type to "NSString".

    RESOLUTION:
    This method now correctly maps "varbinary" to "NSData".

    SybaseEOAdaptor's binaryID prototype should map to Sybase binary type
    Apple reference #2309918


    ISSUE:
    The SybaseEOAdaptor's binaryID prototype should be mapped to the Sybase binary type rather than the varbinary type.

    RESOLUTION:
    The EOSybaseAdaptorPrototype.plist mapping of binaryID has been changed to Sybase binary.

    EOF fails silently if an entity name is typed incorrectly.
    Apple reference #2309929

    ISSUE:

    EOF could silently fail in cases where an entity name had been typed incorrectly (misspelled or miscased), the model name had been updated in the model file but not in the program code, or the model group had been constructed incorrectly.

    RESOLUTION:
    EOObjectStoreCoordinator's -objectsWithFetchSpecification: editingContext: method now detects these conditions and raises appropriate exceptions.


    Can't use object-based qualifiers with raw row fetches.
    Apple reference #2309931

    ISSUE:

    Object-based qualifiers could not be used with raw row fetches.

    RESOLUTION:
    The raw row fetch code has been changed to transform object-based qualifiers to schema-based qualifiers before performing the fetch.

    ODBC adaptor generates spurious login error message
    Apple reference #2309933


    ISSUE:
    The first time the user tried to connect to the ODBC database when defining a new model (or switching adaptors to ODBC), an invalid login error message was encountered. If the user proceeded to log in with the correct name and password everything worked, but the error was misleading.

    RESOLUTION:
    The connnection information for the initial login panel is now properly constructed.

    Leak in EODatabaseContext avaliableChannel method
    Apple reference #2309934

    ISSUE:

    The -availableChannel method of EODatabaseContext leaked one object for each EODatabaseChannel object allocated.

    RESOLUTION:
    This leak has been fixed.

    EODatabase never releases snapshots
    Apple reference #2315267

    ISSUE:

    Snapshots associated with enterprise objects were never released.

    RESOLUTION:
    EOF now tracks references to an object and releases the object's snapshot when there are no more references to it.

    Optimistic locking fails on Oracle for rows with trailing spaces
    Apple reference #2315268

    ISSUE:

    OracleEOAdaptor stripped trailing spaces from VARCHAR2 data fetched from or committed to an Oracle database. If VARCHAR2 data containing trailing spaces had been inserted by another tool, optimistic locking failed for any affected row and the row could not be updated.

    RESOLUTION:
    OracleEOAdaptor no longer strips trailing spaces from VARCHAR2 data.

    Deleting newly inserted objects fails
    Apple reference #2315270

    ISSUE:

    An object created and inserted into an editing context or relationship, then deleted before being saved to the database, was not completely removed from the editing context. This caused an exception to be raised the next time the editing context was saved.

    RESOLUTION:
    Deletion of a newly-inserted object now completely removes the object from the editing context.

    Exception logging into SQL Server 7.0 via ODBCEOAdaptor
    Apple reference #2315283

    ISSUE:

    The ODBC adaptor shipped with WebObjects 4.0.1 did not work with version 7.0 of Microsoft's SQL Server product.

    RESOLUTION:
    The ODBC adaptor has been updated to work with SQL Server 7.0 as well as SQL Server 6.5.

    Incorrect time zone conversion in EOAccess layer
    Apple reference #2315287

    ISSUE:

    When converting a time value to the server time zone, the EOAccess layer substituted the sever's time zone without actually adjusting the time value for the zone difference.

    RESOLUTION:
    EOAttribute now performs the conversion of the time value to the corresponding value in the server's time zone.

    Incorrect time zone conversion in SybaseEOAdaptor
    Apple reference #2316883

    ISSUE:

    When converting a time value to the server's time zone, SybaseEOAdaptor only substituted the server's time zone without actually adjusting the time value for the zone difference.

    RESOLUTION:
    SybaseEOAdaptor now performs the conversion of the time value to the corresponding value in the server's time zone.

    Special characters crash Sybase adaptor
    Apple reference #2316889

    ISSUE:
    The SybaseEOAdaptor crashed when saving Text or BLOB data containing characters which could not be successfully encoded using the specified database encoding.

    RESOLUTION:
    The adaptor has been fixed to detect the encoding failure and raise an exception, so that a database encoding which is able to handle the problem characters may be specified in the connection dictionary.

    OracleEOAdaptor generates incorrect SQL for left and right outer joins
    Apple reference #2316963

    ISSUE:

    The SQL generated by the Oracle adaptor for a left outer join was actually the syntax for a right outer join, and vice versa.

    RESOLUTION:
    The OracleEOAdaptor now generates the correct SQL for left and right outer joins.

    Some exceptions not passed across Java Bridge
    Apple reference #2317188

    ISSUE:

    If an Objective C exception was raised in an Objective C method called from Java, the bridge correctly converted the NSException to a Java exception and threw it in Java. However, if the conversion of the NSException itself raised an exception, the subsequent behaviour of the application was undefined.

    RESOLUTION:
    The conversion exception is now caught, both exceptions are logged, and a JavaUnknownError is thrown in the Java VM with the message: "Failed to convert Objective C exception to Java exception. Refer to log output for more information."

    Java access violation error when bridge cannot find a class
    Apple reference #2317205

    ISSUE:

    If a Java exception occurred while WebObjects was attempting to look up a Java class, the exception might not be re-raised in Objective C. If this occurred, the JavaBridge sometimes crashed when it failed to load the wrapper class.

    RESOLUTION:
    The JavaBridge now raises an appropriate exception in Objective C when a wrapper class can not be found.

    Garbage collector frees wrapped objects prematurely
    Apple reference #2317214

    ISSUE:

    When a wrapped Objective C object was created in a Java method, the Objective C proxy was not retained. Java garbage collection could then release this object while it was still in scope.

    RESOLUTION:
    Objective C proxy objects are now retained until the approriate autorelease pool is deallocated.

    alloc or init returning nil confuses the Java bridge
    Apple reference #2317215

    ISSUE:

    The JavaBridge did not correctly handle the case where the Objective C base of a hybrid object returned nil from its Objective C init method.

    RESOLUTION:
    In this case, a NullPointerException is now raised in Java. This fix included a change to one of the header files used by the bridget utility. All Java projects must be rebuilt to take advantage of this fix. Please note that your code still needs to wrap Java constructors in try/catch statements to catch instantiation exceptions; see TIL article 70035 for more details.

    Case-insensitive matching sometimes fails
    Apple reference #2318841

    ISSUE:

    Case-insensitive matching did not correctly match uppercase letters in the search pattern with lowercase letters in the receiving string.

    RESOLUTION:
    Case-insensitive matching now works correctly for all combinations of uppercase and lowercase comparison.

    ODBC adaptor prepends owner to table name
    Apple reference #2319115

    ISSUE:

    When reversing engineering a Microsoft SQL Server database with ODBC database, the table names all had the form OWNER.NAME instead of just NAME.

    RESOLUTION:
    The entity names no longer have the owner prefixed to the name.

    selectObject: method return values don't match documentation
    Apple reference #2319284

    ISSUE:

    The [EODisplayGroup selectObject:] method only returned 'NO' if it could not end editing or if the delegate refused the change. According to the class documentation, it should also return 'NO' if the EODisplayGroup's displayedObjects array does not contain a match with the method's object argument.

    RESOLUTION:
    As stated in the documentation, this method now returns 'NO' when it cannot find a match for the argument oject.

    WebObjects applications set unnecessary cookies
    Apple reference #2319507

    ISSUE:

    A WebObjects application could erroneously set two cookies, wosid and woinst, in the browser.

    RESOLUTION:
    WebObjects applications no longer set these unnecessary cookies.

    Can't compile EOArchive subclasses containing JavaBeans
    Apple reference #2319614

    ISSUE:

    An EOArchive method needed by subclasses containing JavaBeans was incorrectly declared private. This leads to a compilation error in any JavaBean-bearing EOArchive.

    RESOLUTION:
    This method is now declared protected.

    DirectToWeb generation fails on MacOS X Server
    Apple reference #2319617

    ISSUE:

    DirectToWeb generation on MacOS X Server can generate the following exception:

    [DTWTemplate writeAndAddToProjectComponentNamed:]: selector not recognized

    RESOLUTION:
    This has been corrected.

    OracleEOAdaptor state not reset when closing the database channel fails
    Apple reference #2319664

    ISSUE:

    If the OracleEOAdaptor encountered an error while closing the database channel, the adaptor's state was not reset completely. As a result, the database connection could not be re-established on that channel once the database came back up.

    RESOLUTION:
    The OracleEOAdaptor now sets its internal state correctly before raising the error, allowing the connection to be re-established once the database is restored.

    EnterpriseObjects examples Rental data contains an invalid date value
    Apple reference #2324048

    ISSUE:

    The data with which the Rentals database is populated in the EnterpriseObjects examples contained an invalid credit card expiration date, 2597. With SQL Server 7.0, Microsoft's ODBC Driver fails to convert this date to the smalldatetime type, causing the examples' install_database script to fail and the Rentals data to be incompletely installed.

    RESOLUTION:
    The problem date has been changed to a value within SQL Server 7.0's valid range, 1900 to 2079.

    Raw row fetch ignores CustomQuery hint
    Apple Reference #2343246

    ISSUE:

    In WebObjects 4.0.1, any CustomQuery hint was ignored during raw row fetches.

    RESOLUTION:
    The EOAccess layer now checks for a CustomQuery hint during raw row fetches and uses it if one is provided.

    Applications using multiple databases may experience unexpected interactions.
    Apple Reference #2343328

    ISSUE:

    In WebObjects 4.0.1, applications that use multiple databases could sometimes experience strange interactions due to an error in the EOAccess layer in the caching of database records.

    RESLOUTION:
    The EOAccess layer no longer caches database records in the manner that caused this problem, and the interaction between databases has been eliminated.

    WebObjects example "FDF1040EZ" uses deprecated java.util.Date API
    Apple reference #2405646

    ISSUE:

    The WebObjects Java example "FDF1040EZ" called deprecated java.util.Date API which returned a two-digit year. This is inconsistent with good Year 2000 programming practice.

    RESOLUTION:
    This example has been corrected to use the java.util.Date API correctly.

    Enterprise Objects "ModelerBundle" example uses two-digit year format
    Apple reference #2405647

    ISSUE:

    The ModelerBundler example in the Enterprise Objects Examples uses a two-digit year format for dates. This is not prefered usage for Year 2000 compliant applications.

    RESOLUTION:
    This example has been changed to use a four-digit year format.

    WebObjects example "ElementTour" uses deprecated java.util.Date API
    Apple reference #2405648

    ISSUE:

    The WebObjects Java example "ElementTour" called deprecated java.util.Date API which returned a two-digit year. This is inconsistent with good Year 2000 programming practice.

    RESOLUTION:
    This example has been corrected to use the java.util.Date API correctly.

    NSTimeZone method +timeZoneForSecondsFromGMT returns incorrect results
    Apple Reference #2406594

    ISSUE:

    The NSTimeZone method +timeZoneForSecondsFromGMT returned incorrect values in WebObjects 4.x.

    RESOLUTION:
    This method has been corrected.

    Mapping of old time zone names and abbreviations not completely accurate.
    Apple reference #2406610

    ISSUE:

    In the Foundation framework shipped with WebObjects 4.0.1, the mapping of old time zone names and abbreviations to the new names and abbreviations contained several errors and omissions.

    RESOLUTION:
    These issues have been corrected.

    WOApplication raises a released exception.
    Apple reference #2425076

    ISSUE:

    There were two places (one in WOApplication and one in WOSessionTimeOutManager) where an exception was caught, an autoreleasepool was released, and the exception was re-raised. This resulted in a message (-raise) being sent to a freed object.

    RESOLUTION:
    The exception is now properly retained before the pool is released, and is autoreleased before being raised again.


    Addressed in WebObjects 4.0.1 Patch 1

    'gnutar' command didn't accept dates later than 1999
    Apple Reference #2405644

    ISSUE:
    The 'gnutar' command has an option to only write files newer than a given date, but version 1.11.2, the version shipped with WebObjects 4.0.1, didn't accept dates past the end of 1999, even using four-digit years.


    RESOLUTION:
    'gnutar' has been updated to version 1.12, which accepts dates after 1999.


Document Information
Product Area: WebObjects
Category: WebObjects 4
Sub Category: Patches

Copyright © 2000 Apple Computer, Inc. All rights reserved.