This is an automated email from the ASF dual-hosted git repository.

vy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


The following commit(s) were added to refs/heads/main by this push:
     new 14013cdcee Port `log4j-jdbc` changes from `2.x` (#2163)
14013cdcee is described below

commit 14013cdceea945c0f9668ea8cf94ecd97a19e9cc
Author: Volkan Yazıcı <[email protected]>
AuthorDate: Wed Jan 10 14:56:51 2024 +0100

    Port `log4j-jdbc` changes from `2.x` (#2163)
---
 .../AbstractDriverManagerConnectionSource.java     |  1 -
 .../jdbc/appender/DataSourceConnectionSource.java  |  3 +-
 .../log4j/jdbc/appender/JdbcDatabaseManager.java   | 88 +++++++++++-----------
 3 files changed, 45 insertions(+), 47 deletions(-)

diff --git 
a/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/AbstractDriverManagerConnectionSource.java
 
b/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/AbstractDriverManagerConnectionSource.java
index dbddb74403..df62f89949 100644
--- 
a/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/AbstractDriverManagerConnectionSource.java
+++ 
b/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/AbstractDriverManagerConnectionSource.java
@@ -132,7 +132,6 @@ public class AbstractDriverManagerConnectionSource extends 
AbstractConnectionSou
             final char[] userName,
             final char[] password,
             final Property[] properties) {
-        super();
         this.driverClassName = driverClassName;
         this.connectionString = connectionString;
         this.actualConnectionString = actualConnectionString;
diff --git 
a/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/DataSourceConnectionSource.java
 
b/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/DataSourceConnectionSource.java
index 8702b30e85..50626ec662 100644
--- 
a/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/DataSourceConnectionSource.java
+++ 
b/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/DataSourceConnectionSource.java
@@ -58,8 +58,7 @@ public final class DataSourceConnectionSource extends 
AbstractConnectionSource {
     /**
      * 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
diff --git 
a/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/JdbcDatabaseManager.java
 
b/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/JdbcDatabaseManager.java
index 617c3079b0..7f84cfc40c 100644
--- 
a/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/JdbcDatabaseManager.java
+++ 
b/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/JdbcDatabaseManager.java
@@ -279,7 +279,6 @@ public final class JdbcDatabaseManager extends 
AbstractDatabaseManager {
                 final String className,
                 final int precision,
                 final int scale) {
-            super();
             this.schemaName = schemaName;
             this.catalogName = catalogName;
             this.tableName = tableName;
@@ -752,24 +751,26 @@ public final class JdbcDatabaseManager extends 
AbstractDatabaseManager {
         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++;
             }
         }
     }
@@ -834,11 +835,7 @@ public final class JdbcDatabaseManager extends 
AbstractDatabaseManager {
     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());
@@ -850,27 +847,30 @@ public final class JdbcDatabaseManager extends 
AbstractDatabaseManager {
                 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);
+                            }
                         }
                     }
                 }

Reply via email to