Thanks Derek. Thanks for taking time to do a code review.
I'll add that to the README.
/Jonas

2009/6/9 Derek Chen-Becker <dchenbec...@gmail.com>:
> Jonas, the code looks great! I don't see any issues with how ScalaJPA is
> used. It's nice to see that this fits what you're doing well and I really
> like how this lets one use transactions without having to go with a
> full-blown JEE container. One thing that you might want to put into the
> README is a reminder that if you're going to be using JNDI along with an
> EntityManager then JTA is not only required, but should be handled
> automatically by the container. The only valid operation on a
> Container-managed EM (as pointed out by mrxtravis yesterday when he found a
> bug in ScalaJPA) is to set the TX as rollback-only.
>
> Derek
>
> On Tue, Jun 9, 2009 at 1:10 PM, Derek Chen-Becker <dchenbec...@gmail.com>
> wrote:
>>
>> In my email above I have the link to the Maven artifacts for Atomikos:
>>
>> http://mvnrepository.com/artifact/com.atomikos
>>
>> I think that the dependency you want is:
>>
>> <dependency>
>>     <groupId>com.atomikos</groupId>
>>     <artifactId>transactions-jta</artifactId>
>>     <version>3.2.3</version>
>> </dependency>
>>
>> Derek
>>
>> On Tue, Jun 9, 2009 at 12:54 PM, Meredith Gregory
>> <lgreg.mered...@gmail.com> wrote:
>>>
>>> Jonas,
>>>
>>> Awesome! i look forward to digging into this stuff!
>>>
>>> Best wishes,
>>>
>>> --greg
>>>
>>> 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
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> L.G. Meredith
>>> Managing Partner
>>> Biosimilarity LLC
>>> 1219 NW 83rd St
>>> Seattle, WA 98117
>>>
>>> +1 206.650.3740
>>>
>>> http://biosimilarity.blogspot.com
>>>
>>>
>>
>
>
> >
>



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