Skip to content

Commit 14013cd

Browse files
committed
Port log4j-jdbc changes from 2.x (#2163)
1 parent 2b0ba72 commit 14013cd

File tree

3 files changed

+45
-47
lines changed

3 files changed

+45
-47
lines changed

log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/AbstractDriverManagerConnectionSource.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,6 @@ public AbstractDriverManagerConnectionSource(
132132
final char[] userName,
133133
final char[] password,
134134
final Property[] properties) {
135-
super();
136135
this.driverClassName = driverClassName;
137136
this.connectionString = connectionString;
138137
this.actualConnectionString = actualConnectionString;

log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/DataSourceConnectionSource.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,7 @@ public String toString() {
5858
/**
5959
* Factory method for creating a connection source within the plugin manager.
6060
*
61-
* @param jndiName The full JNDI path where the data source is bound. Should start with java:/comp/env or
62-
* environment-equivalent.
61+
* @param jndiName The full JNDI path where the data source is bound. Must start with java:/comp/env or environment-equivalent.
6362
* @return the created connection source.
6463
*/
6564
@PluginFactory

log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/JdbcDatabaseManager.java

Lines changed: 44 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,6 @@ private ResultSetColumnMetaData(
279279
final String className,
280280
final int precision,
281281
final int scale) {
282-
super();
283282
this.schemaName = schemaName;
284283
this.catalogName = catalogName;
285284
this.tableName = tableName;
@@ -752,24 +751,26 @@ private void setFields(final MapMessage<?, ?> mapMessage) throws SQLException {
752751
final IndexedReadOnlyStringMap map = mapMessage.getIndexedReadOnlyStringMap();
753752
final String simpleName = statement.getClass().getName();
754753
int j = 1; // JDBC indices start at 1
755-
for (final ColumnMapping mapping : this.factoryData.columnMappings) {
756-
if (mapping.getLiteralValue() == null) {
757-
final String source = mapping.getSource();
758-
final String key = Strings.isEmpty(source) ? mapping.getName() : source;
759-
final Object value = map.getValue(key);
760-
if (logger().isTraceEnabled()) {
761-
final String valueStr =
762-
value instanceof String ? "\"" + value + "\"" : Objects.toString(value, null);
763-
logger().trace(
764-
"{} setObject({}, {}) for key '{}' and mapping '{}'",
765-
simpleName,
766-
j,
767-
valueStr,
768-
key,
769-
mapping.getName());
754+
if (this.factoryData.columnMappings != null) {
755+
for (final ColumnMapping mapping : this.factoryData.columnMappings) {
756+
if (mapping.getLiteralValue() == null) {
757+
final String source = mapping.getSource();
758+
final String key = Strings.isEmpty(source) ? mapping.getName() : source;
759+
final Object value = map.getValue(key);
760+
if (logger().isTraceEnabled()) {
761+
final String valueStr =
762+
value instanceof String ? "\"" + value + "\"" : Objects.toString(value, null);
763+
logger().trace(
764+
"{} setObject({}, {}) for key '{}' and mapping '{}'",
765+
simpleName,
766+
j,
767+
valueStr,
768+
key,
769+
mapping.getName());
770+
}
771+
setStatementObject(j, mapping.getNameKey(), value);
772+
j++;
770773
}
771-
setStatementObject(j, mapping.getNameKey(), value);
772-
j++;
773774
}
774775
}
775776
}
@@ -834,11 +835,7 @@ private Object truncate(final String nameKey, Object value) {
834835
protected void writeInternal(final LogEvent event) {
835836
StringReader reader = null;
836837
try {
837-
if (!this.isRunning()
838-
|| this.connection == null
839-
|| this.connection.isClosed()
840-
|| this.statement == null
841-
|| this.statement.isClosed()) {
838+
if (!this.isRunning() || isClosed(this.connection) || isClosed(this.statement)) {
842839
throw new AppenderLoggingException(
843840
"Cannot write logging event; JDBC manager not connected to the database, running=%s, [%s]).",
844841
isRunning(), fieldsToString());
@@ -850,27 +847,30 @@ protected void writeInternal(final LogEvent event) {
850847
setFields((MapMessage<?, ?>) message);
851848
}
852849
int j = 1; // JDBC indices start at 1
853-
for (final ColumnMapping mapping : this.factoryData.columnMappings) {
854-
if (ThreadContextMap.class.isAssignableFrom(mapping.getType())
855-
|| ReadOnlyStringMap.class.isAssignableFrom(mapping.getType())) {
856-
this.statement.setObject(j++, event.getContextData().toMap());
857-
} else if (ThreadContextStack.class.isAssignableFrom(mapping.getType())) {
858-
this.statement.setObject(j++, event.getContextStack().asList());
859-
} else if (Date.class.isAssignableFrom(mapping.getType())) {
860-
this.statement.setObject(
861-
j++,
862-
DateTypeConverter.fromMillis(
863-
event.getTimeMillis(), mapping.getType().asSubclass(Date.class)));
864-
} else {
865-
final StringLayout layout = mapping.getLayout();
866-
if (layout != null) {
867-
if (Clob.class.isAssignableFrom(mapping.getType())) {
868-
this.statement.setClob(j++, new StringReader(layout.toSerializable(event)));
869-
} else if (NClob.class.isAssignableFrom(mapping.getType())) {
870-
this.statement.setNClob(j++, new StringReader(layout.toSerializable(event)));
871-
} else {
872-
final Object value = mapping.getTypeConverter().convert(layout.toSerializable(event), null);
873-
setStatementObject(j++, mapping.getNameKey(), value);
850+
if (this.factoryData.columnMappings != null) {
851+
for (final ColumnMapping mapping : this.factoryData.columnMappings) {
852+
if (ThreadContextMap.class.isAssignableFrom(mapping.getType())
853+
|| ReadOnlyStringMap.class.isAssignableFrom(mapping.getType())) {
854+
this.statement.setObject(j++, event.getContextData().toMap());
855+
} else if (ThreadContextStack.class.isAssignableFrom(mapping.getType())) {
856+
this.statement.setObject(j++, event.getContextStack().asList());
857+
} else if (Date.class.isAssignableFrom(mapping.getType())) {
858+
this.statement.setObject(
859+
j++,
860+
DateTypeConverter.fromMillis(
861+
event.getTimeMillis(), mapping.getType().asSubclass(Date.class)));
862+
} else {
863+
final StringLayout layout = mapping.getLayout();
864+
if (layout != null) {
865+
if (Clob.class.isAssignableFrom(mapping.getType())) {
866+
this.statement.setClob(j++, new StringReader(layout.toSerializable(event)));
867+
} else if (NClob.class.isAssignableFrom(mapping.getType())) {
868+
this.statement.setNClob(j++, new StringReader(layout.toSerializable(event)));
869+
} else {
870+
final Object value =
871+
mapping.getTypeConverter().convert(layout.toSerializable(event), null);
872+
setStatementObject(j++, mapping.getNameKey(), value);
873+
}
874874
}
875875
}
876876
}

0 commit comments

Comments
 (0)