View Javadoc

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 }