org.apache.derby.client.am
Class LogicalConnection

java.lang.Object
  extended by org.apache.derby.client.am.LogicalConnection
All Implemented Interfaces:
java.sql.Connection, java.sql.Wrapper
Direct Known Subclasses:
CachingLogicalConnection, LogicalConnection40

public class LogicalConnection
extends java.lang.Object
implements java.sql.Connection

A simple delegation wrapper handle for a physical connection.

All methods of the Connection interface are forwarded to the underlying physical connection, except for close() and isClosed(). When a physical connection is wrapped, it is non-null, when the logical connection is closed, the wrapped physical connection is always set to null. Both the finalizer and the close-methods will always set the physical connection to null. After the physical connection has been nulled out, only the PooledConnection instance will maintain a handle to the physical connection.


Field Summary
private  LogicalDatabaseMetaData logicalDatabaseMetaData
          Logical database metadata object created on demand and then cached.
(package private)  Connection physicalConnection_
          Underlying physical connection for this logical connection.
private  ClientPooledConnection pooledConnection_
           
 
Fields inherited from interface java.sql.Connection
TRANSACTION_NONE, TRANSACTION_READ_COMMITTED, TRANSACTION_READ_UNCOMMITTED, TRANSACTION_REPEATABLE_READ, TRANSACTION_SERIALIZABLE
 
Constructor Summary
LogicalConnection(Connection physicalConnection, ClientPooledConnection pooledConnection)
           
 
Method Summary
protected  void checkForNullPhysicalConnection()
          Verifies that there is an underlying physical connection for this logical connection.
 void clearWarnings()
           
 void close()
           
 void closeWithoutRecyclingToPool()
           
 void commit()
           
 java.sql.Statement createStatement()
           
 java.sql.Statement createStatement(int resultSetType, int resultSetConcurrency)
           
 java.sql.Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability)
           
protected  void finalize()
           
 boolean getAutoCommit()
           
 java.lang.String getCatalog()
           
 int getHoldability()
           
 java.sql.DatabaseMetaData getMetaData()
          Retrieves a DatabaseMetaData object that contains metadata about the database to which this Connection object represents a connection.
(package private)  java.sql.DatabaseMetaData getRealMetaDataObject()
          Returns the real underlying database metadata object.
 java.lang.String getSchema()
          Get the name of the current schema.
 int getServerVersion()
           
 int getTransactionID()
          Returns the client-side transaction id from am.Connection.
 int getTransactionIsolation()
           
 java.util.Map<java.lang.String,java.lang.Class<?>> getTypeMap()
           
 java.sql.SQLWarning getWarnings()
           
 boolean isClosed()
           
 boolean isReadOnly()
           
 java.lang.String nativeSQL(java.lang.String sql)
           
protected  LogicalDatabaseMetaData newLogicalDatabaseMetaData()
          Returns a newly created logical database metadata object.
(package private)  void notifyException(java.sql.SQLException sqle)
          Notifies listeners about exceptions of session level severity or higher.
 void nullPhysicalConnection()
           
 java.sql.CallableStatement prepareCall(java.lang.String sql)
           
 java.sql.CallableStatement prepareCall(java.lang.String sql, int resultSetType, int resultSetConcurrency)
           
 java.sql.CallableStatement prepareCall(java.lang.String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)
           
 PreparedStatement preparePositionedUpdateStatement(java.lang.String sql, Section querySection)
           
 java.sql.PreparedStatement prepareStatement(java.lang.String sql)
           
 java.sql.PreparedStatement prepareStatement(java.lang.String sql, int autoGeneratedKeys)
           
 java.sql.PreparedStatement prepareStatement(java.lang.String sql, int[] columnIndexes)
           
 java.sql.PreparedStatement prepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency)
           
 java.sql.PreparedStatement prepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)
           
 java.sql.PreparedStatement prepareStatement(java.lang.String sql, java.lang.String[] columnNames)
           
 void releaseSavepoint(java.sql.Savepoint savepoint)
           
 void rollback()
           
 void rollback(java.sql.Savepoint savepoint)
           
 void setAutoCommit(boolean autoCommit)
           
 void setCatalog(java.lang.String catalog)
           
 void setHoldability(int holdability)
           
 void setReadOnly(boolean readOnly)
           
 java.sql.Savepoint setSavepoint()
           
 java.sql.Savepoint setSavepoint(java.lang.String name)
           
 void setSchema(java.lang.String schemaName)
          Set the default schema for the Connection.
 void setTransactionIsolation(int level)
           
 void setTypeMap(java.util.Map map)
           
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.sql.Connection
createArrayOf, createBlob, createClob, createNClob, createSQLXML, createStruct, getClientInfo, getClientInfo, isValid, setClientInfo, setClientInfo
 
Methods inherited from interface java.sql.Wrapper
isWrapperFor, unwrap
 

Field Detail

physicalConnection_

Connection physicalConnection_
Underlying physical connection for this logical connection.

Set to null when this logical connection is closed.


pooledConnection_

private ClientPooledConnection pooledConnection_

logicalDatabaseMetaData

private LogicalDatabaseMetaData logicalDatabaseMetaData
Logical database metadata object created on demand and then cached. The lifetime of the metadata object is the same as this logical connection, in the sense that it will raise exceptions on method invocations after the logical connection has been closed.

Constructor Detail

LogicalConnection

public LogicalConnection(Connection physicalConnection,
                         ClientPooledConnection pooledConnection)
                  throws SqlException
Throws:
SqlException
Method Detail

finalize

protected void finalize()
                 throws java.lang.Throwable
Overrides:
finalize in class java.lang.Object
Throws:
java.lang.Throwable

nullPhysicalConnection

public void nullPhysicalConnection()

close

public void close()
           throws java.sql.SQLException
Specified by:
close in interface java.sql.Connection
Throws:
java.sql.SQLException

closeWithoutRecyclingToPool

public void closeWithoutRecyclingToPool()
                                 throws SqlException
Throws:
SqlException

isClosed

public boolean isClosed()
                 throws java.sql.SQLException
Specified by:
isClosed in interface java.sql.Connection
Throws:
java.sql.SQLException

checkForNullPhysicalConnection

protected final void checkForNullPhysicalConnection()
                                             throws java.sql.SQLException
Verifies that there is an underlying physical connection for this logical connection.

If the physical connection has been nulled out it means that this logical connection has been closed.

Throws:
java.sql.SQLException - if this logical connection has been closed

notifyException

final void notifyException(java.sql.SQLException sqle)
Notifies listeners about exceptions of session level severity or higher.

The exception, even if the severity is sufficiently high, is ignored if the underlying physical connection has been nulled out. Otherwise a connectionErrorOccurred-event is sent to all the registered listeners.

Parameters:
sqle - the cause of the notification

createStatement

public java.sql.Statement createStatement()
                                   throws java.sql.SQLException
Specified by:
createStatement in interface java.sql.Connection
Throws:
java.sql.SQLException

prepareStatement

public java.sql.PreparedStatement prepareStatement(java.lang.String sql)
                                            throws java.sql.SQLException
Specified by:
prepareStatement in interface java.sql.Connection
Throws:
java.sql.SQLException

preparePositionedUpdateStatement

public PreparedStatement preparePositionedUpdateStatement(java.lang.String sql,
                                                          Section querySection)
                                                   throws SqlException
Throws:
SqlException

prepareCall

public java.sql.CallableStatement prepareCall(java.lang.String sql)
                                       throws java.sql.SQLException
Specified by:
prepareCall in interface java.sql.Connection
Throws:
java.sql.SQLException

nativeSQL

public java.lang.String nativeSQL(java.lang.String sql)
                           throws java.sql.SQLException
Specified by:
nativeSQL in interface java.sql.Connection
Throws:
java.sql.SQLException

setAutoCommit

public void setAutoCommit(boolean autoCommit)
                   throws java.sql.SQLException
Specified by:
setAutoCommit in interface java.sql.Connection
Throws:
java.sql.SQLException

getAutoCommit

public boolean getAutoCommit()
                      throws java.sql.SQLException
Specified by:
getAutoCommit in interface java.sql.Connection
Throws:
java.sql.SQLException

commit

public void commit()
            throws java.sql.SQLException
Specified by:
commit in interface java.sql.Connection
Throws:
java.sql.SQLException

rollback

public void rollback()
              throws java.sql.SQLException
Specified by:
rollback in interface java.sql.Connection
Throws:
java.sql.SQLException

setTransactionIsolation

public void setTransactionIsolation(int level)
                             throws java.sql.SQLException
Specified by:
setTransactionIsolation in interface java.sql.Connection
Throws:
java.sql.SQLException

getTransactionIsolation

public int getTransactionIsolation()
                            throws java.sql.SQLException
Specified by:
getTransactionIsolation in interface java.sql.Connection
Throws:
java.sql.SQLException

getWarnings

public java.sql.SQLWarning getWarnings()
                                throws java.sql.SQLException
Specified by:
getWarnings in interface java.sql.Connection
Throws:
java.sql.SQLException

clearWarnings

public void clearWarnings()
                   throws java.sql.SQLException
Specified by:
clearWarnings in interface java.sql.Connection
Throws:
java.sql.SQLException

getMetaData

public java.sql.DatabaseMetaData getMetaData()
                                      throws java.sql.SQLException
Retrieves a DatabaseMetaData object that contains metadata about the database to which this Connection object represents a connection.

The database metadata object is logical in the sense that it has the same lifetime as the logical connection. If the logical connection is closed, the underlying physical connection will not be accessed to obtain metadata, even if it is still open. Also, the reference to the logical connection instead of the underlying physical connection will be returned by LogicalDatabaseMetaData.getConnection().

Specified by:
getMetaData in interface java.sql.Connection
Returns:
A database metadata object.
Throws:
java.sql.SQLException - if an error occurs

newLogicalDatabaseMetaData

protected LogicalDatabaseMetaData newLogicalDatabaseMetaData()
                                                      throws java.sql.SQLException
Returns a newly created logical database metadata object.

Subclasses should override this method to return an instance of the correct implementation class of the logical metadata object.

Returns:
A logical database metadata object.
Throws:
java.sql.SQLException

getRealMetaDataObject

final java.sql.DatabaseMetaData getRealMetaDataObject()
                                               throws java.sql.SQLException
Returns the real underlying database metadata object.

Returns:
The metadata object from the underlying physical connection.
Throws:
java.sql.SQLException - if the logical connection has been closed

setReadOnly

public void setReadOnly(boolean readOnly)
                 throws java.sql.SQLException
Specified by:
setReadOnly in interface java.sql.Connection
Throws:
java.sql.SQLException

isReadOnly

public boolean isReadOnly()
                   throws java.sql.SQLException
Specified by:
isReadOnly in interface java.sql.Connection
Throws:
java.sql.SQLException

setCatalog

public void setCatalog(java.lang.String catalog)
                throws java.sql.SQLException
Specified by:
setCatalog in interface java.sql.Connection
Throws:
java.sql.SQLException

getCatalog

public java.lang.String getCatalog()
                            throws java.sql.SQLException
Specified by:
getCatalog in interface java.sql.Connection
Throws:
java.sql.SQLException

createStatement

public java.sql.Statement createStatement(int resultSetType,
                                          int resultSetConcurrency)
                                   throws java.sql.SQLException
Specified by:
createStatement in interface java.sql.Connection
Throws:
java.sql.SQLException

prepareStatement

public java.sql.PreparedStatement prepareStatement(java.lang.String sql,
                                                   int resultSetType,
                                                   int resultSetConcurrency)
                                            throws java.sql.SQLException
Specified by:
prepareStatement in interface java.sql.Connection
Throws:
java.sql.SQLException

prepareCall

public java.sql.CallableStatement prepareCall(java.lang.String sql,
                                              int resultSetType,
                                              int resultSetConcurrency)
                                       throws java.sql.SQLException
Specified by:
prepareCall in interface java.sql.Connection
Throws:
java.sql.SQLException

getTypeMap

public java.util.Map<java.lang.String,java.lang.Class<?>> getTypeMap()
                                                              throws java.sql.SQLException
Specified by:
getTypeMap in interface java.sql.Connection
Throws:
java.sql.SQLException

setTypeMap

public void setTypeMap(java.util.Map map)
                throws java.sql.SQLException
Specified by:
setTypeMap in interface java.sql.Connection
Throws:
java.sql.SQLException

createStatement

public java.sql.Statement createStatement(int resultSetType,
                                          int resultSetConcurrency,
                                          int resultSetHoldability)
                                   throws java.sql.SQLException
Specified by:
createStatement in interface java.sql.Connection
Throws:
java.sql.SQLException

prepareCall

public java.sql.CallableStatement prepareCall(java.lang.String sql,
                                              int resultSetType,
                                              int resultSetConcurrency,
                                              int resultSetHoldability)
                                       throws java.sql.SQLException
Specified by:
prepareCall in interface java.sql.Connection
Throws:
java.sql.SQLException

prepareStatement

public java.sql.PreparedStatement prepareStatement(java.lang.String sql,
                                                   int resultSetType,
                                                   int resultSetConcurrency,
                                                   int resultSetHoldability)
                                            throws java.sql.SQLException
Specified by:
prepareStatement in interface java.sql.Connection
Throws:
java.sql.SQLException

prepareStatement

public java.sql.PreparedStatement prepareStatement(java.lang.String sql,
                                                   int autoGeneratedKeys)
                                            throws java.sql.SQLException
Specified by:
prepareStatement in interface java.sql.Connection
Throws:
java.sql.SQLException

prepareStatement

public java.sql.PreparedStatement prepareStatement(java.lang.String sql,
                                                   int[] columnIndexes)
                                            throws java.sql.SQLException
Specified by:
prepareStatement in interface java.sql.Connection
Throws:
java.sql.SQLException

prepareStatement

public java.sql.PreparedStatement prepareStatement(java.lang.String sql,
                                                   java.lang.String[] columnNames)
                                            throws java.sql.SQLException
Specified by:
prepareStatement in interface java.sql.Connection
Throws:
java.sql.SQLException

setHoldability

public void setHoldability(int holdability)
                    throws java.sql.SQLException
Specified by:
setHoldability in interface java.sql.Connection
Throws:
java.sql.SQLException

getHoldability

public int getHoldability()
                   throws java.sql.SQLException
Specified by:
getHoldability in interface java.sql.Connection
Throws:
java.sql.SQLException

setSavepoint

public java.sql.Savepoint setSavepoint()
                                throws java.sql.SQLException
Specified by:
setSavepoint in interface java.sql.Connection
Throws:
java.sql.SQLException

setSavepoint

public java.sql.Savepoint setSavepoint(java.lang.String name)
                                throws java.sql.SQLException
Specified by:
setSavepoint in interface java.sql.Connection
Throws:
java.sql.SQLException

rollback

public void rollback(java.sql.Savepoint savepoint)
              throws java.sql.SQLException
Specified by:
rollback in interface java.sql.Connection
Throws:
java.sql.SQLException

releaseSavepoint

public void releaseSavepoint(java.sql.Savepoint savepoint)
                      throws java.sql.SQLException
Specified by:
releaseSavepoint in interface java.sql.Connection
Throws:
java.sql.SQLException

getTransactionID

public int getTransactionID()
Returns the client-side transaction id from am.Connection.

NOTE: This method was added for testing purposes. Avoid use in production code if possible.


getServerVersion

public int getServerVersion()

getSchema

public java.lang.String getSchema()
                           throws java.sql.SQLException
Get the name of the current schema.

Throws:
java.sql.SQLException

setSchema

public void setSchema(java.lang.String schemaName)
               throws java.sql.SQLException
Set the default schema for the Connection.

Throws:
java.sql.SQLException

Built on Wed 2013-06-12 15:21:56+0000, from revision ???

Apache Derby V10.10 Internals - Copyright © 2004,2013 The Apache Software Foundation. All Rights Reserved.