1 /**
2 *
3 * Copyright 2003-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;
19
20 import javax.resource.ResourceException;
21 import javax.resource.spi.ManagedConnectionFactory;
22 import javax.resource.spi.ConnectionManager;
23 import javax.transaction.xa.XAException;
24 import javax.transaction.xa.XAResource;
25 import javax.transaction.xa.Xid;
26
27 import org.apache.geronimo.transaction.manager.NamedXAResource;
28
29 /**
30 * ConnectionManagerContainer
31 *
32 * @version $Rev: 393679 $ $Date: 2006-04-12 18:43:53 -0700 (Wed, 12 Apr 2006) $
33 */
34 public interface ConnectionManagerContainer {
35
36 Object createConnectionFactory(ManagedConnectionFactory mcf) throws ResourceException;
37
38 ReturnableXAResource getRecoveryXAResource(ManagedConnectionFactory managedConnectionFactory) throws ResourceException;
39
40 ConnectionManager getConnectionManager();
41
42 public class ReturnableXAResource implements NamedXAResource {
43 private final ConnectionInterceptor stack;
44 private final ConnectionInfo connectionInfo;
45 private final NamedXAResource delegate;
46
47 public ReturnableXAResource(NamedXAResource delegate, ConnectionInterceptor stack, ConnectionInfo connectionInfo) {
48 this.delegate = delegate;
49 this.stack = stack;
50 this.connectionInfo = connectionInfo;
51 }
52
53 public void returnConnection() {
54 stack.returnConnection(connectionInfo, ConnectionReturnAction.DESTROY);
55 }
56
57 public String getName() {
58 return delegate.getName();
59 }
60
61 public void commit(Xid xid, boolean onePhase) throws XAException {
62 delegate.commit(xid, onePhase);
63 }
64
65 public void end(Xid xid, int flags) throws XAException {
66 delegate.end(xid, flags);
67 }
68
69 public void forget(Xid xid) throws XAException {
70 delegate.forget(xid);
71 }
72
73 public int getTransactionTimeout() throws XAException {
74 return delegate.getTransactionTimeout();
75 }
76
77 public boolean isSameRM(XAResource other) throws XAException {
78 if (other instanceof ReturnableXAResource) {
79 return delegate.isSameRM(((ReturnableXAResource)other).delegate);
80 }
81 return delegate.isSameRM(other);
82 }
83
84 public int prepare(Xid xid) throws XAException {
85 return delegate.prepare(xid);
86 }
87
88 public Xid[] recover(int flag) throws XAException {
89 return delegate.recover(flag);
90 }
91
92 public void rollback(Xid xid) throws XAException {
93 delegate.rollback(xid);
94 }
95
96 public boolean setTransactionTimeout(int seconds) throws XAException {
97 return delegate.setTransactionTimeout(seconds);
98 }
99
100 public void start(Xid xid, int flags) throws XAException {
101 delegate.start(xid, flags);
102 }
103
104
105 }
106
107 }