|
WebObjects 5.2 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Object | +--com.webobjects.eocontrol.EOCustomObject
The EOCustomObject class provides a default implementation of the EOEnterpriseObject interface. If a custom Enterprise Object class needs to be created, you can subclass EOCustomObject and inherit the framework's default implementations. Some of the methods are for subclasses to implement or override, but most are meant to be used as defined by EOCustomObject.
EOCustomObject's constructors are not meant to be invoked; an instance of EOCustomObject would never be created. EOCustomObject provides them to demonstrate the constructors that custom enterprise objects should implement.
EOEnterpriseObject, Serialized Form| Inner classes inherited from class com.webobjects.eocontrol.EOKeyValueCodingAdditions |
EOKeyValueCodingAdditions.DefaultImplementation, EOKeyValueCodingAdditions.Utility |
| Inner classes inherited from class com.webobjects.foundation.NSKeyValueCodingAdditions |
NSKeyValueCodingAdditions.DefaultImplementation, NSKeyValueCodingAdditions.Utility |
| Inner classes inherited from class com.webobjects.foundation.NSKeyValueCoding |
NSKeyValueCoding.DefaultImplementation, NSKeyValueCoding.ErrorHandling, NSKeyValueCoding.Null, NSKeyValueCoding.UnknownKeyException, NSKeyValueCoding.Utility, NSKeyValueCoding.ValueAccessor |
| Inner classes inherited from class com.webobjects.eocontrol.EOKeyValueCoding |
EOKeyValueCoding.DefaultImplementation, EOKeyValueCoding.Utility |
| Inner classes inherited from class com.webobjects.foundation.NSValidation |
NSValidation.DefaultImplementation, NSValidation.Utility, NSValidation.ValidationException |
| Fields inherited from interface com.webobjects.foundation.NSKeyValueCodingAdditions |
KeyPathSeparator |
| Fields inherited from interface com.webobjects.foundation.NSKeyValueCoding |
NullValue |
| Constructor Summary | |
EOCustomObject()
Default constructor. |
|
EOCustomObject(EOEditingContext editingContext,
EOClassDescription classDescription,
EOGlobalID gid)
Deprecated. the default or 0 argument constructor should be used instead |
|
| Method Summary | |
void |
addObjectToBothSidesOfRelationshipWithKey(EORelationshipManipulation object,
String key)
Sets or adds object as the destination for the receiver's relationship
identified by key, and also sets or adds the receiver for object's
reciprocal relationship if there is one. |
void |
addObjectToPropertyWithKey(Object eo,
String key)
Adds to the relationship named key the object eo
without setting inverse relationships. |
NSArray |
allPropertyKeys()
Returns the union of the keys returned by attributeKeys,
toOneRelationshipKeys, and toManyRelationshipKeys. |
NSArray |
attributeKeys()
Returns the names of the receiver's attributes (not relationship properties). |
void |
awakeFromClientUpdate(EOEditingContext ec)
Invoked on a server-side enterprise object after it has been updated with changes from a client application. |
void |
awakeFromFetch(EOEditingContext ec)
Overridden by subclasses to perform additional initialization on the receiver upon its being fetched from the external repository into ec. |
void |
awakeFromInsertion(EOEditingContext ec)
Overridden by subclasses to perform additional initialization on the receiver upon its being inserted into ec. |
static boolean |
canAccessFieldsDirectly()
Returns true. |
NSDictionary |
changesFromSnapshot(NSDictionary snapshot)
Returns a dictionary whose keys correspond to the receiver's properties with uncommitted changes relative to snapshot, and whose values are the
uncommitted values. |
EOClassDescription |
classDescription()
Returns the EOClassDescription registered for the receiver's class by invoking the EOClassDescription static method classDescriptionForClass. |
EOClassDescription |
classDescriptionForDestinationKey(String detailKey)
Returns the EOClassDescription for the destination objects of the relationship identified by detailKey. |
void |
clearFault()
Sets the faultHandler to null. |
void |
clearProperties()
Sets all of the receiver's to-one and to-many relationships to null. |
int |
deleteRuleForRelationshipKey(String relationshipKey)
Returns a rule indicating how to handle the destination of the receiver's relationship named by relationshipKey when the receiver is deleted. |
EOEditingContext |
editingContext()
Returns the editing context that contains the receiver or null if
none is set. |
String |
entityName()
Returns the name of the receiver's entity, or null if it doesn't have one by sending an entityName message to the receiver's EOClassDescription. |
String |
eoDescription()
Returns a full description of the receiver's property values by extracting them using the key-value coding methods. |
String |
eoShallowDescription()
Similar to eoDescription, but doesn't descend into relationships. |
boolean |
equals(Object other)
EOF requires all EOs define equality as (this == other) To compare EOs in different EOEditingContexts, consider instead comparing their EOGlobalIDs with equals() |
protected void |
excludeObjectFromPropertyWithKey(Object eo,
String key)
Removes the object eo from the to-many relationship named
key without affecting inverse relationships, by directly
modifying the property storing the to-many relationship. |
EOFaultHandler |
faultHandler()
Returns the receiver's fault handler. |
Object |
handleQueryWithUnboundKey(String key)
Invoked from valueForKey when it finds no property binding
for key. |
void |
handleTakeValueForUnboundKey(Object value,
String key)
Invoked from takeValueForKey when it finds no property binding
for key. |
int |
hashCode()
This method must adhere to the contract specified in java.lang.Object.hashCode |
protected void |
includeObjectIntoPropertyWithKey(Object eo,
String key)
Adds to the relationship named key the object eo
without affecting inverse relationships, by directly modifying the property
storing the to-many relationship. |
String |
inverseForRelationshipKey(String relationshipKey)
Returns the name of the relationship pointing back to the receiver's class or entity from that named by relationshipKey, or null if there
isn't one. |
Object |
invokeRemoteMethod(String methodName,
Class[] argumentTypes,
Object[] arguments)
Invokes a method on the server-side equivalent of the enterprise object. |
boolean |
isFault()
Returns true if the object's values haven't yet been fetched from the database. |
boolean |
isToManyKey(String key)
Returns true if the receiver has a to-many relationship identified
by key, false otherwise. |
Object |
opaqueState()
This methods returns an opaque object which encapsulates state private to EOF. |
boolean |
ownsDestinationObjectsForRelationshipKey(String relationshipKey)
Returns true if the receiver has a relationship identified by key
that owns its destination, and false otherwise. |
void |
prepareValuesForClient()
Invoked on a server-side enterprise object before the values of it are distributed to a client application. |
void |
propagateDeleteWithEditingContext(EOEditingContext ec)
Deletes the destination objects of the receiver's relationships according to the delete rule for each relationship. |
protected Object |
readResolve()
|
void |
reapplyChangesFromDictionary(NSDictionary changes)
Similar to takeValuesFromDictionary, but the changes dictionary can
contain arrays for to-many
relationships. |
void |
removeObjectFromBothSidesOfRelationshipWithKey(EORelationshipManipulation object,
String key)
Removes object from the receiver's relationship identified by key,
and also removes the receiver from objects's reciprocal relationship
if there is one. |
void |
removeObjectFromPropertyWithKey(Object eo,
String key)
Removes the object eo from the to-many relationship named
key without affecting inverse relationships. |
static boolean |
shouldUseStoredAccessors()
Returns true. |
NSDictionary |
snapshot()
Returns a dictionary whose keys are those of the receiver's attributes, to-one relationships, and to-many relationships, and whose values are the values of those properties, with EONullValue substituted for null. |
Object |
storedValueForKey(String key)
Returns the value for the property identified by key. |
void |
takeStoredValueForKey(Object value,
String key)
Sets the property identified by key to value. |
void |
takeValueForKey(Object value,
String key)
Sets the receiver's value for the property identified by key to value. |
void |
takeValueForKeyPath(Object value,
String keyPath)
Sets the receiver's property identified by keyPath to value. |
void |
takeValuesFromDictionary(NSDictionary dictionary)
Sets properties of the receiver with values from dictionary, using its
keys to identify the properties. |
void |
takeValuesFromDictionaryWithMapping(NSDictionary dictionary,
NSDictionary mapping)
Sets properties of the receiver with values from dictionary, using
its keys and mapping to identify the properties. |
NSArray |
toManyRelationshipKeys()
Returns the names of the receiver's to-many relationships. |
NSArray |
toOneRelationshipKeys()
Returns the names of the receiver's to-one relationships. |
String |
toString()
String representation of the object. |
void |
turnIntoFault(EOFaultHandler handler)
Converts the receiver into a fault, assigning handler as the object that stores its original state and later
converts the fault back into a normal object (typically by fetching data
from an external repository). |
void |
unableToSetNullForKey(String key)
Invoked from takeValueForKey when it's given a null value for a scalar
property (such as an int or a float). |
void |
updateFromSnapshot(NSDictionary snapshot)
Takes the values from snapshot, and sets the receiver's properties
to them. |
String |
userPresentableDescription()
Returns a short (no longer than 60 characters) description of an enterprise object based on its data by calling EOClassDescription's userPresentableDescriptionForObject method |
static boolean |
usesDeferredFaultCreation()
Conformance to EODeferredFaulting. |
void |
validateClientUpdate()
Validate whether object is in an consistent state after being updated from a client. |
void |
validateForDelete()
Confirms that the receiver can be deleted in its current state, throwing an NSValidation.ValidationException if it can't. |
void |
validateForInsert()
Confirms that the receiver can be inserted in its current state, throwing an NSValidation.ValidationException if it can't. |
void |
validateForSave()
Confirms that the receiver can be saved in its current state, throwing an NSValidation.ValidationException if it can't. |
void |
validateForUpdate()
Confirms that the receiver can be saved in its current state, throwing a NSValidation.ValidationException if it can't. |
Object |
validateTakeValueForKeyPath(Object value,
String keyPath)
Confirms that value is valid for the receiver's property named by keyPath,
and assigns the value to the property (if value is
different from the current value), or throws an
NSValidation.ValidationException if value isn't valid. |
Object |
validateValueForKey(Object value,
String key)
Validates a property indirectly by name. |
Object |
valueForKey(String key)
Returns the receiver's value for the property identified by key. |
Object |
valueForKeyPath(String keyPath)
Returns the value for the derived property identified by keyPath. |
NSDictionary |
valuesForKeys(NSArray keys)
Returns an NSDictionary containing the property values identified by each element in keys. |
NSDictionary |
valuesForKeysWithMapping(NSDictionary mapping)
Returns an NSDictionary containing the property values identified by each of the key-value pairs in mapping. |
void |
willChange()
Notifies any observers that the receiver's state is about to change, by sending each an objectWillChange message. |
void |
willRead()
Fills the receiver with values fetched from the database. |
Object |
willReadRelationship(Object object)
Enterprise object instances that use deferred faulting invoke this method before accessing a relationship to ensure that the relationship isn't a deferred fault. |
| Methods inherited from class java.lang.Object |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
public EOCustomObject(EOEditingContext editingContext,
EOClassDescription classDescription,
EOGlobalID gid)
public EOCustomObject()
| Method Detail |
public void addObjectToBothSidesOfRelationshipWithKey(EORelationshipManipulation object,
String key)
object as the destination for the receiver's relationship
identified by key, and also sets or adds the receiver for object's
reciprocal relationship if there is one. For a to-one relationship,
object is set using takeValueForKey. For a to-many relationship,
object is added using addObjectToPropertyWithKey.
This method also properly handles removing this and object from
their previous relationship as needed. For example, if an Employee
object belongs to the Research department, invoking this
method with the Maintenance department removes the Employee from
the Research department as well as setting the Employee's department
to Maintenance.addObjectToBothSidesOfRelationshipWithKey in interface EORelationshipManipulationobject - instance to be added to the destination relationshipkey - name of relationship(Object anObject, String key)
public void addObjectToPropertyWithKey(Object eo,
String key)
key the object eo
without setting inverse relationships. Attempts to invoke a method of the
form addToKey. If the receiver doesn't have such a method, this
method gets the property array using valueForKey and operates
directly on that (adds the object to the array).addObjectToPropertyWithKey in interface EORelationshipManipulationeo - the object to add to the relationshipkey - the name of the relationshippublic NSArray allPropertyKeys()
attributeKeys,
toOneRelationshipKeys, and toManyRelationshipKeys.allPropertyKeys in interface EOEnterpriseObjectpublic NSArray attributeKeys()
attributeKeys in the object's EOClassDescription and returns the
results. You might wish to override this method to add keys for
attributes not defined by the EOClassDescription. The access
layer's subclass of EOClassDescription, EOEntityClassDescription,
returns the names of attributes designated as class properties.attributeKeys in interface EOEnterpriseObjectpublic void awakeFromClientUpdate(EOEditingContext ec)
awakeFromClientUpdate in interface EOEnterpriseObjectec - the EOEditingContext of the enterprise object.public void awakeFromFetch(EOEditingContext ec)
ec. EOCustomObject's implementation
merely sends an awakeObjectFromFetch to the receiver's EOClassDescription.
Subclasses should invoke super's implementation before performing
their own initialization.awakeFromFetch in interface EOEnterpriseObjectec - An EOEditingContext object.public void awakeFromInsertion(EOEditingContext ec)
ec.
This is commonly used to assign default values or record the time
of insertion. EOCustomObject's implementation merely sends an
awakeObjectFromInsertion to the receiver's EOClassDescription.
Subclasses should invoke super's implementation before
performing their own initialization.awakeFromInsertion in interface EOEnterpriseObjectec - An EOEditingContext object.public static boolean canAccessFieldsDirectly()
false if the key-value
coding methods should never access the corresponding instance variable
directly on finding no accessor method for a property.valueForKey(String key),
takeValueForKey(Object value, String key)public NSDictionary changesFromSnapshot(NSDictionary snapshot)
snapshot, and whose values are the
uncommitted values. In both snapshot and the returned dictionary,
where a key represents a to-many relationship the corresponding value
is a NSArray containing two other NSArrays: the first is an array of
objects to be added to the relationship property, and the second is an
array of objects to be removed.changesFromSnapshot in interface EOEnterpriseObjectsnapshot - An NSDictionary whose keys are those of the receiver's
attributes.snapshotpublic EOClassDescription classDescription()
classDescriptionForClass.classDescription in interface EOEnterpriseObjectpublic EOClassDescription classDescriptionForDestinationKey(String detailKey)
detailKey. EOCustomObject's implementation sends
a classDescriptionForDestinationKey message to the
receiver's EOClassDescription.classDescriptionForDestinationKey in interface EOEnterpriseObjectdetailKey - Identifies relationship of the destination objects.public void clearFault()
null.
This method is rarely used directly. Rather, it's invoked by an EOFaultHandler during the process of firing the fault.clearFault in interface EOFaultingEOFaultHandlerpublic void clearProperties()
null.
EOEditingContext's use this method to break cyclic references among
objects when they're finalized. EOCustomObject's
implementation should be sufficient for all purposes. If the enterprise
object maintains references to other objects and these references are
not to-one or to-many keys, then you should probably subclass this
method ensure unused objects can be finalized.clearProperties in interface EOEnterpriseObjectpublic int deleteRuleForRelationshipKey(String relationshipKey)
relationshipKey when the receiver is deleted.
The delete rule is one of:
EOCustomObject's implementation of this method simply sends a
deleteRuleForRelationshipKey message to the receiver's EOClassDescription.
deleteRuleForRelationshipKey in interface EOEnterpriseObjectrelationshipKey - identifies the receiver's relationship.EOClassDescription.deleteRuleForRelationshipKey(String
relationshipKey)public EOEditingContext editingContext()
null if
none is set.editingContext in interface EOEnterpriseObjectpublic String entityName()
entityName message to the receiver's EOClassDescription.entityName in interface EOEnterpriseObjectpublic String eoDescription()
eoShallowDescription message (to avoid infinite
recursion through cyclical relationships).eoDescription in interface EOEnterpriseObjecteoShallowDescription(),
userPresentableDescription()public String eoShallowDescription()
eoDescription, but doesn't descend into relationships.
eoDescription invokes this method for relationship destinations to
avoid infinite recursion through cyclical relationships.
EOCustomObject's implementation simply returns a String containing
the receiver's class and entity names.eoShallowDescription in interface EOEnterpriseObjectpublic final boolean equals(Object other)
equals in class Objectother - input object against which this object is comparedtrue if the objects are equal; false otherwiseObject.equals(java.lang.Object),
EOGlobalID.equals(java.lang.Object)
protected void excludeObjectFromPropertyWithKey(Object eo,
String key)
eo from the to-many relationship named
key without affecting inverse relationships, by directly
modifying the property storing the to-many relationship. This method
can be used from inside of methods of the form removeFromKey.
The method throws an IllegalArgumentException when attempting to remove
an object not contained in the relationship array.eo - the object to remove from the relationship.key - the name of the relationshipIllegalArgumentException - if eo is not in relationship keypublic EOFaultHandler faultHandler()
faultHandler in interface EOFaultingnull.public Object handleQueryWithUnboundKey(String key)
valueForKey when it finds no property binding
for key. The default implementation
throws an NSKeyValueCoding.UnknownKeyException,
with the target object(TargetObjectUserInfoKey) and
key(UnknownUserInfokey)
in the user info. An NSKeyValueCoding.ErrorHandling class can override this
method to handle the query in some other way. The method can return a value,
in which case that value is returned by the corresponding
valueForKey invocation.handleQueryWithUnboundKey in interface NSKeyValueCoding.ErrorHandlingkey - the key that was not foundvalueForKey invocationvalueForKey(String key),
NSKeyValueCoding.DefaultImplementation,
NSKeyValueCoding.UnknownKeyException.TargetObjectUserInfoKey,
NSKeyValueCoding.UnknownKeyException.UnknownUserInfoKey
public void handleTakeValueForUnboundKey(Object value,
String key)
takeValueForKey when it finds no property binding
for key. The default implementation
throws an NSKeyValueCoding.UnknownKeyException, with the
target object(TargetObjectUserInfoKey) and key(UnknownUserInfoKey)
in the user info.handleTakeValueForUnboundKey in interface NSKeyValueCoding.ErrorHandlingvalue - the value that was attempted to be set for keykey - they key whose property binding wasn't found in takeValueForKeytakeValueForKey(Object value, String key),
NSKeyValueCoding.DefaultImplementation,
NSKeyValueCoding.UnknownKeyException.TargetObjectUserInfoKey,
NSKeyValueCoding.UnknownKeyException.UnknownUserInfoKeypublic int hashCode()
hashCode in class ObjectObject.hashCode(),
equals(java.lang.Object)
protected void includeObjectIntoPropertyWithKey(Object eo,
String key)
key the object eo
without affecting inverse relationships, by directly modifying the property
storing the to-many relationship. This method can be used from inside of
methods of the form addToKey.eo - the object to add to the relationshipkey - the name of the relationshippublic String inverseForRelationshipKey(String relationshipKey)
relationshipKey, or null if there
isn't one. With the access layer's EOEntity and EORelationship,
for example, reciprocality is determined by the join attributes of
the two EORelationships. EOCustomObject's implementation simply
sends an inverseForRelationshipKey
message to the receiver's EOClassDescription.inverseForRelationshipKey in interface EOEnterpriseObjectrelationshipKey - the String name of the relationship
public Object invokeRemoteMethod(String methodName,
Class[] argumentTypes,
Object[] arguments)
invokeRemoteMethod in interface EOEnterpriseObjectmethodName - the name of the method to be invokedargumentTypes - Array containing the types of argumentsarguments - Array containing the arguments.public boolean isFault()
isFault in interface EOFaultingpublic boolean isToManyKey(String key)
true if the receiver has a to-many relationship identified
by key, false otherwise. EOCustomObject's implementation of this
method simply checks its toManyRelationshipKeys array for key.isToManyKey in interface EOEnterpriseObjectkey - Identifies the to-many relationship of the receiver.public final Object opaqueState()
EOEnterpriseObjectopaqueState in interface EOEnterpriseObjectcom.webobjects.eocontrol.EOEnterpriseObjectpublic boolean ownsDestinationObjectsForRelationshipKey(String relationshipKey)
true if the receiver has a relationship identified by key
that owns its destination, and false otherwise. If an object owns the
destination for a relationship, then when that destination object
is removed from the relationship, it's automatically deleted.
Ownership of a relationship thus contrasts with a delete rule, in
that the first applies when the destination is removed and the
second applies when the source is deleted. EOCustomObject's
implementation of this method simply sends an
ownsDestinationObjectsForRelationshipKey message to the receiver's
EOClassDescription.ownsDestinationObjectsForRelationshipKey in interface EOEnterpriseObjectrelationshipKey - Identifies the relationship of the receiver.public void prepareValuesForClient()
prepareValuesForClient in interface EOEnterpriseObjectpublic void propagateDeleteWithEditingContext(EOEditingContext ec)
propagateDeleteForObject message
to the receiver's EOClassDescription.propagateDeleteWithEditingContext in interface EOEnterpriseObjectec - the EOEditingContext containing the objectsEOClassDescription.deleteRuleForRelationshipKey(String
relationshipKey)
protected Object readResolve()
throws ObjectStreamException
public void reapplyChangesFromDictionary(NSDictionary changes)
takeValuesFromDictionary, but the changes dictionary can
contain arrays for to-many
relationships. A key represents a to-many relationship, the
dictionary's value is an NSArray containing two other NSArrays: the first
is an array of objects to be added to the relationship property, and the
second is an array of objects to be removed. EOCustomObject's
implementation should be sufficient for all purposes; you shouldn't have
to override this method.reapplyChangesFromDictionary in interface EOEnterpriseObjectchanges - an NSDictionary that contain arrays for to-many
relationships
public void removeObjectFromBothSidesOfRelationshipWithKey(EORelationshipManipulation object,
String key)
object from the receiver's relationship identified by key,
and also removes the receiver from objects's reciprocal relationship
if there is one. For a to-one relationship, object is removed using
takeValueForKey with null as the value. For a to-many relationship,
object is removed using removeObjectFromPropertyWithKey.removeObjectFromBothSidesOfRelationshipWithKey in interface EORelationshipManipulationobject - object to be removed from the receiver's relationshipkey - name of the relationship.(Object anObject, String key)
public void removeObjectFromPropertyWithKey(Object eo,
String key)
eo from the to-many relationship named
key without affecting inverse relationships. Attempts to
invoke a method of the form removeFromKey. If the receiver
doesn't have such a method, this method gets the property array using
valueForKey and removes the object if present. The method
throws an IllegalArgumentException when attempting to remove an object
not contained in the relationship array.removeObjectFromPropertyWithKey in interface EORelationshipManipulationeo - the object to remove from the relationship.key - the name of the relationshipIllegalArgumentException - if eo is not in relationship keypublic static boolean shouldUseStoredAccessors()
false if the stored
value methods (storedValueForKey and takeStoredValueForKey) should
not use private accessor methods in preference to public accessors.
Returning false causes the stored value methods to use the same
accessor method instance variable search order as the corresponding
basic key-value coding methods (valueForKey and takeValueForKey).
This method doesn't have to be implemented if the default stored
value search order is correct for the objects.public NSDictionary snapshot()
null. For to-many relationships, the dictionary
contains shallow copies of the arrays. EOCustomObject's implementation
should be sufficient for all purposes; you shouldn't
have to override this method.snapshot in interface EOEnterpriseObjectpublic Object storedValueForKey(String key)
key. This method is used when
the value is retrieved for storage in an object store (generally,
this is ultimately in a database) or for inclusion in a
snapshot. The default implementation provided by EOCustomObject is
similar to the implementation of valueForKey, but it resolves key with
a different method instance variable search order:
key (a method
preceded by an underbar). For example, with a key of "lastName",
storedValueForKey looks for a method named _getLastName or _lastName.key and returns its value directly. For example,
with a key of "lastName", storedValueForKey looks for an instance
variable named _lastName or lastName.storedValueForKey searches for a public accessor method based on key.
For the key "lastName", this would be getLastName or lastName.key is unknown, storedValueForKey calls
handleTakeValueForUnboundKey.storedValueForKey in interface EOKeyValueCodingkey - a property of receiver.
public void takeStoredValueForKey(Object value,
String key)
key to value. This method is used
to initialize the receiver with values from an object store
(generally, this is ultimately from a database) or to restore a value
from a snapshot. The default implementation provided by EOCustomObject
is similar to the implementation of takeValueForKey, but it resolves key
with a different method instance variable search order:
key (a method
preceded by an underbar). For example, with a key of "lastName",
takeStoredValueForKey looks for a method named _setLastName.
key and sets its value directly. For example, with a key of
"lastName", takeStoredValueForKey looks for an instance variable
named _lastName or lastName.takeStoredValueForKey searches for a public accessor method based on key.
For the key "lastName", this would be setLastName.key is unknown, takeStoredValueForKey calls
handleTakeValueForUnboundKey.
This different search order allows an object to bypass processing
that is performed before setting a value through public API. However,
if it is always wanted to use the search order in takeValueForKey, you can
implement the static method shouldUseStoredAccessors to return false. And
as with valueForKey, you can prevent direct access of an instance
variable with the static method canAccessFieldsDirectly.
takeStoredValueForKey in interface EOKeyValueCodingvalue - the property identified by key is set to this.key - a property of receiver.shouldUseStoredAccessors(),
canAccessFieldsDirectly()
public void takeValueForKey(Object value,
String key)
key to value.
The default implementation provided by NSKeyValueCoding.DefaultImplementation
works as follows:
setKey,
and invokes it if there is one._setKey, and invokes it
if there is one.canAccessFieldsDirectly returns true, searches for an instance variable
based on key and sets its value directly. For the key
"lastName", this would be _lastName or lastName. handleTakeValueForUnboundKey
if the object implements NSKeyValueCoding.ErrorHandling or throws
NSKeyValueCoding.UnknownKeyException if the object doesn't.NSKeyValueCoding
provided by the Foundation package should always be used. The
default implementations
have significant performance optimizations. To benefit from them,
implement NSKeyValueCoding on a custom class as shown above by using
the methods in NSKeyValueCoding.DefaultImplementation; or if
the class inherits from an WebObjects class that implements
NSKeyValueCoding, the inherited implementation is not to be overridden.
Using a custom implementation incurs significant
performance penalties.takeValueForKey in interface NSKeyValueCodingvalue - The receiver's value for the property key is set to this.key - Identifies the property of the receiver.NSKeyValueCoding.UnknownKeyException - if the object
doesn't implements NSKeyValueCoding.ErrorHandling.
public void takeValueForKeyPath(Object value,
String keyPath)
keyPath to value. A key path
as the form relationship.property (with one or more relationships).takeValueForKeyPath in interface NSKeyValueCodingAdditionsvalue - the receiver's property identified by keyPath is set to thiskeyPath - a property of an objectpublic void takeValuesFromDictionary(NSDictionary dictionary)
dictionary, using its
keys to identify the properties. EOCustomObject's implementation invokes
takeValueForKey for each key-value pair, substituting null for
EONullValues in aDictionary.takeValuesFromDictionary in interface EOKeyValueCodingAdditionsdictionary - values from this are taken to set properties of the receivertakeValueForKey(Object value, String key)
public void takeValuesFromDictionaryWithMapping(NSDictionary dictionary,
NSDictionary mapping)
dictionary, using
its keys and mapping to identify the properties. mapping
associates the keys of dictionary, which are arbitrary external names
for the properties to be set, with the internal or EOModel names for those properties.
If a key in dictionary does not have a corresponding entry in mapping,
the external key (i.e., the key from dictionary) is used.
Invokes takeValueForKey for each key-value pair of dictionary,
substituting null for NSKeyValueCoding.NullValue values in the dictionary.
takeValuesFromDictionaryWithMapping in interface EOKeyValueCodingAdditionsdictionary - the key-value pairs to be setmapping - the dictionary that maps arbitrary external names to
internal property namestakeValueForKey(Object value, String key)public NSArray toManyRelationshipKeys()
toManyRelationshipKeys() in the object's
EOClassDescription and returns the results. You might wish to override
this method to add keys for relationships not defined by the
EOClassDescription, but it's rarely necessary: The access layer's
subclass of EOClassDescription, EOEntityClassDescription, returns the
names of to-many relationships designated as class properties.toManyRelationshipKeys in interface EOEnterpriseObjecttoOneRelationshipKeys(),
attributeKeys()public NSArray toOneRelationshipKeys()
toOneRelationshipKeys in the object's
EOClassDescription and returns the results. You might wish to override this
method to add keys for relationships not defined by the EOClassDescription,
but it's rarely necessary: The access layer's subclass of EOClassDescription,
EOEntityClassDescription, returns the names of to-one relationships
designated as class properties.toOneRelationshipKeys in interface EOEnterpriseObjectattributeKeys(),
toOneRelationshipKeys()public String toString()
eoDescription.toString in class ObjecteoDescriptionpublic void turnIntoFault(EOFaultHandler handler)
handler as the object that stores its original state and later
converts the fault back into a normal object (typically by fetching data
from an external repository). The receiver becomes the owner of
handler; it shouldn't be assigned to another object.turnIntoFault in interface EOFaultinghandler - an EOFaultHandler that stores receiver's original state and later
converts the fault back into a normal objectpublic void unableToSetNullForKey(String key)
takeValueForKey when it's given a null value for a scalar
property (such as an int or a float). The default implementation
throws an IllegalArgumentException. You might want to implement the method
(or override the inherited implementation) to handle the request in some
other way, such as by substituting zero or a sentinel value and invoking
takeValueForKey again.unableToSetNullForKey in interface NSKeyValueCoding.ErrorHandlingkey - a property of the receiver.IllegalArgumentException - when it's given a null value
for a scalar property.NSKeyValueCoding.DefaultImplementationpublic void updateFromSnapshot(NSDictionary snapshot)
snapshot, and sets the receiver's properties
to them. EOCustomObject's implementation sets each one using
takeStoredValueForKey. In the process, EONullValues are
converted to null, and array values are set as shallow mutable copies.updateFromSnapshot in interface EOEnterpriseObjectsnapshot - the receiver's properties are set to the values
taken from thisEOEnterpriseObject.snapshot()public String userPresentableDescription()
userPresentableDescriptionForObject methoduserPresentableDescription in interface EOEnterpriseObjectpublic static boolean usesDeferredFaultCreation()
public void validateClientUpdate()
throws NSValidation.ValidationException
validateClientUpdate in interface EOValidationNSValidation.ValidationException -
public void validateForDelete()
throws NSValidation.ValidationException
NSValidation.ValidationException if it can't.
For example, an object can't be deleted if it has a relationship
with a delete rule of EOClassDescription.DeleteRuleDeny and that
relationship has a destination object.
EOCustomObject's implementation sends the receiver's EOClassDescription
a message (which performs basic checking based on the presence or absence
of values). Subclasses should invoke super's implementation before
performing their own validation, and should combine any
Exception thrown by super's implementation with their own.
validateForDelete in interface EOValidationNSValidation.ValidationException - if the receiver can't be
deleted in its current state.EOEnterpriseObject.propagateDeleteWithEditingContext(
EOEditingContext ec)
public void validateForInsert()
throws NSValidation.ValidationException
NSValidation.ValidationException if it can't. EOCustomObject's
implementation simply invokes validateForSave.
The method validateForSave is the generic validation method for
when an object is written to the external store. If an object performs
validation that isn't specific to insertion, it should go in
validateForSave.
validateForInsert in interface EOValidationNSValidation.ValidationException - if the receiver can't be
inserted in its current state.validateForSave()
public void validateForSave()
throws NSValidation.ValidationException
NSValidation.ValidationException if it can't. EOCustomObject's
implementation sends the receiver's EOClassDescription a
validateObjectForSave message, then iterates through all of the
receiver's properties. If this results in more than one exception, the
Exception returned contains the additional ones in its userInfo dictionary
under NSValidation.ValidationException.AdditionalExceptionsKey.
Subclasses should invoke super's implementation before performing their
own validation, and should combine any Exception thrown by super's
implementation with their own.validateForSave in interface EOValidationNSValidation.ValidationException - if the receiver can't be
saved in its current state.NSValidation.ValidationException
public void validateForUpdate()
throws NSValidation.ValidationException
NSValidation.ValidationException if it can't. EOCustomObject's implementation
simply invokes validateForSave.
The method validateForSave is the generic validation method for when
an object is written to the external store. If an object performs
validation that isn't specific to updating, it should go in
validateForSave.
validateForUpdate in interface EOValidationNSValidation.ValidationException - if the receiver can't be
saved in its current state.validateForSave()
public Object validateTakeValueForKeyPath(Object value,
String keyPath)
throws NSValidation.ValidationException
value is valid for the receiver's property named by keyPath,
and assigns the value to the property (if value is
different from the current value), or throws an
NSValidation.ValidationException if value isn't valid.A key path has the form relationship.property (with one or more relationships); for example "movieRole.roleName" or "movieRole.talent.lastName".
validateTakeValueForKeyPath in interface NSValidationvalue - the value to validatekeyPath - the keypath that will contain the valueNSValidation.ValidationException - if value isn't legalNSKeyValueCoding.valueForKey(String key)
public Object validateValueForKey(Object value,
String key)
throws NSValidation.ValidationException
It searches for a method of
the form validateKey and invokes it if it exists. These are the methods that your
custom classes can implement to validate individual properties, such as validateAge
to check that the value the user entered is within acceptable limits.
The validateAge method should raise an EOValidation.Exception if it finds
an unacceptable value.
validateValueForKey in interface NSValidationthe - value to validatekey - the key corresponding to the object property that will hold the valueNSValidation.ValidationException - if value isn't legalNSKeyValueCoding.valueForKey(String key)public Object valueForKey(String key)
key.
The default implementation provided by NSKeyValueCoding.DefaultImplementation
works as follows:
key. For example,
with a key of "lastName", the method looks for a method named
getLastName or lastName.key (a method preceded by an underbar).
For example, with a key of "lastName", the method
looks for a method named _getLastName or _lastNamecanAccessFieldsDirectly returns true, the method searches for an
instance variable based on key and returns its value directly. For the
key "lastName", this would be _lastName or lastName.handleQueryWithUnboundKey (defined in
NSKeyValueCoding.ErrorHandling).NSKeyValueCoding
provided by the Foundation package should always be used. The default
implementations have significant performance optimizations.
To benefit from them, implement NSKeyValueCoding on a custom
class as shown above by using the methods in
NSKeyValueCoding.DefaultImplementation; or if
the class inherits from an WebObjects class that implements
NSKeyValueCoding, the inherited implementation is not to be overridden.
Using a custom implementation incurs significant performance penalties.valueForKey in interface NSKeyValueCodingkey - a property of the receiverpublic Object valueForKeyPath(String keyPath)
keyPath.
A key path has the form relationship.property (with one or more
relationships). For example "movieRole.roleName" or
"movieRole.talent.lastName". The default implementation of this
method (provided by NSKeyValueCodingAdditions.DefaultImplementation)
gets the destination object for each relationship using valueForKey,
and returns the result of a valueForKey message to the final object.valueForKeyPath in interface NSKeyValueCodingAdditionskeyPath - Identifies the derived property for the receiver.public NSDictionary valuesForKeys(NSArray keys)
keys. EOCustomObject's implementation invokes valueForKey
for each key in keys, substituting EONullValues into the NSDictionary
for returned nulls.valuesForKeys in interface EOKeyValueCodingAdditionskeys - an NSArray of property names in the receiverpublic NSDictionary valuesForKeysWithMapping(NSDictionary mapping)
mapping. The keys
of the mapping dictionary represent arbitrary external names
for properties of an Enterprise Object and the values are the internal or
EOModel names for these properties. Invokes valueForKey for
each value in mapping, substituting NSKeyValueCoding.NullValue
in the returned dictionary for returned nulls.valuesForKeysWithMapping in interface EOKeyValueCodingAdditionsmapping - the dictionary that maps arbitrary external names to
internal property namesmappingpublic void willChange()
objectWillChange message. A subclass should not
override this method, but should invoke it prior to altering the subclass's
state, most typically in "set" methods such as the following:
public void setRoleName(String value){ willChange(); roleName =value; }
willChange in interface EOEnterpriseObjectEOObserverCenterpublic void willRead()
willRead prior to any attempt to access the object's state, most typically
in "get" methods such as the following:
This methods locks the parent EOObjectStore of the EOEditingContext this EO is contained within for the duration of this method.public String roleName(){ willRead(); return roleName; }
willRead in interface EOFaultingpublic Object willReadRelationship(Object object)
willReadRelationship in interface EODeferredFaultingobject - the object that is checked
|
Last updated Fri Feb 21 13:15:00 PST 2003. | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||