I had the same problem with a User object that extends
MetaMegaProtoUser[User], which has the MetaMapper trait as well.

The afterSave you wish to override is defined in the trait
net.liftweb.mapper.MetaMapper as def afterSave: List[(A) => Any] =
Nil.

You can add an operation to afterSave like this:

class X extends LongKeyedMapper[X] with IdPK {
      def getSingleton = X

      def myAfterSaveOperation(obj: X): Unit = {
        println("hi!")
      }

      def myOtherAfterSaveOperation(obj: X): Unit = {
        println("hi again!")
      }

      override def afterSave = myAfterSaveOperation _ ::
myOtherAfterSaveOperation _ :: Nil
      /* Equal to: override def afterSave = List(myAfterSaveOperation
_, myOtherAfterSaveOperation _) */
      ...
}
object X extends X with LongKeyedMetaMapper[X] {
     ...
}

Here the underscore after myAfterSaveOperation makes it a partially
applied function.
This is similar to the way validations are added to MetaMapper
classes, as decribed in listing 6.38 in the Lift book (http://
groups.google.com/group/the-lift-book).

MetaMapper does not implement LifecycleCallbacks, that trait is indeed
used in MappedFields.

--

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