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}