Skip to content

Commit

Permalink
Port log4j-jdbc changes from 2.x (#2163)
Browse files Browse the repository at this point in the history
  • Loading branch information
vy committed Jan 10, 2024
1 parent 2b0ba72 commit 14013cd
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,6 @@ public AbstractDriverManagerConnectionSource(
final char[] userName,
final char[] password,
final Property[] properties) {
super();
this.driverClassName = driverClassName;
this.connectionString = connectionString;
this.actualConnectionString = actualConnectionString;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,7 @@ public String toString() {
/**
* Factory method for creating a connection source within the plugin manager.
*
* @param jndiName The full JNDI path where the data source is bound. Should start with java:/comp/env or
* environment-equivalent.
* @param jndiName The full JNDI path where the data source is bound. Must start with java:/comp/env or environment-equivalent.
* @return the created connection source.
*/
@PluginFactory
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,6 @@ private ResultSetColumnMetaData(
final String className,
final int precision,
final int scale) {
super();
this.schemaName = schemaName;
this.catalogName = catalogName;
this.tableName = tableName;
Expand Down Expand Up @@ -752,24 +751,26 @@ private void setFields(final MapMessage<?, ?> mapMessage) throws SQLException {
final IndexedReadOnlyStringMap map = mapMessage.getIndexedReadOnlyStringMap();
final String simpleName = statement.getClass().getName();
int j = 1; // JDBC indices start at 1
for (final ColumnMapping mapping : this.factoryData.columnMappings) {
if (mapping.getLiteralValue() == null) {
final String source = mapping.getSource();
final String key = Strings.isEmpty(source) ? mapping.getName() : source;
final Object value = map.getValue(key);
if (logger().isTraceEnabled()) {
final String valueStr =
value instanceof String ? "\"" + value + "\"" : Objects.toString(value, null);
logger().trace(
"{} setObject({}, {}) for key '{}' and mapping '{}'",
simpleName,
j,
valueStr,
key,
mapping.getName());
if (this.factoryData.columnMappings != null) {
for (final ColumnMapping mapping : this.factoryData.columnMappings) {
if (mapping.getLiteralValue() == null) {
final String source = mapping.getSource();
final String key = Strings.isEmpty(source) ? mapping.getName() : source;
final Object value = map.getValue(key);
if (logger().isTraceEnabled()) {
final String valueStr =
value instanceof String ? "\"" + value + "\"" : Objects.toString(value, null);
logger().trace(
"{} setObject({}, {}) for key '{}' and mapping '{}'",
simpleName,
j,
valueStr,
key,
mapping.getName());
}
setStatementObject(j, mapping.getNameKey(), value);
j++;
}
setStatementObject(j, mapping.getNameKey(), value);
j++;
}
}
}
Expand Down Expand Up @@ -834,11 +835,7 @@ private Object truncate(final String nameKey, Object value) {
protected void writeInternal(final LogEvent event) {
StringReader reader = null;
try {
if (!this.isRunning()
|| this.connection == null
|| this.connection.isClosed()
|| this.statement == null
|| this.statement.isClosed()) {
if (!this.isRunning() || isClosed(this.connection) || isClosed(this.statement)) {
throw new AppenderLoggingException(
"Cannot write logging event; JDBC manager not connected to the database, running=%s, [%s]).",
isRunning(), fieldsToString());
Expand All @@ -850,27 +847,30 @@ protected void writeInternal(final LogEvent event) {
setFields((MapMessage<?, ?>) message);
}
int j = 1; // JDBC indices start at 1
for (final ColumnMapping mapping : this.factoryData.columnMappings) {
if (ThreadContextMap.class.isAssignableFrom(mapping.getType())
|| ReadOnlyStringMap.class.isAssignableFrom(mapping.getType())) {
this.statement.setObject(j++, event.getContextData().toMap());
} else if (ThreadContextStack.class.isAssignableFrom(mapping.getType())) {
this.statement.setObject(j++, event.getContextStack().asList());
} else if (Date.class.isAssignableFrom(mapping.getType())) {
this.statement.setObject(
j++,
DateTypeConverter.fromMillis(
event.getTimeMillis(), mapping.getType().asSubclass(Date.class)));
} else {
final StringLayout layout = mapping.getLayout();
if (layout != null) {
if (Clob.class.isAssignableFrom(mapping.getType())) {
this.statement.setClob(j++, new StringReader(layout.toSerializable(event)));
} else if (NClob.class.isAssignableFrom(mapping.getType())) {
this.statement.setNClob(j++, new StringReader(layout.toSerializable(event)));
} else {
final Object value = mapping.getTypeConverter().convert(layout.toSerializable(event), null);
setStatementObject(j++, mapping.getNameKey(), value);
if (this.factoryData.columnMappings != null) {
for (final ColumnMapping mapping : this.factoryData.columnMappings) {
if (ThreadContextMap.class.isAssignableFrom(mapping.getType())
|| ReadOnlyStringMap.class.isAssignableFrom(mapping.getType())) {
this.statement.setObject(j++, event.getContextData().toMap());
} else if (ThreadContextStack.class.isAssignableFrom(mapping.getType())) {
this.statement.setObject(j++, event.getContextStack().asList());
} else if (Date.class.isAssignableFrom(mapping.getType())) {
this.statement.setObject(
j++,
DateTypeConverter.fromMillis(
event.getTimeMillis(), mapping.getType().asSubclass(Date.class)));
} else {
final StringLayout layout = mapping.getLayout();
if (layout != null) {
if (Clob.class.isAssignableFrom(mapping.getType())) {
this.statement.setClob(j++, new StringReader(layout.toSerializable(event)));
} else if (NClob.class.isAssignableFrom(mapping.getType())) {
this.statement.setNClob(j++, new StringReader(layout.toSerializable(event)));
} else {
final Object value =
mapping.getTypeConverter().convert(layout.toSerializable(event), null);
setStatementObject(j++, mapping.getNameKey(), value);
}
}
}
}
Expand Down

0 comments on commit 14013cd

Please sign in to comment.