Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
base fork: Fashionbase/framework
...
head fork: lift/framework
Checking mergeability… Don’t worry, you can still create the pull request.
This comparison is big! We’re only showing the most recent 250 commits
Commits on Aug 03, 2014
@farmdawgnation farmdawgnation Initial implementation of data-lift as a DataAttributeProcessor. 638edab
@farmdawgnation farmdawgnation Some spec format tweaks. 74f75e0
@farmdawgnation farmdawgnation Explicitly return a future answer if parallel=true. bd674b6
Commits on Aug 04, 2014
@pbrant pbrant Fix pattern match (again!) 31497e5
@pbrant pbrant Adjust pattern match for consistency 7dae49c
@pbrant pbrant Include context path in liftPath 75b05c3
Commits on Aug 05, 2014
@pbrant pbrant Add Scaladoc and rename liftUriPath 26a0761
@pbrant pbrant Remove automatic lift:surround with="default" insertion
Remove automatic lift:surround with="default" insertion. Continue to
wrap Markdown templates in <html></html> if they contain multiple top
level nodes (but only if <html> is not already there).
3b5a0bf
Commits on Aug 07, 2014
@fmpwizard fmpwizard Merge pull request #1597 from lift/pmb_ajax
Fix a couple of Ajax related path issues
0b3a560
@pbrant pbrant Auto-surround top level Markdown templates
Auto-surround top level Markdown templates with default template and
refine test for top level templates
6b22501
@pbrant pbrant Move to Scala 2.11.2 e94bd4c
Commits on Aug 09, 2014
@Shadowfiend Shadowfiend Rework LazyLoad comet.
We move the AsyncRenderComet to its own file. We also
move the actual render function management into the
AsyncRenderComet companion, including handling deferred
function building.

LazyLoad slims down a little, dealing with invoking the
async render setup in AsyncRenderComet and rendering
the placeholder.

We also only apply a div wrapper to the default loading
template, letting a custom template stand on its own, though
we apply an id to it for the purposes of replacing it with the
rendered contents after they are sent down.
2663191
@Shadowfiend Shadowfiend Add buildDeferredFunction for (A)=>T.
LiftSession’s buildDeferredFunction only existed for a no-arg
function. We now have a version that builds a deferred
function of one argument; invoking that function with an
argument will restore the session/request context and then
execute the original function with the passed argument.

Also simplified our restoration of context in both versions of
buildDeferredFunction.
7d01f5e
@Shadowfiend Shadowfiend Add first pass future CanBinds to the http package.
Also clean up some old commented-out package object cruft.
a064cbf
@Shadowfiend Shadowfiend Add failure messages to findOrCreateComet.
If we fail to find the session, we now report as much in the
Failure message.
c313a9c
@Shadowfiend Shadowfiend Unify logic for Future and LAFuture CanBinds.
Still not as clean as I’d like, but getting there.
21f4d07
@Shadowfiend Shadowfiend Move resolution to a CanResolveAsync type class.
Now anyone can provide a CanResolveAsync implicit to
deal with other future types (for example, Finagle’s Twitter
Futures) and the CanBind will automatically apply.
e06e087
Commits on Aug 10, 2014
@Shadowfiend Shadowfiend Fix unimplemented onDocumentReady error. 111bb6d
@Shadowfiend Shadowfiend Refer to settings.onDocumentReady in init.
Before we were referring to the version provided by options,
which meant that if someone failed to provide an
onDocumentReady implementation to init, we’d get an
exception instead of a logged error.
79372ae
@Shadowfiend Shadowfiend Fix lift.logError binding.
We were tying settings.logError directly to lift.logError, but
this didn’t allow for the options passed to init to override the
implementation because lift.logError is bound before the init
function runs. We now delegate to settings.logError using
apply, ensuring we’re always seeing the latest version of it.
fd9ba88
@Shadowfiend Shadowfiend Add lift.onEvent.
lift.onEvent is used to attach an event handler to an
element, usually by id. There is both a jQuery and vanilla
implementation, with the vanilla implementation reworking
some of the onDocumentReady stuff.
a1feda5
@Shadowfiend Shadowfiend Extract on* attributes to page JavaScript.
We now pull out all on* attributes, moving them instead to
onEvent invocations in the page JavaScript. Where
necessary, we mark the element in question with a unique id
so we can address it in the onEvent invocation.

This lets us remove all inline JavaScript from the page,
preparing us to be able to set strong Content-Security-Policy
settings out of the box.
e518953
Commits on Aug 13, 2014
@Shadowfiend Shadowfiend toSingleBox now sets up the failure chain properly.
The ParamFailure that toSingleBox returns when there are Failures in the list
now has a chain of Failures on it that correspond to all of the Failures in the
list.
688f0bd
Commits on Aug 14, 2014
@Shadowfiend Shadowfiend Add AsyncRenderComet.asyncRenderDeferred.
This is for doing an asyncRender when the function has already been wrapped
with whatever deferred wrapperisms you may want, maybe including
buildDeferredFunction.
dca0fb7
@Shadowfiend Shadowfiend Enrich LazyLoad snippet with some render tweaks.
There is now an overload that takes a renderer function to which we hand the
placeholder id that we generate, and which is charged in turn with doing the
final rendering. It expectes the caller to wrap the passed function in whatever
deferred handling may be needed.

The main render method also now has an optional placeholderTemplate parameter
so that when invoked from Scala it can be given a NodeSeq to use for the
placeholder.
9670f2e
Commits on Aug 15, 2014
@Shadowfiend Shadowfiend Make LazyLoad.render wrap passed functions in deferred contexts.
Initially, the LazyLoad.render overload that took a (String)=>JsCmd
explicitly didn't wrap buildDeferredFunction around the function, but
after thinking about it a little more, not needing buildDeferredFunction
is low-level and rare enough that we'll leave it so using that requires
using AsyncRenderComet.asyncRenderDeferred instead.
c1a4671
@Shadowfiend Shadowfiend Clarify a boolean parameter by making it named. 19664c5
@Shadowfiend Shadowfiend Merge pull request #1604 from lift/pmb_surround
Remove automatic lift:surround with="default" insertion

Remove automatic lift:surround with="default" insertion, but wrap top level templates in
it if the template contains multiple top level nodes and does not already contain a surround.
This is necessary to support Markdown templates.
8fb84aa
Commits on Aug 16, 2014
@fmpwizard fmpwizard Lift 3.0 only builds for 2.11.x, so we always need the external xml d…
…ependency
d24047a
@fmpwizard fmpwizard Merge pull request #1606 from lift/pmb_latestscala
Move to Scala 2.11.2
8327574
@fmpwizard fmpwizard Build clean up now that we are only building for scala 2.11.x
* Simpler crossMapped
* Removed scalaz6
* Just use latest versions of specs2, scalatest and scalaz
546f468
@fmpwizard fmpwizard `S.init` now takes a `Box[Req]`
This helps in cases where a CometActor should see an `Empty` `S.request` instead of the `Req.nil`
which is a fake Req object
5e91795
@fmpwizard fmpwizard fixed tests 4a75849
@Shadowfiend Shadowfiend Merge pull request #1611 from lift/diego_build_cleanup
Build clean up now that we are only building for scala 2.11.x

 - Simpler crossMapped
 - Removed scalaz6
 - Just use latest versions of specs2, scalatest and scalaz
9a0aea3
@Shadowfiend Shadowfiend Fix issue with new password verification in ProtoUser.
When we converted from the original bind strategy, I forgot that the old
bind strategy evaluated things eagerly, while CSS selector transforms
call by name. This meant that the old bind strategy, when it bound both
new password fields (the new password and repeat new password fields) to
a single SHtml.password_* invocation, actually bound both fields to the
same password input with the same GUID.

In the CSS selector transform port, the result was instead two fields
with two different GUIDs, which broke the expected behavior of the
password field (it was supposed to generate a List of two passwords,
which could then be checked for equality).

To fix this, we now create the single field ahead of time and pass that
to the selector transform so that the same field gets used twice instead
of a different field being generated each time.
04f6f4a
Commits on Aug 20, 2014
@fmpwizard fmpwizard Merge pull request #1607 from lift/lazy-susan
Lazy Susan: Implement lazy-load and future CanBind support in AJAX responses
19bed7a
@pbrant pbrant Defer Ajax requests until initialization is complete d313dd2
Commits on Aug 21, 2014
@pbrant pbrant Check settings.enableGc before starting function GC 3152ef5
Commits on Aug 24, 2014
@pbrant pbrant Merge pull request #1616 from lift/pmb_ajaxinit
Defer Ajax requests until initialization is complete
371f59a
@pbrant pbrant Comet fixes
  - Unify lastListenerTime (which was previously always zero) with
    lastListenTime
  - Make lastRenderTime, delta timestamps, and lastListenerTime
    consistent with each other as they are directly compared
  - More accurately track whether any deltas have been sent
  - Pretend initial render happened at creation time to prevent a second
    render call from running on the initial Listen message
  - Rename devMode to alwaysReRenderOnPageLoad
cba6212
Commits on Aug 26, 2014
@pbrant pbrant Futher Comet tweaks
 - Remove (nonworking) attempt to reduce the number of renders and use a
   different approach that works
f4726c8
Commits on Sep 06, 2014
@fmpwizard fmpwizard Merge pull request #1613 from lift/diego_issue_1495
S.request should be empty for CometActors
52681b1
Commits on Sep 15, 2014
@eltimn eltimn Issue #1622 - Revert DefaultConnectionIdentifier.jndiName to var 6ad175e
Commits on Sep 16, 2014
@pbrant pbrant Fix sequence/timestamp issues for real this time 659503a
Commits on Sep 25, 2014
@pbrant pbrant Remove lastWhenDeltaPruner
It was a no-op before (as lastListenerTime was always zero) and can
result in lost partial updates now that it works.
2036c11
Commits on Sep 27, 2014
@eltimn eltimn Deprecate and use property to set DefaultConnectionIdentifier.jndiName c3bfd26
Commits on Oct 01, 2014
@fmpwizard fmpwizard Merge pull request #1623 from lift/tcn_issue_1622
Revert DefaultConnectionIdentifier.jndiName to var
a03b4ce
@fmpwizard fmpwizard Merge pull request #1612 from lift/proto-user-password-fix
Fix issue with new password verification in ProtoUser.
fb00517
Commits on Oct 04, 2014
@tuhlmann tuhlmann Fixes #1627 77ba2b7
@tuhlmann tuhlmann Fixes #1621. Adds JValue as a specific return type to all asJValue de…
…finitions
0388770
Commits on Oct 19, 2014
@fmpwizard fmpwizard Add implicit from tuple to SelectableOption
fixed #1628 Add implicit from tuple to SelectableOption
7bc9a68
@fmpwizard fmpwizard Merge pull request #1627 from lift/uhl_issue_1627
MatchError in Mappers decodeFromJSON_!
1a461ce
@fmpwizard fmpwizard Merge pull request #1621 from lift/uhl_issue_1621
Signature of asJValue inconsistent
cbfd625
Commits on Oct 22, 2014
@davewhittaker davewhittaker Remove unnecessary synchronization while getting/setting ContainerVar…
… values. Refs issue #1629.
521e5f0
Commits on Oct 23, 2014
@davewhittaker davewhittaker Updated documentation explaining why ContainerVar doesn't need explic…
…it synchronization. Refs #1629.
63889f6
Commits on Oct 24, 2014
@fmpwizard fmpwizard Merge pull request #1631 from lift/dw_issue_1629
Remove unnecessary synchronization
23772b7
@fmpwizard fmpwizard Merge pull request #1630 from lift/diego_issue_1628
Add implicit from tuple to SelectableOption
b1d30e1
Commits on Nov 01, 2014
@fmpwizard fmpwizard Renaming the Position.scala file to ScalaPosition.scala to avoid
name conflicts with the private class

fixes #1635
c6171b5
@fmpwizard fmpwizard remove sbt code related to Position.scala fa1383f
@fmpwizard fmpwizard ajaxPostTimeout doesn't have to be multiplied by 1000, because it is …
…used as is on ScriptRenderer, so the client should just get the same value in both cases

(well, ajaxPostTimeout should be the same timeout + 500ms)

fixes #1617
17871dd
Commits on Nov 09, 2014
@Shadowfiend Shadowfiend Allow arbitrary ResponseShortcutExceptions in AJAX calls. 972c474
Commits on Nov 16, 2014
@Shadowfiend Shadowfiend Merge remote-tracking branch 'origin/lift_26' 3e05010
@Shadowfiend Shadowfiend Issue #1622 - Make DefaultConnectionIdentifier.jndiName immutable.
We make it a val and undeprecate it.
e24f48f
@farmdawgnation farmdawgnation Merge pull request #1637 from lift/diego_issue_1617
Fix an issue in ajaxPostTimeout calculation in LiftServlet that caused futures to stick around spinning longer than they should have.
d92a14d
@farmdawgnation farmdawgnation Merge pull request #1636 from lift/diego_issue_1635
Renaming the Position.scala file to ScalaPosition.scala to avoid class name collisions.
9e89299
Commits on Nov 17, 2014
@pbrant pbrant New comet mode
Add additional comet actor mode that supports a continuous stream of
partial updates.
d5fecef
Commits on Nov 23, 2014
@farmdawgnation farmdawgnation Merge branch 'master' into your-data-lift-is-my-data-lift 418ab4c
@farmdawgnation farmdawgnation Four out of five dentists recommend these names for understandability. 5817a95
@farmdawgnation farmdawgnation Remove dat element... without a massive match. c8eb872
@farmdawgnation farmdawgnation Make snippy a bit easier to understand w/ rename + case class.
Here we add the case class SnippetInformation to describe the return
type from snippy, and change snippy's name to
snippetInformationForElement. Also, rename some of the internal
variables in the method to make it a bit easier to follow.
6b7171d
@farmdawgnation farmdawgnation Move pairsToMetadata and makeMetaData to HtmlHelpers.
Now that I've gotten rid of this duplication I feel better about myself.
14bf37c
@farmdawgnation farmdawgnation Remove upper bound on email TLD in emailRegexPattern.
The suggested solution by Diego was to make the limit 10, but making it
unbounded probably makes more sense. It lets people use custom TLDs in
local delivery / email testing without having to worry about length.
114611f
@farmdawgnation farmdawgnation Make emailRegexPattern case insensitive. 295ba58
@fmpwizard fmpwizard Prepare for 2.6-RC2 d051577
@farmdawgnation farmdawgnation Merge tag '2.6-RC2-release'
Conflicts:
	build.sbt
ec483bd
@farmdawgnation farmdawgnation Update comment for emailRegexPattern. 4e03a02
@farmdawgnation farmdawgnation Change the using the CASE_INSENSITIVE flag in compile.
This should make the case insensitivity of the pattern more visible to
someone else who is looking at the code.
dd4f982
Commits on Nov 27, 2014
@farmdawgnation farmdawgnation Merge pull request #1640 from lift/msf_issue_1634
This resolve issues with emailRegexPattern not being up to date w.r.t. new TLDs longer than four characters and being case sensitive.
62d4021
Commits on Nov 30, 2014
@farmdawgnation farmdawgnation Fix comment style. ae60c5d
Commits on Dec 09, 2014
@Shadowfiend Shadowfiend Move comet commands into S.jsToAppend.
We do this because jsToAppend is referenced in a few
different places, and it’s better to reuse it than to try and add
commandForComets to all of those places (especially since
some of them are inside CometActors, for example).
a5125bc
@Shadowfiend Shadowfiend Don't lose jsToAppend during comet AJAX request.
When dealing with an AJAX request in a comet context, we
were partial-updating jsToAppend at the beginning of the
request, but any updates that might have been made to it
during the request processing were lost. We now send the
partial update message after the request functions have run,
so that any JS they’ve appended also gets sent down to the
client.
3617846
@Shadowfiend Shadowfiend Avoid duplicate requests for comet-sourced comets.
If a comet was sent down from within a comet context, we
would force a comet request reset. On the client, this would
schedule a new comet request and attempt to abort the old
one; however, there is no way to abort the old one, since its
success handler is what is kicking off this request reset.

The end result is that the request’s success handler finished
running, which would also schedule a new comet request,
and we’d get two comet requests running in parallel and
walking all over each other.

When generating the comet commands, we now check to
see if we’re executing in a comet context, and if we are we
ask the client not to reset the comet cycle, knowing that the
response we’re currently sending will immediately kick off a
new request once it’s done executing.
48e1e05
@Shadowfiend Shadowfiend Handle comet send-down in partialUpdate.
We now pull jsToAppend handling out of the message
handler for comet-context AJAX request processing all the
way to the wrapper around handling all messages. This
ensures that things like partial updates will properly render
their JS to append.

It also seems to incidentally fix S.jsToAppend within comet
rendering, which seemed to trigger the JS twice instead of
just once before this.
78ada31
Commits on Dec 10, 2014
@Shadowfiend Shadowfiend Map function on ajaxOnSubmit invocation.
Before, we bound the function when we processed the element. Because this
occurred in NodeSeq=>NodeSeq function, we had no guarantee that it would run in
the correct formGroup, oneShot, callOnce, etc contexts. To deal with the form
group part of this, we were capturing the form group and setting it when we
went to actually run the binding function. However, this left oneShot,
callOnce, and potential future contexts like them out in the dark.

We now run the fmapFunc call as soon as ajaxOnSubmit is called, and the
NodeSeq=>NodeSeq function is used solely to bind the resulting id to the
matching element(s). This means the function mapping happens in the calling
context, and we avoid all of the above issues.

There is a subtle shift in behavior: multiple matching elements will get the
same function id, where before they would get different ones. Realistically,
this shouldn't cause a big problem, since they'll be invoking the same function
anyway.
f6d5ebc
Commits on Dec 11, 2014
@Shadowfiend Shadowfiend Distinguish LiftSession uniqueId from underlyingId.
What used to be uniqueId is now called underlyingId, to
indicate the fact that it is tied to the underlying host’s session
id. A new uniqueId is introduced, which is secure and unique,
and is not tied to the host id and cannot be used to look the
session up in the future.

The only place that is currently continuing to use uniqueId is
when we emit the id into the page as data-lift-session-id for
cache-busting purposes. The underlying id used to be
emitted into the page, which triggered some small security
concerns, so we switch to this model to be on the safe side.
f18e340
Commits on Dec 14, 2014
@farmdawgnation farmdawgnation Merge pull request #1609 from lift/ball-and-chain
Ball and Chain: toSingleBox now sets up the failure chain properly.
efc7976
Commits on Dec 15, 2014
@Shadowfiend Shadowfiend Add ability to link to other Scaladocs in ours.
We do two things: turn on autoAPIMappings, which
automatically lets us link to Scaladocs for modules that set
their public URIs, and explicitly add the mapping for the
scala-xml module. The addition of the scala-xml module is
also reasonably generic, so we can add more module-specific
URIs fairly easily in the future as needed.
0f0fb2e
@Shadowfiend Shadowfiend Clean up/improve lift-common Scaladocs.
Some places get more detailed Scaladocs, others get some facelifts and get
converted to wiki syntax instead of HTML. Examples added throughout.
c307b50
@Shadowfiend Shadowfiend Move an import up to the head of Conversions.scala. b017a28
@Shadowfiend Shadowfiend Clean out documentation that adds nothing.
Some of the scaladocs were extremely redundant with respect
to the functions they were describing. This commit drops
those Scaladocs.
55fa831
@Shadowfiend Shadowfiend Deprecate NodeSeqFunc.
It doesn’t seem to be used anywhere and we generally lean
on transformation functions rather than generation functions
for NodeSeq. This is also something we want to continue to
encourage, so making using NodeSeqs directly a little more
painful is okay.
0f8ce86
@Shadowfiend Shadowfiend Rename a variable in Logger.
checkConfig was used to make sure setup was being run. It’s
now named ranSetup, since that’s more reflective of what it
means.
22ee9e4
@Shadowfiend Shadowfiend Use UnsupportedOperationException where reasonable.
SimpleList and SimpleVector have a bunch of unsupported
operations with respect to regular Java collections; these
were through Exception instances. We switch them to throw
UnsupportedOperationException as per the Java collection
contract.
6b2917b
Commits on Dec 21, 2014
@Shadowfiend Shadowfiend Fix incorrect emphasis scaladoc markers.
Apparently * doesn’t emphasize, ''' does. Seems legit…
00ac6d2
@Shadowfiend Shadowfiend Fix a typo in the Logger docs. 0825363
@Shadowfiend Shadowfiend Clarify and improve various scaladocs.
Mostly adding `` around classes and parameters in docs, with
a couple of tweaks to docs that weren’t clear enough.
15b7e81
@Shadowfiend Shadowfiend Bump to Scala 2.11.3.
The specific motivation is that scaladoc in 2.11.3 fixes an
issue with picking up indentation in code blocks properly.
2b1d749
@Shadowfiend Shadowfiend Restore some implicit conversion scaladocs.
These are implicits that take implicits as parameters, and the
docs make it a little clearer what that’s for.
a9fcf2d
Commits on Dec 23, 2014
@joescii joescii ContentParser is now a thing 0288300
@joescii joescii addContentParser is needed since we have to also update templateSuffixes 22d260a
@joescii joescii Changed ContentParser to a mere function e1d5adf
@joescii joescii Defined LiftRules.contentParsers and dontAutoSurround 83036ba
Commits on Dec 24, 2014
@Shadowfiend Shadowfiend Bump to Scala 2.11.4 because Scala.
Evidently 2.11.3 had binary compatibility issues, so 2.11.4 it is!
dd822a4
@joescii joescii This version of unified parsers incorporates some good community feed…
…back
cc70561
Commits on Jan 03, 2015
@Shadowfiend Shadowfiend Clarify that all PR criteria must be met in contribution guidelines. 8310630
@Shadowfiend Shadowfiend Take a stab at clarifying the FuncJBridge class comment. d57119b
Commits on Jan 04, 2015
@joescii joescii Incorporating feedback regarding style, naming, scaladocs, etc e42fbed
Commits on Jan 05, 2015
@Shadowfiend Shadowfiend Fix two issues with LiftMerge id extraction.
When we were detecting the id for use by event handlers, we
were doing two things wrong:
 - We were failing to pass on any existing event attributes that
   we’d extracted along the way, so if there were any they
   were lost.
 - We were failing to append the fixed attributes to the current
   attribute, so we were losing the id attribute altogether.

This meant that if an element had an id, we always lost that
id in the process of trying to reuse it for event attributes. We
also only kept the event attributes for attributes before the id,
as the ones after were lost while we processed the id.
74ce47c
@Shadowfiend Shadowfiend Support extracting javascript: actions and hrefs.
javascript: and javascript:// are used in a couple of places in
Lift, and can be used in client code. We look for these in
action and href elements and extract them into proper event
handlers with return false; appended (since return false is
implied in these situations).

We also clarify some variable names and comments along
the way.
af65873
@Shadowfiend Shadowfiend Support using event in extracted handlers.
The wrapping anonymous functions now take an event
parameters (as is ideal).
722c093
@Shadowfiend Shadowfiend preventDefault on javascript: hrefs.
This instead of return false, which can also interfere with the
event bubble.
0b7a827
@Shadowfiend Shadowfiend Merge pull request #1650 from lift/doc-stock-and-two-smoking-html-tags
Doc, Stock and Two Smoking HTML Tags: Cleanup pass in lift-common scaladocs

This pass removes HTML from scaladocs, adds wiki markup in its stead, adds wiki
markup in places where we were using just text, adds examples here and there, and
generally tidies up the documentation.

It also adds the ability to link to Scala's APIs and scala-xml APIs from our scaladocs,
which required some tweaks to the build.
0e9573e
@Shadowfiend Shadowfiend Make HLists covariant in their type parameters.
Also add a spec for HList length.
25c1b25
Commits on Jan 06, 2015
@Shadowfiend Shadowfiend Merge branch 'master' into extract-o-matic
Conflicts:
	web/webkit/src/main/resources/toserve/lift.js
6f6b496
@arkadius arkadius Fixes LAFuture.collect/collectAll behaviour for empty list parameter
For empty list parameter, were returned future which never been satisfied.
Now is returned future that is immediately satisfied by empty list.
b994663
Commits on Jan 07, 2015
@arkadius arkadius contributors.md update 98d8e65
@Shadowfiend Shadowfiend Merge pull request #1639 from lift/recting-and-reding
Recting and Reding: Fix ResponseShortcutException issues for AJAX calls

Allow arbitrary ResponseShortcutExceptions in AJAX calls. Before we only handled
redirects.
d9eb5ca
@Shadowfiend Shadowfiend Merge pull request #1648 from lift/this-is-where-the-function-stops
This is Where the Function Stops: Map function on ajaxOnSubmit invocation.

ajaxOnSubmit would lose certain contexts like oneShot and callOnce. It no longer does.
d6eec4f
@Shadowfiend Shadowfiend Merge pull request #1649 from lift/air-gap
Air Gap: Distinguish LiftSession uniqueId from underlyingId.

This makes it so we're no longer emitting the session's unique id (which is
the same as the session cookie) into the page.
c1f3162
@arkadius arkadius Fix CombParserHelperSpec for digits with newlines.
Probed strings may include new line indicators. However CombParserHelperSpec
checks string matching using standard pattern matching and dots don't match \n.
Now it uses DOTALL pattern matching mode
dfea570
@Shadowfiend Shadowfiend Merge branch 'arkadius-clean-comb-parser-helpers-spec-fix' f12a1d9
@Shadowfiend Shadowfiend Revert "Merge branch 'arkadius-clean-comb-parser-helpers-spec-fix'"
This reverts commit f12a1d9, reversing
changes made to c1f3162.

The original merge was done off a branch that was not yet ready to be merged,
so we'll cherry-pick the spec fix onto the non-merged master branch instead.
bf25bf6
@arkadius arkadius Fix CombParserHelperSpec for digits with newlines.
Probed strings may include new line indicators. However CombParserHelperSpec
checks string matching using standard pattern matching and dots don't match \n.
Now it uses DOTALL pattern matching mode
c591461
@Shadowfiend Shadowfiend Revert "Revert "Merge branch 'arkadius-clean-comb-parser-helpers-spec…
…-fix'""

This reverts commit bf25bf6. The
original revert was there because I cherry-picked a commit I wanted
on master onto the a branch off of this one, and then merged it
into master before this one was ready to go (shoulda opened a PR...).
This commit reverts the revert on this branch, so that when we merge
this branch to master its changes will take hold (otherwise the first
revert would make the original changes be lost). Whew!
97ab445
@Shadowfiend Shadowfiend Add some curly braces in some JS for safety.
Friends don't let friends JavaScript braceless.
67e924f
Commits on Jan 08, 2015
@Shadowfiend Shadowfiend Merge pull request #1664 from arkadius/collectFutureFix
Fixes LAFuture.collect/collectAll behaviour for empty list parameter

For empty list parameter, were returned future which never been satisfied.
Now is returned future that is immediately satisfied by empty list.
1bc951e
@Shadowfiend Shadowfiend Switch find/isDefined to exists. 7feacef
Commits on Jan 10, 2015
@arkadius arkadius Fix failing LiftJavaScriptSpec in non-English environments.
Generated Lift JS is localized based on the current environment. However,
LiftJavaScriptSpec checks for English messages, so running it under a
non-English environment causes it to fail due to the mismatch in expected
message.  Now settings are tested with english locale, internationalization is
tested separately.
3ea320b
@Shadowfiend Shadowfiend Merge pull request #1657 from arkadius/liftJavaScriptSpecFix2
Tweaked the merge a bit to keep only the relevant commit.

Generated Lift JS is localized based on the current environment. However,
LiftJavaScriptSpec checks for English messages, so running it under a
non-English environment causes it to fail due to the mismatch in expected
message.  Now settings are tested with english locale, internationalization is
tested separately.
65fc960
Commits on Jan 12, 2015
@joescii joescii Making ContentParser ever so slightly more awesome with Antonio's sug…
…gestion to use 'apply' as the factory method name
2292a0a
Commits on Jan 14, 2015
@Shadowfiend Shadowfiend Merge pull request #1663 from lift/hlist-improvements
Make HLists covariant in their type parameters.

Also add a spec for HList length.

I'm using this code in lift-formality and it works as advertised!
989aa6f
@Shadowfiend Shadowfiend Slight style cleanup. afb8197
@pbrant pbrant Improve public API c99d8cc
Commits on Jan 15, 2015
@Shadowfiend Shadowfiend Merge pull request #1619 from lift/pmb_cometfixes
Comet fixes

This fixes a handful of bugs that when taken together kept things mostly working!

 - Unify lastListenerTime (which was previously always zero) with lastListenTime
 - Make lastRenderTime, delta timestamps, and lastListenerTime consistent with each
   other as they are directly compared
 - More accurately track whether any deltas have been sent
 - Pretend initial render happened at creation time to prevent a second render call from
   running on the initial Listen message
 - Rename devMode to alwaysReRenderOnPageLoad
 - Add MessageCometActor to handle comets that only push messages. It has a
   pushMessage method to use instead of partialUpdate, to reflect its use more
   clearly.

We'll be reworking the CometActor hierarchy a bit to stack CometActor on top of
a reworked MessageCometActor to layer on just rendering stuff to MessageCometActor,
but that's for later.
457d034
@Shadowfiend Shadowfiend Merge pull request #1646 from lift/comet-comet-on-the-wall
Comet, Comet on the Wall: Fix comets sent down via AJAX from within a comet

This fixes a few issues:

 - We centralize comet command generation into S.jsToAppend.
 - We fix when we look up S.jsToAppend during AJAX processing in comet contexts
   so we don't miss anything that might be added during the actual AJAX function execution.
 - We make sure not to trigger a second comet request when setting up new comets
   client-side from within a comet response.
cbc63a1
@joescii joescii Adding details regarding the behavior of LiftRules.contentParsers in …
…scaladocs
c188e4f
@joescii joescii Changing LiftRules.contentParsers from a Seq to a List to encourage p…
…repending/emphasize the first-one-wins behavior
6613d93
Commits on Jan 17, 2015
@Shadowfiend Shadowfiend Merge pull request #1652 from lift/unified-parsers
Unified parsers

Enhancement for configuring parsers per discussion at
https://groups.google.com/forum/#!topic/liftweb/WnaUFd9Fw5E . Adds a
LiftRules.contentParsers rule which is a list of ContentParser objects. These
can be used to define parsers for templates, which the template loading pipeline
can use in turn. Out of the box, we provide the existing HTML and Markdown
parsers, but this can easily be used to add, e.g., asciidoc support.

ContentParsers can specify the template suffixes that they support, as well as
provide a parser function that takes an InputStream and produces a Box[NodeSeq]
and a surround function that may be used to auto-surround the content if it is at
the root of a file (instead of included from another template).
e77bec2
Commits on Jan 18, 2015
@arkadius arkadius TimeSpan represents duration in milliseconds.
Before the change TimeSpan has many responsibilities - in equality behave as a
joda Period (was checking duration field equality), can represent a Date (using
toDate/toDateTime operations) or be used as a simple container for
milliseconds. Now is responsible only for operations on milliseconds.
Problematic methods have been deprecated (.ago/.later have been moved to
implicit PeriodExtension). For backward compatibility there is introduced
implicit conversion from Period to TimeSpan.

Also added a variety of deprecations and cleaned up specs that are
timezone-dependent to run in explicit conditions.
ab71c7b
@arkadius arkadius Expand and clarify deprecations
- deprecations for Int/Long -> TimeSpan, TimeSpan -> Long conversion
- deprecation since version notice added
aae7876
@Shadowfiend Shadowfiend Clarify/expand on scaladocs for TimeSpan methods. 52bf6f5
@Shadowfiend Shadowfiend Reword TimeSpan deprecations.
They all include suggested alternatives now.
f6b3cc8
@Shadowfiend Shadowfiend Drop ConvertableToDate deprecations.
These aren’t directly related to TimeSpans, and we need to
figure out how exactly we want these deprecations to work
first.
1e5fead
@fmpwizard fmpwizard Merge pull request #1670 from lift/time-span-deprecation
TimeSpan Deprecation
3182510
@fmpwizard fmpwizard update build script to build 3.0 from master efc7a15
@arkadius arkadius travis integration:
- build script
- build status in README
61b43f9
@arkadius arkadius openjdk7 profile 0652dcd
@Shadowfiend Shadowfiend Merge pull request #1666 from lift/travis-integration
Travis Integration

Adds Travis CI build script, including building for both OpenJDK and Oracle
JDK. More to come!
6697be5
Commits on Jan 21, 2015
@Shadowfiend Shadowfiend Merge pull request #1603 from lift/your-data-lift-is-my-data-lift
Your data-lift is my data-lift: Reimplement data-lift as a data attribute parser.

This PR reimplements data-lift as a data attribute parser.

Few points of concern:
 - I want to go through at some point and clean up the copy-pasting of helper
   methods that I did wrt MetaData parsing.
 - I'm not entirely sure why I'm having to manually check for the parallel attribute
   in my parser. My understanding was that if my parser generates a lift: node,
   that should be processed subsequently by the regular SnippetNode parser, which
   does checks for parallel processing.
aceac3f
@Shadowfiend Shadowfiend Merge pull request #1665 from lift/extract-o-matic
Extract-o-matic: Extract event handlers to page JS

The main functionality here moves event handler attachment from inline
attributes to the page JavaScript that Lift 3 now supports. The reason for
this is so that, out of the box, Lift will be compatible with very restrictive
Content Security Policy settings when using built-in Lift features.

To do this, we add a lift.onEvent function that has both jQuery and vanilla
implementations. There are also a couple of fixes to existing JS functionality
here.
a21dfa0
@andreak andreak Fixed NPE in LiftRules:913 68de581
@fmpwizard fmpwizard Merge pull request #1672 from lift/fix_parallel_attribute_check_1671
Fixed NPE in LiftRules:913
5c240ab
Commits on Jan 23, 2015
@Shadowfiend Shadowfiend Ensure uniqueness of comet requests.
We now track a "current count" for a comet request, and any calls to start a
request carry the then-current count. Once a comet request is fired, the count
is incremented, ensuring that even if a new comet request is scheduled multiple
times, only one will run at any given moment.

This is only the new part of the guard. The other part of the guard is that we
track the actual current comet request and abort it if a comet request restart
is needed. However, an AJAX request that was just begun cannot be aborted, so
if multiple restarts are scheduled in one tick for whatever reason, we end up
with multiple requests--this fix guards against that scneario.
9ba83c3
@Shadowfiend Shadowfiend Fix a misnamed parameter in registerComet.
The paramter was named restartComet, but restartComet is the name of the
restart function, while startComet is the correct name for the parameter.
8c84b46
Commits on Jan 25, 2015
@Shadowfiend Shadowfiend Fixed an == vs === issue codacy caught in JS. 16e23d7
@Shadowfiend Shadowfiend Dropped an unused function in lift.js. 58c4d0b
@Shadowfiend Shadowfiend Merge pull request #1673 from lift/beautiful-and-unique-snowflake
Beautiful and Unique Snowflake: Try to ensure uniqueness of comet requests

We already did some work to make sure comet requests were unique;
this adds one more layer of checking around that. When we schedule a
new comet request, we include the current "comet request count". That
count is incremented when the request is actually fired off. This means
that scheduling a new request multiple times before the request is fired
will only result in one request, rather than multiple requests that will walk
all over each other.
30de35e
@andreak andreak Fixed premature termination of declaration-list. 6ed96fc
Commits on Jan 26, 2015
@Shadowfiend Shadowfiend Add SecurityRules and related code.
SecurityRules provides a way to set security rules like HTTPS
requirements and a content security policy, which are in turn
served with resources from Lift via headers. Right now, we
support Content-Security-Policy and Strict-Transport-Security
headers.

While a default reporting URI is in place for content security
policy violations, there’s not yet any code that handles
information sent to that URI.
d3710e4
@Shadowfiend Shadowfiend Add BadRequest response, deprecate BadResponse.
BadResponse was a misnomer, since that response actually
represents a 400 Bad *Request* response.

Additionally, we add support for a custom message to the
BadRequest case class.
1ab91b4
@Shadowfiend Shadowfiend Handle enforceInDevMode in ContentSecurityPolicy.
We were doing this incorrectly before.
9abb23b
@Shadowfiend Shadowfiend Support content security policy violation reports.
In particular, we now have a default handler that logs the
violation, a case class to represent the violation JSON,
and logging (and a 400 response) if we can’t parse the
violation JSON.
77a2b1c
@Shadowfiend Shadowfiend Simplify ContentSecurityPolicy.secure.
Only have a single overload, which just clears the imageSources
restriction.
8906e56
@Shadowfiend Shadowfiend Fix up documentation throughout. 5496653
Commits on Jan 27, 2015
@pbrant pbrant Comet fix fix
AsyncRenderComet should be a MessageCometActor. Use BaseCometActor in
more places.
241335d
Commits on Jan 31, 2015
@arkadius arkadius LAFuture.map/.flatMap returns Future satisfied with Failure when Exce…
…ption in transforming function occurs

Before the change LAFuture.map/.flatMap in this case return never satisfied Future. After the change, returned Future is satisfied by Failure.
69d3b1a
@Shadowfiend Shadowfiend Merge pull request #1675 from lift/pmb_comet
Comet fix fix

AsyncRenderComet should be a MessageCometActor. Use BaseCometActor in
more places.

(overlooked in the initial round of changes)
eed2155
@Shadowfiend Shadowfiend Move X-Frame-Options into SecurityRules.
We add a FrameRestrictions sealed trait to represent the
available frame restrictions, and make it Optional. The default
is FrameRestrictions.SameOrigin, so as to line up with the
previous Lift default of only allowing inclusion in frames from
the same origin.
6d9a55a
@Shadowfiend Shadowfiend Add GeneralSourceRestriction.
This is meant to indicate restrictions that apply to JavaScript,
stylesheets, and other content.
1c6293f
@Shadowfiend Shadowfiend Default scriptSources to include unsafe-eval.
We do this because Lift does a lot of AJAX-based script
injection at the moment, which requires eval. So, to avoid
breaking a Lift application, unsafe-eval stays on.

Also expand a little on documentation to indicate Lift’s
reliance on this functionality.
c1c0438
Commits on Feb 01, 2015
@Shadowfiend Shadowfiend Lock security rules on first use.
Security rules-related stuff will be running every request, so
we want to minimize the overhead of using it. We can relax
the limitation if someone says they need to modify these at
runtime.
dd2cf21
@Shadowfiend Shadowfiend Handle logInDevMode in ContentSecurityPolicy.
We now use report-only in dev mode only if enforceInDevMode
is off and logInDevMode is on.
c52f92c
@Shadowfiend Shadowfiend Log non-HTTPS requests when requested.
When LiftRules.https is set, we’re in dev mode, and
logInDevMode is on, we log requests that come in and are
not HTTPS.
b6e9858
@Shadowfiend Shadowfiend Small documentation tweaks.
Add a note about default frame restrictions to SecurityRules
and fix the link to contentSecurityPolicyViolationReport.
2d6c427
Commits on Feb 07, 2015
@fmpwizard fmpwizard Fixed missing `s` in string interpolation dc632a9
Commits on Feb 08, 2015
@arkadius arkadius Reuse of tryo inside LAFuture
Before change, in case of circular module dependencies it wasn't possible to use tryo inside actor module (was used by util which would be used by actor). Now tryo is available from Box singleton and ControlHelpers refer back to it.
9e26a45
@arkadius arkadius tryo inside separated Tryo object
Import of Box._ and Helpers._ was causing ambiguousity errors. Now tryo is inside separate class in common module.
db47c46
@arkadius arkadius Timeout for LAFuture.map/.flatMap tests was too short 0aa41e1
Commits on Feb 10, 2015
@fmpwizard fmpwizard Merge pull request #1679 from lift/diego_issue_string_inter
Fixed missing `s` in string interpolation
70c899f
@pbrant pbrant Fix Comet clean-up bug
Comet actors which defined a life span were being half-cleaned up with
correspondingly strange results. The cause was java.util.Map#remove
taking an Object, not a K with the result that this was missed when
migrating from a tuple to CometId.
6b748b2
@pbrant pbrant Merge pull request #1682 from lift/pmb_cometlifespan
Fix Comet clean-up bug
e2a53f0
Commits on Feb 12, 2015
@farmdawgnation farmdawgnation Augment the JsonAST scaladocs. 83212f4
@farmdawgnation farmdawgnation Rename xs to values. e2ab4fc
@farmdawgnation farmdawgnation Reformat implementation of JValue.\\ for clarity. a5e88db
Commits on Feb 14, 2015
@farmdawgnation farmdawgnation Documentation work on JsonAST. 2ef5150
@farmdawgnation farmdawgnation Remove the use of a return in JValue.map. d654b51
@farmdawgnation farmdawgnation Finish out documentation updates for JsonAST. 967e180
@farmdawgnation farmdawgnation Split SessionMaster into its own file from LiftSession. 780d36d
@farmdawgnation farmdawgnation Split ScopedLiftActor out into its own file. 8cb1034
@arkadius arkadius Removed Tryo object. Added more explicit conversion from Option/scala…
….uitl.Try to Box: extension implicit classes with toBox methods.
505bfab
@arkadius arkadius Fixed missing braces 6e4e237
Commits on Feb 16, 2015
@fmpwizard fmpwizard Removed many warnings dc5d32a
@fmpwizard fmpwizard Merge pull request #1684 from lift/session-ipa
Session IPA: Split out SessionMaster and ScopedLiftActor from LiftSession
02ad94a
@Shadowfiend Shadowfiend Make BadRequest be BadRequestResponse.
This is more in line with the naming of other LiftResponse subclasses, and
makes it clear that the class doesn't represent a bad request, but rather the
response to one.
2a2efe8
@Shadowfiend Shadowfiend Make some visibility modifiers a bit more strict. 0d17aaa
@Shadowfiend Shadowfiend Try adding maven caching to travis. 1fe70c6
@Shadowfiend Shadowfiend Merge pull request #1678 from arkadius/futureExInMapFlatMap
Fix LAFuture.map/flatMap when an exception happens inside.

Before the change `LAFuture.map`/`.flatMap` never satisfied the future in cases
where the function threw an exception. After the change, returned future is satisfied
by a `Failure`.

This change also contains minor fix: `get(timeout)` was returning `Empty` instead of
a `Failure` if the `LAFuture` was aborted.

Also added extensions providing `toBox` conversions from `scala.Option` and from
`scala.util.Try`.
479eb50
Commits on Feb 17, 2015
@fmpwizard fmpwizard code review fixes 53baaf4
Commits on Feb 18, 2015
@fmpwizard fmpwizard use contant for eof char feae9e4
Commits on Feb 21, 2015
@fmpwizard fmpwizard Merge pull request #1674 from lift/locket-down
Locket Down: Add support for Content-Security-Policy and Strict-Transport-Security
30c8fab
@fmpwizard fmpwizard Merge pull request #1685 from lift/diego_warnings
Removed many warnings
5c54df3
Commits on Feb 22, 2015
@farmdawgnation farmdawgnation Various updates per review. 66ecc68
@farmdawgnation farmdawgnation More updates based on code review. 1561e02
Commits on Mar 15, 2015
@Shadowfiend Shadowfiend Provide a secure XML parser in SecurityHelpers, use it throughout.
The secure XML parser does not allow entity references to refer to external
entities; allowing this exposes an application to XXE (XML External Entity)
attacks, where the external reference can be to a local file with sensitive
data, whose contents will then appear in the resulting parse error messages.
External entities are ignored and will not appear in the parsed or reserialized
XML.

All of Lift's built-in XML parsing now uses Helpers.secureXML instead of
directly using scala.xml.XML, including in tests.

More at https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Processing .

Signed-off-by: Diego Medina <diego@fmpwizard.com>
fb6acf6
Commits on Mar 21, 2015
@Shadowfiend Shadowfiend Fix an issue where we could lose event attributes.
This particularly manifested when the attribute whose href we wanted to fix
(e.g., the `href` attribute on an `a` element or the `action` attribute on a
`form` element) also had an event handler (e.g. `onclick`). The code that fixed
the href failed to pass on the event handlers that had been seen so far to the
attribute-fixing chain, so they got lost before they could be applied.
ed42f67
@Shadowfiend Shadowfiend Centralize call to fix remaining attributes.
We were calling fixAttrs with attrs.next in five places, which meant it was a
bit error prone. We now do it up front so the call can be changed in one place.
32cb1c7
@farmdawgnation farmdawgnation Implement ParamFailure chaining for ~>
Now, when ~> is invoked in a ParamFailure, the existing ParamFailure
will be chained, thereby preserving the original param that was
attached.
97554b1
@Shadowfiend Shadowfiend Don't assume postPageFunctions are Some.
When generating post-page JavaScript, we were assuming that because our first
access of the post-page functions was non-empty, all of them would be. This led
to occasional .get-related NullPointerExceptions. We now allow for later calls
to the post-page functions to be None, and simply assume we have no more
functions to fetch once we get a None for them.
a107005
@Shadowfiend Shadowfiend Further documentation tweaks.
A few clarifications, cross-references, and formatting tweaks.
70c2214
Commits on Mar 23, 2015
@Shadowfiend Shadowfiend Lock down SecurityHelpers.secureXML further.
We disable external doctypes altogether, and We also enable secure processing;
combined, these mitigate more attacks than just the XML External Entity attack.

The tests are updated to indicate that we now throw an exception whenever we
encounter an XML document with a doctype declaration.

Signed-off-by: Diego Medina <diego@fmpwizard.com>
10f13cb
Commits on Apr 13, 2015
@natekupp natekupp Replace defunct scala-tools.org reference
scala-tools.org is no longer active. Pointing to sonatype.org for the jar instead.
51c44f5
@farmdawgnation farmdawgnation Merge pull request #1696 from natekupp/patch-1
Replace defunct scala-tools.org reference
c575711
Commits on Apr 15, 2015
@dcbriccetti dcbriccetti Fix spelling error 53dd790
Commits on Apr 16, 2015
@dpp dpp Added extra arguments to method to allow for lifecycle support a373d90
@dpp dpp Include the actor in the setup and shutdown params 346a255
@dpp dpp Include the actor in the setup and shutdown params 30844d6
Commits on Apr 17, 2015
@dpp dpp Merge pull request #1698 from lift/dpp_extra_comet_args
Enhanced Support for browser Actor proxies
4a3e6b4
Commits on Apr 19, 2015
@Shadowfiend Shadowfiend Drop some sleeps in LAFutureSpec.
A couple of these specs are behaving intermittently in the CI environment, and
the sleeps seem beside the point to these two specs.
453e8f6
@Shadowfiend Shadowfiend Merge pull request #1692 from lift/midair-collision
Midair Collision: Fix issue where binding an `href` and an `onclick` together could fail.

This only manifested when the onclick came before the href on an
a element, and probably also manifested if you bound an onsubmit
on a form that had an action attribute. The cause was just that I had
forgotten to properly pass on already-seen event attributes when
processing the href attributes, so we lost them.
d105fbb
@Shadowfiend Shadowfiend Merge pull request #1683 from lift/documentation-ape
Documentation Ape: Documentation updates to JsonAST and a few small code optimizations.

This PR does some updates to the documentation in JsonAST.
62cba75
Commits on Apr 20, 2015
@Shadowfiend Shadowfiend Merge pull request #1693 from lift/tilde-down-for-what
Implement ParamFailure chaining for ~>

Now, when ~> is invoked in a ParamFailure, the existing ParamFailure
will be chained, thereby preserving the original param that was
attached.
aeeac46
@Shadowfiend Shadowfiend Merge pull request #1694 from lift/null-anti-null
Null-Anti-Null: Don't assume postPageFunctions are Some.

When generating post-page JavaScript, we were assuming that because our first
access of the post-page functions was non-empty, all of them would be. This led
to occasional .get-related NullPointerExceptions. We now allow for later calls
to the post-page functions to be None, and simply assume we have no more
functions to fetch once we get a None for them.
b56842a
Commits on Apr 25, 2015
@andreak andreak Add data-lift-fixedeventattribute-<event-name> for each replaced even…
…t-attribute, with settings in LiftRules: LiftRules.includeFixedEventAttributesAsDataAttributes_? (default false)
f337645
@dcbriccetti dcbriccetti Create test for Issue 1677, “Lift stores messages in LiftSession.come…
…tSetup List in wrong order”
d73e33e
Commits on Apr 26, 2015
@dcbriccetti dcbriccetti Move TestComet inside LiftSessionSpec.scala and create it with the ne…
…wer form of findOrCreateComet.
9cc77fd
@dcbriccetti dcbriccetti Fix spelling and English errors 232678b
Commits on Apr 27, 2015
@dcbriccetti dcbriccetti Change LiftSession to accumulate pre-creation CometActor messages in …
…the order received, rather than reverse order.
3592bb4
@dcbriccetti dcbriccetti Simplify the cometPreMessages dispersal code a2fc957
Commits on Apr 28, 2015
@dpp dpp Fixed the new bind-less password change in ProtoUser 9072f32
@Shadowfiend Shadowfiend Merge pull request #1703 from lift/working_pwd_reset
Fixed the new bind-less password change in ProtoUser

The right side of CSS selector transforms is call-by-name, so we were computing
two separate password fields for the password and confirmation input. As a result,
we were failing to set the password because the confirmation input and password
input both registered as not having a confirmation submitted for them. We now
generate the password input ahead of time and reuse it to get the right behavior.
bc13fa9
Commits on May 13, 2015
@Shadowfiend Shadowfiend Merge pull request #1702 from lift/dcb_issue_1677
Dcb issue 1677, send pre-creation CometActor messages in the order received

Fixes an issue where CometActor messages sent with session.sendCometActorMessage
to actors that are not yet initialized would be sent to it in the wrong order once the actor
*was* eventually initialized. Specifically, they were sent backwards. They are now sent in
the correct order.
cf564cd
Commits on May 23, 2015
@farmdawgnation farmdawgnation Log if JSON parsing fails when handling a jsonCall invocation. 35227b4
Commits on May 27, 2015
Christopher Webster optimize StringBuilder.append for character insertion 06d25c8
Commits on Jun 13, 2015
@farmdawgnation farmdawgnation Correct liftsh bootstrapping for new sbt.
It looks like sbt changed their download location and the amount of work
we have to do to bootstrap the liftsh script. This resolves those
differences.
dd91ce8
@farmdawgnation farmdawgnation Add a warning comment to the top of liftsh.cmd. 0cd710d
@farmdawgnation farmdawgnation Only build master and lift_26 on push.
Without this specifier Travis will attempt to execute two jobs for each
PR: the PR-merged job and the push job. The former is really the most
useful of the two. Also, without this specifier Travis will execute a
build for every push to every branch. Both of these conditions mean
we're making Travis do more work than is really useful.

With this change we should only be running builds on:
  - Push to master to lift_26
  - Opening or push to open PR.
b95327c
@farmdawgnation farmdawgnation Revert "Only build master and lift_26 on push."
This reverts commit b95327c.
6a777eb
Commits on Jun 14, 2015
@Shadowfiend Shadowfiend Merge pull request #1707 from lift/sbt-fixes
SBT Fixes

Looks like SBT changed some things about the way you have to
download the tool. I've updated the liftsh shell script to compensate
for it. This should get things in travis passable again. I also added a
comment to the top of liftsh.cmd explaining that it's probably broken.
Going to shoot something out to the mailing list and see if I can get
some love on getting that updated by a Windows user.
428af40
Commits on Jun 22, 2015
@andreak andreak Use data-lift-removed-attributes ec5ed51
Commits on Jun 24, 2015
@andreak andreak Renamed LiftRules.includeFixedEventAttributesAsDataAttributes_? and a…
…dded configurable attribute-name for "data-lift-removed-attributes", set in LiftRules.removedEventAttributesAttributeName
33c772c
Commits on Jul 03, 2015
@Shadowfiend Shadowfiend Stylistic tweaks to appendEscapedString improvements. d427fa4
@Shadowfiend Shadowfiend Merge branch 'appendStringOp'
The StringBuilder.append method invoked was StringBuilder.append(Object) as
both String and Char are being returned. The implementation of
StringBuilder.append(Object) when applied to a Character is essentially:

* call Character.toString - which produces a one element char[] and then
  creates a new String with the char array, which in turn does a defensive copy
  of the buffer.
* the string created is then used to add to the StringBuilder

This PR changes JsonAST.appendEscapedString to use StringBuilder.append(Char)
which directly inserts the character into the buffer avoiding the operations
described above
81db1ae
@Shadowfiend Shadowfiend Switch to single LiftRule for removed attribute inclusion.
We now have one LiftRules.attributeForRemovedEventAttributes, which can be None
to indicate no attribute should be emitted. The default is currently None.
f380911
@Shadowfiend Shadowfiend Merge pull request #1699 from lift/test-fixes
Test Fixes: Drop some sleeps in LAFutureSpec.

A couple of these specs are behaving intermittently in the CI environment, and
the sleeps seem beside the point to these two specs.
d4e5a32
@Shadowfiend Shadowfiend Merge remote-tracking branch 'origin/master' into msf_issue_1615 5a50a11
@Shadowfiend Shadowfiend Merge pull request #1705 from lift/msf_issue_1615
Log if JSON parsing fails when handling a jsonCall invocation.

This PR is designed to address an issue where the call sent to a
function wired up to a jsonCall isn't something that the JSON parser can
actually parse. This tends to happen in cases where developers are doing
some custom things with the jsonCall system---a bit more custom than
just wiring it up to a button directly in a CSS transform.
3d4bb6e
@Shadowfiend Shadowfiend Add LiftSession.onFunctionOwnersRemoved.
These functions are invoked with the set of function owners that had
all of their remaining associated functions evicted from a session in a
given run. A function owner is typically a page’s RenderVersion, though
there are cases (e.g., comets) where this is not necessarily the case.
2155e02
Commits on Jul 04, 2015
@Shadowfiend Shadowfiend Bump sbt to 0.13.8.
0.13.5 seems to be having alllll sorts of issues.
30e6af6
Commits on Jul 06, 2015
@Shadowfiend Shadowfiend Merge pull request #1701 from lift/ajk_datalift-fixedattrs
Add LiftRules.attributeForRemovedEventAttributes

This PR adds a LiftRule, LiftRules.attributeForRemovedEventAttributes.
When we remove a JavaScript event from an element for separate
application via the page's JS file, if this rule is set, the attribute it specified
is populated with the names of the attributes that were removed from the
element. If no attributes were removed, no attribute is added to the element.

The default for the LiftRule is to be None, meaning this information is never
added to the output.
6b1429e
Commits on Jul 09, 2015
@Shadowfiend Shadowfiend Merge pull request #1709 from lift/scope-callback
Add LiftSession.onFunctionOwnersRemoved.

These functions are invoked with the set of function owners that had
all of their remaining associated functions evicted from a session in a
given run. A function owner is typically a page’s RenderVersion, though
there are cases (e.g., comets) where this is not necessarily the case.

As a sample usage:

object pageIdWatchers extends java.util.concurrent.ConcurrentHashMap[String,List[()=>Unit]] {
    def addCleanupFunc(func: () => Unit): Unit = {
        put(S.renderVersion, List(func) ::: pageIdWatchers.getOrDefault(S.renderVersion, Nil))
    }
}

In Boot:

LiftSession.onFunctionOwnersRemoved ::= { removedOwners =>
    for {
        owner <- removedOwners
        watcher <- Option(pageIdWatchers.get(owner))} {
        watcher.foreach(_())
        pageIdWatchers.remove(owner)
    }
}

In a snippet:

def cleanupPage(): Unit = {
    println(s"Running cleanupPage for ${S.renderVersion}.")
}
println(s"Adding cleanupFunc for ${S.renderVersion}")
pageIdWatchers.addCleanupFunc(cleanupPage)
11c5825