PATH |
Inherits from: EOEditingContext : EOObjectStore
Package: com.webobjects.eocontrol
The EOSharedEditingContext class defines a mechanism that allows EOEditingContexts to share enterprise objects for reading. This mechanism can reduce redundant data and the number of fetches an application requires.
Shared enterprise objects are read-only and persist for the life of the application; they can't be modified or deleted. They must be unique in the shared context and across all other editing contexts that share objects from the shared context.
Objects can be fetched into a shared context using objectsWithFetchSpecification and bindObjectsWithFetchSpecification. The latter method makes it easier to access result sets, using objectsByEntityNameAndFetchSpecificationName.
In multithreaded applications, shared objects can be used safely by many threads at once. Shared editing contexts use EOMultiReaderLocks to maintain thread safety. The methods objectsWithFetchSpecification bindObjectsWithFetchSpecification, faultForGlobalID, and objectForGlobalID are thread-safe, but you must lock the context before using any other shared context API.
It is possible to modify shared objects while an application is running, but only indirectly. You can create a regular editing context that doesn't share objects by setting it's sharedEditingContext to null. Fetch the object that you want to change into the regular context, modify or delete it, and save. Since shared editing contexts listen for ObjectsChangedInStoreNotifications, the shared editing context updates when it learns that an object was modified. The shared context removes from its objectsByEntityName and objectsByEntityNameAndFetchSpecificationName dictionaries any objects that have been deleted, and it refaults any objects that have been updated. However, to register newly inserted objects in the shared editing context, you should refetch.
EOSharedEditingContext defines constants for the notifications it post. For more information, see "Notifications" (page 346).
Accessing a shared editing context defaultSharedEditingContext setDefaultSharedEditingContext sharedEditingContext setSharedEditingContext Accessing shared objects bindObjectsWithFetchSpecification objectsByEntityName objectsByEntityNameAndFetchSpecificationName objectsWithFetchSpecification Locking a shared editing context lockForReading tryLockForReading unlockForReading Overridden EOEditingContext methods deleteObject deletedObjects faultForGlobalID hasChanges insertedObjects insertObject objectForGlobalID objectWillChange refaultObject registeredObjects reset saveChanges setUndoManager updatedObjects validateChangesForSave
public EOSharedEditingContext(EOObjectStore anObjectStore)
public EOSharedEditingContext()
public static EOSharedEditingContext defaultSharedEditingContext()
public static synchronized void setDefaultSharedEditingContext(EOSharedEditingContext context)
public void bindObjectsWithFetchSpecification( EOFetchSpecification fetchSpecification, String name)
public void deleteObject(EOEnterpriseObject object)
public NSArray deletedObjects()
public void dispose()
public EOEnterpriseObject faultForGlobalID( EOGlobalID gid, EOEditingContext context)
See Also: faultForGlobalID (EOEditingContext)
public void forgetObject(EOEnterpriseObject anEO)
public EOGlobalID globalIDForObject(EOEnterpriseObject anEO)
public boolean hasChanges()
public void initializeObject( EOEnterpriseObject anEO, EOGlobalID anID, EOEditingContext aEC)
public NSArray insertedObjects()
public void insertObject(EOEnterpriseObject object)
public void insertObjectWithGlobalID( EOEnterpriseObject anEO, EOGlobalID anID)
public void invalidateAllObjects()
public void invalidateObjectsWithGlobalIDs(NSArray arrayOfIDs)
public void lock()
public void lockForReading()
See Also: tryLockForReading
public EOEnterpriseObject objectForGlobalID(EOGlobalID gid)
See Also: objectForGlobalID (EOEditingContext)
public NSDictionary objectsByEntityName()
See Also: bindObjectsWithFetchSpecification
public NSDictionary objectsByEntityNameAndFetchSpecificationName()
Note: The dictionary returned from this method might not contain all the receiver's shared objects. It only contains objects fetched with a named fetch specification using bindObjectsWithFetchSpecification. Shared objects fetched into the receiver with other methods are not returned from this method. |
public NSArray objectsWithFetchSpecification( EOFetchSpecification fetchSpecification, EOEditingContext anEditingContext)
See Also: objectsWithFetchSpecification (EOEditingContext)
public void objectWillChange(Object object)
public void refaultObject( EOEnterpriseObject object, EOGlobalID gid, EOEditingContext context)
public void refaultObjects()
public NSArray registeredObjects()
See Also: registeredObjects (EOEditingContext)
public void reset()
public void retrieveReaderLocks()
public void saveChanges()
public void setSharedEditingContext(EOSharedEditingContext sharedEC)
public void setUndoManager(NSUndoManager undoManager)
public EOSharedEditingContext sharedEditingContext()
public void suspendReaderLocks()
public boolean tryLock()
public boolean tryLockForReading()
public void unlock()
public void unlockForReading()
public NSArray updatedObjects()
public void validateChangesForSave()
public static final String DefaultSharedEditingContextWasInitializedNotification
Notification Object | None |
userInfo Dictionary | None |
public static final String SharedEditingContextInitializedObjectsNotification
Notification Object | The shared editing context |
userInfo Dictionary | NSArray of global IDs of the initialized objects |
© 2001 Apple Computer, Inc. (Last Published April 19, 2001)