[jira] Updated: (GERONIMO-4448) TransactionManager resume method should only resume valid transaction

2009-01-16 Thread Lin Sun (JIRA)

 [ 
https://issues.apache.org/jira/browse/GERONIMO-4448?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lin Sun updated GERONIMO-4448:
--

Affects Version/s: 2.1.4
Fix Version/s: 2.1.4

> TransactionManager resume method should only resume valid transaction
> -
>
> Key: GERONIMO-4448
> URL: https://issues.apache.org/jira/browse/GERONIMO-4448
> Project: Geronimo
>  Issue Type: Bug
>  Security Level: public(Regular issues) 
>  Components: transaction manager
>Affects Versions: 2.1.4, 2.2
>Reporter: Lin Sun
>Assignee: Lin Sun
> Fix For: 2.1.4, 2.2
>
>
> Currently, the resume manager resumes pretty much any transaction as long as 
> the transaction is not null and is an instance of TransactionImpl.
> I think this is incorrect.  Per the jTA 1.1 spec, page 13:
> Suspending and Resuming a Transaction 
> A call to theTransactionManager.suspend method temporarily suspends the 
> transaction that is currently associated with the calling thread. If the 
> thread is not 
> associated with any transaction, anull object reference is returned; 
> otherwise, a valid 
> Transaction object is returned. TheTransactionobject can later be passed to 
> the 
> resume method to reinstate the transaction context association with the 
> calling thread. 
> TheTransactionManager.resumemethod re-associates the specified transaction 
> context with the calling thread. If the transaction specified is a valid 
> transaction, the
> transaction context is associated with the calling thread; otherwise, the 
> thread is 
> associated with no transaction. 
> Transaction tobj = TransactionManager.suspend(); 
> .. 
> TransactionManager.resume(tobj); 
> A simple test below would reveal the prob:
> {code}
> public void testResume1() throws Exception {
> Transaction tx;
> assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
> tm.begin();   
> assertEquals(Status.STATUS_ACTIVE, tm.getStatus());
> tx = tm.getTransaction();
> assertNotNull(tx);
> assertEquals(Status.STATUS_ACTIVE, tx.getStatus());
> 
> tm.commit();
> assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
> assertNull(tm.getTransaction());
> 
> try {
>   tm.resume(tx);
>   fail();
> } catch (InvalidTransactionException e) {
>   // expected
> }
> }
> {code}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Updated: (GERONIMO-4448) TransactionManager resume method should only resume valid transaction

2008-12-09 Thread Lin Sun (JIRA)

 [ 
https://issues.apache.org/jira/browse/GERONIMO-4448?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lin Sun updated GERONIMO-4448:
--

Summary: TransactionManager resume method should only resume valid 
transaction  (was: TransactionManager resume method should only resume 
previously suspended transaction)

Hi David,

I agree with your most recent comment and the test code, thus I modified the 
description (as it was worded poorly originally).   Thanks again for your 
comment here!

Lin

> TransactionManager resume method should only resume valid transaction
> -
>
> Key: GERONIMO-4448
> URL: https://issues.apache.org/jira/browse/GERONIMO-4448
> Project: Geronimo
>  Issue Type: Bug
>  Security Level: public(Regular issues) 
>  Components: transaction manager
>Affects Versions: 2.2
>Reporter: Lin Sun
>Assignee: Lin Sun
> Fix For: 2.2
>
>
> Currently, the resume manager resumes pretty much any transaction as long as 
> the transaction is not null and is an instance of TransactionImpl.
> I think this is incorrect.  Per the jTA 1.1 spec, page 13:
> Suspending and Resuming a Transaction 
> A call to theTransactionManager.suspend method temporarily suspends the 
> transaction that is currently associated with the calling thread. If the 
> thread is not 
> associated with any transaction, anull object reference is returned; 
> otherwise, a valid 
> Transaction object is returned. TheTransactionobject can later be passed to 
> the 
> resume method to reinstate the transaction context association with the 
> calling thread. 
> TheTransactionManager.resumemethod re-associates the specified transaction 
> context with the calling thread. If the transaction specified is a valid 
> transaction, the
> transaction context is associated with the calling thread; otherwise, the 
> thread is 
> associated with no transaction. 
> Transaction tobj = TransactionManager.suspend(); 
> .. 
> TransactionManager.resume(tobj); 
> A simple test below would reveal the prob:
> {code}
> public void testResume1() throws Exception {
> Transaction tx;
> assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
> tm.begin();   
> assertEquals(Status.STATUS_ACTIVE, tm.getStatus());
> tx = tm.getTransaction();
> assertNotNull(tx);
> assertEquals(Status.STATUS_ACTIVE, tx.getStatus());
> 
> tm.commit();
> assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
> assertNull(tm.getTransaction());
> 
> try {
>   tm.resume(tx);
>   fail();
> } catch (InvalidTransactionException e) {
>   // expected
> }
> }
> {code}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.