001package org.javasimon.jdbcx4;
002
003import java.sql.SQLException;
004import java.sql.SQLFeatureNotSupportedException;
005import java.util.logging.Logger;
006import javax.sql.XAConnection;
007import javax.sql.XADataSource;
008
009/**
010 * Wrapper class for real XADataSource implementation, produces xa
011 * {@link javax.sql.XAConnection} object.
012 * <p/>
013 * See the {@link SimonDataSource} for more information.
014 *
015 * @author Radovan Sninsky
016 * @author <a href="mailto:virgo47@gmail.com">Richard "Virgo" Richter</a>
017 * @since 2.4
018 */
019public final class SimonXADataSource extends AbstractSimonDataSource implements XADataSource {
020        private XADataSource ds;
021
022        private XADataSource datasource() throws SQLException {
023                if (ds == null) {
024                        ds = createDataSource(XADataSource.class);
025                }
026                return ds;
027        }
028
029        @Override
030        public XAConnection getXAConnection() throws SQLException {
031                return new SimonXAConnection(datasource().getXAConnection(), getPrefix());
032        }
033
034        @Override
035        public XAConnection getXAConnection(String user, String password) throws SQLException {
036                return new SimonXAConnection(datasource().getXAConnection(user, password), getPrefix());
037        }
038
039        @Override
040        protected String doGetRealDataSourceClassName() {
041                return this.configuration.getRealXADataSourceName();
042        }
043
044    @Override
045    public Logger getParentLogger() throws SQLFeatureNotSupportedException {
046        return ds.getParentLogger();
047    }
048}