I added the lib folder only since I have not been able to find the atomikos and deps in any maven repo. Now the user can install them in their private repo. If they exist in a public repo then I will remove the lib folder. Will switch to the apache libs. Thanks, Jonas.
2009/6/9 Derek Chen-Becker <[email protected]>: > OK, one quick comment before I dive in: we generally want to depend on Maven > to grab dependencies. Right now you have a lib folder checked into git that > appears to hold the JTA libs and Atomikos. If that's the Sun JTA libs then > we can't distribute them. We generally use the geronimo JTA API, so you > could instead add dependencies to your pom.xml from the following: > > http://mvnrepository.com/artifact/com.atomikos > > <dependency> > <groupId>org.apache.geronimo.specs</groupId> > <artifactId>geronimo-jta_1.1_spec</artifactId> > <version>1.1.1</version> > </dependency> > > Let me know if you have any problems with that. Now, on to the code! > > Derek > > On Tue, Jun 9, 2009 at 9:44 AM, Derek Chen-Becker <[email protected]> > wrote: >> >> Awesome! I'll take a look at the code. If you're basing this on ScalaJPA, >> would it be preferable to add the functionality there, or is there anything >> Lift-specific? >> >> Derek >> >> >> On Tue, Jun 9, 2009 at 7:18 AM, Jonas Bonér <[email protected]> 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 >>> >>> >> > > > > > -- Jonas Bonér twitter: @jboner blog: http://jonasboner.com work: http://crisp.se work: http://scalablesolutions.se code: http://github.com/jboner --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
