View Javadoc

1   /**
2    * Copyright 2010 The Kuali Foundation Licensed under the
3    * Educational Community License, Version 2.0 (the "License"); you may
4    * not use this file except in compliance with the License. You may
5    * obtain a copy of the License at
6    *
7    * http://www.osedu.org/licenses/ECL-2.0
8    *
9    * Unless required by applicable law or agreed to in writing,
10   * software distributed under the License is distributed on an "AS IS"
11   * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12   * or implied. See the License for the specific language governing
13   * permissions and limitations under the License.
14   */
15  
16  package org.kuali.student.common.util.jta;
17  
18  import javax.transaction.TransactionManager;
19  
20  import org.apache.openjpa.ee.AbstractManagedRuntime;
21  import org.apache.openjpa.ee.ManagedRuntime;
22  
23  public class AtomikosManagedRuntime extends AbstractManagedRuntime implements ManagedRuntime {
24  
25  	private static TransactionManager tm;
26  	private Throwable cause;
27  	
28  	public AtomikosManagedRuntime() {
29  		super();
30  	}
31  
32  	@Override
33  	public Throwable getRollbackCause() throws Exception {
34         return cause;
35  	}
36  
37  	@Override
38  	public TransactionManager getTransactionManager() throws Exception {
39  		if(tm==null){
40      		Class<?> clazz = Class.forName("com.atomikos.icatch.jta.UserTransactionManager");
41      		tm = (TransactionManager) clazz.newInstance();
42  		}
43  		return tm;
44  	}
45  
46  	@Override
47  	public void setRollbackOnly(Throwable cause) throws Exception {
48          this.cause=cause;
49          getTransactionManager().getTransaction().setRollbackOnly();
50  	}
51  
52  	public static TransactionManager getTm() {
53  		return tm;
54  	}
55  
56  	public static void setTm(TransactionManager tm) {
57  		AtomikosManagedRuntime.tm = tm;
58  	}
59  
60  
61  
62  }