Package org.firebirdsql.gds.ng
Class AbstractFbAttachment<T extends AbstractConnection<? extends IAttachProperties<?>,? extends FbAttachment>>
- java.lang.Object
-
- org.firebirdsql.gds.ng.AbstractFbAttachment<T>
-
- All Implemented Interfaces:
java.lang.AutoCloseable
,FbAttachment
,ExceptionListenable
- Direct Known Subclasses:
AbstractFbDatabase
,AbstractFbService
public abstract class AbstractFbAttachment<T extends AbstractConnection<? extends IAttachProperties<?>,? extends FbAttachment>> extends java.lang.Object implements FbAttachment
Common behavior forAbstractFbService
andAbstractFbDatabase
.- Since:
- 3.0
- Author:
- Mark Rotteveel
-
-
Field Summary
Fields Modifier and Type Field Description protected T
connection
protected ExceptionListenerDispatcher
exceptionListenerDispatcher
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractFbAttachment(T connection, DatatypeCoder datatypeCoder)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
addExceptionListener(ExceptionListener listener)
Adds an exception listener to this object.protected abstract void
checkConnected()
Checks if the attachment is connected, and throws aSQLException
if it isn't connected.void
forceClose()
Forces the connection to close without proper detach or cleanup.DatatypeCoder
getDatatypeCoder()
Encoding
getEncoding()
IEncodingFactory
getEncodingFactory()
int
getNetworkTimeout()
Gets the current network timeout for this attachment.GDSServerVersion
getServerVersion()
protected org.firebirdsql.gds.ng.ServerVersionInformation
getServerVersionInformation()
boolean
isAttached()
Current attachment status.boolean
isLockedByCurrentThread()
Queries if the lock is held by the current thread.void
removeExceptionListener(ExceptionListener listener)
Removes an exception listener to this object.protected void
safelyDetach()
PerformsFbAttachment.close()
suppressing any exception.protected void
setAttached()
Called when this attachment is attached.protected void
setDetached()
Called when this attachment is detached.protected void
setServerVersion(java.lang.String... versionStrings)
Sets the Firebird version from one or more version string elements.LockCloseable
withLock()
Locks the lock withLock.lock()
(or equivalent).-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.firebirdsql.gds.ng.FbAttachment
attach, close, getHandle, setNetworkTimeout
-
-
-
-
Field Detail
-
exceptionListenerDispatcher
protected final ExceptionListenerDispatcher exceptionListenerDispatcher
-
connection
protected final T extends AbstractConnection<? extends IAttachProperties<?>,? extends FbAttachment> connection
-
-
Constructor Detail
-
AbstractFbAttachment
protected AbstractFbAttachment(T connection, DatatypeCoder datatypeCoder)
-
-
Method Detail
-
withLock
public final LockCloseable withLock()
Description copied from interface:FbAttachment
Locks the lock withLock.lock()
(or equivalent).The returned
LockClosable
can be used to unlock, preferably for use in a try-with-resources.- Specified by:
withLock
in interfaceFbAttachment
- Returns:
- lock closeable which unlocks the lock on close
-
isLockedByCurrentThread
public final boolean isLockedByCurrentThread()
Description copied from interface:FbAttachment
Queries if the lock is held by the current thread.- Specified by:
isLockedByCurrentThread
in interfaceFbAttachment
- Returns:
true
if current thread holds this lock andfalse
otherwise- See Also:
ReentrantLock.isHeldByCurrentThread()
-
forceClose
public void forceClose() throws java.sql.SQLException
Forces the connection to close without proper detach or cleanup.If a given implementation does not support this, then this method should call
FbAttachment.close()
.Default implementation, calls
FbAttachment.close()
- Specified by:
forceClose
in interfaceFbAttachment
- Throws:
java.sql.SQLException
- For problems closing the connection.
-
getServerVersion
public GDSServerVersion getServerVersion()
- Specified by:
getServerVersion
in interfaceFbAttachment
- Returns:
- Firebird version string
-
setServerVersion
protected final void setServerVersion(java.lang.String... versionStrings)
Sets the Firebird version from one or more version string elements.This method should only be called by this instance.
- Parameters:
versionStrings
- Raw version strings
-
getServerVersionInformation
protected org.firebirdsql.gds.ng.ServerVersionInformation getServerVersionInformation()
-
setAttached
protected final void setAttached()
Called when this attachment is attached.Only this
AbstractFbDatabase
instance should call this method.
-
isAttached
public boolean isAttached()
Description copied from interface:FbAttachment
Current attachment status.- Specified by:
isAttached
in interfaceFbAttachment
- Returns:
true
if connected to the server and attached to a database or service,false
otherwise.
-
setDetached
protected final void setDetached()
Called when this attachment is detached.Only this
AbstractFbAttachment
instance should call this method.
-
getEncodingFactory
public final IEncodingFactory getEncodingFactory()
- Specified by:
getEncodingFactory
in interfaceFbAttachment
- Returns:
- The
IEncodingFactory
for this connection
-
getEncoding
public final Encoding getEncoding()
- Specified by:
getEncoding
in interfaceFbAttachment
- Returns:
- The connection encoding (should be the same as returned from calling
IEncodingFactory.getDefaultEncoding()
on the result ofFbAttachment.getEncodingFactory()
).
-
getDatatypeCoder
public final DatatypeCoder getDatatypeCoder()
- Specified by:
getDatatypeCoder
in interfaceFbAttachment
- Returns:
- The
DatatypeCoder
for this database implementation.
-
getNetworkTimeout
public int getNetworkTimeout() throws java.sql.SQLException
Description copied from interface:FbAttachment
Gets the current network timeout for this attachment.- Specified by:
getNetworkTimeout
in interfaceFbAttachment
- Returns:
- Timeout in milliseconds, 0 means no timeout
- Throws:
java.sql.SQLException
- If this attachment is closedjava.sql.SQLFeatureNotSupportedException
- If this attachment doesn't support network timeout
-
addExceptionListener
public final void addExceptionListener(ExceptionListener listener)
Description copied from interface:ExceptionListenable
Adds an exception listener to this object.Implementations use
WeakReference
.- Specified by:
addExceptionListener
in interfaceExceptionListenable
- Parameters:
listener
- Listener to register
-
removeExceptionListener
public final void removeExceptionListener(ExceptionListener listener)
Description copied from interface:ExceptionListenable
Removes an exception listener to this object.- Specified by:
removeExceptionListener
in interfaceExceptionListenable
- Parameters:
listener
- Listener to remove
-
checkConnected
protected abstract void checkConnected() throws java.sql.SQLException
Checks if the attachment is connected, and throws aSQLException
if it isn't connected.- Throws:
java.sql.SQLException
-
safelyDetach
protected final void safelyDetach()
PerformsFbAttachment.close()
suppressing any exception.
-
-