Save This Page
Home » xapool-1.5.0-src » org.enhydra.jdbc » core » [javadoc | source]
    1   /*
    2    * XAPool: Open Source XA JDBC Pool
    3    * Copyright (C) 2003 Objectweb.org
    4    * Initial Developer: Lutris Technologies Inc.
    5    * Contact: xapool-public@lists.debian-sf.objectweb.org
    6    *
    7    * This library is free software; you can redistribute it and/or
    8    * modify it under the terms of the GNU Lesser General Public
    9    * License as published by the Free Software Foundation; either
   10    * version 2.1 of the License, or any later version.
   11    *
   12    * This library is distributed in the hope that it will be useful,
   13    * but WITHOUT ANY WARRANTY; without even the implied warranty of
   14    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   15    * Lesser General Public License for more details.
   16    *
   17    * You should have received a copy of the GNU Lesser General Public
   18    * License along with this library; if not, write to the Free Software
   19    * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
   20    * USA
   21    */
   22   package org.enhydra.jdbc.core;
   23   
   24   import org.enhydra.jdbc.util.JdbcUtil;
   25   
   26   import java.sql.CallableStatement;
   27   import java.sql.Connection;
   28   import java.sql.DatabaseMetaData;
   29   import java.sql.PreparedStatement;
   30   import java.sql.SQLException;
   31   import java.sql.SQLWarning;
   32   import java.sql.Statement;
   33   import java.util.Map;
   34   
   35   /**
   36    * This is an implementation of java.sql.Connection which simply
   37    * delegates everything to an underlying physical implemention
   38    * of the same interface.
   39    */
   40   public abstract class CoreConnection extends JdbcUtil implements Connection {
   41   	public Connection con; // the physical database connection
   42   
   43   	/**
   44   	 * Constructor
   45   	 */
   46   	public CoreConnection(Connection con) {
   47   		this.con = con;
   48   	}
   49   
   50   	public CoreConnection() {
   51   	}
   52   
   53   	public void clearWarnings() throws SQLException {
   54   		preInvoke();
   55   		try {
   56   			con.clearWarnings();
   57   		} catch (SQLException e) {
   58   			catchInvoke(e);
   59   		}
   60   	}
   61   
   62   	public void close() throws SQLException {
   63   		preInvoke();
   64   		try {
   65   			con.close();
   66   		} catch (SQLException e) {
   67   			catchInvoke(e);
   68   		}
   69   	}
   70   
   71   	public void commit() throws SQLException {
   72   		preInvoke();
   73   		try {
   74   			con.commit();
   75   		} catch (SQLException e) {
   76   			catchInvoke(e);
   77   		}
   78   	}
   79   
   80   	public Statement createStatement() throws SQLException {
   81   		preInvoke();
   82   		try {
   83   			return con.createStatement();
   84   		} catch (SQLException e) {
   85   			catchInvoke(e);
   86   		}
   87   		return null;
   88   	}
   89   
   90   	public Statement createStatement(
   91   		int resultSetType,
   92   		int resultSetConcurrency)
   93   		throws SQLException {
   94   		preInvoke();
   95   		try {
   96   			return con.createStatement(resultSetType, resultSetConcurrency);
   97   		} catch (SQLException e) {
   98   			catchInvoke(e);
   99   		}
  100   		return null;
  101   	}
  102   
  103   	public boolean getAutoCommit() throws SQLException {
  104   		preInvoke();
  105   		try {
  106   			return con.getAutoCommit();
  107   		} catch (SQLException e) {
  108   			catchInvoke(e);
  109   		}
  110   		return false;
  111   	}
  112   
  113   	public String getCatalog() throws SQLException {
  114   		preInvoke();
  115   		try {
  116   			return con.getCatalog();
  117   		} catch (SQLException e) {
  118   			catchInvoke(e);
  119   		}
  120   		return null;
  121   	}
  122   
  123   	public DatabaseMetaData getMetaData() throws SQLException {
  124   		preInvoke();
  125   		try {
  126   			return con.getMetaData();
  127   		} catch (SQLException e) {
  128   			catchInvoke(e);
  129   		}
  130   		return null;
  131   	}
  132   
  133   	public int getTransactionIsolation() throws SQLException {
  134   		preInvoke();
  135   		try {
  136   			return con.getTransactionIsolation();
  137   		} catch (SQLException e) {
  138   			catchInvoke(e);
  139   		}
  140   		return 0;
  141   	}
  142   
  143   	public Map getTypeMap() throws SQLException {
  144   		preInvoke();
  145   		try {
  146   			return con.getTypeMap();
  147   		} catch (SQLException e) {
  148   			catchInvoke(e);
  149   		}
  150   		return null;
  151   	}
  152   
  153   	public SQLWarning getWarnings() throws SQLException {
  154   		preInvoke();
  155   		try {
  156   			return con.getWarnings();
  157   		} catch (SQLException e) {
  158   			catchInvoke(e);
  159   		}
  160   		return null;
  161   	}
  162   
  163   	public boolean isReadOnly() throws SQLException {
  164   		preInvoke();
  165   		try {
  166   			return con.isReadOnly();
  167   		} catch (SQLException e) {
  168   			catchInvoke(e);
  169   		}
  170   		return false;
  171   	}
  172   
  173   	public String nativeSQL(String sql) throws SQLException {
  174   		preInvoke();
  175   		try {
  176   			return con.nativeSQL(sql);
  177   		} catch (SQLException e) {
  178   			catchInvoke(e);
  179   		}
  180   		return null;
  181   	}
  182   
  183   	public CallableStatement prepareCall(String sql) throws SQLException {
  184   		preInvoke();
  185   		try {
  186   			return con.prepareCall(sql);
  187   		} catch (SQLException e) {
  188   			catchInvoke(e);
  189   		}
  190   		return null;
  191   	}
  192   
  193   	public PreparedStatement prepareStatement(String sql) throws SQLException {
  194   		preInvoke();
  195   		try {
  196   			return con.prepareStatement(sql);
  197   		} catch (SQLException e) {
  198   			catchInvoke(e);
  199   		}
  200   		return null;
  201   	}
  202   
  203   	public PreparedStatement prepareStatement(
  204   		String sql,
  205   		int resultSetType,
  206   		int resultSetConcurrency)
  207   		throws SQLException {
  208   		preInvoke();
  209   		try {
  210   			return con.prepareStatement(
  211   				sql,
  212   				resultSetType,
  213   				resultSetConcurrency);
  214   		} catch (SQLException e) {
  215   			catchInvoke(e);
  216   		}
  217   		return null;
  218   	}
  219   
  220   	public void rollback() throws SQLException {
  221   		preInvoke();
  222   		try {
  223   			con.rollback();
  224   		} catch (SQLException e) {
  225   			catchInvoke(e);
  226   		}
  227   	}
  228   
  229   	public void setAutoCommit(boolean autoCommit) throws SQLException {
  230   		log.debug("CoreConnection:Setautocommit autoCommit was = " + con.getAutoCommit());
  231   		log.debug("CoreConnection:Setautocommit = " + autoCommit);
  232   		preInvoke();
  233   		try {
  234   			con.setAutoCommit(autoCommit);
  235   		} catch (SQLException e) {
  236   			catchInvoke(e);
  237   		}
  238   	}
  239   
  240   	public void setCatalog(String catalog) throws SQLException {
  241   		preInvoke();
  242   		try {
  243   			con.setCatalog(catalog);
  244   		} catch (SQLException e) {
  245   			catchInvoke(e);
  246   		}
  247   	}
  248   
  249   	public void setReadOnly(boolean readOnly) throws SQLException {
  250   		preInvoke();
  251   		try {
  252   			con.setReadOnly(readOnly);
  253   		} catch (SQLException e) {
  254   			catchInvoke(e);
  255   		}
  256   	}
  257   
  258   	public void setTransactionIsolation(int level) throws SQLException {
  259   		preInvoke();
  260   		try {
  261   			con.setTransactionIsolation(level);
  262   		} catch (SQLException e) {
  263   			catchInvoke(e);
  264   		}
  265   	}
  266   
  267   	public void setTypeMap(Map map) throws SQLException {
  268   		preInvoke();
  269   		try {
  270   			con.setTypeMap(map);
  271   		} catch (SQLException e) {
  272   			catchInvoke(e);
  273   		}
  274   	}
  275   
  276   	/*
  277   	* Add those following methods to compile on JDK 1.4.
  278   	* Instead those methods are defined in the java.sql.Connection interface
  279   	* only since JDK 1.4.
  280   	*/
  281   	public Statement createStatement(
  282   		int resultSetType,
  283   		int resultSetConcurrency,
  284   		int resultSetHoldability)
  285   		throws SQLException {
  286   		preInvoke();
  287   		try {
  288            return con.createStatement(resultSetType,resultSetConcurrency,resultSetHoldability);
  289   		} catch (SQLException e) {
  290   			catchInvoke(e);
  291   		}
  292         return null;
  293   	}
  294   	public int getHoldability() throws SQLException {
  295   		preInvoke();
  296   		try {
  297   			return con.getHoldability();
  298   		} catch (SQLException e) {
  299   			catchInvoke(e);
  300   		}
  301         return 0;
  302   	}
  303   	public CallableStatement prepareCall(
  304   		String sql,
  305   		int resultSetType,
  306   		int resultSetConcurrency,
  307   		int resultSetHoldability)
  308   		throws SQLException {
  309   		preInvoke();
  310   		try {
  311            return con.prepareCall(sql,resultSetType,resultSetConcurrency,resultSetHoldability);
  312   		} catch (SQLException e) {
  313   			catchInvoke(e);
  314   		}
  315         return null;
  316   	}
  317   	public PreparedStatement prepareStatement(
  318   		String sql,
  319   		int autoGeneratedKeys)
  320   		throws SQLException {
  321   		preInvoke();
  322   		try {
  323   			return con.prepareStatement(sql,autoGeneratedKeys);
  324   		} catch (SQLException e) {
  325   			catchInvoke(e);
  326   		}
  327         return null;
  328   	}
  329   	public PreparedStatement prepareStatement(
  330   		String sql,
  331   		int resultSetType,
  332   		int resultSetConcurrency,
  333   		int resultSetHoldability)
  334   		throws SQLException {
  335         preInvoke();
  336   		try {
  337            return prepareStatement(sql,resultSetType,resultSetConcurrency,resultSetHoldability);
  338   		} catch (SQLException e) {
  339   			catchInvoke(e);
  340   		}
  341         return null;
  342   	}
  343   	public PreparedStatement prepareStatement(String sql, int[] columnIndexes)
  344   		throws SQLException {
  345   		preInvoke();
  346   		try {
  347            return con.prepareStatement(sql,columnIndexes);
  348   		} catch (SQLException e) {
  349   			catchInvoke(e);
  350   		}
  351         return null;
  352   	}
  353   	public PreparedStatement prepareStatement(String sql, String[] columnNames)
  354   		throws SQLException {
  355   		preInvoke();
  356   		try {
  357            return con.prepareStatement(sql,columnNames);
  358   		} catch (SQLException e) {
  359   			catchInvoke(e);
  360   		}
  361         return null;
  362   	}
  363   	public void releaseSavepoint(java.sql.Savepoint savepoint)
  364   		throws SQLException {
  365   		preInvoke();
  366   		try {
  367            con.releaseSavepoint(savepoint);
  368   		} catch (SQLException e) {
  369   			catchInvoke(e);
  370   		}
  371            
  372   	}
  373   	public void rollback(java.sql.Savepoint savepoint) throws SQLException {
  374   		preInvoke();
  375   		try {
  376            con.rollback(savepoint);
  377   		} catch (SQLException e) {
  378   			catchInvoke(e);
  379   		}
  380   	}
  381   	public void setHoldability(int holdability) throws SQLException {
  382   		preInvoke();
  383   		try {
  384            con.setHoldability(holdability);
  385   		} catch (SQLException e) {
  386   			catchInvoke(e);
  387   		}
  388         
  389   	}
  390   	public java.sql.Savepoint setSavepoint() throws SQLException {
  391   		preInvoke();
  392   		try {
  393            return con.setSavepoint();
  394   		} catch (SQLException e) {
  395   			catchInvoke(e);
  396   		}
  397         return null;
  398   	}
  399   	public java.sql.Savepoint setSavepoint(String name) throws SQLException {
  400   		preInvoke();
  401   		try {
  402            return con.setSavepoint(name);
  403   		} catch (SQLException e) {
  404   			catchInvoke(e);
  405   		}
  406         return null;
  407   	}
  408   
  409   	/**
  410   	 * Methods used to do some works before and during the catch
  411   	 * clause, to prevent the pool that a connection is broken.
  412   	 */
  413   	abstract public void preInvoke() throws SQLException;
  414   	abstract public void catchInvoke(SQLException e) throws SQLException;
  415   
  416   }

Save This Page
Home » xapool-1.5.0-src » org.enhydra.jdbc » core » [javadoc | source]