Hi, all,

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

Sorry,

Kris

On Mon, Nov 16, 2009 at 11:27 AM, Kris Nuttycombe
<[email protected]> 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
>

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

Reply via email to