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 }