1 /**
2 *
3 * Copyright 2004 The Apache Software Foundation
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18 package org.apache.geronimo.connector.outbound.connectionmanagerconfig;
19
20 import javax.transaction.TransactionManager;
21
22 import org.apache.geronimo.connector.outbound.ConnectionInterceptor;
23 import org.apache.geronimo.connector.outbound.ThreadLocalCachingConnectionInterceptor;
24 import org.apache.geronimo.connector.outbound.TransactionCachingInterceptor;
25 import org.apache.geronimo.connector.outbound.TransactionEnlistingInterceptor;
26 import org.apache.geronimo.connector.outbound.XAResourceInsertionInterceptor;
27
28 /**
29 *
30 *
31 * @version $Rev: 430508 $ $Date: 2006-08-10 12:56:47 -0700 (Thu, 10 Aug 2006) $
32 *
33 * */
34 public class XATransactions extends TransactionSupport {
35 private boolean useTransactionCaching;
36 private boolean useThreadCaching;
37
38 public XATransactions(boolean useTransactionCaching, boolean useThreadCaching) {
39 this.useTransactionCaching = useTransactionCaching;
40 this.useThreadCaching = useThreadCaching;
41 }
42
43 public boolean isUseTransactionCaching() {
44 return useTransactionCaching;
45 }
46
47 public void setUseTransactionCaching(boolean useTransactionCaching) {
48 this.useTransactionCaching = useTransactionCaching;
49 }
50
51 public boolean isUseThreadCaching() {
52 return useThreadCaching;
53 }
54
55 public void setUseThreadCaching(boolean useThreadCaching) {
56 this.useThreadCaching = useThreadCaching;
57 }
58
59 public ConnectionInterceptor addXAResourceInsertionInterceptor(ConnectionInterceptor stack, String name) {
60 return new XAResourceInsertionInterceptor(stack, name);
61 }
62
63 public ConnectionInterceptor addTransactionInterceptors(ConnectionInterceptor stack, TransactionManager transactionManager) {
64
65 if (isUseThreadCaching()) {
66
67 stack = new ThreadLocalCachingConnectionInterceptor(stack, false);
68 }
69 stack = new TransactionEnlistingInterceptor(stack, transactionManager);
70 if (isUseTransactionCaching()) {
71 stack = new TransactionCachingInterceptor(stack, transactionManager);
72 }
73 return stack;
74 }
75 }