@Shadowfiend Shadowfiend released this Jun 19, 2014 · 1428 commits to master since this release


  • 2.10 versions of Lift are now built for Scala 2.10.4.
  • We are now publishing Lift builds for 2.11, built with Scala 2.11.1.
  • MongoRecord.save now has a default true value for its safe parameter.
  • Add saveBox, updateBox, and deleteBox_! methods to MongoRecord
    that catch exceptions and return a Box.
  • Moved MongoIdentifier to use a common ConnectionIdentifier shared with
    other record types.
  • Added RecordRules.fieldName, a FactoryMaker that lets you modify a field's
    corresponding database name based on the database connection and the field's
    variable name. (#1505).
  • Added RecordRules.displayName, a FactoryMaker that lets you modify a field's
    display name (the name rendered in the UI) based on the record instance being
    handled, the current locale, and the default display name.
  • Added MongoRules.collectionName, an Inject that lets you modify the name of a MongoRecord class's collection based on the connection and the
    class name.
  • Fix MongoListField's setFromJValue to properly handle special mongo data
  • Add AsObjectId extractor for pattern matching ObjectId Strings.
  • Add AsMongoRecord extractor for pattern matching a Mongo Record instance
    based on an incoming String id.
  • Add JsonObjectId, JsonRegex, JsonUUID, JsonDate, and JsonDateTime
    extractors for lift-mongodb-formatted JValues.
  • Added a withFilter method to suppress warnings when using the BaseResponse
    class in Lift tests (see #1253).
  • Wrap mail parts in multipart/related MIME part in emails (see #1569).
  • CometActor now handles ResponseShortcutExceptions with redirect responses
    by sending an appropriate RedirectTo command to the client. This means that
    e.g. S.redirectTo will work as expected in a CometActor. Note that this is implemented
    in the default exceptionHandler of CometActor, so if you've overridden it you'll
    need to make sure that the default handler is something you eventually invoke.
  • Added the ability to get a forced version of a request body as JSON or XML,
    regardless of whether the specified Content-Type of the request was correct.
    These are Req.forcedBodyAsJson and Req.forcedBodyAsXml, respectively.
  • Return a Failure with descriptive error message if bodyAsJson or bodyAsXml
    are invoked and we don't return the relevant JSON or XML due to an incorrect
    Content-Type in the request.
  • Added a short note on StackableMaker's doWith (used by FactoryMaker,
    amongst other things) regarding the fact that its changes to its maker's value
    are thread-local.


  • JSONParser, Lift's legacy JSON parser, along with its dependents:
    • MetaRecord.setFieldsFromJSON
    • MetaRecord.fromJSON
    • CometActor's handleJson, jsonCall, and jsonInCode
    • S.buildJsonFunc
    • S.jsonFmapFunc with Any=>JsCmd
    • JsonHandler
    • SHtml.fjsonCall
    • SHtml.jsonButton with Any=>JsCmd
    • SHtml.jsonForm
  • Mapper and MetaMapper's snippet bindings that use PartialFunctions:
    • addSnippet, editSnippet, viewSnippet (in favor of addFormSnippet,
      editFormSnippet, and viewTransform, all based on CSS selector transforms)
    • modSnippet, used in addSnippet and editSnippet, superseded by formSnippet.
    • add, edit, and view snippets in HTML, in favor of addForm, editForm,
      and viewTransform
    • fieldMapperPF, in favor of fieldMapperTransforms
    • fieldPF, appendField, and prependField, in favor of fieldTransforms,
      appendFieldTransform, and prependFieldTransform.
  • MongoAddress, MongoHostBase, MongoHost, MongoSet and all functions that
    take them as parameters. Please use the Mongo Java driver's MongoClient instead.
  • MongoRecord.save with no parameters. Please use the version with one
    parameter, and invoke it with empty parens (save()) if you want a safe save. The
    default for save with no parameters was an unsafe save, which can be achieved using
  • MongoMeta.ensureIndex; use MongoMeta.createIndex instead.
  • ListenerManager.updateListeners(Any); use ListenerManager.sendListenersMesage(Any)
Assets 2