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 <dchenbec...@gmail.com>:
> 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 <dchenbec...@gmail.com>
> 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 <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
>>>
>>>
>>
>
>
> >
>



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