[TransWarp] Re: Transaction-Handling in DataModel and default values at creation time ...

Phillip J. Eby pje at telecommunity.com
Fri May 17 08:11:25 EDT 2002


At 02:08 PM 5/17/02 +0200, Ulrich Eck wrote:

>when adding types to records (setType) the record is not registered in the 
>transation.

It's up to the RecordType implementation to do this, if it's 
appropriate.  Typically, upon setting a type, it's necessary to change an 
existing field, which will of course automatically effect registration.  In 
LDAP, when you change types you typically change the 'objectclass' field, 
so that takes care of it.  Just use the record's app-side interface rather 
than its service-side interface.  That is, use 
record['objectclass']=[whatever] rather than record.loadDefaults() or 
record.loadData().


>in _setTypeFor i initially used record.loadDefaults + record.updateTypeMap
>to write the default values into the record .. (this may make sense when
>using DataModel with SQL+Schema, where default values are in DB.
>For the LDAPModel this does not really make sense, because there is no
>default-value definiton possible for schemas.)
>
>The question is, which attribute need to be set to
>which default-value ... the attribute-names can be taken from loadAttrs
>of RecordType or from the Schema-Definition. but if i set them all to
>e.g. [] the feature.defaultValue of an Element's feature will never be
>used. should i set the attributes to [] as default at all,
>or should basically a feature use _fData.setdefault(key,feature.defaultValue)
>to access the values ???

The DataModel really needs to supply default values, as they are an 
implementation-level aspect.  If you think about this for a bit, with 
regard to association features (as opposed to value features), you'll 
realize why.

In the case of LDAP, this just means that your RecordType implementations 
need some support for default values as part of their metadata.




More information about the PEAK mailing list