Starkt jobbat Jonas!

I'll have a look at it asap :)

On Tue, Jun 9, 2009 at 4:27 PM, Jonas Bonér <jbo...@gmail.com> wrote:

>
> 2009/6/9 David Pollak <feeder.of.the.be...@gmail.com>:
> > Sweet looking stuff!
>
> Thanks.
>
> >
> > On Tue, Jun 9, 2009 at 6:18 AM, Jonas Bonér <jbo...@gmail.com> wrote:
> >>
> >> Hey guys.
> >>
> >> I have hacked together an early draft of the JTA transaction stuff.
> >>
> >> I have wrapped it up in a monad. Here  are some examples of usage:
> >>
> >>  for {
> >>   ctx <- TransactionContext.Required
> >>   entity <- updatedEntities
> >>   if !ctx.isRollbackOnly
> >>  } {
> >>   // transactional stuff
> >>   ctx.getEntityManager.merge(entity)
> >>  }
> >>
> >> val users = for {
> >>   ctx <- TransactionContext.Required
> >>   name <- userNames
> >>  } yield {
> >>   // transactional stuff
> >>   val query = ctx.getEntityManager.createNamedQuery("findUserByName")
> >>   query.setParameter("userName", name)
> >>   query.getSingleResult
> >>  }
> >>
> >> If you don't like the monadic approach you can just use the high-order
> >> functions:
> >>
> >> TransactionContext.withTxRequired {
> >>    ... // REQUIRED semantics
> >>
> >>  TransactionContext.withTxRequiresNew {
> >>    ... // REQUIRES_NEW semantics
> >>  }
> >> }
> >>
> >> I have implemented the same semantics as used in the EJB spec.
> >> Required, RequiresNew, Mandatory, Supports, Never. All these are
> >> monadic objects in the TransactionContext object.
> >> I don't have a webapp to try this out, so I would be happy to get all
> >> kinds of feedback, but API wise and bug reports or fixes.
> >>
> >> This API is hooked into Derek's Scala-JPA stuff. I had my own impl of
> >> this but replaced it with Derek's work.
> >>
> >> Derek,
> >> please go through the integration to see if I have done it correctly,
> >> and where things code be improved.
> >>
> >> All committers,
> >> feel free to hack and change this code anyway you want.
> >>
> >> The code is in a branch (wip-jta-jonas), you can find it here:
> >>
> >>
> http://github.com/dpp/liftweb/tree/3783b9e2200cc57dd72baa1bd8cabdb1365ee923/lift-jta
> >>
> >> Check the ScalaDoc (or the source) for the documentation on usage,
> >> semantics etc.
> >> Also see the README for configuration in persistence.xml etc.
> >>
> >> Currently it is hard-coded to use the Atomikos Transaction library and
> >> Hibernate JPA, that would have to be configurable + some other options
> >> as well. See the TODOs in the code.
> >>
> >> As I said, this needs feedback and testing. Thanks.
> >>
> >> --
> >> Jonas Bonér
> >>
> >> twitter: @jboner
> >> blog:    http://jonasboner.com
> >> work:   http://crisp.se
> >> work:   http://scalablesolutions.se
> >> code:   http://github.com/jboner
> >>
> >>
> >
> >
> >
> > --
> > Lift, the simply functional web framework http://liftweb.net
> > Beginning Scala http://www.apress.com/book/view/1430219890
> > Follow me: http://twitter.com/dpp
> > Git some: http://github.com/dpp
> >
> > >
> >
>
>
>
> --
> Jonas Bonér
>
> twitter: @jboner
> blog:    http://jonasboner.com
> work:   http://crisp.se
> work:   http://scalablesolutions.se
> code:   http://github.com/jboner
>
> >
>


-- 
Viktor Klang
Rockstar Developer

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