About This Patch
This document contains release notes for EOF 2.2 patch 1, an update to Apple's Enterprise Objects Framework on all supported platforms. Customers who are interested in upgrading from EOF 2.1, the version of EOF included in OPENSTEP Enterprise 4.2 and packaged separately for the Mach operating system, should contact Apple Enterprise Support for more information, through an authorized Apple Support contact or by emailing
support@enterprise.apple.com
.
Installing EOF 2.2 Patch 1 on OPENSTEP 4.2 for Mach
1.
Download
the Mach version of the patch from Apple's FTP site at ftp.info.apple.com. The file is located at:
/Apple_Support_Area/Apple_Software_Updates/MultiCountry/Enterprise/EOF/patches/
2.2/EOF2.2_Mach_Patch1.pkg.tar
2
.
Uncompress
the Mach package file. Your web browser or FTP client may perform this step for you.
3
.
Log in
as
root
. If you're not sure how to log in as root, see your system administrator.
4. Double-click
on the EOF2.2_Mach_Patch1.pkg file. Make sure that no EOF-based applications are running before you perform this step.
5. Click the Install button
in the Installer package window. An Install Package panel will open.
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.
Installing EOF 2.2 Patch 1 on Windows NT 4.0
1.
Download
the Windows NT version of the patch fromApple's FTP site at ftp.info.apple.com. The file is located at:
/Apple_Support_Area/Apple_Software_Updates/MultiCountry/Enterprise/EOF/
patches/2.2/EOF2.2_NT_Patch1.TAR.gz
Also
download
the installer script, "patcher.nt.sh" from:
/Apple_Support_Area/Apple_Software_Updates/MultiCountry/Enterprise/openstep/
patches/patcher.nt.sh
2. Log in
as a user with Administrator privileges.
3. Open a Bourne shell
. The Bourne shell should be available from your Start menu, under the WebObjects program group, or under your Apple root directory at Demos\sh.exe.
4. Change
to the directory
containing the patch and the patch installer, "patcher.nt.sh".
5. Type the following
at the shell prompt (make sure that there are no EOF applications running first):
patcher.nt.sh -install EOF2.2_NT_Patch1.TAR.gz
For more information on using the patcher.nt.sh program, type the following at the command prompt:
patcher.nt.sh -help
6. Reboot
your Windows NT system
Installing EOF 2.2 Patch 1 on Solaris or HP-UX
1. Download
the Solaris version
or
the HP-UX version
of this patch from Apple's FTP servers at ftp.info.apple.com. The files are located at:
/Apple_Support_Area/Apple_Software_Updates/MultiCountry/Enterprise/EOF/
patches/2.2/EOF2.2_Solaris_Patch1.TAR.Z
and
/Apple_Support_Area/Apple_Software_Updates/MultiCountry/Enterprise/EOF/
patches/2.2/EOF2.2_HPUX_Patch1.TAR.Z
Also
download
the installer script, "patcher.sh" from:
/Apple_Support_Area/Apple_Software_Updates/MultiCountry/Enterprise/openstep/
patches/patcher.sh
2. Log in as root
. If you're not sure how to log in as root, see your system administrator.
3. Change to the directory
containing the patch and the patch installer, "patcher.sh".
4. Type the following
at the shell prompt (make sure that there are no EOF applications running first):
patcher.sh -install EOF2.2_Solaris_Patch1.TAR.Z
or
patcher.sh -install EOF2.2_HPUX_Patch1.TAR.Z
For more information on using the "patcher.sh" program, type the following at the command prompt:
patcher.sh -help
5. Reboot
your Unix system
Issues Fixed
Corrected in EOF 2.2 Patch 1
Sybase Adaptor Issues
Incorrect Sybase smallint mapping
Apple reference # 2247522, 2241377
ISSUE:
On HP-UX and Solaris, data of type
smallint
would be mapped incorrectly when retrieved from a Sybase database. Instead of being mapped to
NSNumber/Short
, the data would be mapped to
NSNumber/Integer
and assigned the original value times 2 ^16.
RESOLUTION:
The Sybase adaptor now correctly maps smallint data to type NSNumber/Short.
All parameters required for Sybase stored procedures
Apple reference # 2203081
ISSUE:
If you did not supply all values when executing a Sybase stored procedure, the execution would fail with an exception like:
Feb 19 11:23:53 WOF_3_5_Sybase_Patch[1027] Caught exception:EOGeneralAdaptorException
Sybase: Server:unknown Procedure:NEXT_MOVIE_PRIMARY_KEY Line:0 Procedure NEXT_MOVIE_PRIMARY_KEY expects parameter @A_MOVIE_ID, which was not supplied.
This happens even though A_MOVIE_ID is not required for the stored procedure.
RESOLUTION:
The Sybase adaptor no longer requires optional arguments to stored procedures.
Cannot fetch float-NSDecimalNumbers along with text columns
Apple reference # 2208497
ISSUE:
If you have an attribute with external type float, and internal type NSDecimalNumber, it will not fetch properly if a text column is also in the fetch. The attribute will be blank.
RESOLUTION:
The Sybase adaptor now correctly fetches these attributes.
Special characters crash Sybase adaptor
Apple reference # 2261262, 2260785
ISSUE:
The SybaseEOAdaptor would crash when saving Text or BLOB data containing characters which could not be 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 issue characters may be specified in the connection dictionary.
Sybase can't fetch float and text data together
Apple reference # 2274601, 2259088
ISSUE:
The Sybase adaptor would not fetch data of types text and float together.
RESOLUTION:
The adaptor has been fixed. There is no longer a conflict between these data types.
Can't use smallints as arguments to Sybase stored procedures
Apple reference # 2274608, 2262888
ISSUE:
The Sybase adaptor did not allow the use of smallints as arguments to stored procedures.
RESOLUTION:
The Sybase adaptor now allows stored procedures with smallint arguments.
Can't use Sybase 11 stored procedures
Apple reference # 2274650, 2244533
ISSUE:
The Sybase adaptor was unable to interpret stored procedures created in Sybase 11.
RESOLUTION:
The adaptor has been fixed to work properly with stored procedures from both Sybase 10 and Sybase 11.
Incorrect time zone conversions
Apple reference # 2276907, 2276899
ISSUE:
When converting a time value to the server time zone, the Sybase adaptor would substitute the server's time zone without actually adjusting the time value for the zone difference.
RESOLUTION:
The Sybase adaptor now performs the conversion of the time value to the corresponding value in the server's time zone.
Oracle Adaptor Issues
Oracle adaptor state not preserved
Apple reference # 2252175
ISSUE:
If the Oracle adaptor encountered an error while closing the database channel, the adaptor state would not be set correctly. As a result, the database connection could not be reestablished on that channel once the database came back up.
RESOLUTION:
The Oracle adaptor now sets its internal state correctly before raising the error, allowing the connection to be re-established once the database is restored.
Optimistic locking fails on rows with trailing spaces
Apple reference # 2231704, 2177721
ISSUE:
EOOracleAdaptor would strip trailing spaces from VARCHAR2 data fetched from or committed to an Oracle database, causing optimistic locking to fail if a database row contained trailing spaces inserted by another tool.
RESOLUTION:
EOOracleAdaptor no longer strips trailing spaces from VARCHAR2 data.
Oracle adaptor generates incorrect SQL for left and right outer joins
Apple reference #2288089, 2165674
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 Oracle adaptor now generates the correct SQL for left and right outer joins.
Informix Adaptor Issues
Informix adaptor crashes on failed referential integrity check
Apple reference # 2274351, 2272207
ISSUE
If the Informix adaptor was unable to find matching source and destination entities of a referential integrity constraint, it would pass a nil pointer to the database. This would cause a crash in the Informix adaptor.
RESOLUTION
The Informix adaptor now tests for this condition and handles it appropriately.
ODBC Adaptor issues
ODBC Adaptor cannot execute stored procedures with output parameters
Apple reference # 2208503
ISSUE
The EOF 2.2 (WebObjects 3.5) version of ODBCEOAdaptor.framework introduced a bug which causes an error when using a stored procedure with an output parameter.
RESOLUTION
The ODBC adaptor now handles output parameters correctly.
ODBC adaptor leaks connections with Microsoft Access
Apple reference # 2209574
ISSUE:
The EOF 2.2 (WOF 3.5) and earlier versions of ODBCEOAdaptor.framework did not release ODBC connections when using Microsoft Access (or any JET based data source) in order to work around a bug in the Microsoft odbcjt32.dll library; this bug caused a crash when SQLFreeConnect was called. The SQLFreeConnect bug was discovered in version 3.40.2829 of the DLL. Newer versions of the DLL (beyond 3.50) no longer exhibit the crashing issue.
RESOLUTION:
The patched version of this framework now checks the version of the DLL more carefully and allows SQLFreeConnect to be called unless the DLL version is 3.4X. The adaptor no longer leaks the ODBC Connection when running with fixed versions of odbcjt32.dll.
Tools And Frameworks Issues
Development tools may attempt to load EOModel file twice for an application nested within an aggregate project
Apple reference # 2267783, 2176591
ISSUE:
When an application was nested in an aggregate project, the development tools would sometimes attempt to load an EOModel file twice due to an error in the path searching code.
RESOLUTION:
The search path has been corrected in this version. The development tools now handle subprojects of aggregates correctly.
Nil value in EOAttribute causes crash while saving EOModel
Apple reference # 2274226, 2220588
ISSUE:
A crash would sometimes occur during the save of an EOModel because a nil serverTimeZone attribute was being inserted into the EOModel.
RESOLUTION:
The EOAccess layer has been changed to test for and handle a nil value for this attribute.
EOWizard not localizable
Apple reference # 2231705, 2177282
ISSUE:
EOWizard was not localizable.
RESOLUTION:
Template files have been moved from the framework's Resources directory to the ../Resources/English.lproj directory, making it possible to localize these resources.
Exception while writing model to disk corrupts EOModel
Apple reference # 2274225, 2220893
ISSUE:
If an exception was raised while an EOModel was being written to disk, the original model would be lost and only the partially-written or corrupted model was left on the disk.
RESOLUTION:
A backup copy of the EOModel is made before the write begins. If an error occurs during the write, the backup EOModel will now be restored to the disk, and a copy of the partially written new EOModel will also be saved (as <model_name>.eomodeld#).
BusinessLogic framework fails to retain some global IDs
Apple reference # 2290236, 2290233
ISSUE:
Several classes in the BusinessLogic framework example failed to retain global IDs for some enterprise objects, resulting in messages being sent to unexpectedly freed objects.
RESOLUTION:
The classes now retain global IDs appropriately.
EOAccess Issues
EOEntity methods raise exceptions
Apple reference # 2256685, 2251180
ISSUE:
Under some circumstances some methods of EOEntity, including setAttributes, setClassProperties, setRelationship, and removeRelationship, would not clear a private variable, potentially resulting in an application exception.
RESOLUTION:
These methods now handle their private instance variables correctly.
Prefetching can mysteriously fail
Apple reference # 2264033, 2223730
ISSUE:
Prefetching would sometimes fail for no apparent reason, due to inappropriate filtering of relationships inside the EOAccess layer.
RESOLUTION:
The incorrect filtering on prefetches has been removed from EOEntity.
Unnecessary firing of to-many faults
Apple reference # 2248080, 2227660
ISSUE:
If the PropagatePrimaryKey flag on an EOEntity was set to YES, saving changes to the EOEditingContext would fire array faults for all of that entity's to-many relationships. This was not necessary and could cause performance issues.
RESOLUTION:
The EOAccess layer has been changed so that it no longer fires unnecessary faults.
Multiple propagation primary keys create race condition
Apple reference # 2267964, 2260541
ISSUE:
Saving changes to two databases when both had a propagation primary key would not work in previous versions of EOF; a race condition would be created, and only one database would be able to generate primary keys.
RESOLUTION:
EODatabaseContext has been changed to correct this behavior. Both databases can now generate their primary keys correctly.
EODatabase never releases snapshots
Apple reference # 2231693, 2169671
ISSUE:
Snapshots associated with enterprise objects were never released.
RESOLUTION:
EOF now tracks an object's snapshots and releases them when all objects that refer to them are released.
Deallocating an EODatabase containing snapshots causes crash
Apple reference # 2272549, 2265751
ISSUE:
EODatabase released its snapshots too early during deallocation. As a result, deallocating an EODatabase would raise a fatal exception if any snapshots were present.
RESOLUTION:
The order in which instance variables are released by EODatabase has been corrected.
Logic error in EOAccess layer sometimes raises exception while generating primary keys
Apple reference # 2278561, 2182084
ISSUE:
Under certain circumstances, the EOAccess code that generated primary keys would send messages to inappropriate objects. This would cause a "NoSuchMethodError" exception to be thrown in Java, or one of several exceptions to be raised in Objective C.
RESOLUTION:
EOAccess now checks the class of the receiver before sending the message that was causing the issue.
Incorrect NSNumber formatting for zero values
Apple reference # 2264031, 2181645
ISSUE:
Zero values for number fields displayed by EOF would not always reflect appropriate formats for zero; some integer zero values would be represented as "0.00".
RESOLUTION:
EOEntity has been modified to check the default zero formatting for all number types.
Deleting objects with "toManyToOne" relationships sometimes fails.
Apple reference #2287021, 2278795
ISSUE:
In some circumstances, EOF would not correctly handle deletion of an object with a toManyToOne relationship, leaving rows in intermediate tables which should have been deleted.
RESOLUTION:
The EOAccess layer now does a more thorough analysis of an object's relationships when it is deleted, and data in intermediate tables is correctly removed.
Editing the owning relationship in a nested editing context more than once corrupts the database snapshots.
Apple reference #2287025, 2280979
ISSUE:
Due to an error in the processing of array faults by the databse context, editing the owning relationship in a nested editing context more than once would corrupt the database snapshot for the owning object, resulting in database corruption.
RESOLUTION:
The error in EODatabaseContext has been corrected.
Incorrect time zone conversion in EOAccess layer.
Apple reference #2287379
ISSUE:
When converting a time value to the server time zone, the EOAccess layer would substitute the server'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.
EOControl Issues
EOModeler can't create a model with EODeleteRuleNoAction
Apple reference # 2248443, 2202107
ISSUE:
In EOModeler's AdvancedRelationship inspector, if the Delete Rule was set to "No Action", the following warning would be posted next time the model was opened:
Invalid delete rule string:'EODeleteRunNoAction' on entity with name: '<entity_name>'
RESOLUTION:
It is now possible to create a model in EOModeler with EODeleteRuleNoAction.
Newly inserted objects not deleted correctly
Apple reference # 2253191, 2176466
ISSUE:
An object created and inserted into an editing context or relationship, then deleted before being saved to the database, would not be completely removed. This would raise an exception when the editing context was saved.
RESOLUTION:
Deletion of a newly-inserted object now completely removes the object from the editing context.
EOQualifier qualifierWithFormat methods conflict
Apple reference # 2275802, 2203613
ISSUE:
If a qualifier was created using
+[EOQualifier qualifierWithQualifierFormat: arguments:]
and, subsequently, another qualifier was created using
+[EOQualifier qualifierWithQualifierFormat:]
, a parse error would occur, even if the second qualifier was valid.
RESOLUTION:
The interference between these two methods has been removed and they now operate correctly.
Java garbage collecting fails with EOEditingContext
Apple reference # 2270489, 2264063,
2264251
ISSUE:
The editing context did not retain its registered objects. This would cause issues with Java garbage collection.
RESOLUTION:
EOEditingContext now allows users to specify whether editing contexts retain their objects or not with the new class methods
setInstancesRetainRegisteredObjects:flag:
,
getInstancesRetainRegisteredObjects
, and
reset
. For API details, please see EOEditingContext.h. By default, in applications which contain Java, the editing context will retain all registered objects.
EOControl raises exception while building qualifier
Apple reference # 2271206, 2213188
ISSUE:
The qualifier parsing code in the EOControl layer incorrectly sends
copyWithZone:
to custom enterprise objects under certain conditions, causing a "selector not implemented" exception to be raised in Objective C or a "CloneNotSupportedException" to be thrown in Java.
RESOLUTION:
EOControl no longer calls
copyWithZone:
on custom enterprise objects when building a qualifier.
Uppercase letters in search pattern don't case-insensitive match to lowercase string
Apple reference # 2275805, 2248977
ISSUE:
Case-insensitive matching in EOQualifier did not correctly match uppercase letters in the search pattern with lowercase letters in the receiving string.
RESOLUTION:
EOQualifier has been fixed.
[EOQualifier isCaseInsensitiveLike:]
now works correctly.
Can't subclass entities with fetch specifications
Apple reference # 2279849, 2278492
ISSUE:
Due to an error in EOKeyValue encoding, EOModeler was unable to create a subclass when a fetch specification was associated with the entity being subclassed.
RESOLUTION:
The encoding is now correct and entities with associated fetch specifications can be subclassed from within EOModeler.
EOFault's retain/release behavior confuses the Java bridge
Apple reference # 2297785, 2239504
ISSUE:
EOFault's special handling of retain and release could sometimes cause conflicts with the Java bridge.
RESOLUTION:
EOFault's retain and release behaviours have been modified to interoperate correctly with Java via the bridge.
EOInterface Issues
No EOActionCellAssociation for most controls
Apple reference # 2269874, 2243956
ISSUE:
EOActionCellAssociation would not work with controls other than NSTextField.
RESOLUTION:
This class has been changed to work with NSButtons and other controls, as well as NSTextFields.
selectObject: method return values don't match documentation
Apple reference # 2275804, 2205357
ISSUE:
The
[EODisplayGroup selectObject:]
method would only return '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 also returns 'NO' when it cannot find a match for the argument object.
Memory leak in EODisplayGroup
Apple reference # 2256402, 2217263
ISSUE:
A private variable was not being released in EODisplayGroup, causing a memory leak.
RESOLUTION:
This variable is now released correctly.
EODisplayGroup instances leak
Apple reference #2286314
ISSUE
:
Each EODisplayGroup instance leaked two EOObserverProxy objects.
RESOLUTION
:
This leak in EODisplayGroup has been fixed.
Disclaimer
THE SOFTWARE PATCH PROVIDED FROM APPLE IS PROVIDED "AS IS" AND WITHOUT WARRANTY, EXPRESS OR IMPLIED. APPLE SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL APPLE BE LIABLE FOR ANY DAMAGES, INCLUDING BUT NOT LIMITED TO ANY LOST PROFITS, LOST SAVINGS OR ANY INCIDENTAL OR CONSEQUENTIAL DAMAGES, WHETHER RESULTING FROM IMPAIRED OR LOST DATA, SOFTWARE OR COMPUTER FAILURE OR ANY OTHER CAUSE, EVEN IF APPLE IS ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY OTHER CLAIM BY CUSTOMER OR FOR ANY THIRD PARTY CLAIM.