org.logicalcobwebs.proxool
Interface ProxyConnectionIF

All Superinterfaces:
java.lang.Comparable, ConnectionInfoIF
All Known Implementing Classes:
ProxyConnection

public interface ProxyConnectionIF
extends ConnectionInfoIF

Contains most of the functionality that we require to manipilate the connection. The subclass of this defines how we delegate to the real connection.

Since:
Proxool 0.7
Version:
$Revision: 1.7 $, $Date: 2005/10/07 08:18:24 $
Author:
bill, $Author: billhorsman $ (current maintainer)

Field Summary
 
Fields inherited from interface org.logicalcobwebs.proxool.ConnectionInfoIF
MARK_FOR_EXPIRY, MARK_FOR_USE, STATUS_ACTIVE, STATUS_AVAILABLE, STATUS_NULL, STATUS_OFFLINE
 
Method Summary
 void close()
          Doesn't really close the connection, just puts it back in the pool.
 java.sql.Connection getConnection()
          The real, delegate connection that we are using
 ConnectionPoolDefinitionIF getDefinition()
           
 java.lang.String getLastSqlCall()
          Get the most recent of all the ConnectionInfoIF.getSqlCalls()
 java.lang.String getReasonForMark()
          Why this connection is marked (for instance, if a thread has marked it for expiry then it's nice to know why)
 boolean isActive()
           
 boolean isAvailable()
           
 boolean isMarkedForExpiry()
          Whether this connection is due for expiry
 boolean isNull()
           
 boolean isOffline()
           
 boolean isReallyClosed()
          Find out if the delegated connection is close.
 void markForExpiry(java.lang.String reason)
          Mark this connection for expiry (destruction) as soon as it stops being active.
 void reallyClose()
          Really close the connection, as opposed to just putting it back in the pool.
 void registerClosedStatement(java.sql.Statement statement)
          Notify that a statement has been closed and won't need closing when the connection is returned to the poo.
 void setRequester(java.lang.String requester)
           
 boolean setStatus(int newStatus)
          Forces the new status regardless of the old state
 boolean setStatus(int oldStatus, int newStatus)
          Changes the status and lets the ConnectionPool know so that it can keep count of how many connections are at each status.
 
Methods inherited from interface org.logicalcobwebs.proxool.ConnectionInfoIF
getAge, getBirthDate, getBirthTime, getDelegateHashcode, getDelegateUrl, getId, getMark, getProxyHashcode, getRequester, getSqlCalls, getStatus, getTimeLastStartActive, getTimeLastStopActive
 
Methods inherited from interface java.lang.Comparable
compareTo
 

Method Detail

setStatus

boolean setStatus(int oldStatus,
                  int newStatus)
Changes the status and lets the ConnectionPool know so that it can keep count of how many connections are at each status. This method obtains a write lock.

Parameters:
oldStatus - the expected existing status. if the existing status is not this value then no change is made and false is returned.
newStatus - the status to change to
Returns:
true if status changed successfully, or false if no change made (because of unexpected existing status).

setStatus

boolean setStatus(int newStatus)
Forces the new status regardless of the old state

Parameters:
newStatus - the status to change to
Returns:
true if status changed successfully, or false if no change made (should always return true)
See Also:
setStatus(int, int)

markForExpiry

void markForExpiry(java.lang.String reason)
Mark this connection for expiry (destruction) as soon as it stops being active.

Parameters:
reason - why we are marking this connection
See Also:
isMarkedForExpiry()

isMarkedForExpiry

boolean isMarkedForExpiry()
Whether this connection is due for expiry

Returns:
true if it is due for expiry
See Also:
markForExpiry(java.lang.String)

getReasonForMark

java.lang.String getReasonForMark()
Why this connection is marked (for instance, if a thread has marked it for expiry then it's nice to know why)

Returns:
reasonForMark

getConnection

java.sql.Connection getConnection()
The real, delegate connection that we are using

Returns:
connection

isNull

boolean isNull()
Returns:
true if the status is null

isAvailable

boolean isAvailable()
Returns:
true if the status is available

isActive

boolean isActive()
Returns:
true if the status is active

isOffline

boolean isOffline()
Returns:
true if the status is offline

reallyClose

void reallyClose()
                 throws java.sql.SQLException
Really close the connection, as opposed to just putting it back in the pool.

Throws:
java.sql.SQLException

setRequester

void setRequester(java.lang.String requester)
See Also:
ConnectionInfoIF.getRequester()

close

void close()
           throws java.sql.SQLException
Doesn't really close the connection, just puts it back in the pool. And tries to reset all the methods that need resetting.

Throws:
java.sql.SQLException
See Also:
Connection.close()

registerClosedStatement

void registerClosedStatement(java.sql.Statement statement)
Notify that a statement has been closed and won't need closing when the connection is returned to the poo.

Parameters:
statement - the statement that has just been closed

isReallyClosed

boolean isReallyClosed()
                       throws java.sql.SQLException
Find out if the delegated connection is close. Just calling isClosed() on the proxied connection will only indicate whether it is in the pool or not.

Returns:
true if the connection is really closed, or if the connection is null
Throws:
java.sql.SQLException - if anything went wrong

getDefinition

ConnectionPoolDefinitionIF getDefinition()

getLastSqlCall

java.lang.String getLastSqlCall()
Get the most recent of all the ConnectionInfoIF.getSqlCalls()

Returns:
the SQL (could be a batch of SQLs)