• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
solved: EOCustomObject.storedValueForKey?!?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

solved: EOCustomObject.storedValueForKey?!?


  • Subject: solved: EOCustomObject.storedValueForKey?!?
  • From: OC <email@hidden>
  • Date: Mon, 12 Jan 2015 07:37:07 +0100

Probably found the culprit.

I have added the appropriate attribute programmatically to the entity; and it seems that it was NOT added -- and therefore storedValueForKey did not find it. Makes sense. Oh, sigh.

All the best,
OC


On 12. 1. 2015, at 6:59, OC <email@hidden> wrote:

> Hello there,
>
> I must be missing something very obvious now.
>
> My application (rather complex) lately started sometimes to go stack overflow. I have found the culprit is a code where I call storedValueForKey in my own ERXGenericRecord subclass. The stack goes like this:
>
> (i) handleQueryWithUnboundKey (which my EO overrides) get called -- I do some internal checking there, and eventually call my own installed accessor, essentially, 'this.foo()'. That works well.
>
> (ii) the 'foo' accessor contains just "this.storedValueForKey('foo')", and it indeed gets called all right.
>
> (iii) now, I thought it would try to get the value of 'foo' from snapshot, or fetch it from the database, or whatever. I was wrong -- it goes again to handleQueryWithUnboundKey, GOTO (i), stack overflow.
>
> Here's the important part of backtrack:
>
> ===
> ...
> 	at cz.ocs.model.OCSEnterpriseObject.handleQueryWithUnboundKey(OCSEnterpriseObject.groovy:1173)
> 	at com.webobjects.foundation.NSKeyValueCoding$Utility.handleQueryWithUnboundKey(NSKeyValueCoding.java:494)
> 	at com.webobjects.foundation.NSKeyValueCoding$_KeyBinding.valueInObject(NSKeyValueCoding.java:894)
> 	at com.webobjects.eocontrol.EOCustomObject.storedValueForKey(EOCustomObject.java:1634)
> 	at com.webobjects.eocontrol.EOKeyValueCoding$storedValueForKey.call(Unknown Source)
> 	at cz.ocs.model.OCSEOUtilities$FOO_ACCESSOR(OCSEOUtilities.groovy:60)
> ...
> 	at cz.ocs.model.OCSEnterpriseObject.handleQueryWithUnboundKey(OCSEnterpriseObject.groovy:1173)
> ...
> ===
>
> It even is documented thus, EOCustomObject.storedValueForKey tries first _foo and foo, then... yadda yadda ... and if all fails, it is documented to go handleTakeValueForUnboundKey (which seems to be a typo in documentation, meaning handleQueryWithUnboundKey instead):
>
> ===
> ...
> public Object storedValueForKey(String key)
> Returns the value for the property identified by 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 resolveskey with a different method instance variable search order:
> 		• Searches for a private accessor method based on key (a method preceded by an underbar). For example, with a key of "lastName", storedValueForKey looks for a method named _getLastName or _lastName.
> 		• If a private accessor isn't found, searches for an instance variable based on key and returns its value directly. For example, with a key of "lastName",storedValueForKey looks for an instance variable named _lastName or lastName.
> 		• If neither a private accessor or an instance variable is found, storedValueForKey searches for a public accessor method based on key. For the key "lastName", this would be getLastName or lastName.
> 		• If key is unknown, storedValueForKey calls handleTakeValueForUnboundKey.
> ...
> ===
>
> But darn, _where_ then is the specific EOF code to get the attribute value from snapshot/from database? So far I thought EOCustomObject overrides the generic storedValueForKey appropriately (so that instead of trying _foo, _getFoo, foo and getFoo it reads from snapshot/database). It does not seem to, though?!?
>
> What am I missing here?!?
>
> Thanks a lot,
> OC
>


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden


  • Follow-Ups:
    • Re: solved: EOCustomObject.storedValueForKey?!?
      • From: Chuck Hill <email@hidden>
References: 
 >EOCustomObject.storedValueForKey?!? (From: OC <email@hidden>)

  • Prev by Date: EOCustomObject.storedValueForKey?!?
  • Next by Date: Re: solved: EOCustomObject.storedValueForKey?!?
  • Previous by thread: EOCustomObject.storedValueForKey?!?
  • Next by thread: Re: solved: EOCustomObject.storedValueForKey?!?
  • Index(es):
    • Date
    • Thread