Mitch Pronschinske is a Senior Content Analyst at DZone. That means he writes and searches for the finest developer content in the land so that you don't have to. He often eats peanut butter and bananas, likes to make his own ringtones, enjoys card and board games, and is married to an underwear model. Mitch is a DZone Zone Leader and has posted 2576 posts at DZone. You can read more from them at their website. View Full User Profile

Lift 2.0 Revving Up

04.08.2010
| 7210 views |
  • submit to reddit
It's been over a year since the release of Lift 1.0.  For those of you who've never heard of Lift, it's a powerful web framework for Scala and Java developers.  There are only a handful of web frameworks for Scala and Lift is probably the most well-known.  Today, Lift founder David Pollak announced a bunch of changes that have been made in the fourth milestone of Lift 2.0.  

One of the main advantages of Lift is its familiar platform (JVM), which includes enterprise tools like Eclipse and Maven.  There is also Java interoperability to fall back on.  Lift has clean templating and provides a quick way to get CRUD functionality running.  The framework also has Ajax and comet support.  The popular social geolocation app, FourSquare, has moved their entire site onto Lift.

The last three milestones of Lift 2.0 have already implemented some exciting changes.  Thanks to the FourSquare developers, Lift now has OAuth support.  Lift developers have updated hibernate-entitymanager to 3.4.0.GA and upgraded to jQuery 1.4.1.  Developers have also modified Lift so that it explicitly closes streams rather than waiting for garbage collection.  Multidimensional arrays are now supported in JSON serialization and extraction.  Lift 2.0 also adds CouchDB support and DataBinding types and traits to lift-webkit.

The M4 release of Lift 4 had more changes than any of the previous milestones.  lift-core_pl.properties have been updated for Lift 2 and support for HTTP Reason Phrase has been added.  M4 also includes enhanced JSON support based on the new JSON library and adds equals and hash methods for the mapper based on primary key.  lift-mapper is now an OSGi bundle and the OSGi configurations of other broken modules have been fixed.  lift-imaging got a new ImageResizer utility class for more resizing options to preserve aspect ratio and orientation.  You can read the full list of Lift 2.0 M4 changes below.  Information on other milestones can be found here.

New features:
o Added a flag to disable Loc uniqeness testing  Issue: 452. 
o Added default settings for FadeIn and FadeOut  Issue: 235. 
o Added warnings on attempt to access non-existant props file  Issue: 444. 
o Enhanced JSON support in Lift based on the new JSON library  Issue: 365. 
o Added equals and hash methods for mapper based on primary key  Issue: 408. 
o support setObject without an explicit SQL type  Issue: 233. 
o Added a new ImageResizer utility class to lift-imaging to provide additional resizing options which preserve aspect ratio and orientation.  Issue: 297. 
o Make lift-mapper an OSGi bundle and fix broken OSGi configuration of other modules.  Issue: 445. 
o Updated lift-core_pl.properties for Lift 2.0  Issue: 409. 
o German lift-core.properties  Issue: 175. 
o Added javascript interface to the CalendarMothView which resembles the ones already available for the week and day view.  Issue: 104. 
o Added a trait with createdAt and updatedAt mapper mixins  Issue: 390. 
o Added an option to SiteMap to not flatten the sitemap when retrieving a group  Issue: 424. 
o Added a flag to preserver XML scope. Necessary when you're doing bind on top-level XML  Issue: 432. 
o Don't cache resource bundles in dev mode  Issue: 391. 
o Detect and disallow duplicate URIs in SiteMap  Issue: 423. 
o XML entities preserved  Issue: 274. 
o Dynamic reloading of sitemap during dev mode  Issue: 385. 
o Added helpful extractors (AsInt, AsLong, AsBoolean)  Issue: 400. 
o Adds .json method to Req  Issue: 395. 
o Added asValid and JSON helpers to Mapper  Issue: 397. 
o Unapply on MetaMapper  Issue: 399. 
o More flexible CometActor creation  Issue: 392. 
o Converting a null String to an empty String  Issue: 414. 
o Add core dutch language files  Issue: 131. 
o Add Ext Core support to Lift  Issue: 132. 
o Support for HTTP Reason Phrase  Issue: 334. 
o Support for snippets lookup in subpackages  Issue: 396. 
o Create a generic continuation mechanism  Issue: 401. 
o Stateless JSON code  Issue: 420. 
o Add support for call-once functions  Issue: 435. 
 


Fixed Bugs:
o Fixed an initization order issue in LoggingStatementWrapper  Issue: 442. 
o MappedLongForeignKey apply() methods which take reference now prime the Obj  Issue: 411. 
o MappedDate and MappedDateTime setFromAny now handle Numbers (millis)  Issue: 427. 
o MappedString.crop gracefully handles null  Issue: 426. 
o Fix lift-osgi boot.  Issue: 448. 
o Synchronized a variable  Issue: 433. 
o More precise (and correct) shutdown process. This fixes a shutdown problem while CometActors are running.  Issue: 436. 
o fix two bugs with findClass not titlecasing correctly (helloWorld to HelloWorld)  Issue: 429. 
o SHtml.link and redirectTo properly deal with hash in URL  Issue: 382. 
o Eliminated a potential deadlock in MetaMapper  Issue: 419. 
o FactoryMaker request and session values no longer stomp on each other  Issue: 418. 
o Date/time parsing and formatting should be divided into Date, Time, and Date-time  Issue: 257. 
o MappedTime, MappedDate, and MappedDateTime should use different parsers and formatters  Issue: 258. 
o Cleanup lift-openid dependencies  Issue: 338. 
o OpenId attribute exchange support for well known providers  Issue: 348. 
o Deprecate createRecord and createRecordFromJSON preferring new MyRecord  Issue: 355. 
o Rename OpenId -> OpenID  Issue: 361. 
o Foreign Key rules moved to MapperRules  Issue: 388. 
o Add MapperRules.displayNameCalculator to allow easy localization of displayName  Issue: 389. 
o lift-couchdb: Field types using JSONEncodedStringMixin compile but give AbstractMethodError due to type erasure fumble  Issue: 403. 
o lift-couchdb: JSONField that encodes an enumeration by its name rather than ID  Issue: 404. 
o SetValueAndFocus should not be in JqJsCmds  Issue: 405. 
o Create/Init a LiftSession from outside a Lift-handled request  Issue: 406. 
o JsCmds/JqJsCmds API normalization  Issue: 407. 
o StackOverflowError in JSON Serializer with large Lists  Issue: 410. 
o lift:lazy-load doesn't work properly with ajaxSelect  Issue: 412. 
o Statefull snippets redirect is broken  Issue: 425. 
o XML is converted to invalid JSON when array has attributes  Issue: 428. 
o S.logQuery has wrong signature for use with DB.addLogFunc  Issue: 431. 
o Jetty 6 correction for comet  Issue: 439. 
o Ability to disable unique Loc check  Issue: 455. 
o Improve JSON extraction error message  Issue: 456. 
 
Changes:
o added blob to the list of reserved sql-words  Issue: 402. 
o Made ParamFailure not a case class  Issue: 398. 
o Add logging to Lift's internal code  Issue: 310. 
o Request for convenience conversion on MappedLongForeignKey fields  Issue: 394. 
o Move common dependencies from lift-base, lift-persistence, etc. into lift-parent  Issue: 421. 
o Add logging functions to Schemifier  Issue: 422. 
o Update AMQP dependencies to use RabbitMQ 1.7.2  Issue: 450. 
 
Removed:
o Remove the deprecated meta module lift-core  Issue: 451.
_______

Milestone 5 should be finished in next month.  Lift is distributed under the Apache 2.0 license.
Tags: