diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/DDC.java b/src/main/java/com/microsoft/sqlserver/jdbc/DDC.java
index 8c88d4e76..abf2d7411 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/DDC.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/DDC.java
@@ -201,7 +201,7 @@ static final Object convertLongToObject(long longVal, JDBCType jdbcType, SSType
* @return the byte array containing the big-endian encoded value.
*/
static final byte[] convertIntToBytes(int intValue, int valueLength) {
- byte bytes[] = new byte[valueLength];
+ byte[] bytes = new byte[valueLength];
for (int i = valueLength; i-- > 0;) {
bytes[i] = (byte) (intValue & 0xFF);
intValue >>= 8;
@@ -258,7 +258,7 @@ static final Object convertFloatToObject(float floatVal, JDBCType jdbcType, Stre
* @return the byte array containing the big-endian encoded value.
*/
static final byte[] convertLongToBytes(long longValue) {
- byte bytes[] = new byte[8];
+ byte[] bytes = new byte[8];
for (int i = 8; i-- > 0;) {
bytes[i] = (byte) (longValue & 0xFF);
longValue >>= 8;
@@ -564,7 +564,7 @@ static final Object convertStringToObject(String stringVal, Charset charset, JDB
return parseStringIntoLDT(stringVal.trim());
case DATE:
return java.sql.Date.valueOf(getDatePart(stringVal.trim()));
- case TIME: {
+ case TIME:
// Accepted character formats for conversion to java.sql.Time are:
// hh:mm:ss[.nnnnnnnnn]
// YYYY-MM-DD hh:mm:ss[.nnnnnnnnn]
@@ -582,7 +582,6 @@ static final Object convertStringToObject(String stringVal, Charset charset, JDB
cal.add(Calendar.MILLISECOND, 1);
cal.set(TDS.BASE_YEAR_1970, Calendar.JANUARY, 1);
return new java.sql.Time(cal.getTimeInMillis());
- }
case BINARY:
return stringVal.getBytes(charset);
@@ -924,7 +923,7 @@ static final Object convertTemporalToObject(JDBCType jdbcType, SSType ssType, Ca
// Set the calendar value according to the specified local time zone and constituent
// date (days since base date) and time (ticks since midnight) parts.
switch (ssType) {
- case TIME: {
+ case TIME:
// Set the calendar to the specified value. Lenient calendar behavior will update
// individual fields according to standard Gregorian leap year rules, which are sufficient
// for all TIME values.
@@ -940,11 +939,10 @@ static final Object convertTemporalToObject(JDBCType jdbcType, SSType ssType, Ca
subSecondNanos = (int) (ticksSinceMidnight % Nanos.PER_SECOND);
break;
- }
case DATE:
case DATETIME2:
- case DATETIMEOFFSET: {
+ case DATETIMEOFFSET:
// For dates after the standard Julian-Gregorian calendar change date,
// the calendar value can be accurately set using a straightforward
// (and measurably better performing) assignment.
@@ -1012,10 +1010,8 @@ static final Object convertTemporalToObject(JDBCType jdbcType, SSType ssType, Ca
subSecondNanos = (int) (ticksSinceMidnight % Nanos.PER_SECOND);
break;
- }
case DATETIME: // and SMALLDATETIME
- {
// For Yukon (and earlier) data types DATETIME and SMALLDATETIME, there is no need to
// change the Gregorian cutover because the earliest representable value (1/1/1753)
// is after the historically standard cutover date (10/15/1582).
@@ -1030,7 +1026,6 @@ static final Object convertTemporalToObject(JDBCType jdbcType, SSType ssType, Ca
subSecondNanos = (int) ((ticksSinceMidnight * Nanos.PER_MILLISECOND) % Nanos.PER_SECOND);
break;
- }
default:
MessageFormat form = new MessageFormat(
@@ -1043,9 +1038,9 @@ static final Object convertTemporalToObject(JDBCType jdbcType, SSType ssType, Ca
// Convert the calendar value (in local time) to the desired Java object type.
switch (jdbcType.category) {
case BINARY:
- case SQL_VARIANT: {
+ case SQL_VARIANT:
switch (ssType) {
- case DATE: {
+ case DATE:
// Per JDBC spec, the time part of java.sql.Date values is initialized to midnight
// in the specified local time zone.
cal.set(Calendar.HOUR_OF_DAY, 0);
@@ -1053,14 +1048,12 @@ static final Object convertTemporalToObject(JDBCType jdbcType, SSType ssType, Ca
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return new java.sql.Date(cal.getTimeInMillis());
- }
case DATETIME:
- case DATETIME2: {
+ case DATETIME2:
java.sql.Timestamp ts = new java.sql.Timestamp(cal.getTimeInMillis());
ts.setNanos(subSecondNanos);
return ts;
- }
case DATETIMEOFFSET: {
// Per driver spec, conversion to DateTimeOffset is only supported from
@@ -1074,12 +1067,12 @@ static final Object convertTemporalToObject(JDBCType jdbcType, SSType ssType, Ca
// milliseconds precision results in no loss of precision.
assert 0 == localMillisOffset % (60 * 1000);
- java.sql.Timestamp ts = new java.sql.Timestamp(cal.getTimeInMillis());
- ts.setNanos(subSecondNanos);
- return microsoft.sql.DateTimeOffset.valueOf(ts, localMillisOffset / (60 * 1000));
+ java.sql.Timestamp ts1 = new java.sql.Timestamp(cal.getTimeInMillis());
+ ts1.setNanos(subSecondNanos);
+ return microsoft.sql.DateTimeOffset.valueOf(ts1, localMillisOffset / (60 * 1000));
}
- case TIME: {
+ case TIME:
// Per driver spec, values of sql server data types types (including TIME) which have greater
// than millisecond precision are rounded, not truncated, to the nearest millisecond when
// converting to java.sql.Time. Since the milliseconds value in the calendar is truncated,
@@ -1094,7 +1087,6 @@ static final Object convertTemporalToObject(JDBCType jdbcType, SSType ssType, Ca
cal.set(TDS.BASE_YEAR_1970, Calendar.JANUARY, 1);
return new java.sql.Time(cal.getTimeInMillis());
- }
default:
MessageFormat form = new MessageFormat(
@@ -1102,9 +1094,8 @@ static final Object convertTemporalToObject(JDBCType jdbcType, SSType ssType, Ca
throw new SQLServerException(form.format(new Object[] {ssType.name(), jdbcType}), null, 0,
null);
}
- }
- case DATE: {
+ case DATE:
// Per JDBC spec, the time part of java.sql.Date values is initialized to midnight
// in the specified local time zone.
cal.set(Calendar.HOUR_OF_DAY, 0);
@@ -1112,9 +1103,8 @@ static final Object convertTemporalToObject(JDBCType jdbcType, SSType ssType, Ca
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return new java.sql.Date(cal.getTimeInMillis());
- }
- case TIME: {
+ case TIME:
// Per driver spec, values of sql server data types types (including TIME) which have greater
// than millisecond precision are rounded, not truncated, to the nearest millisecond when
// converting to java.sql.Time. Since the milliseconds value in the calendar is truncated,
@@ -1129,18 +1119,16 @@ static final Object convertTemporalToObject(JDBCType jdbcType, SSType ssType, Ca
cal.set(TDS.BASE_YEAR_1970, Calendar.JANUARY, 1);
return new java.sql.Time(cal.getTimeInMillis());
- }
- case TIMESTAMP: {
- java.sql.Timestamp ts = new java.sql.Timestamp(cal.getTimeInMillis());
- ts.setNanos(subSecondNanos);
+ case TIMESTAMP:
+ java.sql.Timestamp ts2 = new java.sql.Timestamp(cal.getTimeInMillis());
+ ts2.setNanos(subSecondNanos);
if (jdbcType == JDBCType.LOCALDATETIME) {
- return ts.toLocalDateTime();
+ return ts2.toLocalDateTime();
}
- return ts;
- }
+ return ts2;
- case DATETIMEOFFSET: {
+ case DATETIMEOFFSET:
// Per driver spec, conversion to DateTimeOffset is only supported from
// DATETIMEOFFSET SQL Server values.
assert SSType.DATETIMEOFFSET == ssType;
@@ -1155,26 +1143,22 @@ static final Object convertTemporalToObject(JDBCType jdbcType, SSType ssType, Ca
java.sql.Timestamp ts = new java.sql.Timestamp(cal.getTimeInMillis());
ts.setNanos(subSecondNanos);
return microsoft.sql.DateTimeOffset.valueOf(ts, localMillisOffset / (60 * 1000));
- }
- case CHARACTER: {
+ case CHARACTER:
switch (ssType) {
- case DATE: {
+ case DATE:
return String.format(Locale.US, "%1$tF", // yyyy-mm-dd
cal);
- }
- case TIME: {
+ case TIME:
return String.format(Locale.US, "%1$tT%2$s", // hh:mm:ss[.nnnnnnn]
cal, fractionalSecondsString(subSecondNanos, fractionalSecondsScale));
- }
- case DATETIME2: {
+ case DATETIME2:
return String.format(Locale.US, "%1$tF %1$tT%2$s", // yyyy-mm-dd hh:mm:ss[.nnnnnnn]
cal, fractionalSecondsString(subSecondNanos, fractionalSecondsScale));
- }
- case DATETIMEOFFSET: {
+ case DATETIMEOFFSET:
// The offset part of a DATETIMEOFFSET value is precise only to the minute,
// but TimeZone returns the raw offset as precise to the millisecond.
assert 0 == localMillisOffset % (60 * 1000);
@@ -1186,12 +1170,9 @@ static final Object convertTemporalToObject(JDBCType jdbcType, SSType ssType, Ca
cal, fractionalSecondsString(subSecondNanos, fractionalSecondsScale),
(localMillisOffset >= 0) ? '+' : '-', unsignedMinutesOffset / 60,
unsignedMinutesOffset % 60);
- }
case DATETIME: // and SMALLDATETIME
- {
return (new java.sql.Timestamp(cal.getTimeInMillis())).toString();
- }
default:
MessageFormat form = new MessageFormat(
@@ -1199,7 +1180,6 @@ cal, fractionalSecondsString(subSecondNanos, fractionalSecondsScale),
throw new SQLServerException(form.format(new Object[] {ssType.name(), jdbcType}), null, 0,
null);
}
- }
default:
MessageFormat form = new MessageFormat(
@@ -1219,46 +1199,42 @@ private static Object convertTemporalToObject(JDBCType jdbcType, SSType ssType,
LocalDateTime ldt;
switch (ssType) {
- case TIME: {
+ case TIME:
ldt = LocalDateTime.of(TDS.BASE_LOCAL_DATE_1900, LocalTime.ofNanoOfDay(ticksSinceMidnight));
subSecondNanos = (int) (ticksSinceMidnight % Nanos.PER_SECOND);
break;
- }
case DATE:
case DATETIME2:
- case DATETIMEOFFSET: {
- LocalDate ld = TDS.BASE_LOCAL_DATE.plusDays(daysSinceBaseDate);
+ case DATETIMEOFFSET:
+ LocalDate ld1 = TDS.BASE_LOCAL_DATE.plusDays(daysSinceBaseDate);
// If the target is java.sql.Date or a datetime column is used to hold a timeless date, don't add the time component.
if (ticksSinceMidnight == 0) {
- ldt = LocalDateTime.of(ld, LocalTime.MIN);
+ ldt = LocalDateTime.of(ld1, LocalTime.MIN);
subSecondNanos = 0;
} else {
- ldt = LocalDateTime.of(ld, LocalTime.ofNanoOfDay(ticksSinceMidnight));
+ ldt = LocalDateTime.of(ld1, LocalTime.ofNanoOfDay(ticksSinceMidnight));
subSecondNanos = (int) (ticksSinceMidnight % Nanos.PER_SECOND);
}
break;
- }
case DATETIME: // and SMALLDATETIME
- {
- LocalDate ld = TDS.BASE_LOCAL_DATE_1900.plusDays(daysSinceBaseDate);
+ LocalDate ld2 = TDS.BASE_LOCAL_DATE_1900.plusDays(daysSinceBaseDate);
// If the target is java.sql.Date or a datetime column is used to hold a timeless date, don't add the time component.
if (ticksSinceMidnight == 0) {
- ldt = LocalDateTime.of(ld, LocalTime.MIN);
+ ldt = LocalDateTime.of(ld2, LocalTime.MIN);
subSecondNanos = 0;
} else {
long nanoOfDay = ticksSinceMidnight * Nanos.PER_MILLISECOND;
if (nanoOfDay > LocalTime.MAX.toNanoOfDay()) {
- ldt = LocalDateTime.of(ld, LocalTime.MIN).plusNanos(nanoOfDay);
+ ldt = LocalDateTime.of(ld2, LocalTime.MIN).plusNanos(nanoOfDay);
} else {
- ldt = LocalDateTime.of(ld, LocalTime.ofNanoOfDay(nanoOfDay));
+ ldt = LocalDateTime.of(ld2, LocalTime.ofNanoOfDay(nanoOfDay));
}
subSecondNanos = (int) (nanoOfDay % Nanos.PER_SECOND);
}
break;
- }
default:
MessageFormat form = new MessageFormat(
@@ -1268,27 +1244,24 @@ private static Object convertTemporalToObject(JDBCType jdbcType, SSType ssType,
switch (jdbcType.category) {
case BINARY:
- case SQL_VARIANT: {
+ case SQL_VARIANT:
switch (ssType) {
- case DATE: {
+ case DATE:
return java.sql.Date.valueOf(ldt.toLocalDate());
- }
case DATETIME:
- case DATETIME2: {
+ case DATETIME2:
java.sql.Timestamp ts = java.sql.Timestamp.valueOf(ldt);
ts.setNanos(subSecondNanos);
return ts;
- }
- case TIME: {
+ case TIME:
if (subSecondNanos % Nanos.PER_MILLISECOND >= Nanos.PER_MILLISECOND / 2) {
ldt = ldt.plusNanos(1000000);
}
java.sql.Time t = java.sql.Time.valueOf(ldt.toLocalTime());
t.setTime(t.getTime() + (ldt.getNano() / Nanos.PER_MILLISECOND));
return t;
- }
default:
MessageFormat form = new MessageFormat(
@@ -1296,22 +1269,19 @@ private static Object convertTemporalToObject(JDBCType jdbcType, SSType ssType,
throw new SQLServerException(form.format(new Object[] {ssType.name(), jdbcType}), null, 0,
null);
}
- }
- case DATE: {
+ case DATE:
return java.sql.Date.valueOf(ldt.toLocalDate());
- }
- case TIME: {
+ case TIME:
if (subSecondNanos % Nanos.PER_MILLISECOND >= Nanos.PER_MILLISECOND / 2) {
ldt = ldt.plusNanos(1000000);
}
java.sql.Time t = java.sql.Time.valueOf(ldt.toLocalTime());
t.setTime(t.getTime() + (ldt.getNano() / Nanos.PER_MILLISECOND));
return t;
- }
- case TIMESTAMP: {
+ case TIMESTAMP:
if (jdbcType == JDBCType.LOCALDATETIME) {
return ldt;
}
@@ -1319,30 +1289,24 @@ private static Object convertTemporalToObject(JDBCType jdbcType, SSType ssType,
java.sql.Timestamp ts = java.sql.Timestamp.valueOf(ldt);
ts.setNanos(subSecondNanos);
return ts;
- }
- case CHARACTER: {
+ case CHARACTER:
switch (ssType) {
- case DATE: {
+ case DATE:
return String.format(Locale.US, "%1$tF", // yyyy-mm-dd
java.sql.Timestamp.valueOf(ldt));
- }
- case TIME: {
+ case TIME:
return String.format(Locale.US, "%1$tT%2$s", // hh:mm:ss[.nnnnnnn]
ldt, fractionalSecondsString(subSecondNanos, fractionalSecondsScale));
- }
- case DATETIME2: {
+ case DATETIME2:
return String.format(Locale.US, "%1$tF %1$tT%2$s", // yyyy-mm-dd hh:mm:ss[.nnnnnnn]
java.sql.Timestamp.valueOf(ldt),
fractionalSecondsString(subSecondNanos, fractionalSecondsScale));
- }
case DATETIME: // and SMALLDATETIME
- {
return (java.sql.Timestamp.valueOf(ldt)).toString();
- }
default:
MessageFormat form = new MessageFormat(
@@ -1350,7 +1314,6 @@ private static Object convertTemporalToObject(JDBCType jdbcType, SSType ssType,
throw new SQLServerException(form.format(new Object[] {ssType.name(), jdbcType}), null, 0,
null);
}
- }
default:
MessageFormat form = new MessageFormat(
@@ -1436,7 +1399,7 @@ static String convertReaderToString(Reader reader, int readerLength) throws SQLS
// Set up the buffer into which blocks of characters are read from the Reader. This buffer
// should be no larger than the Reader value's size (if known). For known very large values,
// limit the buffer's size to reduce this function's memory requirements.
- char charArray[] = new char[(DataTypes.UNKNOWN_STREAM_LENGTH != readerLength
+ char[] charArray = new char[(DataTypes.UNKNOWN_STREAM_LENGTH != readerLength
&& readerLength < 4000) ? readerLength : 4000];
// Loop and read characters, chunk into StringBuilder until EOS.
@@ -1529,7 +1492,7 @@ public int read(byte[] b) throws IOException {
}
@Override
- public int read(byte b[], int offset, int maxBytes) throws IOException {
+ public int read(byte[] b, int offset, int maxBytes) throws IOException {
int bytesRead = containedStream.read(b, offset, maxBytes);
if (bytesRead > 0) {
assert offset + bytesRead <= b.length;
@@ -1612,7 +1575,7 @@ public int read(byte[] b) throws IOException {
@Override
public int read(byte b[], int offset, int maxBytes) throws IOException {
- char tempBufferToHoldCharDataForConversion[] = new char[maxBytes];
+ char[] tempBufferToHoldCharDataForConversion = new char[maxBytes];
int charsRead = containedReader.read(tempBufferToHoldCharDataForConversion);
if (charsRead > 0) {
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/DLLException.java b/src/main/java/com/microsoft/sqlserver/jdbc/DLLException.java
index ee7cda940..9e1d9e34c 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/DLLException.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/DLLException.java
@@ -60,15 +60,15 @@ int getErrCode() {
return this.errCode;
}
- String GetParam1() {
+ String getParam1() {
return this.param1;
}
- String GetParam2() {
+ String getParam2() {
return this.param2;
}
- String GetParam3() {
+ String getParam3() {
return this.param3;
}
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/DataTypes.java b/src/main/java/com/microsoft/sqlserver/jdbc/DataTypes.java
index 487705dde..2e8a4a108 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/DataTypes.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/DataTypes.java
@@ -73,7 +73,7 @@ enum TDSType {
private static final int MAXELEMENTS = 256;
private static final TDSType[] VALUES = values();
- private static final TDSType valuesTypes[] = new TDSType[MAXELEMENTS];
+ private static final TDSType[] valuesTypes = new TDSType[MAXELEMENTS];
byte byteValue() {
return (byte) intValue;
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/FailOverInfo.java b/src/main/java/com/microsoft/sqlserver/jdbc/FailOverInfo.java
index e0c769c38..940e5dc97 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/FailOverInfo.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/FailOverInfo.java
@@ -31,7 +31,7 @@ boolean getUseFailoverPartner() {
return useFailoverPartner;
}
- FailoverInfo(String failover, SQLServerConnection con, boolean actualFailoverPartner) {
+ FailoverInfo(String failover, boolean actualFailoverPartner) {
failoverPartner = failover;
useFailoverPartner = actualFailoverPartner;
portNumber = -1; // init to -1 to make sure that the user of this class calls the failover check before getting
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/FailOverMapSingleton.java b/src/main/java/com/microsoft/sqlserver/jdbc/FailOverMapSingleton.java
index 76fb5f5da..85afc11d7 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/FailOverMapSingleton.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/FailOverMapSingleton.java
@@ -56,8 +56,7 @@ static FailoverInfo getFailoverInfo(SQLServerConnection connection, String prima
// failover server name provided
// by the server. The map is only populated if the server sends failover info.
static void putFailoverInfo(SQLServerConnection connection, String primaryServer, String instance, String database,
- FailoverInfo actualFailoverInfo, boolean actualuseFailover,
- String failoverPartner) throws SQLServerException {
+ FailoverInfo actualFailoverInfo, boolean actualuseFailover, String failoverPartner) {
FailoverInfo fo;
LOCK.lock();
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/IOBuffer.java b/src/main/java/com/microsoft/sqlserver/jdbc/IOBuffer.java
index fdb063b13..c27d06d62 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/IOBuffer.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/IOBuffer.java
@@ -1195,7 +1195,7 @@ private int readInternal(byte[] b, int offset, int maxBytes) throws IOException
if (logger.isLoggable(Level.FINER))
logger.finer(super.toString() + " " + e.getMessage());
- logger.finer(toString() + " Reading bytes threw exception:" + e.getMessage());
+ logger.finer(super.toString() + " Reading bytes threw exception:" + e.getMessage());
throw e;
}
}
@@ -1403,7 +1403,7 @@ public int getPort() {
}
@Override
- public int getReceiveBufferSize() throws SocketException {
+ public synchronized int getReceiveBufferSize() throws SocketException {
return tdsChannel.tcpSocket.getReceiveBufferSize();
}
@@ -1418,7 +1418,7 @@ public boolean getReuseAddress() throws SocketException {
}
@Override
- public int getSendBufferSize() throws SocketException {
+ public synchronized int getSendBufferSize() throws SocketException {
return tdsChannel.tcpSocket.getSendBufferSize();
}
@@ -1428,7 +1428,7 @@ public int getSoLinger() throws SocketException {
}
@Override
- public int getSoTimeout() throws SocketException {
+ public synchronized int getSoTimeout() throws SocketException {
return tdsChannel.tcpSocket.getSoTimeout();
}
@@ -1499,19 +1499,19 @@ public void connect(SocketAddress endpoint, int timeout) throws IOException {
// Ignore calls to methods that would otherwise allow the SSL socket
// to directly manipulate the underlying TCP socket
@Override
- public void close() throws IOException {
+ public synchronized void close() throws IOException {
if (logger.isLoggable(Level.FINER))
logger.finer(logContext + " Ignoring close");
}
@Override
- public void setReceiveBufferSize(int size) throws SocketException {
+ public synchronized void setReceiveBufferSize(int size) throws SocketException {
if (logger.isLoggable(Level.FINER))
logger.finer(toString() + " Ignoring setReceiveBufferSize size:" + size);
}
@Override
- public void setSendBufferSize(int size) throws SocketException {
+ public synchronized void setSendBufferSize(int size) throws SocketException {
if (logger.isLoggable(Level.FINER))
logger.finer(toString() + " Ignoring setSendBufferSize size:" + size);
}
@@ -1529,7 +1529,7 @@ public void setSoLinger(boolean on, int linger) throws SocketException {
}
@Override
- public void setSoTimeout(int timeout) throws SocketException {
+ public synchronized void setSoTimeout(int timeout) throws SocketException {
tdsChannel.tcpSocket.setSoTimeout(timeout);
}
@@ -2465,7 +2465,7 @@ Socket findSocket(String hostName, int portNumber, int timeoutInMilliSeconds, bo
if (logger.isLoggable(Level.FINER)) {
StringBuilder loggingString = new StringBuilder(this.toString());
loggingString.append(" Total no of InetAddresses: ");
- loggingString.append(inetAddrs.length);
+ loggingString.append((inetAddrs != null) ? inetAddrs.length : 0);
loggingString.append(". They are: ");
for (InetAddress inetAddr : inetAddrs) {
@@ -2475,7 +2475,7 @@ Socket findSocket(String hostName, int portNumber, int timeoutInMilliSeconds, bo
logger.finer(loggingString.toString());
}
- if (inetAddrs.length > IP_ADDRESS_LIMIT) {
+ if (inetAddrs != null && inetAddrs.length > IP_ADDRESS_LIMIT) {
MessageFormat form = new MessageFormat(
SQLServerException.getErrString("R_ipAddressLimitWithMultiSubnetFailover"));
Object[] msgArgs = {Integer.toString(IP_ADDRESS_LIMIT)};
@@ -2485,7 +2485,7 @@ Socket findSocket(String hostName, int portNumber, int timeoutInMilliSeconds, bo
conn.terminate(SQLServerException.DRIVER_ERROR_UNSUPPORTED_CONFIG, errorStr);
}
- if (inetAddrs.length == 1) {
+ if (inetAddrs != null && inetAddrs.length == 1) {
// Single address so do not start any threads
return getConnectedSocket(inetAddrs[0], portNumber, timeoutInMilliSeconds);
}
@@ -3156,11 +3156,9 @@ public void updateSelectedException(IOException ex, String traceId) {
updatedException = true;
}
- if (updatedException) {
- if (logger.isLoggable(Level.FINER)) {
- logger.finer("The selected exception is updated to the following: ExceptionType:" + ex.getClass()
- + "; ExceptionMessage:" + ex.getMessage() + "; by the following thread:" + traceId);
- }
+ if (updatedException && logger.isLoggable(Level.FINER)) {
+ logger.finer("The selected exception is updated to the following: ExceptionType:" + ex.getClass()
+ + "; ExceptionMessage:" + ex.getMessage() + "; by the following thread:" + traceId);
}
}
@@ -3277,6 +3275,9 @@ private static long nextThreadID() {
*/
final class TDSWriter {
private static Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc.internals.TDS.Writer");
+
+ private static final String UNEXPECTED_SSTYPE = "Unexpected SSType: ";
+
private final String traceID;
final public String toString() {
@@ -3334,9 +3335,6 @@ SharedTimer getSharedTimer() throws SQLServerException {
private int packetNum = 0;
// Bytes for sending decimal/numeric data
- private final static int BYTES4 = 4;
- private final static int BYTES8 = 8;
- private final static int BYTES12 = 12;
private final static int BYTES16 = 16;
public final static int BIGDECIMAL_MAX_LENGTH = 0x11;
@@ -3399,13 +3397,12 @@ void writeMessageHeader() throws SQLServerException {
if ((TDS.PKT_QUERY == tdsMessageType || TDS.PKT_DTC == tdsMessageType || TDS.PKT_RPC == tdsMessageType)) {
boolean includeTraceHeader = false;
int totalHeaderLength = TDS.MESSAGE_HEADER_LENGTH;
- if (TDS.PKT_QUERY == tdsMessageType || TDS.PKT_RPC == tdsMessageType) {
- if (con.isDenaliOrLater() && Util.isActivityTraceOn()
- && !ActivityCorrelator.getCurrent().isSentToServer()) {
- includeTraceHeader = true;
- totalHeaderLength += TDS.TRACE_HEADER_LENGTH;
- }
+ if ((TDS.PKT_QUERY == tdsMessageType || TDS.PKT_RPC == tdsMessageType) && (con.isDenaliOrLater()
+ && Util.isActivityTraceOn() && !ActivityCorrelator.getCurrent().isSentToServer())) {
+ includeTraceHeader = true;
+ totalHeaderLength += TDS.TRACE_HEADER_LENGTH;
}
+
writeInt(totalHeaderLength); // allHeaders.TotalLength (DWORD)
writeInt(TDS.MARS_HEADER_LENGTH); // MARS header length (DWORD)
writeShort((short) 2); // allHeaders.HeaderType(MARS header) (USHORT)
@@ -3638,9 +3635,9 @@ void writeBigDecimal(BigDecimal bigDecimalVal, int srcJdbcType, int precision,
// Byte array to hold all the data and padding bytes.
byte[] bytes = new byte[bLength];
- byte[] valueBytes = DDC.convertBigDecimalToBytes(bigDecimalVal, scale);
+ byte[] val = DDC.convertBigDecimalToBytes(bigDecimalVal, scale);
// removing the precision and scale information from the valueBytes array
- System.arraycopy(valueBytes, 2, bytes, 0, valueBytes.length - 2);
+ System.arraycopy(val, 2, bytes, 0, val.length - 2);
writeBytes(bytes);
}
@@ -3662,8 +3659,8 @@ void writeMoney(BigDecimal moneyVal, int srcJdbcType) throws SQLServerException
bLength = (srcJdbcType == microsoft.sql.Types.MONEY ? 8 : 4);
writeByte((byte) (bLength));
- byte[] valueBytes = DDC.convertMoneyToBytes(moneyVal, bLength);
- writeBytes(valueBytes);
+ byte[] val = DDC.convertMoneyToBytes(moneyVal, bLength);
+ writeBytes(val);
}
/**
@@ -4103,7 +4100,7 @@ void writeBytes(byte[] value, int offset, int length) throws SQLServerException
}
}
- void writeWrappedBytes(byte value[], int valueLength) throws SQLServerException {
+ void writeWrappedBytes(byte[] value, int valueLength) throws SQLServerException {
// This function should only be used to write a value that is longer than
// what remains in the current staging buffer. However, the value must
// be short enough to fit in an empty buffer.
@@ -4170,16 +4167,14 @@ void writeStream(InputStream inputStream, long advertisedLength,
assert DataTypes.UNKNOWN_STREAM_LENGTH == advertisedLength || advertisedLength >= 0;
long actualLength = 0;
- final byte[] streamByteBuffer = new byte[4 * currentPacketSize];
+ final byte[] buff = new byte[4 * currentPacketSize];
int bytesRead = 0;
int bytesToWrite;
do {
// Read in next chunk
- for (bytesToWrite = 0; -1 != bytesRead && bytesToWrite < streamByteBuffer.length;
- bytesToWrite += bytesRead) {
+ for (bytesToWrite = 0; -1 != bytesRead && bytesToWrite < buff.length; bytesToWrite += bytesRead) {
try {
- bytesRead = inputStream.read(streamByteBuffer, bytesToWrite,
- streamByteBuffer.length - bytesToWrite);
+ bytesRead = inputStream.read(buff, bytesToWrite, buff.length - bytesToWrite);
} catch (IOException e) {
MessageFormat form = new MessageFormat(SQLServerException.getErrString("R_errorReadingStream"));
Object[] msgArgs = {e.toString()};
@@ -4190,7 +4185,7 @@ void writeStream(InputStream inputStream, long advertisedLength,
break;
// Check for invalid bytesRead returned from InputStream.read
- if (bytesRead < 0 || bytesRead > streamByteBuffer.length - bytesToWrite) {
+ if (bytesRead < 0 || bytesRead > buff.length - bytesToWrite) {
MessageFormat form = new MessageFormat(SQLServerException.getErrString("R_errorReadingStream"));
Object[] msgArgs = {SQLServerException.getErrString("R_streamReadReturnedInvalidValue")};
error(form.format(msgArgs), SQLState.DATA_EXCEPTION_NOT_SPECIFIC, DriverError.NOT_SET);
@@ -4201,7 +4196,7 @@ void writeStream(InputStream inputStream, long advertisedLength,
if (writeChunkSizes)
writeInt(bytesToWrite);
- writeBytes(streamByteBuffer, 0, bytesToWrite);
+ writeBytes(buff, 0, bytesToWrite);
actualLength += bytesToWrite;
} while (-1 != bytesRead || bytesToWrite > 0);
@@ -4756,8 +4751,8 @@ void writeRPCBigDecimal(String sName, BigDecimal bdValue, int nScale, boolean bO
writeByte((byte) 0x11); // maximum length
writeByte((byte) SQLServerConnection.maxDecimalPrecision); // precision
- byte[] valueBytes = DDC.convertBigDecimalToBytes(bdValue, nScale);
- writeBytes(valueBytes, 0, valueBytes.length);
+ byte[] val = DDC.convertBigDecimalToBytes(bdValue, nScale);
+ writeBytes(val, 0, val.length);
}
/**
@@ -4937,27 +4932,26 @@ void writeTVPRows(TVP value) throws SQLServerException {
// is used, the tdsWriter of the calling preparedStatement is overwritten by the SQLServerResultSet#next()
// method when fetching new rows.
// Therefore, we need to send TVP data row by row before fetching new row.
- if (TVPType.ResultSet == value.tvpType) {
- if ((null != value.sourceResultSet) && (value.sourceResultSet instanceof SQLServerResultSet)) {
- SQLServerResultSet sourceResultSet = (SQLServerResultSet) value.sourceResultSet;
- SQLServerStatement src_stmt = (SQLServerStatement) sourceResultSet.getStatement();
- int resultSetServerCursorId = sourceResultSet.getServerCursorId();
+ if ((TVPType.ResultSet == value.tvpType)
+ && ((null != value.sourceResultSet) && (value.sourceResultSet instanceof SQLServerResultSet))) {
+ SQLServerResultSet sourceResultSet = (SQLServerResultSet) value.sourceResultSet;
+ SQLServerStatement src_stmt = (SQLServerStatement) sourceResultSet.getStatement();
+ int resultSetServerCursorId = sourceResultSet.getServerCursorId();
- if (con.equals(src_stmt.getConnection()) && 0 != resultSetServerCursorId) {
- cachedTVPHeaders = ByteBuffer.allocate(stagingBuffer.capacity()).order(stagingBuffer.order());
- cachedTVPHeaders.put(stagingBuffer.array(), 0, ((Buffer) stagingBuffer).position());
+ if (con.equals(src_stmt.getConnection()) && 0 != resultSetServerCursorId) {
+ cachedTVPHeaders = ByteBuffer.allocate(stagingBuffer.capacity()).order(stagingBuffer.order());
+ cachedTVPHeaders.put(stagingBuffer.array(), 0, ((Buffer) stagingBuffer).position());
- cachedCommand = this.command;
+ cachedCommand = this.command;
- cachedRequestComplete = command.getRequestComplete();
- cachedInterruptsEnabled = command.getInterruptsEnabled();
- cachedProcessedResponse = command.getProcessedResponse();
+ cachedRequestComplete = command.getRequestComplete();
+ cachedInterruptsEnabled = command.getInterruptsEnabled();
+ cachedProcessedResponse = command.getProcessedResponse();
- tdsWritterCached = true;
+ tdsWritterCached = true;
- if (sourceResultSet.isForwardOnly()) {
- sourceResultSet.setFetchSize(1);
- }
+ if (sourceResultSet.isForwardOnly()) {
+ sourceResultSet.setFetchSize(1);
}
}
}
@@ -4995,16 +4989,15 @@ void writeTVPRows(TVP value) throws SQLServerException {
String currentColumnStringValue = null;
Object currentObject = null;
- if (null != rowData) {
- // if rowData has value for the current column, retrieve it. If not, current column will stay
- // null.
- if (rowData.length > currentColumn) {
- currentObject = rowData[currentColumn];
- if (null != currentObject) {
- currentColumnStringValue = String.valueOf(currentObject);
- }
+ // if rowData has value for the current column, retrieve it. If not, current column will stay
+ // null.
+ if ((null != rowData) && (rowData.length > currentColumn)) {
+ currentObject = rowData[currentColumn];
+ if (null != currentObject) {
+ currentColumnStringValue = String.valueOf(currentObject);
}
}
+
writeInternalTVPRowValues(jdbcType, currentColumnStringValue, currentObject, columnPair, false);
currentColumn++;
}
@@ -5122,13 +5115,13 @@ private void writeInternalTVPRowValues(JDBCType jdbcType, String currentColumnSt
*/
bdValue = bdValue.setScale(columnPair.getValue().scale, RoundingMode.HALF_UP);
- byte[] valueBytes = DDC.convertBigDecimalToBytes(bdValue, bdValue.scale());
+ byte[] val = DDC.convertBigDecimalToBytes(bdValue, bdValue.scale());
// 1-byte for sign and 16-byte for integer
byte[] byteValue = new byte[17];
// removing the precision and scale information from the valueBytes array
- System.arraycopy(valueBytes, 2, byteValue, 0, valueBytes.length - 2);
+ System.arraycopy(val, 2, byteValue, 0, val.length - 2);
writeBytes(byteValue);
}
break;
@@ -6028,7 +6021,7 @@ private void writeScaledTemporal(GregorianCalendar cal, int subSecondNanos, int
assert con.isKatmaiOrLater();
assert SSType.DATE == ssType || SSType.TIME == ssType || SSType.DATETIME2 == ssType
- || SSType.DATETIMEOFFSET == ssType : "Unexpected SSType: " + ssType;
+ || SSType.DATETIMEOFFSET == ssType : UNEXPECTED_SSTYPE + ssType;
// First, for types with a time component, write the scaled nanos since midnight
if (SSType.TIME == ssType || SSType.DATETIME2 == ssType || SSType.DATETIMEOFFSET == ssType) {
@@ -6063,8 +6056,7 @@ private void writeScaledTemporal(GregorianCalendar cal, int subSecondNanos, int
}
// If the type is datetime2 or datetimeoffset, truncate only if its the max value supported
else {
- assert SSType.DATETIME2 == ssType || SSType.DATETIMEOFFSET == ssType : "Unexpected SSType: "
- + ssType;
+ assert SSType.DATETIME2 == ssType || SSType.DATETIMEOFFSET == ssType : UNEXPECTED_SSTYPE + ssType;
// ... then bump the date, provided that the resulting date is still within
// the valid date range.
@@ -6164,7 +6156,7 @@ byte[] writeEncryptedScaledTemporal(GregorianCalendar cal, int subSecondNanos, i
assert con.isKatmaiOrLater();
assert SSType.DATE == ssType || SSType.TIME == ssType || SSType.DATETIME2 == ssType
- || SSType.DATETIMEOFFSET == ssType : "Unexpected SSType: " + ssType;
+ || SSType.DATETIMEOFFSET == ssType : UNEXPECTED_SSTYPE + ssType;
// store the time and minutesOffset portion of DATETIME2 and DATETIMEOFFSET to be used with date portion
byte encodedBytesForEncryption[] = null;
@@ -6213,8 +6205,7 @@ byte[] writeEncryptedScaledTemporal(GregorianCalendar cal, int subSecondNanos, i
}
// If the type is datetime2 or datetimeoffset, truncate only if its the max value supported
else {
- assert SSType.DATETIME2 == ssType || SSType.DATETIMEOFFSET == ssType : "Unexpected SSType: "
- + ssType;
+ assert SSType.DATETIME2 == ssType || SSType.DATETIMEOFFSET == ssType : UNEXPECTED_SSTYPE + ssType;
// ... then bump the date, provided that the resulting date is still within
// the valid date range.
@@ -6303,19 +6294,18 @@ byte[] writeEncryptedScaledTemporal(GregorianCalendar cal, int subSecondNanos, i
cipherText = SQLServerSecurityUtility.encryptWithKey(encodedBytes, cryptoMeta, con, statement);
} else if (SSType.DATETIME2 == ssType) {
// for Max value, does not round up, do casting instead.
- if (3652058 == daysIntoCE) { // 9999-12-31
- if (864000000000L == scaledNanos) { // 24:00:00 in nanoseconds
- // does not round up
- scaledNanos = (((long) Nanos.PER_SECOND * secondsSinceMidnight
- + getRoundedSubSecondNanos(subSecondNanos)) / divisor) * divisor / 100;
-
- int encodedLength = TDS.nanosSinceMidnightLength(TDS.MAX_FRACTIONAL_SECONDS_SCALE);
- byte[] encodedNanoBytes = scaledNanosToEncodedBytes(scaledNanos, encodedLength);
-
- // for DATETIME2 sends both date and time part together for encryption
- encodedBytesForEncryption = new byte[encodedLength + 3];
- System.arraycopy(encodedNanoBytes, 0, encodedBytesForEncryption, 0, encodedNanoBytes.length);
- }
+ if ((3652058 == daysIntoCE) && // 9999-12-31
+ (864000000000L == scaledNanos)) { // 24:00:00 in nanoseconds
+ // does not round up
+ scaledNanos = (((long) Nanos.PER_SECOND * secondsSinceMidnight
+ + getRoundedSubSecondNanos(subSecondNanos)) / divisor) * divisor / 100;
+
+ int encodedLength = TDS.nanosSinceMidnightLength(TDS.MAX_FRACTIONAL_SECONDS_SCALE);
+ byte[] encodedNanoBytes = scaledNanosToEncodedBytes(scaledNanos, encodedLength);
+
+ // for DATETIME2 sends both date and time part together for encryption
+ encodedBytesForEncryption = new byte[encodedLength + 3];
+ System.arraycopy(encodedNanoBytes, 0, encodedBytesForEncryption, 0, encodedNanoBytes.length);
}
if (encodedBytesForEncryption == null) {
@@ -6331,19 +6321,18 @@ byte[] writeEncryptedScaledTemporal(GregorianCalendar cal, int subSecondNanos, i
statement);
} else {
// for Max value, does not round up, do casting instead.
- if (3652058 == daysIntoCE) { // 9999-12-31
- if (864000000000L == scaledNanos) { // 24:00:00 in nanoseconds
- // does not round up
- scaledNanos = (((long) Nanos.PER_SECOND * secondsSinceMidnight
- + getRoundedSubSecondNanos(subSecondNanos)) / divisor) * divisor / 100;
-
- int encodedLength = TDS.nanosSinceMidnightLength(TDS.MAX_FRACTIONAL_SECONDS_SCALE);
- byte[] encodedNanoBytes = scaledNanosToEncodedBytes(scaledNanos, encodedLength);
-
- // for DATETIMEOFFSET sends date, time and offset part together for encryption
- encodedBytesForEncryption = new byte[encodedLength + 5];
- System.arraycopy(encodedNanoBytes, 0, encodedBytesForEncryption, 0, encodedNanoBytes.length);
- }
+ if ((3652058 == daysIntoCE) && // 9999-12-31
+ (864000000000L == scaledNanos)) { // 24:00:00 in nanoseconds
+ // does not round up
+ scaledNanos = (((long) Nanos.PER_SECOND * secondsSinceMidnight
+ + getRoundedSubSecondNanos(subSecondNanos)) / divisor) * divisor / 100;
+
+ int encodedLength = TDS.nanosSinceMidnightLength(TDS.MAX_FRACTIONAL_SECONDS_SCALE);
+ byte[] encodedNanoBytes = scaledNanosToEncodedBytes(scaledNanos, encodedLength);
+
+ // for DATETIMEOFFSET sends date, time and offset part together for encryption
+ encodedBytesForEncryption = new byte[encodedLength + 5];
+ System.arraycopy(encodedNanoBytes, 0, encodedBytesForEncryption, 0, encodedNanoBytes.length);
}
if (encodedBytesForEncryption == null) {
@@ -6704,8 +6693,6 @@ final SQLServerConnection getConnection() {
private byte serverSupportedDataClassificationVersion = TDS.DATA_CLASSIFICATION_NOT_ENABLED;
private final Lock lock = new ReentrantLock();
- private ColumnEncryptionVersion columnEncryptionVersion;
-
private final byte valueBytes[] = new byte[256];
protected SensitivityClassification sensitivityClassification;
@@ -6729,7 +6716,6 @@ private static int nextReaderID() {
useColumnEncryption = true;
}
serverSupportsColumnEncryption = con.getServerSupportsColumnEncryption();
- columnEncryptionVersion = con.getServerColumnEncryptionVersion();
serverSupportsDataClassification = con.getServerSupportsDataClassification();
serverSupportedDataClassificationVersion = con.getServerSupportedDataClassificationVersion();
}
@@ -6769,9 +6755,9 @@ final void throwInvalidTDSToken(String tokenName) throws SQLServerException {
* @return true if additional data is available to be read false if no more data is available
*/
private boolean ensurePayload() throws SQLServerException {
- if (payloadOffset == currentPacket.payloadLength)
- if (!nextPacket())
- return false;
+ if ((payloadOffset == currentPacket.payloadLength) && (!nextPacket())) {
+ return false;
+ }
assert payloadOffset < currentPacket.payloadLength;
return true;
}
@@ -6837,16 +6823,16 @@ final boolean readPacket() throws SQLServerException {
+ " should be less than numMsgsSent:" + tdsChannel.numMsgsSent;
TDSPacket newPacket = new TDSPacket(con.getTDSPacketSize());
- if (null != command) {
- // if cancelQueryTimeout is set, we should wait for the total amount of
- // queryTimeout + cancelQueryTimeout to
- // terminate the connection.
- if ((command.getCancelQueryTimeoutSeconds() > 0 && command.getQueryTimeoutSeconds() > 0)) {
- // if a timeout is configured with this object, add it to the timeout poller
- int seconds = command.getCancelQueryTimeoutSeconds() + command.getQueryTimeoutSeconds();
- this.timeout = con.getSharedTimer().schedule(new TDSTimeoutTask(command, con), seconds);
- }
+ if ((null != command) &&
+ // if cancelQueryTimeout is set, we should wait for the total amount of
+ // queryTimeout + cancelQueryTimeout to
+ // terminate the connection.
+ (command.getCancelQueryTimeoutSeconds() > 0 && command.getQueryTimeoutSeconds() > 0)) {
+ // if a timeout is configured with this object, add it to the timeout poller
+ int seconds = command.getCancelQueryTimeoutSeconds() + command.getQueryTimeoutSeconds();
+ this.timeout = con.getSharedTimer().schedule(new TDSTimeoutTask(command, con), seconds);
}
+
// First, read the packet header.
for (int headerBytesRead = 0; headerBytesRead < TDS.PACKET_HEADER_SIZE;) {
int bytesRead = tdsChannel.read(newPacket.header, headerBytesRead,
@@ -8148,6 +8134,7 @@ abstract class UninterruptableTDSCommand extends TDSCommand {
super(logContext, 0, 0);
}
+ @Override
final void interrupt(String reason) throws SQLServerException {
// Interrupting an uninterruptable command is a no-op. That is,
// it can happen, but it should have no effect.
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/ISQLServerBulkRecord.java b/src/main/java/com/microsoft/sqlserver/jdbc/ISQLServerBulkRecord.java
index cf707146d..6614de233 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/ISQLServerBulkRecord.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/ISQLServerBulkRecord.java
@@ -17,7 +17,7 @@
* @deprecated as of 8.1.0, because the interface contains methods which are not called as part of actual bulk copy
* process. Use {@link ISQLServerBulkData}} instead.
*/
-@Deprecated
+@Deprecated(since = "8.1.0")
public interface ISQLServerBulkRecord extends ISQLServerBulkData {
/**
* Returns whether the column represents an identity column.
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/ISQLServerCallableStatement.java b/src/main/java/com/microsoft/sqlserver/jdbc/ISQLServerCallableStatement.java
index 87517e663..ab6d2e324 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/ISQLServerCallableStatement.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/ISQLServerCallableStatement.java
@@ -27,8 +27,10 @@ public interface ISQLServerCallableStatement extends java.sql.CallableStatement,
* @return the column value; if the value is SQL NULL, the value returned is null
* @throws SQLServerException
* when an error occurs
+ *
+ * @deprecated
*/
- @Deprecated
+ @Deprecated(since = "6.5.4")
BigDecimal getBigDecimal(String parameterName, int scale) throws SQLServerException;
/**
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/ISQLServerConnection.java b/src/main/java/com/microsoft/sqlserver/jdbc/ISQLServerConnection.java
index 743ccdc65..e94e8572c 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/ISQLServerConnection.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/ISQLServerConnection.java
@@ -409,21 +409,22 @@ CallableStatement prepareCall(String sql, int nType, int nConcur, int nHold,
String getIPAddressPreference();
/**
- * Deprecated. Time-to-live is no longer supported for the cached Managed Identity tokens.
* This method will always return 0 and is for backwards compatibility only.
*
* @return Method will always return 0.
+ * @deprecated Time-to-live is no longer supported for the cached Managed Identity tokens.
*/
- @Deprecated
+ @Deprecated(since = "12.1.0", forRemoval = true)
int getMsiTokenCacheTtl();
/**
- * Deprecated. Time-to-live is no longer supported for the cached Managed Identity tokens.
+ * Time-to-live is no longer supported for the cached Managed Identity tokens.
* This method is a no-op for backwards compatibility only.
*
* @param timeToLive
* Time-to-live is no longer supported.
+ * @deprecated Time-to-live is no longer supported for the cached Managed Identity tokens.
*/
- @Deprecated
+ @Deprecated(since = "12.1.0", forRemoval = true)
void setMsiTokenCacheTtl(int timeToLive);
}
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/ISQLServerDataSource.java b/src/main/java/com/microsoft/sqlserver/jdbc/ISQLServerDataSource.java
index a9ba172d6..63ef16c13 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/ISQLServerDataSource.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/ISQLServerDataSource.java
@@ -111,11 +111,11 @@ public interface ISQLServerDataSource extends javax.sql.CommonDataSource {
/**
* Sets the option whether TLS encryption is used.
*
- * @deprecated Use {@link ISQLServerDataSource#setEncrypt(String encryptOption)} instead
* @param encryptOption
* TLS encrypt option. Default is true
+ * @deprecated Use {@link ISQLServerDataSource#setEncrypt(String encryptOption)} instead
*/
- @Deprecated
+ @Deprecated(since = "10.1.0", forRemoval = true)
void setEncrypt(boolean encryptOption);
/**
@@ -788,22 +788,23 @@ public interface ISQLServerDataSource extends javax.sql.CommonDataSource {
* Sets the login configuration file for Kerberos authentication. This overrides the default configuration
* SQLJDBCDriver
*
- * @deprecated Use {@link ISQLServerDataSource#setJAASConfigurationName(String configurationName)} instead
- *
* @param configurationName
* the configuration name
+ * @deprecated Use {@link ISQLServerDataSource#setJAASConfigurationName(String configurationName)} instead
+ *
*/
- @Deprecated
+ @Deprecated(since = "9.3.0", forRemoval = true)
void setJASSConfigurationName(String configurationName);
/**
* Returns the login configuration file for Kerberos authentication.
+ *
*
+ * @return login configuration file name
* @deprecated Use {@link ISQLServerDataSource#getJAASConfigurationName()} instead
*
- * @return login configuration file name
*/
- @Deprecated
+ @Deprecated(since = "9.3.0", forRemoval = true)
String getJASSConfigurationName();
/**
@@ -932,24 +933,23 @@ public interface ISQLServerDataSource extends javax.sql.CommonDataSource {
void setUseBulkCopyForBatchInsert(boolean useBulkCopyForBatchInsert);
/**
- * This method is deprecated. Use {@link ISQLServerDataSource#setUser(String user)} instead.
- *
* Sets the client id to be used to retrieve the access token for a user-assigned Managed Identity.
*
* @param managedIdentityClientId
* Client ID of the user-assigned Managed Identity.
+ * @deprecated Use {@link ISQLServerDataSource#setUser(String user)} instead.
*/
- @Deprecated
+ @Deprecated(since = "12.1.0", forRemoval = true)
void setMSIClientId(String managedIdentityClientId);
/**
- * This method is deprecated. Use {@link ISQLServerDataSource#getUser()} instead.
- *
* Returns the value for the connection property 'msiClientId'.
*
* @return msiClientId property value
+ *
+ * @deprecated Use {@link ISQLServerDataSource#getUser()} instead.
*/
- @Deprecated
+ @Deprecated(since = "12.1.0", forRemoval = true)
String getMSIClientId();
/**
@@ -1123,34 +1123,35 @@ public interface ISQLServerDataSource extends javax.sql.CommonDataSource {
void setSendTemporalDataTypesAsStringForBulkCopy(boolean sendTemporalDataTypesAsStringForBulkCopy);
/**
+ *
* Returns the value for the connection property 'AADSecurePrincipalId'.
*
- * @deprecated Use {@link ISQLServerDataSource#getUser()} instead
- *
* @return 'AADSecurePrincipalId' property value.
+ * @deprecated Use {@link ISQLServerDataSource#getUser()} instead
*/
- @Deprecated
+ @Deprecated(since = "9.4.1", forRemoval = true)
String getAADSecurePrincipalId();
/**
+ *
* Sets the 'AADSecurePrincipalId' connection property used for Active Directory Service Principal authentication.
*
- * @deprecated Use {@link ISQLServerDataSource#setUser(String user)} instead
* @param AADSecurePrincipalId
* Active Directory Service Principal Id.
+ * @deprecated Use {@link ISQLServerDataSource#setUser(String user)} instead
*/
- @Deprecated
+ @Deprecated(since = "9.4.1", forRemoval = true)
void setAADSecurePrincipalId(String AADSecurePrincipalId);
/**
* Sets the 'AADSecurePrincipalSecret' connection property used for Active Directory Service Principal
* authentication.
*
- * @deprecated Use {@link ISQLServerDataSource#setPassword(String password)} instead
* @param AADSecurePrincipalSecret
* Active Directory Service Principal secret.
+ * @deprecated Use {@link ISQLServerDataSource#setPassword(String password)} instead
*/
- @Deprecated
+ @Deprecated(since = "9.4.1", forRemoval = true)
void setAADSecurePrincipalSecret(String AADSecurePrincipalSecret);
/**
@@ -1214,22 +1215,26 @@ public interface ISQLServerDataSource extends javax.sql.CommonDataSource {
String getPrepareMethod();
/**
- * Deprecated. Time-to-live is no longer supported for the cached Managed Identity tokens.
+ * Time-to-live is no longer supported for the cached Managed Identity tokens.
* This method is a no-op for backwards compatibility only.
*
* @param timeToLive
* Time-to-live is no longer supported.
+ *
+ * @deprecated
*/
- @Deprecated
+ @Deprecated(since = "12.1.0", forRemoval = true)
void setMsiTokenCacheTtl(int timeToLive);
/**
- * Deprecated. Time-to-live is no longer supported for the cached Managed Identity tokens.
+ * Time-to-live is no longer supported for the cached Managed Identity tokens.
* This method will always return 0 and is for backwards compatibility only.
*
* @return Method will always return 0.
+ *
+ * @deprecated
*/
- @Deprecated
+ @Deprecated(since = "12.1.0", forRemoval = true)
int getMsiTokenCacheTtl();
/**
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/ISQLServerEnclaveProvider.java b/src/main/java/com/microsoft/sqlserver/jdbc/ISQLServerEnclaveProvider.java
index 6d57abb1c..e5d707a7f 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/ISQLServerEnclaveProvider.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/ISQLServerEnclaveProvider.java
@@ -78,9 +78,10 @@ default byte[] getEnclavePackage(String userSQL, ArrayList enclaveCEKs)
}
enclaveCEKs.clear();
SQLServerAeadAes256CbcHmac256EncryptionKey encryptedKey = new SQLServerAeadAes256CbcHmac256EncryptionKey(
- enclaveSession.getSessionSecret(), SQLServerAeadAes256CbcHmac256Algorithm.algorithmName);
+ enclaveSession.getSessionSecret(),
+ SQLServerAeadAes256CbcHmac256Algorithm.AEAD_AES_256_CBC_HMAC_SHA256);
SQLServerAeadAes256CbcHmac256Algorithm algo = new SQLServerAeadAes256CbcHmac256Algorithm(encryptedKey,
- SQLServerEncryptionType.Randomized, (byte) 0x1);
+ SQLServerEncryptionType.RANDOMIZED, (byte) 0x1);
enclavePackage.write(algo.encryptData(keys.toByteArray()));
return enclavePackage.toByteArray();
} catch (GeneralSecurityException | SQLServerException | IOException e) {
@@ -252,7 +253,7 @@ default void processSDPEv1(String userSql, String preparedTypeDefinitions, Param
}
SQLServerEncryptionType encType = SQLServerEncryptionType
.of((byte) rs2.getInt(DescribeParameterEncryptionResultSet2.COLUMNENCRYPTIONTYPE.value()));
- if (SQLServerEncryptionType.PlainText != encType) {
+ if (SQLServerEncryptionType.PLAINTEXT != encType) {
params[paramIndex].cryptoMeta = new CryptoMetadata(cekEntry, (short) cekOrdinal,
(byte) rs2.getInt(DescribeParameterEncryptionResultSet2.COLUMNENCRYPTIONALGORITHM.value()),
null, encType.value,
@@ -439,11 +440,11 @@ void validateDHPublicKey() throws SQLServerException, GeneralSecurityException {
ByteBuffer enclavePKBuffer = ByteBuffer.wrap(enclavePK).order(ByteOrder.LITTLE_ENDIAN);
byte[] rsa1 = new byte[4];
enclavePKBuffer.get(rsa1);
- int bitCount = enclavePKBuffer.getInt();
+ // bit count unused
int publicExponentLength = enclavePKBuffer.getInt();
int publicModulusLength = enclavePKBuffer.getInt();
- int prime1 = enclavePKBuffer.getInt();
- int prime2 = enclavePKBuffer.getInt();
+ // prime 1 unused
+ // prime 2 unused
byte[] exponent = new byte[publicExponentLength];
enclavePKBuffer.get(exponent);
byte[] modulus = new byte[publicModulusLength];
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/IdleConnectionResiliency.java b/src/main/java/com/microsoft/sqlserver/jdbc/IdleConnectionResiliency.java
index 68a16e2de..35bd85a1e 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/IdleConnectionResiliency.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/IdleConnectionResiliency.java
@@ -110,34 +110,32 @@ void parseInitialSessionStateData(byte[] data, byte[][] sessionStateInitial) thr
}
void incrementUnprocessedResponseCount() {
- if (connection.getRetryCount() > 0 && !isReconnectRunning()) {
- if (unprocessedResponseCount.incrementAndGet() < 0) {
- /*
- * When this number rolls over, connection recovery is disabled for the rest of the life of the
- * connection.
- */
- if (loggerExternal.isLoggable(Level.FINER)) {
- loggerExternal.finer("unprocessedResponseCount < 0 on increment. Disabling connection resiliency.");
- }
-
- setConnectionRecoveryPossible(false);
+ if ((connection.getRetryCount() > 0 && !isReconnectRunning())
+ && (unprocessedResponseCount.incrementAndGet() < 0)) {
+ /*
+ * When this number rolls over, connection recovery is disabled for the rest of the life of the
+ * connection.
+ */
+ if (loggerExternal.isLoggable(Level.FINER)) {
+ loggerExternal.finer("unprocessedResponseCount < 0 on increment. Disabling connection resiliency.");
}
+
+ setConnectionRecoveryPossible(false);
}
}
void decrementUnprocessedResponseCount() {
- if (connection.getRetryCount() > 0 && !isReconnectRunning()) {
- if (unprocessedResponseCount.decrementAndGet() < 0) {
- /*
- * When this number rolls over, connection recovery is disabled for the rest of the life of the
- * connection.
- */
- if (loggerExternal.isLoggable(Level.FINER)) {
- loggerExternal.finer("unprocessedResponseCount < 0 on decrement. Disabling connection resiliency.");
- }
-
- setConnectionRecoveryPossible(false);
+ if ((connection.getRetryCount() > 0 && !isReconnectRunning())
+ && (unprocessedResponseCount.decrementAndGet() < 0)) {
+ /*
+ * When this number rolls over, connection recovery is disabled for the rest of the life of the
+ * connection.
+ */
+ if (loggerExternal.isLoggable(Level.FINER)) {
+ loggerExternal.finer("unprocessedResponseCount < 0 on decrement. Disabling connection resiliency.");
}
+
+ setConnectionRecoveryPossible(false);
}
}
@@ -428,6 +426,7 @@ private ReconnectThread() {}
}
+ @Override
public void run() {
if (loggerExternal.isLoggable(Level.FINER)) {
loggerExternal.finer("Starting ReconnectThread for command: " + command.toString());
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/KeyVaultHttpPipelineBuilder.java b/src/main/java/com/microsoft/sqlserver/jdbc/KeyVaultHttpPipelineBuilder.java
index 51ff4eeb3..b635d846c 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/KeyVaultHttpPipelineBuilder.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/KeyVaultHttpPipelineBuilder.java
@@ -17,6 +17,7 @@
import java.util.ArrayList;
import java.util.List;
+
/**
* The HTTP pipeline builder which includes all the necessary HTTP pipeline policies that will be applied for
* sending and receiving HTTP requests to the Key Vault service.
@@ -41,20 +42,21 @@ final class KeyVaultHttpPipelineBuilder {
* Builds the HTTP pipeline with all the necessary HTTP policies included in the pipeline.
*
* @return A fully built HTTP pipeline including the default HTTP client.
- * @throws SQLServerException If the {@link KeyVaultCustomCredentialPolicy} policy cannot be added to the pipeline.
+ * @throws SQLServerException
+ * If the {@link KeyVaultCustomCredentialPolicy} policy cannot be added to the pipeline.
*/
HttpPipeline buildPipeline() throws SQLServerException {
// Closest to API goes first, closest to wire goes last.
- final List policies = new ArrayList<>();
+ final List pol = new ArrayList<>();
- HttpPolicyProviders.addBeforeRetryPolicies(policies);
- policies.add(retryPolicy);
- policies.add(new KeyVaultCustomCredentialPolicy(credential));
- policies.addAll(this.policies);
- HttpPolicyProviders.addAfterRetryPolicies(policies);
- policies.add(new HttpLoggingPolicy(httpLogOptions));
+ HttpPolicyProviders.addBeforeRetryPolicies(pol);
+ pol.add(retryPolicy);
+ pol.add(new KeyVaultCustomCredentialPolicy(credential));
+ pol.addAll(this.policies);
+ HttpPolicyProviders.addAfterRetryPolicies(pol);
+ pol.add(new HttpLoggingPolicy(httpLogOptions));
- return new HttpPipelineBuilder().policies(policies.toArray(new HttpPipelinePolicy[0])).build();
+ return new HttpPipelineBuilder().policies(pol.toArray(new HttpPipelinePolicy[0])).build();
}
/**
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/PLPInputStream.java b/src/main/java/com/microsoft/sqlserver/jdbc/PLPInputStream.java
index 08746fe60..b0b81ab6c 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/PLPInputStream.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/PLPInputStream.java
@@ -245,6 +245,7 @@ public int read(byte[] b) throws IOException {
* @exception IOException
* if an I/O error occurs.
*/
+ @Override
public int read(byte[] b, int offset, int maxBytes) throws IOException {
// If b is null, a NullPointerException is thrown.
if (null == b)
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/Parameter.java b/src/main/java/com/microsoft/sqlserver/jdbc/Parameter.java
index 0c7a58150..52fc06c90 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/Parameter.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/Parameter.java
@@ -271,25 +271,22 @@ void setValue(JDBCType jdbcType, Object value, JavaType javaType, StreamSetterAr
// otherwise it would be sent as smallint
// Also, for setters, we are able to send tinyint to smallint
// However, for output parameter, it might cause error.
- if (!isOutput()) {
- if ((JavaType.SHORT == javaType)
- && ((JDBCType.TINYINT == jdbcType) || (JDBCType.SMALLINT == jdbcType))) {
- // value falls in the TINYINT range
- if (((Short) value) >= 0 && ((Short) value) <= 255) {
- value = ((Short) value).byteValue();
- javaType = JavaType.of(value);
- jdbcType = javaType.getJDBCType(SSType.UNKNOWN, jdbcType);
- }
- // value falls outside tinyint range. Throw an error if the user intends to send as tinyint.
- else {
- // This is for cases like setObject(1, Short.valueOf("-1"), java.sql.Types.TINYINT);
- if (JDBCType.TINYINT == jdbcType) {
- MessageFormat form = new MessageFormat(
- SQLServerException.getErrString("R_InvalidDataForAE"));
- Object[] msgArgs = {javaType.toString().toLowerCase(Locale.ENGLISH),
- jdbcType.toString().toLowerCase(Locale.ENGLISH)};
- throw new SQLServerException(form.format(msgArgs), null);
- }
+ if (!isOutput() && ((JavaType.SHORT == javaType)
+ && ((JDBCType.TINYINT == jdbcType) || (JDBCType.SMALLINT == jdbcType)))) {
+ // value falls in the TINYINT range
+ if (((Short) value) >= 0 && ((Short) value) <= 255) {
+ value = ((Short) value).byteValue();
+ javaType = JavaType.of(value);
+ jdbcType = javaType.getJDBCType(SSType.UNKNOWN, jdbcType);
+ }
+ // value falls outside tinyint range. Throw an error if the user intends to send as tinyint.
+ else {
+ // This is for cases like setObject(1, Short.valueOf("-1"), java.sql.Types.TINYINT);
+ if (JDBCType.TINYINT == jdbcType) {
+ MessageFormat form = new MessageFormat(SQLServerException.getErrString("R_InvalidDataForAE"));
+ Object[] msgArgs = {javaType.toString().toLowerCase(Locale.ENGLISH),
+ jdbcType.toString().toLowerCase(Locale.ENGLISH)};
+ throw new SQLServerException(form.format(msgArgs), null);
}
}
}
@@ -388,8 +385,8 @@ boolean isValueGotten() {
}
- Object getValue(JDBCType jdbcType, InputStreamGetterArgs getterArgs, Calendar cal,
- TDSReader tdsReader, SQLServerStatement statement) throws SQLServerException {
+ Object getValue(JDBCType jdbcType, InputStreamGetterArgs getterArgs, Calendar cal, TDSReader tdsReader,
+ SQLServerStatement statement) throws SQLServerException {
if (null == getterDTV)
getterDTV = new DTV();
@@ -505,34 +502,35 @@ private void setTypeDefinition(DTV dtv) {
// so, here, if the decimal parameter is encrypted and it is null and it is not outparameter
// then we set precision as the default precision instead of max precision
if (!isOutput()) {
- param.typeDefinition = "decimal(" + SQLServerConnection.defaultDecimalPrecision + ", "
- + scale + ")";
+ param.typeDefinition = SSType.DECIMAL.toString() + "("
+ + SQLServerConnection.defaultDecimalPrecision + "," + scale + ")";
}
} else {
if (SQLServerConnection.defaultDecimalPrecision >= valueLength) {
- param.typeDefinition = "decimal(" + SQLServerConnection.defaultDecimalPrecision + ","
- + scale + ")";
+ param.typeDefinition = SSType.DECIMAL.toString() + "("
+ + SQLServerConnection.defaultDecimalPrecision + "," + scale + ")";
if (SQLServerConnection.defaultDecimalPrecision < (valueLength + scale)) {
- param.typeDefinition = "decimal("
+ param.typeDefinition = SSType.DECIMAL.toString() + "("
+ (SQLServerConnection.defaultDecimalPrecision + scale) + "," + scale + ")";
}
} else {
- param.typeDefinition = "decimal(" + SQLServerConnection.maxDecimalPrecision + ","
- + scale + ")";
+ param.typeDefinition = SSType.DECIMAL.toString() + "("
+ + SQLServerConnection.maxDecimalPrecision + "," + scale + ")";
}
}
if (isOutput()) {
- param.typeDefinition = "decimal(" + SQLServerConnection.maxDecimalPrecision + ", " + scale
- + ")";
+ param.typeDefinition = SSType.DECIMAL.toString() + "("
+ + SQLServerConnection.maxDecimalPrecision + ", " + scale + ")";
}
if (userProvidesPrecision) {
- param.typeDefinition = "decimal(" + valueLength + "," + scale + ")";
+ param.typeDefinition = SSType.DECIMAL.toString() + "(" + valueLength + "," + scale + ")";
}
} else
- param.typeDefinition = "decimal(" + SQLServerConnection.maxDecimalPrecision + "," + scale + ")";
+ param.typeDefinition = SSType.DECIMAL.toString() + "(" + SQLServerConnection.maxDecimalPrecision
+ + "," + scale + ")";
break;
@@ -721,10 +719,10 @@ private void setTypeDefinition(DTV dtv) {
*/
if (0 == valueLength) {
// Workaround for the issue when inserting empty string and null into encrypted columns
- param.typeDefinition = "varchar(1)";
+ param.typeDefinition = SSType.VARCHAR.toString() + "(1)";
valueLength++;
} else {
- param.typeDefinition = "varchar(" + valueLength + ")";
+ param.typeDefinition = SSType.VARCHAR.toString() + "(" + valueLength + ")";
if (DataTypes.SHORT_VARTYPE_MAX_BYTES <= valueLength) {
param.typeDefinition = VARCHAR_MAX;
@@ -748,12 +746,12 @@ private void setTypeDefinition(DTV dtv) {
|| (jdbcTypeSetByUser == JDBCType.LONGVARCHAR))) {
if (0 == valueLength) {
// Workaround for the issue when inserting empty string and null into encrypted columns
- param.typeDefinition = "varchar(1)";
+ param.typeDefinition = SSType.VARCHAR.toString() + "(1)";
valueLength++;
} else if (DataTypes.SHORT_VARTYPE_MAX_BYTES < valueLength) {
param.typeDefinition = VARCHAR_MAX;
} else {
- param.typeDefinition = "varchar(" + valueLength + ")";
+ param.typeDefinition = SSType.VARCHAR.toString() + "(" + valueLength + ")";
}
if (jdbcTypeSetByUser == JDBCType.LONGVARCHAR) {
@@ -763,12 +761,12 @@ private void setTypeDefinition(DTV dtv) {
|| jdbcTypeSetByUser == JDBCType.LONGNVARCHAR)) {
if (0 == valueLength) {
// Workaround for the issue when inserting empty string and null into encrypted columns
- param.typeDefinition = "nvarchar(1)";
+ param.typeDefinition = SSType.NVARCHAR.toString() + "(1)";
valueLength++;
} else if (DataTypes.SHORT_VARTYPE_MAX_CHARS < valueLength) {
param.typeDefinition = NVARCHAR_MAX;
} else {
- param.typeDefinition = "nvarchar(" + valueLength + ")";
+ param.typeDefinition = SSType.NVARCHAR.toString() + "(" + valueLength + ")";
}
if (jdbcTypeSetByUser == JDBCType.LONGNVARCHAR) {
@@ -777,10 +775,10 @@ private void setTypeDefinition(DTV dtv) {
} else { // used if setNull() is called with java.sql.Types.NCHAR
if (0 == valueLength) {
// Workaround for the issue when inserting empty string and null into encrypted columns
- param.typeDefinition = "nvarchar(1)";
+ param.typeDefinition = SSType.NVARCHAR.toString() + "(1)";
valueLength++;
} else {
- param.typeDefinition = "nvarchar(" + valueLength + ")";
+ param.typeDefinition = SSType.NVARCHAR.toString() + "(" + valueLength + ")";
if (DataTypes.SHORT_VARTYPE_MAX_BYTES <= valueLength) {
param.typeDefinition = NVARCHAR_MAX;
@@ -817,10 +815,10 @@ private void setTypeDefinition(DTV dtv) {
|| (JDBCType.LONGVARCHAR == jdbcTypeSetByUser))) {
if (0 == valueLength) {
// Workaround for the issue when inserting empty string and null into encrypted columns
- param.typeDefinition = "varchar(1)";
+ param.typeDefinition = SSType.VARCHAR.toString() + "(1)";
valueLength++;
} else {
- param.typeDefinition = "varchar(" + valueLength + ")";
+ param.typeDefinition = SSType.VARCHAR.toString() + "(" + valueLength + ")";
if (DataTypes.SHORT_VARTYPE_MAX_BYTES < valueLength) {
param.typeDefinition = VARCHAR_MAX;
@@ -835,10 +833,10 @@ private void setTypeDefinition(DTV dtv) {
|| (JDBCType.LONGNVARCHAR == jdbcTypeSetByUser))) {
if (0 == valueLength) {
// Workaround for the issue when inserting empty string and null into encrypted columns
- param.typeDefinition = "nvarchar(1)";
+ param.typeDefinition = SSType.NVARCHAR.toString() + "(1)";
valueLength++;
} else {
- param.typeDefinition = "nvarchar(" + valueLength + ")";
+ param.typeDefinition = SSType.NVARCHAR.toString() + "(" + valueLength + ")";
if (DataTypes.SHORT_VARTYPE_MAX_BYTES <= valueLength) {
param.typeDefinition = NVARCHAR_MAX;
@@ -851,10 +849,10 @@ private void setTypeDefinition(DTV dtv) {
} else { // used if setNull() is called with java.sql.Types.NCHAR
if (0 == valueLength) {
// Workaround for the issue when inserting empty string and null into encrypted columns
- param.typeDefinition = "nvarchar(1)";
+ param.typeDefinition = SSType.NVARCHAR.toString() + "(1)";
valueLength++;
} else {
- param.typeDefinition = "nvarchar(" + valueLength + ")";
+ param.typeDefinition = SSType.NVARCHAR.toString() + "(" + valueLength + ")";
if (DataTypes.SHORT_VARTYPE_MAX_BYTES <= valueLength) {
param.typeDefinition = NVARCHAR_MAX;
@@ -1152,7 +1150,7 @@ String getTypeDefinition(SQLServerConnection con, TDSReader tdsReader) throws SQ
void sendByRPC(TDSWriter tdsWriter, SQLServerStatement statement) throws SQLServerException {
assert null != inputDTV : "Parameter was neither set nor registered";
SQLServerConnection conn = statement.connection;
-
+
try {
inputDTV.sendCryptoMetaData(this.cryptoMeta, tdsWriter);
inputDTV.setJdbcTypeSetByUser(getJdbcTypeSetByUser(), getValueLength());
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/ReaderInputStream.java b/src/main/java/com/microsoft/sqlserver/jdbc/ReaderInputStream.java
index 54df7d76b..70ed6a5f6 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/ReaderInputStream.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/ReaderInputStream.java
@@ -72,6 +72,7 @@ class ReaderInputStream extends InputStream {
* @throws IOException
* - if an I/O error occurs
*/
+ @Override
public int available() throws IOException {
assert null != reader;
assert null != encodedChars;
@@ -97,10 +98,12 @@ public int available() throws IOException {
private final byte[] oneByte = new byte[1];
+ @Override
public int read() throws IOException {
return (-1 == readInternal(oneByte, 0, oneByte.length)) ? -1 : oneByte[0];
}
+ @Override
public int read(byte[] b) throws IOException {
return readInternal(b, 0, b.length);
}
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLCollation.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLCollation.java
index 59ace9252..b41531db9 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLCollation.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLCollation.java
@@ -511,6 +511,7 @@ final Encoding getEncoding() throws UnsupportedEncodingException {
this.encoding = encoding;
}
+ @Override
public final String toString() {
return name;
}
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerAASEnclaveProvider.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerAASEnclaveProvider.java
index b12151caf..99c11638a 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerAASEnclaveProvider.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerAASEnclaveProvider.java
@@ -52,7 +52,9 @@ public class SQLServerAASEnclaveProvider implements ISQLServerEnclaveProvider {
/**
* default constructor
*/
- public SQLServerAASEnclaveProvider() {}
+ public SQLServerAASEnclaveProvider() {
+ // default constructor
+ }
@Override
public void getAttestationParameters(String url) throws SQLServerException {
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm.java
index becf72a0f..55863ba84 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm.java
@@ -33,7 +33,9 @@ class SQLServerAeadAes256CbcHmac256Algorithm extends SQLServerEncryptionAlgorith
static final private java.util.logging.Logger aeLogger = java.util.logging.Logger
.getLogger("com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm");
- final static String algorithmName = "AEAD_AES_256_CBC_HMAC_SHA256";
+ final static String AEAD_AES_256_CBC_HMAC_SHA256 = "AEAD_AES_256_CBC_HMAC_SHA256";
+ private static final String HMAC_SHA_256 = "HmacSHA256";
+
// Stores column encryption key which includes root key and derived keys
private SQLServerAeadAes256CbcHmac256EncryptionKey columnEncryptionkey;
private byte algorithmVersion;
@@ -75,7 +77,7 @@ class SQLServerAeadAes256CbcHmac256Algorithm extends SQLServerEncryptionAlgorith
SQLServerEncryptionType encryptionType, byte algorithmVersion) {
this.columnEncryptionkey = columnEncryptionkey;
- if (encryptionType == SQLServerEncryptionType.Deterministic) {
+ if (encryptionType == SQLServerEncryptionType.DETERMINISTIC) {
this.isDeterministic = true;
}
this.algorithmVersion = algorithmVersion;
@@ -160,8 +162,8 @@ protected byte[] encryptData(byte[] plainText, boolean hasAuthenticationTag) thr
if (hasAuthenticationTag) {
- Mac hmac = Mac.getInstance("HmacSHA256");
- SecretKeySpec initkey = new SecretKeySpec(columnEncryptionkey.getMacKey(), "HmacSHA256");
+ Mac hmac = Mac.getInstance(HMAC_SHA_256);
+ SecretKeySpec initkey = new SecretKeySpec(columnEncryptionkey.getMacKey(), HMAC_SHA_256);
hmac.init(initkey);
hmac.update(version, 0, version.length);
hmac.update(iv, 0, iv.length);
@@ -330,8 +332,8 @@ private byte[] prepareAuthenticationTag(byte[] iv, byte[] cipherText, int offset
byte[] computedHash;
byte[] authenticationTag = new byte[keySizeInBytes];
- Mac hmac = Mac.getInstance("HmacSHA256");
- SecretKeySpec key = new SecretKeySpec(columnEncryptionkey.getMacKey(), "HmacSHA256");
+ Mac hmac = Mac.getInstance(HMAC_SHA_256);
+ SecretKeySpec key = new SecretKeySpec(columnEncryptionkey.getMacKey(), HMAC_SHA_256);
hmac.init(key);
hmac.update(version, 0, version.length);
hmac.update(iv, 0, iv.length);
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Factory.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Factory.java
index 58f5af235..0094551bd 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Factory.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Factory.java
@@ -25,11 +25,11 @@ SQLServerEncryptionAlgorithm create(SQLServerSymmetricKey columnEncryptionKey,
SQLServerEncryptionType encryptionType, String encryptionAlgorithm) throws SQLServerException {
assert (columnEncryptionKey != null);
- if (encryptionType != SQLServerEncryptionType.Deterministic
- && encryptionType != SQLServerEncryptionType.Randomized) {
+ if (encryptionType != SQLServerEncryptionType.DETERMINISTIC
+ && encryptionType != SQLServerEncryptionType.RANDOMIZED) {
MessageFormat form = new MessageFormat(SQLServerException.getErrString("R_InvalidEncryptionType"));
Object[] msgArgs = {encryptionType, encryptionAlgorithm,
- "'" + SQLServerEncryptionType.Deterministic + "," + SQLServerEncryptionType.Randomized + "'"};
+ "'" + SQLServerEncryptionType.DETERMINISTIC + "," + SQLServerEncryptionType.RANDOMIZED + "'"};
throw new SQLServerException(this, form.format(msgArgs), null, 0, false);
}
@@ -49,7 +49,8 @@ SQLServerEncryptionAlgorithm create(SQLServerSymmetricKey columnEncryptionKey,
if (!encryptionAlgorithms.containsKey(factoryKey)) {
SQLServerAeadAes256CbcHmac256EncryptionKey encryptedKey = new SQLServerAeadAes256CbcHmac256EncryptionKey(
- columnEncryptionKey.getRootKey(), SQLServerAeadAes256CbcHmac256Algorithm.algorithmName);
+ columnEncryptionKey.getRootKey(),
+ SQLServerAeadAes256CbcHmac256Algorithm.AEAD_AES_256_CBC_HMAC_SHA256);
aesAlgorithm = new SQLServerAeadAes256CbcHmac256Algorithm(encryptedKey, encryptionType, algorithmVersion);
encryptionAlgorithms.putIfAbsent(factoryKey, aesAlgorithm);
}
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerBulkCopy.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerBulkCopy.java
index bf98fd289..d1c13a156 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerBulkCopy.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerBulkCopy.java
@@ -70,6 +70,8 @@ public class SQLServerBulkCopy implements java.lang.AutoCloseable, java.io.Seria
*/
private static final long serialVersionUID = 1989903904654306244L;
+ private static final String MAX = "(max)";
+
/**
* Represents the column mappings between the source and destination table
*/
@@ -1243,9 +1245,9 @@ private String getDestTypeFromSrcType(int srcColIndx, int destColIndx,
// if destination is encrypted send metadata from destination and not from source
if (DataTypes.SHORT_VARTYPE_MAX_BYTES < destPrecision) {
- return "varbinary(max)";
+ return SSType.VARBINARY.toString() + MAX;
} else {
- return "varbinary(" + destColumnMetadata.get(destColIndx).precision + ")";
+ return SSType.VARBINARY.toString() + "(" + destColumnMetadata.get(destColIndx).precision + ")";
}
}
@@ -1268,7 +1270,7 @@ private String getDestTypeFromSrcType(int srcColIndx, int destColIndx,
// SQL Server does not convert string to binary, we will have to explicitly convert before sending.
if (Util.isCharType(bulkJdbcType) && Util.isBinaryType(destSSType)) {
if (isStreaming)
- return "varbinary(max)";
+ return SSType.VARBINARY.toString() + MAX;
else
// Return binary(n) or varbinary(n) or varbinary(max) depending on destination type/precision.
return destSSType.toString() + "("
@@ -1277,31 +1279,33 @@ private String getDestTypeFromSrcType(int srcColIndx, int destColIndx,
switch (bulkJdbcType) {
case java.sql.Types.INTEGER:
- return "int";
+ return SSType.INTEGER.toString();
case java.sql.Types.SMALLINT:
- return "smallint";
+ return SSType.SMALLINT.toString();
case java.sql.Types.BIGINT:
- return "bigint";
+ return SSType.BIGINT.toString();
case java.sql.Types.BIT:
- return "bit";
+ return SSType.BIT.toString();
case java.sql.Types.TINYINT:
- return "tinyint";
+ return SSType.TINYINT.toString();
case java.sql.Types.FLOAT:
case java.sql.Types.DOUBLE:
- return "float";
+ return SSType.FLOAT.toString();
case java.sql.Types.REAL:
- return "real";
+ return SSType.REAL.toString();
case microsoft.sql.Types.MONEY:
- return "money";
+ return SSType.MONEY.toString();
+
case microsoft.sql.Types.SMALLMONEY:
- return "smallmoney";
+ return SSType.SMALLMONEY.toString();
+
case java.sql.Types.DECIMAL:
/*
* SQL Server allows the insertion of decimal and numeric into a money (and smallmoney) column, but
@@ -1310,31 +1314,31 @@ private String getDestTypeFromSrcType(int srcColIndx, int destColIndx,
* money/smallmoney and the source is decimal/numeric.
*/
if (destSSType == SSType.MONEY) {
- return "money";
+ return SSType.MONEY.toString();
} else if (destSSType == SSType.SMALLMONEY) {
- return "smallmoney";
+ return SSType.SMALLMONEY.toString();
}
- return "decimal(" + bulkPrecision + ", " + bulkScale + ")";
+ return SSType.DECIMAL.toString() + "(" + bulkPrecision + ", " + bulkScale + ")";
case java.sql.Types.NUMERIC:
if (destSSType == SSType.MONEY) {
- return "money";
+ return SSType.MONEY.toString();
} else if (destSSType == SSType.SMALLMONEY) {
- return "smallmoney";
+ return SSType.SMALLMONEY.toString();
}
- return "numeric(" + bulkPrecision + ", " + bulkScale + ")";
+ return SSType.NUMERIC.toString() + "(" + bulkPrecision + ", " + bulkScale + ")";
case microsoft.sql.Types.GUID:
// For char the value has to be between 0 to 8000.
- return "char(" + bulkPrecision + ")";
+ return SSType.CHAR.toString() + "(" + bulkPrecision + ")";
case java.sql.Types.CHAR:
if (unicodeConversionRequired(bulkJdbcType, destSSType)) {
- return "nchar(" + bulkPrecision + ")";
+ return SSType.NCHAR.toString() + "(" + bulkPrecision + ")";
} else {
- return "char(" + bulkPrecision + ")";
+ return SSType.CHAR.toString() + "(" + bulkPrecision + ")";
}
case java.sql.Types.NCHAR:
- return "NCHAR(" + bulkPrecision + ")";
+ return SSType.NCHAR.toString() + "(" + bulkPrecision + ")";
case java.sql.Types.LONGVARCHAR:
case java.sql.Types.VARCHAR:
@@ -1342,15 +1346,15 @@ private String getDestTypeFromSrcType(int srcColIndx, int destColIndx,
// Doesn't need to match with the exact size of data or with the destination column size.
if (unicodeConversionRequired(bulkJdbcType, destSSType)) {
if (isStreaming) {
- return "nvarchar(max)";
+ return SSType.NVARCHAR.toString() + MAX;
} else {
- return "nvarchar(" + bulkPrecision + ")";
+ return SSType.NVARCHAR.toString() + "(" + bulkPrecision + ")";
}
} else {
if (isStreaming) {
- return "varchar(max)";
+ return SSType.VARCHAR.toString() + MAX;
} else {
- return "varchar(" + bulkPrecision + ")";
+ return SSType.VARCHAR.toString() + "(" + bulkPrecision + ")";
}
}
// For INSERT BULK operations, XMLTYPE is to be sent as NVARCHAR(N) or NVARCHAR(MAX) data type.
@@ -1358,21 +1362,21 @@ private String getDestTypeFromSrcType(int srcColIndx, int destColIndx,
case java.sql.Types.LONGNVARCHAR:
case java.sql.Types.NVARCHAR:
if (isStreaming) {
- return "NVARCHAR(MAX)";
+ return SSType.NVARCHAR.toString() + MAX;
} else {
- return "NVARCHAR(" + bulkPrecision + ")";
+ return SSType.NVARCHAR.toString() + "(" + bulkPrecision + ")";
}
case java.sql.Types.BINARY:
// For binary the value has to be between 0 to 8000.
- return "binary(" + bulkPrecision + ")";
+ return SSType.BINARY.toString() + "(" + bulkPrecision + ")";
case java.sql.Types.LONGVARBINARY:
case java.sql.Types.VARBINARY:
if (isStreaming)
- return "varbinary(max)";
+ return SSType.VARBINARY.toString() + MAX;
else
- return "varbinary(" + bulkPrecision + ")";
+ return SSType.VARBINARY.toString() + "(" + bulkPrecision + ")";
case microsoft.sql.Types.DATETIME:
case microsoft.sql.Types.SMALLDATETIME:
@@ -1380,19 +1384,19 @@ private String getDestTypeFromSrcType(int srcColIndx, int destColIndx,
switch (destSSType) {
case SMALLDATETIME:
if (null != serverBulkData && connection.getSendTemporalDataTypesAsStringForBulkCopy()) {
- return "varchar("
+ return SSType.VARCHAR.toString() + "("
+ ((0 == bulkPrecision) ? sourceBulkRecordTemporalMaxPrecision : bulkPrecision)
+ ")";
} else {
- return "smalldatetime";
+ return SSType.SMALLDATETIME.toString();
}
case DATETIME:
if (null != serverBulkData && connection.getSendTemporalDataTypesAsStringForBulkCopy()) {
- return "varchar("
+ return SSType.VARCHAR.toString() + "("
+ ((0 == bulkPrecision) ? sourceBulkRecordTemporalMaxPrecision : bulkPrecision)
+ ")";
} else {
- return "datetime";
+ return SSType.DATETIME.toString();
}
default:
// datetime2
@@ -1403,9 +1407,10 @@ private String getDestTypeFromSrcType(int srcColIndx, int destColIndx,
* temporal type.
*/
if (null != serverBulkData && connection.getSendTemporalDataTypesAsStringForBulkCopy()) {
- return "varchar(" + ((0 == bulkPrecision) ? destPrecision : bulkPrecision) + ")";
+ return SSType.VARCHAR.toString() + "("
+ + ((0 == bulkPrecision) ? destPrecision : bulkPrecision) + ")";
} else {
- return "datetime2(" + bulkScale + ")";
+ return SSType.DATETIME2.toString() + "(" + bulkScale + ")";
}
}
@@ -1416,9 +1421,10 @@ private String getDestTypeFromSrcType(int srcColIndx, int destColIndx,
* conversion. if the source is ResultSet, we send the data as the corresponding temporal type.
*/
if (null != serverBulkData && connection.getSendTemporalDataTypesAsStringForBulkCopy()) {
- return "varchar(" + ((0 == bulkPrecision) ? destPrecision : bulkPrecision) + ")";
+ return SSType.VARCHAR.toString() + "(" + ((0 == bulkPrecision) ? destPrecision : bulkPrecision)
+ + ")";
} else {
- return "date";
+ return SSType.DATE.toString();
}
case java.sql.Types.TIME:
@@ -1428,15 +1434,16 @@ private String getDestTypeFromSrcType(int srcColIndx, int destColIndx,
* conversion. if the source is ResultSet, we send the data as the corresponding temporal type.
*/
if (null != serverBulkData && connection.getSendTemporalDataTypesAsStringForBulkCopy()) {
- return "varchar(" + ((0 == bulkPrecision) ? destPrecision : bulkPrecision) + ")";
+ return SSType.VARCHAR.toString() + "(" + ((0 == bulkPrecision) ? destPrecision : bulkPrecision)
+ + ")";
} else {
- return "time(" + bulkScale + ")";
+ return SSType.TIME.toString() + "(" + bulkScale + ")";
}
// Return DATETIMEOFFSET for TIME_WITH_TIMEZONE and TIMESTAMP_WITH_TIMEZONE
case 2013: // java.sql.Types.TIME_WITH_TIMEZONE
case 2014: // java.sql.Types.TIMESTAMP_WITH_TIMEZONE
- return "datetimeoffset(" + bulkScale + ")";
+ return SSType.DATETIMEOFFSET.toString() + "(" + bulkScale + ")";
case microsoft.sql.Types.DATETIMEOFFSET:
/*
@@ -1445,12 +1452,13 @@ private String getDestTypeFromSrcType(int srcColIndx, int destColIndx,
* conversion. if the source is ResultSet, we send the data as the corresponding temporal type.
*/
if (null != serverBulkData && connection.getSendTemporalDataTypesAsStringForBulkCopy()) {
- return "varchar(" + ((0 == bulkPrecision) ? destPrecision : bulkPrecision) + ")";
+ return SSType.VARCHAR.toString() + "(" + ((0 == bulkPrecision) ? destPrecision : bulkPrecision)
+ + ")";
} else {
- return "datetimeoffset(" + bulkScale + ")";
+ return SSType.DATETIMEOFFSET.toString() + "(" + bulkScale + ")";
}
case microsoft.sql.Types.SQL_VARIANT:
- return "sql_variant";
+ return SSType.SQL_VARIANT.toString();
default: {
MessageFormat form = new MessageFormat(SQLServerException.getErrString("R_BulkTypeNotSupported"));
Object[] msgArgs = {JDBCType.of(bulkJdbcType).toString().toLowerCase(Locale.ENGLISH)};
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerCallableStatement.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerCallableStatement.java
index 4308b080b..0c3d5538a 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerCallableStatement.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerCallableStatement.java
@@ -49,6 +49,9 @@ public class SQLServerCallableStatement extends SQLServerPreparedStatement imple
*/
private static final long serialVersionUID = 5044984771674532350L;
+ private static final String GET_TIMESTAMP = "getTimestamp";
+ private static final String SQLSTATE_07009 = "07009";
+
/** the call param names */
private HashMap parameterNames;
@@ -409,7 +412,7 @@ private Parameter getterGetParam(int index) throws SQLServerException {
if (index < 1 || index > inOutParam.length) {
MessageFormat form = new MessageFormat(SQLServerException.getErrString("R_invalidOutputParameter"));
Object[] msgArgs = {index};
- SQLServerException.makeFromDriverError(connection, this, form.format(msgArgs), "07009", false);
+ SQLServerException.makeFromDriverError(connection, this, form.format(msgArgs), SQLSTATE_07009, false);
}
// Check index refers to a registered OUT parameter
@@ -417,13 +420,13 @@ private Parameter getterGetParam(int index) throws SQLServerException {
MessageFormat form = new MessageFormat(
SQLServerException.getErrString("R_outputParameterNotRegisteredForOutput"));
Object[] msgArgs = {index};
- SQLServerException.makeFromDriverError(connection, this, form.format(msgArgs), "07009", true);
+ SQLServerException.makeFromDriverError(connection, this, form.format(msgArgs), SQLSTATE_07009, true);
}
// If we haven't executed the statement yet then throw a nice friendly exception.
if (!wasExecuted())
SQLServerException.makeFromDriverError(connection, this,
- SQLServerException.getErrString("R_statementMustBeExecuted"), "07009", false);
+ SQLServerException.getErrString("R_statementMustBeExecuted"), SQLSTATE_07009, false);
resultsReader().getCommand().checkForInterrupt();
@@ -892,39 +895,39 @@ public Time getTime(String parameterName, Calendar cal) throws SQLServerExceptio
@Override
public Timestamp getTimestamp(int index) throws SQLServerException {
if (loggerExternal.isLoggable(java.util.logging.Level.FINER))
- loggerExternal.entering(getClassNameLogging(), "getTimestamp", index);
+ loggerExternal.entering(getClassNameLogging(), GET_TIMESTAMP, index);
checkClosed();
java.sql.Timestamp value = (java.sql.Timestamp) getValue(index, JDBCType.TIMESTAMP);
- loggerExternal.exiting(getClassNameLogging(), "getTimestamp", value);
+ loggerExternal.exiting(getClassNameLogging(), GET_TIMESTAMP, value);
return value;
}
@Override
public Timestamp getTimestamp(String parameterName) throws SQLServerException {
- loggerExternal.entering(getClassNameLogging(), "getTimestamp", parameterName);
+ loggerExternal.entering(getClassNameLogging(), GET_TIMESTAMP, parameterName);
checkClosed();
java.sql.Timestamp value = (java.sql.Timestamp) getValue(findColumn(parameterName), JDBCType.TIMESTAMP);
- loggerExternal.exiting(getClassNameLogging(), "getTimestamp", value);
+ loggerExternal.exiting(getClassNameLogging(), GET_TIMESTAMP, value);
return value;
}
@Override
public Timestamp getTimestamp(int index, Calendar cal) throws SQLServerException {
if (loggerExternal.isLoggable(java.util.logging.Level.FINER))
- loggerExternal.entering(getClassNameLogging(), "getTimestamp", new Object[] {index, cal});
+ loggerExternal.entering(getClassNameLogging(), GET_TIMESTAMP, new Object[] {index, cal});
checkClosed();
java.sql.Timestamp value = (java.sql.Timestamp) getValue(index, JDBCType.TIMESTAMP, cal);
- loggerExternal.exiting(getClassNameLogging(), "getTimestamp", value);
+ loggerExternal.exiting(getClassNameLogging(), GET_TIMESTAMP, value);
return value;
}
@Override
public Timestamp getTimestamp(String name, Calendar cal) throws SQLServerException {
if (loggerExternal.isLoggable(java.util.logging.Level.FINER))
- loggerExternal.entering(getClassNameLogging(), "getTimestamp", new Object[] {name, cal});
+ loggerExternal.entering(getClassNameLogging(), GET_TIMESTAMP, new Object[] {name, cal});
checkClosed();
java.sql.Timestamp value = (java.sql.Timestamp) getValue(findColumn(name), JDBCType.TIMESTAMP, cal);
- loggerExternal.exiting(getClassNameLogging(), "getTimestamp", value);
+ loggerExternal.exiting(getClassNameLogging(), GET_TIMESTAMP, value);
return value;
}
@@ -1329,7 +1332,8 @@ private int findColumn(String columnName) throws SQLServerException {
MessageFormat form = new MessageFormat(
SQLServerException.getErrString("R_parameterNotDefinedForProcedure"));
Object[] msgArgs = {columnName, ""};
- SQLServerException.makeFromDriverError(connection, this, form.format(msgArgs), "07009", false);
+ SQLServerException.makeFromDriverError(connection, this, form.format(msgArgs), SQLSTATE_07009,
+ false);
}
try (ResultSet rs = s.executeQueryInternal(metaQuery.toString())) {
@@ -1373,7 +1377,7 @@ private int findColumn(String columnName) throws SQLServerException {
MessageFormat form = new MessageFormat(
SQLServerException.getErrString("R_parameterNotDefinedForProcedure"));
Object[] msgArgs = {columnName, procedureName};
- SQLServerException.makeFromDriverError(connection, this, form.format(msgArgs), "07009", false);
+ SQLServerException.makeFromDriverError(connection, this, form.format(msgArgs), SQLSTATE_07009, false);
}
// @RETURN_VALUE is always in the list. If the user uses return value ?=call(@p1) syntax then
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider.java
index 53d58b8c7..03ee98204 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider.java
@@ -129,6 +129,7 @@ public class SQLServerColumnEncryptionAzureKeyVaultProvider extends SQLServerCol
private static final String MSSQL_JDBC_PROPERTIES = "mssql-jdbc.properties";
private static final String AKV_TRUSTED_ENDPOINTS_KEYWORD = "AKVTrustedEndpoints";
private static final String RSA_ENCRYPTION_ALGORITHM_WITH_OAEP_FOR_AKV = "RSA-OAEP";
+ private static final String SHA_256 = "SHA-256";
private static final List akvTrustedEndpoints = getTrustedEndpoints();
@@ -412,7 +413,7 @@ public byte[] decryptColumnEncryptionKey(String masterKeyPath, String encryption
MessageDigest md = null;
try {
- md = MessageDigest.getInstance("SHA-256");
+ md = MessageDigest.getInstance(SHA_256);
} catch (NoSuchAlgorithmException e) {
throw new SQLServerException(SQLServerException.getErrString("R_NoSHA256Algorithm"), e);
}
@@ -533,7 +534,7 @@ public byte[] encryptColumnEncryptionKey(String masterKeyPath, String encryption
MessageDigest md = null;
try {
- md = MessageDigest.getInstance("SHA-256");
+ md = MessageDigest.getInstance(SHA_256);
} catch (NoSuchAlgorithmException e) {
throw new SQLServerException(SQLServerException.getErrString("R_NoSHA256Algorithm"), e);
}
@@ -874,7 +875,7 @@ public boolean verifyColumnMasterKeyMetadata(String masterKeyPath, boolean allow
}
try {
- MessageDigest md = MessageDigest.getInstance("SHA-256");
+ MessageDigest md = MessageDigest.getInstance(SHA_256);
md.update(name.toLowerCase().getBytes(java.nio.charset.StandardCharsets.UTF_16LE));
md.update(masterKeyPath.toLowerCase().getBytes(java.nio.charset.StandardCharsets.UTF_16LE));
// value of allowEnclaveComputations is always true here
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionCertificateStoreProvider.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionCertificateStoreProvider.java
index 24bc18ddb..1e8d0d040 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionCertificateStoreProvider.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionCertificateStoreProvider.java
@@ -61,7 +61,7 @@ private byte[] decryptColumnEncryptionKeyWindows(String masterKeyPath, String en
return AuthenticationJNI.DecryptColumnEncryptionKey(masterKeyPath, encryptionAlgorithm,
encryptedColumnEncryptionKey);
} catch (DLLException e) {
- DLLException.buildException(e.getErrCode(), e.GetParam1(), e.GetParam2(), e.GetParam3());
+ DLLException.buildException(e.getErrCode(), e.getParam1(), e.getParam2(), e.getParam3());
return null;
}
}
@@ -88,7 +88,7 @@ public boolean verifyColumnMasterKeyMetadata(String masterKeyPath, boolean allow
try {
return AuthenticationJNI.VerifyColumnMasterKeyMetadata(masterKeyPath, allowEnclaveComputations, signature);
} catch (DLLException e) {
- DLLException.buildException(e.getErrCode(), e.GetParam1(), e.GetParam2(), e.GetParam3());
+ DLLException.buildException(e.getErrCode(), e.getParam1(), e.getParam2(), e.getParam3());
return false;
}
}
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnection.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnection.java
index 039625f05..eb4992c68 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnection.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnection.java
@@ -622,6 +622,10 @@ ServerPortPlaceHolder getRoutingInfo() {
private static final String CALL_ABORT_PERM = "callAbort";
private static final String SET_NETWORK_TIMEOUT_PERM = "setNetworkTimeout";
+ private static final String SET_SAVE_POINT = "setSaveoint";
+ private static final String CREATE_STATEMENT = "createStatement";
+ private static final String ACTIVITY_ID = " ActivityId: ";
+ private static final String TRUSTED_KEY_MASTER_PATHS = "Trusted Master Key Paths";
/** see connection properties doc (default is false) */
private boolean sendStringParametersAsUnicode = SQLServerDriverBooleanProperty.SEND_STRING_PARAMETERS_AS_UNICODE
@@ -1229,7 +1233,7 @@ public void registerColumnEncryptionKeyStoreProvidersOnConnection(
*/
public static void setColumnEncryptionTrustedMasterKeyPaths(Map> trustedKeyPaths) {
loggerExternal.entering(loggingClassNameBase, "setColumnEncryptionTrustedMasterKeyPaths",
- "Setting Trusted Master Key Paths");
+ "Setting " + TRUSTED_KEY_MASTER_PATHS);
sLock.lock();
try {
@@ -1243,7 +1247,7 @@ public static void setColumnEncryptionTrustedMasterKeyPaths(Map trustedKeyPaths) {
loggerExternal.entering(loggingClassNameBase, "updateColumnEncryptionTrustedMasterKeyPaths",
- "Updating Trusted Master Key Paths");
+ "Updating " + TRUSTED_KEY_MASTER_PATHS);
sLock.lock();
try {
@@ -1267,7 +1271,7 @@ public static void updateColumnEncryptionTrustedMasterKeyPaths(String server, Li
}
loggerExternal.exiting(loggingClassNameBase, "updateColumnEncryptionTrustedMasterKeyPaths",
- "Number of Trusted Master Key Paths: " + columnEncryptionTrustedMasterKeyPaths.size());
+ "Number of " + TRUSTED_KEY_MASTER_PATHS + ": " + columnEncryptionTrustedMasterKeyPaths.size());
}
/**
@@ -1278,7 +1282,7 @@ public static void updateColumnEncryptionTrustedMasterKeyPaths(String server, Li
*/
public static void removeColumnEncryptionTrustedMasterKeyPaths(String server) {
loggerExternal.entering(loggingClassNameBase, "removeColumnEncryptionTrustedMasterKeyPaths",
- "Removing Trusted Master Key Paths");
+ "Removing " + TRUSTED_KEY_MASTER_PATHS);
sLock.lock();
try {
@@ -1289,7 +1293,7 @@ public static void removeColumnEncryptionTrustedMasterKeyPaths(String server) {
}
loggerExternal.exiting(loggingClassNameBase, "removeColumnEncryptionTrustedMasterKeyPaths",
- "Number of Trusted Master Key Paths: " + columnEncryptionTrustedMasterKeyPaths.size());
+ "Number of " + TRUSTED_KEY_MASTER_PATHS + ": " + columnEncryptionTrustedMasterKeyPaths.size());
}
/**
@@ -1299,7 +1303,7 @@ public static void removeColumnEncryptionTrustedMasterKeyPaths(String server) {
*/
public static Map> getColumnEncryptionTrustedMasterKeyPaths() {
loggerExternal.entering(loggingClassNameBase, "getColumnEncryptionTrustedMasterKeyPaths",
- "Getting Trusted Master Key Paths");
+ "Getting " + TRUSTED_KEY_MASTER_PATHS);
sLock.lock();
try {
@@ -1310,7 +1314,7 @@ public static Map> getColumnEncryptionTrustedMasterKeyPaths
}
loggerExternal.exiting(loggingClassNameBase, "getColumnEncryptionTrustedMasterKeyPaths",
- "Number of Trusted Master Key Paths: " + masterKeyPathCopy.size());
+ "Number of " + TRUSTED_KEY_MASTER_PATHS + ": " + masterKeyPathCopy.size());
return masterKeyPathCopy;
} finally {
@@ -1423,7 +1427,7 @@ final void setMaxFieldSize(int limit) throws SQLServerException {
// assert limit >= 0;
if (maxFieldSize != limit) {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
// If no limit on field size, set text size to max (2147483647), NOT default (0 --> 4K)
connectionCommand("SET TEXTSIZE " + ((0 == limit) ? Integer.MAX_VALUE : limit), "setMaxFieldSize");
@@ -1455,7 +1459,7 @@ final void setMaxRows(int limit) throws SQLServerException {
// assert limit >= 0;
if (maxRows != limit) {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
connectionCommand("SET ROWCOUNT " + limit, "setMaxRows");
maxRows = limit;
@@ -2971,7 +2975,7 @@ private void login(String primary, String primaryInstanceName, int primaryPortNu
} else {
if (isDBMirroring) {
// Create a temporary class with the mirror info from the user
- tempFailover = new FailoverInfo(mirror, this, false);
+ tempFailover = new FailoverInfo(mirror, false);
}
}
@@ -3236,7 +3240,7 @@ private void login(String primary, String primaryInstanceName, int primaryPortNu
}
if (null == tempFailover)
- tempFailover = new FailoverInfo(failoverPartnerServerProvided, this, false);
+ tempFailover = new FailoverInfo(failoverPartnerServerProvided, false);
// if the failover is not from the map already out this in the map, if it is from the map just make sure
// that we change the
if (null != foActual) {
@@ -4243,9 +4247,9 @@ static String sqlStatementToSetCommit(boolean autoCommit) {
@Override
public Statement createStatement() throws SQLServerException {
- loggerExternal.entering(loggingClassName, "createStatement");
+ loggerExternal.entering(loggingClassName, CREATE_STATEMENT);
Statement st = createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
- loggerExternal.exiting(loggingClassName, "createStatement", st);
+ loggerExternal.exiting(loggingClassName, CREATE_STATEMENT, st);
return st;
}
@@ -4278,7 +4282,7 @@ public void setAutoCommit(boolean newAutoCommitMode) throws SQLServerException {
if (loggerExternal.isLoggable(Level.FINER)) {
loggerExternal.entering(loggingClassName, "setAutoCommit", newAutoCommitMode);
if (Util.isActivityTraceOn())
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
String commitPendingTransaction = "";
checkClosed();
@@ -4334,7 +4338,7 @@ public void commit() throws SQLServerException {
public void commit(boolean delayedDurability) throws SQLServerException {
loggerExternal.entering(loggingClassName, "commit");
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
@@ -4352,7 +4356,7 @@ public void commit(boolean delayedDurability) throws SQLServerException {
public void rollback() throws SQLServerException {
loggerExternal.entering(loggingClassName, "rollback");
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
@@ -4512,7 +4516,7 @@ public boolean isReadOnly() throws SQLServerException {
public void setCatalog(String catalog) throws SQLServerException {
loggerExternal.entering(loggingClassName, "setCatalog", catalog);
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
if (catalog != null) {
@@ -4535,7 +4539,7 @@ public void setTransactionIsolation(int level) throws SQLServerException {
if (loggerExternal.isLoggable(Level.FINER)) {
loggerExternal.entering(loggingClassName, "setTransactionIsolation", level);
if (Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
}
@@ -4607,7 +4611,7 @@ public void clearWarnings() throws SQLServerException {
@Override
public Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLServerException {
if (loggerExternal.isLoggable(Level.FINER))
- loggerExternal.entering(loggingClassName, "createStatement",
+ loggerExternal.entering(loggingClassName, CREATE_STATEMENT,
new Object[] {resultSetType, resultSetConcurrency});
checkClosed();
SQLServerStatement st = new SQLServerStatement(this, resultSetType, resultSetConcurrency,
@@ -4615,7 +4619,7 @@ public Statement createStatement(int resultSetType, int resultSetConcurrency) th
if (requestStarted) {
addOpenStatement(st);
}
- loggerExternal.exiting(loggingClassName, "createStatement", st);
+ loggerExternal.exiting(loggingClassName, CREATE_STATEMENT, st);
return st;
}
@@ -6513,18 +6517,18 @@ private void checkMatchesCurrentHoldability(int resultSetHoldability) throws SQL
@Override
public Statement createStatement(int nType, int nConcur, int resultSetHoldability) throws SQLServerException {
- loggerExternal.entering(loggingClassName, "createStatement",
+ loggerExternal.entering(loggingClassName, CREATE_STATEMENT,
new Object[] {nType, nConcur, resultSetHoldability});
Statement st = createStatement(nType, nConcur, resultSetHoldability,
SQLServerStatementColumnEncryptionSetting.UseConnectionSetting);
- loggerExternal.exiting(loggingClassName, "createStatement", st);
+ loggerExternal.exiting(loggingClassName, CREATE_STATEMENT, st);
return st;
}
@Override
public Statement createStatement(int nType, int nConcur, int resultSetHoldability,
SQLServerStatementColumnEncryptionSetting stmtColEncSetting) throws SQLServerException {
- loggerExternal.entering(loggingClassName, "createStatement",
+ loggerExternal.entering(loggingClassName, CREATE_STATEMENT,
new Object[] {nType, nConcur, resultSetHoldability, stmtColEncSetting});
checkClosed();
checkValidHoldability(resultSetHoldability);
@@ -6533,7 +6537,7 @@ public Statement createStatement(int nType, int nConcur, int resultSetHoldabilit
if (requestStarted) {
addOpenStatement((ISQLServerStatement) st);
}
- loggerExternal.exiting(loggingClassName, "createStatement", st);
+ loggerExternal.exiting(loggingClassName, CREATE_STATEMENT, st);
return st;
}
@@ -6709,32 +6713,32 @@ final private Savepoint setNamedSavepoint(String sName) throws SQLServerExceptio
// than just the outer transaction (@@TRANCOUNT = 1). Should this limitation ever
// change, the T-SQL below should still work.
connectionCommand("IF @@TRANCOUNT = 0 BEGIN BEGIN TRAN IF @@TRANCOUNT = 2 COMMIT TRAN END SAVE TRAN "
- + Util.escapeSQLId(s.getLabel()), "setSavepoint");
+ + Util.escapeSQLId(s.getLabel()), SET_SAVE_POINT);
return s;
}
@Override
public Savepoint setSavepoint(String sName) throws SQLServerException {
- loggerExternal.entering(loggingClassName, "setSavepoint", sName);
+ loggerExternal.entering(loggingClassName, SET_SAVE_POINT, sName);
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
Savepoint pt = setNamedSavepoint(sName);
- loggerExternal.exiting(loggingClassName, "setSavepoint", pt);
+ loggerExternal.exiting(loggingClassName, SET_SAVE_POINT, pt);
return pt;
}
@Override
public Savepoint setSavepoint() throws SQLServerException {
- loggerExternal.entering(loggingClassName, "setSavepoint");
+ loggerExternal.entering(loggingClassName, SET_SAVE_POINT);
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
Savepoint pt = setNamedSavepoint(null);
- loggerExternal.exiting(loggingClassName, "setSavepoint", pt);
+ loggerExternal.exiting(loggingClassName, SET_SAVE_POINT, pt);
return pt;
}
@@ -6742,7 +6746,7 @@ public Savepoint setSavepoint() throws SQLServerException {
public void rollback(Savepoint s) throws SQLServerException {
loggerExternal.entering(loggingClassName, "rollback", s);
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
if (databaseAutoCommitMode) {
@@ -6767,7 +6771,7 @@ public void setHoldability(int holdability) throws SQLServerException {
loggerExternal.entering(loggingClassName, "setHoldability", holdability);
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkValidHoldability(holdability);
checkClosed();
@@ -6835,7 +6839,7 @@ public void setNetworkTimeout(Executor executor, int timeout) throws SQLExceptio
terminate(SQLServerException.DRIVER_ERROR_IO_FAILED, ioe.getMessage(), ioe);
}
- loggerExternal.exiting(loggingClassName, "setNetworkTimeout");
+ loggerExternal.exiting(loggingClassName, SET_NETWORK_TIMEOUT_PERM);
}
@Override
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionPoolDataSource.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionPoolDataSource.java
index a6c928a9c..43a83cb15 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionPoolDataSource.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionPoolDataSource.java
@@ -24,7 +24,9 @@ public class SQLServerConnectionPoolDataSource extends SQLServerDataSource imple
/**
* default constructor
*/
- public SQLServerConnectionPoolDataSource() {}
+ public SQLServerConnectionPoolDataSource() {
+ // default constructor
+ }
// Get a new physical connection that the pool manager will issue logical connections from
@Override
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerDataSource.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerDataSource.java
index d2565c823..87b50aebd 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerDataSource.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerDataSource.java
@@ -33,6 +33,8 @@ public class SQLServerDataSource
static final private java.util.logging.Logger parentLogger = java.util.logging.Logger
.getLogger("com.microsoft.sqlserver.jdbc");
+ static final String TRUSTSTORE_PASSWORD_STRIPPED = "trustStorePasswordStripped";
+
/** logging class name */
final private String loggingClassName;
@@ -1457,7 +1459,7 @@ Reference getReferenceInternal(String dataSourceClassString) {
ref.add(new StringRefAddr("class", dataSourceClassString));
if (trustStorePasswordStripped)
- ref.add(new StringRefAddr("trustStorePasswordStripped", "true"));
+ ref.add(new StringRefAddr(TRUSTSTORE_PASSWORD_STRIPPED, "true"));
// Add each property name+value pair found in connectionProps.
Enumeration> e = connectionProps.keys();
@@ -1469,7 +1471,7 @@ Reference getReferenceInternal(String dataSourceClassString) {
// The property set and the variable set at the same time is not
// possible
assert !trustStorePasswordStripped;
- ref.add(new StringRefAddr("trustStorePasswordStripped", "true"));
+ ref.add(new StringRefAddr(TRUSTSTORE_PASSWORD_STRIPPED, "true"));
} else {
// do not add passwords to the collection. we have normal
// password
@@ -1509,7 +1511,7 @@ void initializeFromReference(javax.naming.Reference ref) {
dataSourceURL = propertyValue;
} else if ("dataSourceDescription".equals(propertyName)) {
dataSourceDescription = propertyValue;
- } else if ("trustStorePasswordStripped".equals(propertyName)) {
+ } else if (TRUSTSTORE_PASSWORD_STRIPPED.equals(propertyName)) {
trustStorePasswordStripped = true;
}
// Just skip "class" StringRefAddr, it does not go into
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerDataSourceObjectFactory.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerDataSourceObjectFactory.java
index 59fc884b1..c1b31512f 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerDataSourceObjectFactory.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerDataSourceObjectFactory.java
@@ -24,7 +24,9 @@ public final class SQLServerDataSourceObjectFactory implements ObjectFactory {
/**
* Constructs a SQLServerDataSourceObjectFactory.
*/
- public SQLServerDataSourceObjectFactory() {}
+ public SQLServerDataSourceObjectFactory() {
+ // default constructor
+ }
/**
* Returns an reference to the SQLServerDataSource instance getObjectInstance is a factory for rehydrating
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerDatabaseMetaData.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerDatabaseMetaData.java
index 8e257ca58..dd474fc4e 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerDatabaseMetaData.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerDatabaseMetaData.java
@@ -270,6 +270,8 @@ private void checkClosed() throws SQLServerException {
private static final String IS_GENERATEDCOLUMN = "IS_GENERATEDCOLUMN";
private static final String IS_AUTOINCREMENT = "IS_AUTOINCREMENT";
+ private static final String ACTIVITY_ID = " ActivityId: ";
+
private static final String SQL_KEYWORDS = createSqlKeyWords();
// Use LinkedHashMap to force retrieve elements in order they were inserted
@@ -475,16 +477,12 @@ public boolean supportsSharding() throws SQLException {
@Override
public java.sql.ResultSet getCatalogs() throws SQLException, SQLTimeoutException {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
// Return the original case instead of CAPS.removed Upper().
- String s = "SELECT name AS TABLE_CAT FROM sys.databases order by name"; // Need
- // to
- // match
- // case
- // of
- // connection.getCatalog
+ // Need to match case of connection.getCatalog
+ String s = "SELECT name AS TABLE_CAT FROM sys.databases order by name";
return getResultSetFromInternalQueries(null, s);
}
@@ -508,7 +506,7 @@ public String getCatalogTerm() throws SQLServerException {
public java.sql.ResultSet getColumnPrivileges(String catalog, String schema, String table,
String col) throws SQLServerException, SQLTimeoutException {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
// column_privileges supports columns being escaped.
@@ -534,7 +532,7 @@ public java.sql.ResultSet getColumnPrivileges(String catalog, String schema, Str
public java.sql.ResultSet getTables(String catalog, String schema, String table,
String types[]) throws SQLServerException, SQLTimeoutException {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
@@ -628,7 +626,7 @@ private static String EscapeIDName(String inID) throws SQLServerException {
@Override
public java.sql.ResultSet getColumns(String catalog, String schema, String table, String col) throws SQLException {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
String originalCatalog = switchCatalogs(catalog);
@@ -805,8 +803,8 @@ private String generateAzureDWSelect(ResultSet rs, Map columns)
if (null == o) {
sb.append("NULL");
} else if (o instanceof Number) {
- if ("IS_AUTOINCREMENT".equalsIgnoreCase(p.getValue())
- || "IS_GENERATEDCOLUMN".equalsIgnoreCase(p.getValue())) {
+ if (IS_AUTOINCREMENT.equalsIgnoreCase(p.getValue())
+ || IS_GENERATEDCOLUMN.equalsIgnoreCase(p.getValue())) {
sb.append("'").append(Util.escapeSingleQuotes(Util.zeroOneToYesNo(((Number) o).intValue())))
.append("'");
} else {
@@ -927,7 +925,7 @@ public java.sql.ResultSet getClientInfoProperties() throws SQLException {
public java.sql.ResultSet getBestRowIdentifier(String catalog, String schema, String table, int scope,
boolean nullable) throws SQLServerException, SQLTimeoutException {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
/*
@@ -965,7 +963,7 @@ public java.sql.ResultSet getBestRowIdentifier(String catalog, String schema, St
public java.sql.ResultSet getCrossReference(String cat1, String schem1, String tab1, String cat2, String schem2,
String tab2) throws SQLException, SQLTimeoutException {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
@@ -1151,7 +1149,7 @@ private ResultSet executeSPFkeys(String[] procParams) throws SQLException, SQLTi
public java.sql.ResultSet getIndexInfo(String cat, String schema, String table, boolean unique,
boolean approximate) throws SQLServerException, SQLTimeoutException {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
/*
@@ -1334,7 +1332,7 @@ public String getNumericFunctions() throws SQLServerException {
public java.sql.ResultSet getPrimaryKeys(String cat, String schema,
String table) throws SQLServerException, SQLTimeoutException {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
/*
@@ -1357,7 +1355,7 @@ public java.sql.ResultSet getPrimaryKeys(String cat, String schema,
public java.sql.ResultSet getProcedureColumns(String catalog, String schema, String proc,
String col) throws SQLServerException, SQLTimeoutException {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
/*
@@ -1401,7 +1399,7 @@ public java.sql.ResultSet getProcedureColumns(String catalog, String schema, Str
public java.sql.ResultSet getProcedures(String catalog, String schema,
String proc) throws SQLServerException, SQLTimeoutException {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
@@ -1427,7 +1425,7 @@ public String getProcedureTerm() throws SQLServerException {
public ResultSet getPseudoColumns(String catalog, String schemaPattern, String tableNamePattern,
String columnNamePattern) throws SQLException {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
@@ -1454,7 +1452,7 @@ public ResultSet getPseudoColumns(String catalog, String schemaPattern, String t
@Override
public java.sql.ResultSet getSchemas() throws SQLException, SQLTimeoutException {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
return getSchemasInternal(null, null);
@@ -1534,7 +1532,7 @@ private java.sql.ResultSet getSchemasInternal(String catalog,
@Override
public java.sql.ResultSet getSchemas(String catalog, String schemaPattern) throws SQLException {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
return getSchemasInternal(catalog, schemaPattern);
}
@@ -1600,7 +1598,7 @@ public String getSystemFunctions() throws SQLServerException {
public java.sql.ResultSet getTablePrivileges(String catalog, String schema,
String table) throws SQLServerException, SQLTimeoutException {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
table = EscapeIDName(table);
@@ -1621,7 +1619,7 @@ public java.sql.ResultSet getTablePrivileges(String catalog, String schema,
@Override
public java.sql.ResultSet getTableTypes() throws SQLException, SQLTimeoutException {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
String s = "SELECT 'VIEW' 'TABLE_TYPE' UNION SELECT 'TABLE' UNION SELECT 'SYSTEM TABLE'";
@@ -1638,7 +1636,7 @@ public String getTimeDateFunctions() throws SQLServerException {
@Override
public java.sql.ResultSet getTypeInfo() throws SQLException, SQLTimeoutException {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
@@ -1724,7 +1722,7 @@ public String getURL() throws SQLServerException {
@Override
public String getUserName() throws SQLServerException, SQLTimeoutException {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
String result = "";
@@ -1746,7 +1744,7 @@ public String getUserName() throws SQLServerException, SQLTimeoutException {
public java.sql.ResultSet getVersionColumns(String catalog, String schema,
String table) throws SQLServerException, SQLTimeoutException {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
/*
@@ -2385,7 +2383,7 @@ public boolean supportsBatchUpdates() throws SQLServerException {
public java.sql.ResultSet getUDTs(String catalog, String schemaPattern, String typeNamePattern,
int[] types) throws SQLException, SQLTimeoutException {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
return getResultSetFromInternalQueries(catalog, "SELECT" +
@@ -2487,7 +2485,7 @@ public boolean supportsResultSetHoldability(int holdability) throws SQLServerExc
public ResultSet getAttributes(String catalog, String schemaPattern, String typeNamePattern,
String attributeNamePattern) throws SQLException, SQLTimeoutException {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
return getResultSetFromInternalQueries(catalog, "SELECT" +
@@ -2518,7 +2516,7 @@ public ResultSet getAttributes(String catalog, String schemaPattern, String type
public ResultSet getSuperTables(String catalog, String schemaPattern,
String tableNamePattern) throws SQLException, SQLTimeoutException {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
return getResultSetFromInternalQueries(catalog, "SELECT" +
@@ -2532,7 +2530,7 @@ public ResultSet getSuperTables(String catalog, String schemaPattern,
public ResultSet getSuperTypes(String catalog, String schemaPattern,
String typeNamePattern) throws SQLException, SQLTimeoutException {
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
return getResultSetFromInternalQueries(catalog, "SELECT" +
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerEncryptionAlgorithmFactoryList.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerEncryptionAlgorithmFactoryList.java
index 9e8f35f61..5c2ba4286 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerEncryptionAlgorithmFactoryList.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerEncryptionAlgorithmFactoryList.java
@@ -20,7 +20,7 @@ final class SQLServerEncryptionAlgorithmFactoryList {
private SQLServerEncryptionAlgorithmFactoryList() {
encryptionAlgoFactoryMap = new ConcurrentHashMap<>();
- encryptionAlgoFactoryMap.putIfAbsent(SQLServerAeadAes256CbcHmac256Algorithm.algorithmName,
+ encryptionAlgoFactoryMap.putIfAbsent(SQLServerAeadAes256CbcHmac256Algorithm.AEAD_AES_256_CBC_HMAC_SHA256,
new SQLServerAeadAes256CbcHmac256Factory());
}
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerEncryptionType.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerEncryptionType.java
index 289215db2..098c9314e 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerEncryptionType.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerEncryptionType.java
@@ -14,9 +14,9 @@
*
*/
enum SQLServerEncryptionType {
- Deterministic((byte) 1),
- Randomized((byte) 2),
- PlainText((byte) 0);
+ DETERMINISTIC((byte) 1),
+ RANDOMIZED((byte) 2),
+ PLAINTEXT((byte) 0);
final byte value;
private static final SQLServerEncryptionType[] VALUES = values();
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerException.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerException.java
index 29f7d9cf0..e76276173 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerException.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerException.java
@@ -59,6 +59,7 @@ public final class SQLServerException extends java.sql.SQLException {
static final String EXCEPTION_XOPEN_CONNECTION_CANT_ESTABLISH = "08001";
static final String EXCEPTION_XOPEN_CONNECTION_DOES_NOT_EXIST = "08003";
static final String EXCEPTION_XOPEN_CONNECTION_FAILURE = "08006"; // After connection was connected OK
+
static final String LOG_CLIENT_CONNECTION_ID_PREFIX = " ClientConnectionId:";
// SQL error values (from sqlerrorcodes.h)
@@ -338,9 +339,9 @@ static String generateStateCode(SQLServerConnection con, int errNum, Integer dat
if (xopenStates) {
switch (errNum) {
case 4060:
- return "08001"; // Database name undefined at logging
+ return EXCEPTION_XOPEN_CONNECTION_CANT_ESTABLISH; // Database name undefined at logging
case 18456:
- return "08001"; // username password wrong at login
+ return EXCEPTION_XOPEN_CONNECTION_CANT_ESTABLISH; // username password wrong at login
case 2714:
return "42S01"; // Table already exists
case 208:
@@ -353,13 +354,13 @@ static String generateStateCode(SQLServerConnection con, int errNum, Integer dat
// The error code came from the db but XOPEN does not have a specific case for it.
} else {
switch (errNum) {
- // case 18456: return "08001"; //username password wrong at login
+ // case 18456: return EXCEPTION_XOPEN_CONNECTION_CANT_ESTABLISH; //username password wrong at login
case 8152:
return "22001"; // String data right truncation
case 515: // 2.2705
case 547:
- return "23000"; // Integrity constraint violation
case 2601:
+ case 2627:
return "23000"; // Integrity constraint violation
case 2714:
return "S0001"; // table already exists
@@ -367,8 +368,6 @@ static String generateStateCode(SQLServerConnection con, int errNum, Integer dat
return "S0002"; // table not found
case 1205:
return "40001"; // deadlock detected
- case 2627:
- return "23000"; // DPM 4.04. Primary key violation
default: {
String dbState = databaseState.toString();
/*
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerMSAL4JUtils.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerMSAL4JUtils.java
index 5ec6d09d6..cf2b8d6b6 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerMSAL4JUtils.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerMSAL4JUtils.java
@@ -41,6 +41,7 @@ class SQLServerMSAL4JUtils {
static final String REDIRECTURI = "http://localhost";
static final String SLASH_DEFAULT = "/.default";
+ static final String ACCESS_TOKEN_EXPIRE = " Access token expires on the following date: ";
private static final java.util.logging.Logger logger = java.util.logging.Logger
.getLogger("com.microsoft.sqlserver.jdbc.SQLServerMSAL4JUtils");
@@ -60,8 +61,7 @@ static SqlAuthenticationToken getSqlFedAuthToken(SqlFedAuthInfo fedAuthInfo, Str
final IAuthenticationResult authenticationResult = future.get();
if (logger.isLoggable(Level.FINEST)) {
- logger.finest(logger.toString() + " Access token expires on the following date: "
- + authenticationResult.expiresOnDate());
+ logger.finest(logger.toString() + ACCESS_TOKEN_EXPIRE + authenticationResult.expiresOnDate());
}
return new SqlAuthenticationToken(authenticationResult.accessToken(), authenticationResult.expiresOnDate());
@@ -95,8 +95,7 @@ static SqlAuthenticationToken getSqlFedAuthTokenPrincipal(SqlFedAuthInfo fedAuth
final IAuthenticationResult authenticationResult = future.get();
if (logger.isLoggable(Level.FINEST)) {
- logger.finest(logger.toString() + " Access token expires on the following date: "
- + authenticationResult.expiresOnDate());
+ logger.finest(logger.toString() + ACCESS_TOKEN_EXPIRE + authenticationResult.expiresOnDate());
}
return new SqlAuthenticationToken(authenticationResult.accessToken(), authenticationResult.expiresOnDate());
@@ -138,8 +137,7 @@ static SqlAuthenticationToken getSqlFedAuthTokenIntegrated(SqlFedAuthInfo fedAut
final IAuthenticationResult authenticationResult = future.get();
if (logger.isLoggable(Level.FINEST)) {
- logger.finest(logger.toString() + " Access token expires on the following date: "
- + authenticationResult.expiresOnDate());
+ logger.finest(logger.toString() + ACCESS_TOKEN_EXPIRE + authenticationResult.expiresOnDate());
}
return new SqlAuthenticationToken(authenticationResult.accessToken(), authenticationResult.expiresOnDate());
@@ -204,8 +202,7 @@ static SqlAuthenticationToken getSqlFedAuthTokenInteractive(SqlFedAuthInfo fedAu
}
if (logger.isLoggable(Level.FINEST)) {
- logger.finest(logger.toString() + " Access token expires on the following date: "
- + authenticationResult.expiresOnDate());
+ logger.finest(logger.toString() + ACCESS_TOKEN_EXPIRE + authenticationResult.expiresOnDate());
}
return new SqlAuthenticationToken(authenticationResult.accessToken(), authenticationResult.expiresOnDate());
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerNoneEnclaveProvider.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerNoneEnclaveProvider.java
index 4bdabb93f..cb20073b5 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerNoneEnclaveProvider.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerNoneEnclaveProvider.java
@@ -33,7 +33,9 @@ public class SQLServerNoneEnclaveProvider implements ISQLServerEnclaveProvider {
/**
* default constructor
*/
- public SQLServerNoneEnclaveProvider() {}
+ public SQLServerNoneEnclaveProvider() {
+ // default constructor
+ }
@Override
public void getAttestationParameters(String url) throws SQLServerException {
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerPreparedStatement.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerPreparedStatement.java
index 29afa5a57..ad666d7d9 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerPreparedStatement.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerPreparedStatement.java
@@ -57,6 +57,9 @@ public class SQLServerPreparedStatement extends SQLServerStatement implements IS
private static final int BATCH_STATEMENT_DELIMITER_TDS_71 = 0x80;
private static final int BATCH_STATEMENT_DELIMITER_TDS_72 = 0xFF;
+ private static final String EXECUTE_BATCH_STRING = "executeBatch";
+ private static final String ACTIVITY_ID = " ActivityId: ";
+
/** batch statement delimiter */
final int nBatchStatementDelimiter = BATCH_STATEMENT_DELIMITER_TDS_72;
@@ -453,7 +456,7 @@ private String buildParamTypeDefinitions(Parameter[] params, boolean renewDefini
public java.sql.ResultSet executeQuery() throws SQLServerException, SQLTimeoutException {
loggerExternal.entering(getClassNameLogging(), "executeQuery");
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
executeStatement(new PrepStmtExecCmd(this, EXECUTE_QUERY));
@@ -478,7 +481,7 @@ final java.sql.ResultSet executeQueryInternal() throws SQLServerException, SQLTi
public int executeUpdate() throws SQLServerException, SQLTimeoutException {
loggerExternal.entering(getClassNameLogging(), "executeUpdate");
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
@@ -500,7 +503,7 @@ public long executeLargeUpdate() throws SQLServerException, SQLTimeoutException
loggerExternal.entering(getClassNameLogging(), "executeLargeUpdate");
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
executeStatement(new PrepStmtExecCmd(this, EXECUTE_UPDATE));
@@ -512,7 +515,7 @@ public long executeLargeUpdate() throws SQLServerException, SQLTimeoutException
public boolean execute() throws SQLServerException, SQLTimeoutException {
loggerExternal.entering(getClassNameLogging(), "execute");
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
executeStatement(new PrepStmtExecCmd(this, EXECUTE));
@@ -528,6 +531,7 @@ private final class PrepStmtExecCmd extends TDSCommand {
* Always update serialVersionUID when prompted.
*/
private static final long serialVersionUID = 4098801171124750861L;
+
private final SQLServerPreparedStatement stmt;
PrepStmtExecCmd(SQLServerPreparedStatement stmt, int executeMethod) {
@@ -563,7 +567,7 @@ final void doExecutePreparedStatement(PrepStmtExecCmd command) throws SQLServerE
setMaxRowsAndMaxFieldSize();
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
boolean hasExistingTypeDefinitions = preparedTypeDefinitions != null;
@@ -986,7 +990,7 @@ private void getParameterEncryptionMetadata(Parameter[] params) throws SQLServer
}
SQLServerEncryptionType encType = SQLServerEncryptionType.of((byte) secondRs
.getInt(DescribeParameterEncryptionResultSet2.COLUMNENCRYPTIONTYPE.value()));
- if (SQLServerEncryptionType.PlainText != encType) {
+ if (SQLServerEncryptionType.PLAINTEXT != encType) {
params[paramIndex].cryptoMeta = new CryptoMetadata(cekEntry, (short) cekOrdinal,
(byte) secondRs.getInt(
DescribeParameterEncryptionResultSet2.COLUMNENCRYPTIONALGORITHM.value()),
@@ -2035,9 +2039,9 @@ public final void clearBatch() throws SQLServerException {
@Override
public int[] executeBatch() throws SQLServerException, BatchUpdateException, SQLTimeoutException {
- loggerExternal.entering(getClassNameLogging(), "executeBatch");
+ loggerExternal.entering(getClassNameLogging(), EXECUTE_BATCH_STRING);
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
discardLastExecutionResults();
@@ -2051,7 +2055,7 @@ public int[] executeBatch() throws SQLServerException, BatchUpdateException, SQL
if (this.useBulkCopyForBatchInsert && isInsert(localUserSQL)) {
if (null == batchParamValues) {
updateCounts = new int[0];
- loggerExternal.exiting(getClassNameLogging(), "executeBatch", updateCounts);
+ loggerExternal.exiting(getClassNameLogging(), EXECUTE_BATCH_STRING, updateCounts);
return updateCounts;
}
@@ -2069,7 +2073,8 @@ public int[] executeBatch() throws SQLServerException, BatchUpdateException, SQL
for (Parameter paramValue : paramValues) {
if (paramValue.isOutput()) {
throw new BatchUpdateException(
- SQLServerException.getErrString("R_outParamsNotPermittedinBatch"), null, 0, null);
+ SQLServerException.getErrString("R_outParamsNotPermittedinBatch"), null, 0,
+ null);
}
}
}
@@ -2098,8 +2103,8 @@ public int[] executeBatch() throws SQLServerException, BatchUpdateException, SQL
}
}
- SQLServerBulkBatchInsertRecord batchRecord = new SQLServerBulkBatchInsertRecord(batchParamValues,
- columnList, valueList, null);
+ SQLServerBulkBatchInsertRecord batchRecord = new SQLServerBulkBatchInsertRecord(
+ batchParamValues, columnList, valueList, null);
for (int i = 1; i <= rs.getColumnCount(); i++) {
Column c = rs.getColumn(i);
@@ -2112,7 +2117,8 @@ public int[] executeBatch() throws SQLServerException, BatchUpdateException, SQL
} else {
jdbctype = ti.getSSType().getJDBCType().getIntValue();
}
- batchRecord.addColumnMetadata(i, c.getColumnName(), jdbctype, ti.getPrecision(), ti.getScale());
+ batchRecord.addColumnMetadata(i, c.getColumnName(), jdbctype, ti.getPrecision(),
+ ti.getScale());
}
SQLServerBulkCopy bcOperation = new SQLServerBulkCopy(connection);
@@ -2129,7 +2135,7 @@ public int[] executeBatch() throws SQLServerException, BatchUpdateException, SQL
updateCounts[i] = 1;
}
- loggerExternal.exiting(getClassNameLogging(), "executeBatch", updateCounts);
+ loggerExternal.exiting(getClassNameLogging(), EXECUTE_BATCH_STRING, updateCounts);
return updateCounts;
}
}
@@ -2183,7 +2189,7 @@ public int[] executeBatch() throws SQLServerException, BatchUpdateException, SQL
}
}
- loggerExternal.exiting(getClassNameLogging(), "executeBatch", updateCounts);
+ loggerExternal.exiting(getClassNameLogging(), EXECUTE_BATCH_STRING, updateCounts);
return updateCounts;
} finally {
batchParamValues = null;
@@ -2194,7 +2200,7 @@ public int[] executeBatch() throws SQLServerException, BatchUpdateException, SQL
public long[] executeLargeBatch() throws SQLServerException, BatchUpdateException, SQLTimeoutException {
loggerExternal.entering(getClassNameLogging(), "executeLargeBatch");
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
discardLastExecutionResults();
@@ -2226,7 +2232,8 @@ public long[] executeLargeBatch() throws SQLServerException, BatchUpdateExceptio
for (Parameter paramValue : paramValues) {
if (paramValue.isOutput()) {
throw new BatchUpdateException(
- SQLServerException.getErrString("R_outParamsNotPermittedinBatch"), null, 0, null);
+ SQLServerException.getErrString("R_outParamsNotPermittedinBatch"), null, 0,
+ null);
}
}
}
@@ -2255,8 +2262,8 @@ public long[] executeLargeBatch() throws SQLServerException, BatchUpdateExceptio
}
}
- SQLServerBulkBatchInsertRecord batchRecord = new SQLServerBulkBatchInsertRecord(batchParamValues,
- columnList, valueList, null);
+ SQLServerBulkBatchInsertRecord batchRecord = new SQLServerBulkBatchInsertRecord(
+ batchParamValues, columnList, valueList, null);
for (int i = 1; i <= rs.getColumnCount(); i++) {
Column c = rs.getColumn(i);
@@ -2269,7 +2276,8 @@ public long[] executeLargeBatch() throws SQLServerException, BatchUpdateExceptio
} else {
jdbctype = ti.getSSType().getJDBCType().getIntValue();
}
- batchRecord.addColumnMetadata(i, c.getColumnName(), jdbctype, ti.getPrecision(), ti.getScale());
+ batchRecord.addColumnMetadata(i, c.getColumnName(), jdbctype, ti.getPrecision(),
+ ti.getScale());
}
SQLServerBulkCopy bcOperation = new SQLServerBulkCopy(connection);
@@ -2409,7 +2417,7 @@ private void checkAdditionalQuery() {
}
private String parseUserSQLForTableNameDW(boolean hasInsertBeenFound, boolean hasIntoBeenFound,
- boolean hasTableBeenFound, boolean isExpectingTableName) {
+ boolean hasTableBeenFound, boolean isExpectingTableName) throws SQLServerException {
// As far as finding the table name goes, There are two cases:
// Insert into and Insert
// And there could be in-line comments (with /* and */) in between.
@@ -2461,7 +2469,9 @@ private String parseUserSQLForTableNameDW(boolean hasInsertBeenFound, boolean ha
// ] has not been found, this is wrong.
if (tempint < 0) {
- throw new IllegalArgumentException("Invalid SQL Query.");
+ MessageFormat form = new MessageFormat(SQLServerException.getErrString("R_InvalidSqlQuery"));
+ Object[] msgArgs = {localUserSQL};
+ SQLServerException.makeFromDriverError(connection, this, form.format(msgArgs), null, false);
}
// keep checking if it's escaped
@@ -2482,7 +2492,9 @@ private String parseUserSQLForTableNameDW(boolean hasInsertBeenFound, boolean ha
// \" has not been found, this is wrong.
if (tempint < 0) {
- throw new IllegalArgumentException("Invalid SQL Query.");
+ MessageFormat form = new MessageFormat(SQLServerException.getErrString("R_InvalidSqlQuery"));
+ Object[] msgArgs = {localUserSQL};
+ SQLServerException.makeFromDriverError(connection, this, form.format(msgArgs), null, false);
}
// keep checking if it's escaped
@@ -2513,10 +2525,13 @@ private String parseUserSQLForTableNameDW(boolean hasInsertBeenFound, boolean ha
}
// It shouldn't come here. If we did, something is wrong.
- throw new IllegalArgumentException("Invalid SQL Query.");
+ MessageFormat form = new MessageFormat(SQLServerException.getErrString("R_InvalidSqlQuery"));
+ Object[] msgArgs = {localUserSQL};
+ SQLServerException.makeFromDriverError(connection, this, form.format(msgArgs), null, false);
+ return "";
}
- private ArrayList parseUserSQLForColumnListDW() {
+ private ArrayList parseUserSQLForColumnListDW() throws SQLServerException {
// ignore all comments
while (checkAndRemoveCommentsAndSpace(false)) {}
@@ -2529,7 +2544,8 @@ private ArrayList parseUserSQLForColumnListDW() {
return null;
}
- private ArrayList parseUserSQLForColumnListDWHelper(ArrayList listOfColumns) {
+ private ArrayList parseUserSQLForColumnListDWHelper(
+ ArrayList listOfColumns) throws SQLServerException {
// ignore all comments
while (checkAndRemoveCommentsAndSpace(false)) {}
@@ -2556,7 +2572,9 @@ private ArrayList parseUserSQLForColumnListDWHelper(ArrayList li
// ] has not been found, this is wrong.
if (tempint < 0) {
- throw new IllegalArgumentException("Invalid SQL Query.");
+ MessageFormat form = new MessageFormat(SQLServerException.getErrString("R_InvalidSqlQuery"));
+ Object[] msgArgs = {localUserSQL};
+ SQLServerException.makeFromDriverError(connection, this, form.format(msgArgs), null, false);
}
// keep checking if it's escaped
@@ -2801,7 +2819,7 @@ final void doExecutePreparedStatementBatch(PrepStmtBatchExecCmd batchCommand) th
connection.setMaxRows(0);
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
// Create the parameter array that we'll use for all the items in this batch.
Parameter[] batchParam = new Parameter[inOutParam.length];
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerResource.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerResource.java
index 420905d8a..96bd18479 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerResource.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerResource.java
@@ -516,7 +516,8 @@ protected Object[][] getContents() {
{"R_SecureStringInitFailed", "Failed to initialize SecureStringUtil to store secure strings"},
{"R_ALPNFailed", "Failed to negotiate Application-Layer Protocol {0}. Server returned: {1}."},
{"R_serverError", "An error occurred during the current command (Done status {0}). {1}"},
- {"R_ManagedIdentityTokenAcquisitionFail", "Failed to acquire managed identity token. Request for the token succeeded, but no token was returned. The token is null."}
+ {"R_ManagedIdentityTokenAcquisitionFail", "Failed to acquire managed identity token. Request for the token succeeded, but no token was returned. The token is null."},
+ {"R_InvalidSqlQuery", "Invalid SQL Query: {0}"}
};
}
// @formatter:on
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerResultSet.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerResultSet.java
index fabe23081..c50143eaf 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerResultSet.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerResultSet.java
@@ -58,6 +58,8 @@ public class SQLServerResultSet implements ISQLServerResultSet, java.io.Serializ
/** Generate the statement's logging ID */
private static final AtomicInteger lastResultSetID = new AtomicInteger(0);
+ private static final String ACTIVITY_ID = " ActivityId: ";
+
/** trace ID */
private final String traceID;
@@ -652,7 +654,7 @@ private void closeInternal() {
public void close() throws SQLServerException {
loggerExternal.entering(getClassNameLogging(), "close");
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
closeInternal();
loggerExternal.exiting(getClassNameLogging(), "close");
@@ -1006,7 +1008,7 @@ private void updateCurrentRow(int rowsToMove) {
public boolean next() throws SQLServerException {
loggerExternal.entering(getClassNameLogging(), "next");
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
if (logger.isLoggable(java.util.logging.Level.FINER))
logger.finer(toString() + logCursorState());
@@ -1332,7 +1334,7 @@ public boolean isLast() throws SQLException {
public void beforeFirst() throws SQLException {
loggerExternal.entering(getClassNameLogging(), "beforeFirst");
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
if (logger.isLoggable(java.util.logging.Level.FINER))
logger.finer(toString() + logCursorState());
@@ -1363,7 +1365,7 @@ private void moveBeforeFirst() throws SQLServerException {
public void afterLast() throws SQLException {
loggerExternal.entering(getClassNameLogging(), "afterLast");
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
if (logger.isLoggable(java.util.logging.Level.FINER))
@@ -1587,7 +1589,7 @@ public int getRow() throws SQLException {
public boolean absolute(int row) throws SQLException {
loggerExternal.entering(getClassNameLogging(), "absolute");
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
if (logger.isLoggable(java.util.logging.Level.FINER))
logger.finer(toString() + " row:" + row + logCursorState());
@@ -4682,7 +4684,7 @@ public int getHoldability() throws SQLException {
public void insertRow() throws SQLException {
loggerExternal.entering(getClassNameLogging(), "insertRow");
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
final class InsertRowRPC extends TDSCommand {
@@ -4790,7 +4792,7 @@ private void doInsertRowRPC(TDSCommand command, String tableName) throws SQLServ
public void updateRow() throws SQLException {
loggerExternal.entering(getClassNameLogging(), "updateRow");
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
final class UpdateRowRPC extends TDSCommand {
/**
@@ -4876,7 +4878,7 @@ final boolean hasUpdatedColumns() {
public void deleteRow() throws SQLException {
loggerExternal.entering(getClassNameLogging(), "deleteRow");
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
final class DeleteRowRPC extends TDSCommand {
/**
@@ -4941,7 +4943,7 @@ private void doDeleteRowRPC(TDSCommand command) throws SQLServerException {
public void refreshRow() throws SQLException {
loggerExternal.entering(getClassNameLogging(), "refreshRow");
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
if (logger.isLoggable(java.util.logging.Level.FINER))
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerSecurityUtility.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerSecurityUtility.java
index 1fde31b08..1ac2b9acd 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerSecurityUtility.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerSecurityUtility.java
@@ -199,7 +199,7 @@ private static String ValidateAndGetEncryptionAlgorithmName(byte cipherAlgorithm
throw new SQLServerException(null, SQLServerException.getErrString("R_CustomCipherAlgorithmNotSupportedAE"),
null, 0, false);
}
- return SQLServerAeadAes256CbcHmac256Algorithm.algorithmName;
+ return SQLServerAeadAes256CbcHmac256Algorithm.AEAD_AES_256_CBC_HMAC_SHA256;
}
/**
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerStatement.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerStatement.java
index 7fd08711d..85a5986bb 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerStatement.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerStatement.java
@@ -61,6 +61,8 @@ public class SQLServerStatement implements ISQLServerStatement {
final static char LEFT_CURLY_BRACKET = 123;
final static char RIGHT_CURLY_BRACKET = 125;
+ private static final String ACTIVITY_ID = " ActivityId: ";
+
/** response buffer adaptive flag */
private boolean isResponseBufferingAdaptive = false;
@@ -730,7 +732,7 @@ public void closeOnCompletion() throws SQLException {
public java.sql.ResultSet executeQuery(String sql) throws SQLServerException, SQLTimeoutException {
loggerExternal.entering(getClassNameLogging(), "executeQuery", sql);
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
executeStatement(new StmtExecCmd(this, sql, EXECUTE_QUERY, NO_GENERATED_KEYS));
@@ -748,7 +750,7 @@ final SQLServerResultSet executeQueryInternal(String sql) throws SQLServerExcept
public int executeUpdate(String sql) throws SQLServerException, SQLTimeoutException {
loggerExternal.entering(getClassNameLogging(), "executeUpdate", sql);
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
executeStatement(new StmtExecCmd(this, sql, EXECUTE_UPDATE, NO_GENERATED_KEYS));
@@ -768,7 +770,7 @@ public long executeLargeUpdate(String sql) throws SQLServerException, SQLTimeout
loggerExternal.entering(getClassNameLogging(), "executeLargeUpdate", sql);
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
executeStatement(new StmtExecCmd(this, sql, EXECUTE_UPDATE, NO_GENERATED_KEYS));
@@ -781,7 +783,7 @@ public long executeLargeUpdate(String sql) throws SQLServerException, SQLTimeout
public boolean execute(String sql) throws SQLServerException, SQLTimeoutException {
loggerExternal.entering(getClassNameLogging(), "execute", sql);
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
executeStatement(new StmtExecCmd(this, sql, EXECUTE, NO_GENERATED_KEYS));
@@ -884,7 +886,7 @@ final void doExecuteStatement(StmtExecCmd execCmd) throws SQLServerException {
setMaxRowsAndMaxFieldSize();
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
if (isCursorable(executeMethod) && isSelect(sql)) {
if (stmtlogger.isLoggable(java.util.logging.Level.FINE))
@@ -974,7 +976,7 @@ private void doExecuteStatementBatch(StmtBatchExecCmd execCmd) throws SQLServerE
}
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
// Batch execution is always non-cursored
@@ -1836,7 +1838,7 @@ public void clearBatch() throws SQLServerException {
public int[] executeBatch() throws SQLServerException, BatchUpdateException, SQLTimeoutException {
loggerExternal.entering(getClassNameLogging(), "executeBatch");
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
discardLastExecutionResults();
@@ -1913,7 +1915,7 @@ public long[] executeLargeBatch() throws SQLServerException, BatchUpdateExceptio
loggerExternal.entering(getClassNameLogging(), "executeLargeBatch");
if (loggerExternal.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
checkClosed();
discardLastExecutionResults();
@@ -2100,7 +2102,7 @@ public final boolean execute(java.lang.String sql,
if (loggerExternal.isLoggable(java.util.logging.Level.FINER)) {
loggerExternal.entering(getClassNameLogging(), "execute", new Object[] {sql, autoGeneratedKeys});
if (Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
}
checkClosed();
@@ -2150,7 +2152,7 @@ public final int executeUpdate(String sql, int autoGeneratedKeys) throws SQLServ
if (loggerExternal.isLoggable(java.util.logging.Level.FINER)) {
loggerExternal.entering(getClassNameLogging(), "executeUpdate", new Object[] {sql, autoGeneratedKeys});
if (Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
}
checkClosed();
@@ -2178,7 +2180,7 @@ public final long executeLargeUpdate(String sql,
if (loggerExternal.isLoggable(java.util.logging.Level.FINER)) {
loggerExternal.entering(getClassNameLogging(), "executeLargeUpdate", new Object[] {sql, autoGeneratedKeys});
if (Util.isActivityTraceOn()) {
- loggerExternal.finer(toString() + " ActivityId: " + ActivityCorrelator.getNext().toString());
+ loggerExternal.finer(toString() + ACTIVITY_ID + ActivityCorrelator.getNext().toString());
}
}
checkClosed();
diff --git a/src/test/java/com/microsoft/sqlserver/jdbc/fedauth/FedauthTest.java b/src/test/java/com/microsoft/sqlserver/jdbc/fedauth/FedauthTest.java
index 1324ff8a5..8ea0a86a1 100644
--- a/src/test/java/com/microsoft/sqlserver/jdbc/fedauth/FedauthTest.java
+++ b/src/test/java/com/microsoft/sqlserver/jdbc/fedauth/FedauthTest.java
@@ -251,7 +251,7 @@ public void testCorrectAccessTokenDS() throws SQLException {
* encryption, in addition to application name in order to use different authorities.
*
* @throws Exception
- * if an exception occurs
+ * if an exception occurs
*/
@Test
public void testAADPasswordApplicationName() throws Exception {
@@ -263,8 +263,7 @@ public void testAADPasswordApplicationName() throws Exception {
SQLServerDataSource ds = new SQLServerDataSource();
ds.setURL(url);
- try (Connection con = ds.getConnection()) {
- } catch (Exception e) {
+ try (Connection con = ds.getConnection()) {} catch (Exception e) {
fail(e.getMessage());
}
}
@@ -275,6 +274,7 @@ public void testAADPasswordApplicationName() throws Exception {
*
* @deprecated
*/
+ @Deprecated
@Test
public void testAADServicePrincipalAuthDeprecated() {
String url = "jdbc:sqlserver://" + azureServer + ";database=" + azureDatabase + ";authentication="