On Thursday, July 30, 2009, David Pollak <feeder.of.the.be...@gmail.com> wrote: > > > On Wed, Jul 29, 2009 at 4:21 PM, fbettag <fr...@bett.ag> wrote: > > > Btw. the docs for KeyedMapper don't work.. > http://scala-tools.org/scaladocs/liftweb/1.0/net/liftweb/mapper/KeyedMapper.html > when i click on KeyType or OwnerType it gives me a 404.. > This is a limitation of vscaladoc... sorry. > > > > On 30 Jul., 00:55, David Pollak <feeder.of.the.be...@gmail.com> wrote: >> It's not pretty, but: >> >> trait MyLogger[A <: KeyedMapper[K, A], K] extends KeyedMetaMapper[K,A] { >> self: A with MetaMapper[A] with KeyedMapper[K, A] => >> >> override def afterSave = doSomething _ :: super.afterSave >> >> private def doSomething(in: A) { >> println("Got "+in) >> } >> >> >> >> } >> On Wed, Jul 29, 2009 at 3:35 PM, fbettag <fr...@bett.ag> wrote: >> >> > Hm. i changed it to this: >> > trait Stamped[OwnerType <: Mapper[OwnerType] with IdPK] { >> > self: MetaMapper[OwnerType] => >> >> > private val thisTyped = this.asInstanceOf[MapperType] >> >> > override def afterSave: List[Any] = { >> > createActionLog("create", this.getClass.toString, >> > thisTyped.id) >> > return List(None) >> > } >> >> > def afterUpdate: List[Any] = { >> > createActionLog("update", this.getClass.toString, >> > thisTyped.id) >> > return List(None) >> > } >> >> > def beforeDelete: List[Any] = { >> > createActionLog("delete", this.getClass.toString, >> > thisTyped.id) >> > return List(None) >> > } >> >> > private def createActionLog(action: String, klass: String, obj: >> > Long) >> > { >> > val log = new ActionLog >> > log.action(action).klass(klass).record(obj).save >> > } >> >> > } >> >> > and i extend the object now and not the class. still i get these: >> >> > src/main/scala/ag/bett/lift/cms/lib/Stamped.scala:12: error: method >> > afterSave overrides nothing >> > override def afterSave: List[Any] = { >> > ^ >> > method afterSave in trait Stamped of type => List[Any] needs >> > `override' modifier >> > object Content extends Content with LongKeyedMetaMapper[Content] with >> > Stamped[Content] { >> > ^ >> >> > This is voodoo again :( >> >> > On 29 Jul., 22:55, David Pollak <feeder.of.the.be...@gmail.com> wrote: >> > > trait Foo[A <: Mapper[A]] { >> > > self: MetaMapper[A] => >> >> > > } >> > > On Wed, Jul 29, 2009 at 1:38 PM, fbettag <fr...@bett.ag> wrote: >> >> > > > Yes thanks, it gives me an idea of the issue which i now see. >> > > > Could you provide a very simple example on how you would make the Meta- >> > > > Mixin? >> > > > That would be very good >> >> > > > best regards >> >> > > > On 29 Jul., 21:55, David Pollak <feeder.of.the.be...@gmail.com> wrote: >> > > > > On Tue, Jul 28, 2009 at 5:12 PM, fbettag <fr...@bett.ag> wrote: >> >> > > > > > So far it looks like this: >> >> > > > > > trait Stamped[OwnerType <: Stamped[OwnerType] with LongKeyedMapper >> > > > > > [OwnerType] with IdPK] { >> > > > > > this: OwnerType => >> >> > > > > > private val thisTyped = this.asInstanceOf[MapperType] >> >> > > > > > override def afterSave { >> > > > > > createActionLog("create", this.getClass.toString, >> > > > this.id) >> > > > > > } >> >> > > > > There's no afterSave method on Mapper... that method is on >> > MetaMapper. >> >> > > > > You need to split your trait into two pieces... one that will be >> > mixed >> > > -- > Lift, the simply functional web framework http://liftweb.net > Beginning Scala http://www.apress.com/book/view/1430219890 > Follow me: http://twitter.com/dpp > Git some: http://github.com/dpp > > > >
--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to liftweb@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 -~----------~----~----~----~------~----~------~--~---