On Mon, Nov 16, 2009 at 2:12 PM, Kris Nuttycombe
<kris.nuttyco...@gmail.com>wrote:

>
> Hi, all,
>
> I was just informed that my changes broke MetaMegaProtoUser
> interaction. I've reverted the commit until I can get that sorted out.
>

How was it broken?


>
> Sorry,
>
> Kris
>
> On Mon, Nov 16, 2009 at 11:27 AM, Kris Nuttycombe
> <kris.nuttyco...@gmail.com> wrote:
> > Hi, all,
> >
> > I have committed a number of enhancements to Loc & LocParam which
> > involves a number of breaking changes. The changes and their rationale
> > is listed below. Unless you have created your own subclasses of Loc or
> > LocParam, these changes should not have any repercussions for you. If
> > the effect of any of these changes on your particular codebase are
> > excessively disruptive, please contact me and I will work with you to
> > resolve the issue.
> >
> > Breaking Changes:
> >
> > 1) LocParam
> >
> > LocParam has been made a sealed trait to facilitate pattern matching
> > within the Lift codebase and has had a contravariant type parameter
> > added to its type to facilitate typesafe interactions with Loc[T]. The
> > new trait is hence LocParam[-T]. As LocParam is now a sealed trait, I
> > have added an extension point for user-specified LocParam subtypes as
> > UserLocParam[-T] extends LocParam[T]. Since the new type parameter is
> > contravariant, LocParam subclasses that are applicable for any Loc[T]
> > have the type LocParam[Any], and a type alias AnyLocParam has been
> > added for this type.
> >
> > The Loc.checkProtected method now enforces type consistency between
> > the evaluated Link[T] and the list of LocParam[T] which are used to
> > evaluate whether the link is accessible given the specified
> > parameters.
> >
> > 2) Renames
> >
> > Previously, the "Param" suffix was used for two unrelated purposes
> > within Loc: first, to refer to the type parameter of the Loc, and
> > secondly for the LocParam configuration. This overloading made the
> > code and the API somewhat difficult to read, so the first usage has
> > been removed resulting in the following renames:
> >
> > ParamType => T
> > NullLocParams => //removed, Unit is sufficient!
> > Loc.defaultParams => Loc.defaultValue
> > Loc.forceParam => Loc.overrideValue
> > Loc.foundParam => Loc.requestValue
> > Loc.additionalKidParams => Loc.childValues
> >
> > After this change, all instances of the "param" name within Loc should
> > refer to something having to do with LocParam instances.
> >
> > Non-Breaking Additions:
> >
> > case class IfValue[T](test: Box[T] => Boolean, failMsg: FailMsg)
> > extends LocParam[T]
> > case class UnlessValue[T](test: Box[T] => Boolean, failMsg: FailMsg)
> > extends LocParam[T]
> > case class TestValueAccess[T](func: Box[T] => Box[LiftResponse])
> > extends LocParam[T]
> >
> > If you are using a non-Unit typed Loc, you can use these LocParam
> > instances to enforce access rules at the value level.
> >
> > case class ValueTemplate[T](template: Box[T] => NodeSeq) extends
> > LocParam[T] //per-value template selection
> >
> > DataLoc[T] subclass of Loc was added to facilitate the use of the new
> > more typeful LocParam subtypes.
> >
> > A few changes to Link:
> >
> > Since Link.createLink creates a Box[Text] (and not a clickable link) a
> > couple of methods were added to create the intermediate, unboxed
> > values in order that subclasses can more easily manipulate the resulting
> path:
> >
> > Link.pathList(value: T): List[String] // added to facilitate creation
> > of value-aware paths by subclasses.
> > Link.createPath(value: T): String //creates the String representation
> > of the path that is subsequently turned into XML and boxed by
> > Link.createLink
> >
> > Again, please let me know if any of these changes cause you headaches!
> > My hope is that much of the modified functionality has not been used
> > by very many people yet and that as a result it's a good time to make
> > these changes before typeful Locs get too widely used to make breaking
> > changes.
> >
> > Thanks,
> >
> > Kris
> >
>
> >
>


-- 
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Surf the harmonics

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to