@@ -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