Hey all,

So as a result of an infelicity in the way records are initialized that tripped 
up Tim a week or two ago, I'm planning on doing some cleanup to lift-record. It 
is a breaking change, and it was noted that it'd be good to get opinions on 
this, so here we are!

The original problem was that if you used "new MyRecord" then you'd get a 
record that was basically functional but some of the extended metadata (notably 
field.name) would not be initialized correctly. This is because the correct way 
to create a record was MyRecordMeta.createRecord.

I fixed it so that new MyRecord is equivalent to MyRecordMeta.createRecord, but 
Marius pointed out there was more cleaning to do.

Here are the changes:
 - I made the createRecord method on MetaRecord abstract, so that MyRecordMeta 
must now implement it. If you are porting over old code, then just do:
     def createRecord = new MyRecord
   This change is so that record creation must be explicitly specified in case 
it is different from new MyRecord (the default implementation)

 - MetaRecord.fromJSON(inst, json) has been renamed to setFieldsFromJSON(inst, 
json)
 - a new method MetaRecord.setFieldsFromReq(inst, req) has been created to 
parallel the new name of fromJSON
 - MetaRecord.createRecord(json) has been renamed to fromJSON(json)
 - Record.fromJSON has been renamed to setFieldsFromJSON
 - Record.setFieldsFromReq has been added -- they just call the meta methods of 
the same name.

These changes at the end make it so that fromSomething(something) are 
consistently factory methods that create records from some source (JSON or 
Req), and that setFieldsFromSomething(inst, something) is consistently there 
for setting the fields from the source.

Let me know what you think.

-Ross


-- 
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en.

Reply via email to