Package org.postgresql.core.v3
Class ConnectionFactoryImpl
- java.lang.Object
-
- org.postgresql.core.ConnectionFactory
-
- org.postgresql.core.v3.ConnectionFactoryImpl
-
public class ConnectionFactoryImpl extends ConnectionFactory
ConnectionFactory implementation for version 3 (7.4+) connections.
-
-
Field Summary
Fields Modifier and Type Field Description private static int
AUTH_REQ_CRYPT
private static int
AUTH_REQ_GSS
private static int
AUTH_REQ_GSS_CONTINUE
private static int
AUTH_REQ_KRB4
private static int
AUTH_REQ_KRB5
private static int
AUTH_REQ_MD5
private static int
AUTH_REQ_OK
private static int
AUTH_REQ_PASSWORD
private static int
AUTH_REQ_SASL
private static int
AUTH_REQ_SASL_CONTINUE
private static int
AUTH_REQ_SASL_FINAL
private static int
AUTH_REQ_SCM
private static int
AUTH_REQ_SSPI
private static java.util.logging.Logger
LOGGER
-
Constructor Summary
Constructors Constructor Description ConnectionFactoryImpl()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static java.lang.String
createPostgresTimeZone()
Convert Java time zone to postgres time zone.private ISSPIClient
createSSPI(PGStream pgStream, java.lang.String spnServiceClass, boolean enableNegotiate)
private void
doAuthentication(PGStream pgStream, java.lang.String host, java.lang.String user, java.util.Properties info)
private PGStream
enableSSL(PGStream pgStream, SslMode sslMode, java.util.Properties info, int connectTimeout)
private java.util.List<java.lang.String[]>
getParametersForStartup(java.lang.String user, java.lang.String database, java.util.Properties info)
private boolean
isPrimary(QueryExecutor queryExecutor)
private static void
log(java.util.logging.Level level, java.lang.String msg, java.lang.Throwable thrown, java.lang.Object... params)
QueryExecutor
openConnectionImpl(HostSpec[] hostSpecs, java.lang.String user, java.lang.String database, java.util.Properties info)
Implementation ofConnectionFactory.openConnection(org.postgresql.util.HostSpec[], java.lang.String, java.lang.String, java.util.Properties)
for a particular protocol version.private void
runInitialQueries(QueryExecutor queryExecutor, java.util.Properties info)
private void
sendStartupPacket(PGStream pgStream, java.util.List<java.lang.String[]> params)
private PGStream
tryConnect(java.lang.String user, java.lang.String database, java.util.Properties info, javax.net.SocketFactory socketFactory, HostSpec hostSpec, SslMode sslMode)
-
Methods inherited from class org.postgresql.core.ConnectionFactory
closeStream, openConnection
-
-
-
-
Field Detail
-
LOGGER
private static final java.util.logging.Logger LOGGER
-
AUTH_REQ_OK
private static final int AUTH_REQ_OK
- See Also:
- Constant Field Values
-
AUTH_REQ_KRB4
private static final int AUTH_REQ_KRB4
- See Also:
- Constant Field Values
-
AUTH_REQ_KRB5
private static final int AUTH_REQ_KRB5
- See Also:
- Constant Field Values
-
AUTH_REQ_PASSWORD
private static final int AUTH_REQ_PASSWORD
- See Also:
- Constant Field Values
-
AUTH_REQ_CRYPT
private static final int AUTH_REQ_CRYPT
- See Also:
- Constant Field Values
-
AUTH_REQ_MD5
private static final int AUTH_REQ_MD5
- See Also:
- Constant Field Values
-
AUTH_REQ_SCM
private static final int AUTH_REQ_SCM
- See Also:
- Constant Field Values
-
AUTH_REQ_GSS
private static final int AUTH_REQ_GSS
- See Also:
- Constant Field Values
-
AUTH_REQ_GSS_CONTINUE
private static final int AUTH_REQ_GSS_CONTINUE
- See Also:
- Constant Field Values
-
AUTH_REQ_SSPI
private static final int AUTH_REQ_SSPI
- See Also:
- Constant Field Values
-
AUTH_REQ_SASL
private static final int AUTH_REQ_SASL
- See Also:
- Constant Field Values
-
AUTH_REQ_SASL_CONTINUE
private static final int AUTH_REQ_SASL_CONTINUE
- See Also:
- Constant Field Values
-
AUTH_REQ_SASL_FINAL
private static final int AUTH_REQ_SASL_FINAL
- See Also:
- Constant Field Values
-
-
Method Detail
-
createSSPI
private ISSPIClient createSSPI(PGStream pgStream, java.lang.String spnServiceClass, boolean enableNegotiate)
-
tryConnect
private PGStream tryConnect(java.lang.String user, java.lang.String database, java.util.Properties info, javax.net.SocketFactory socketFactory, HostSpec hostSpec, SslMode sslMode) throws java.sql.SQLException, java.io.IOException
- Throws:
java.sql.SQLException
java.io.IOException
-
openConnectionImpl
public QueryExecutor openConnectionImpl(HostSpec[] hostSpecs, java.lang.String user, java.lang.String database, java.util.Properties info) throws java.sql.SQLException
Description copied from class:ConnectionFactory
Implementation ofConnectionFactory.openConnection(org.postgresql.util.HostSpec[], java.lang.String, java.lang.String, java.util.Properties)
for a particular protocol version. Implemented by subclasses ofConnectionFactory
.- Specified by:
openConnectionImpl
in classConnectionFactory
- Parameters:
hostSpecs
- at least one host and port to connect to; multiple elements for round-robin failoveruser
- the username to authenticate with; may not be null.database
- the database on the server to connect to; may not be null.info
- extra properties controlling the connection; notably, "password" if present supplies the password to authenticate with.- Returns:
- the new, initialized, connection, or
null
if this protocol version is not supported by the server. - Throws:
java.sql.SQLException
- if the connection could not be established for a reason other than protocol version incompatibility.
-
getParametersForStartup
private java.util.List<java.lang.String[]> getParametersForStartup(java.lang.String user, java.lang.String database, java.util.Properties info)
-
log
private static void log(java.util.logging.Level level, java.lang.String msg, java.lang.Throwable thrown, java.lang.Object... params)
-
createPostgresTimeZone
private static java.lang.String createPostgresTimeZone()
Convert Java time zone to postgres time zone. All others stay the same except that GMT+nn changes to GMT-nn and vise versa.- Returns:
- The current JVM time zone in postgresql format.
-
enableSSL
private PGStream enableSSL(PGStream pgStream, SslMode sslMode, java.util.Properties info, int connectTimeout) throws java.io.IOException, PSQLException
- Throws:
java.io.IOException
PSQLException
-
sendStartupPacket
private void sendStartupPacket(PGStream pgStream, java.util.List<java.lang.String[]> params) throws java.io.IOException
- Throws:
java.io.IOException
-
doAuthentication
private void doAuthentication(PGStream pgStream, java.lang.String host, java.lang.String user, java.util.Properties info) throws java.io.IOException, java.sql.SQLException
- Throws:
java.io.IOException
java.sql.SQLException
-
runInitialQueries
private void runInitialQueries(QueryExecutor queryExecutor, java.util.Properties info) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
isPrimary
private boolean isPrimary(QueryExecutor queryExecutor) throws java.sql.SQLException, java.io.IOException
- Throws:
java.sql.SQLException
java.io.IOException
-
-