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

asf-gitbox-commits pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 23cfc8696174275e50c7a811a68f95c1e18279db
Author: Andrus Adamchik <[email protected]>
AuthorDate: Fri Jul 3 16:23:49 2026 -0400

    CAY-2912 Compact SQL logger
    
    removing CompactSlf4jJdbcEventLogger ... ongoing refactoring should go 
msoother without it in the picture
---
 .../cayenne/log/CompactSlf4jJdbcEventLogger.java   | 180 ---------------------
 .../log/CompactSlf4jJdbcEventLoggerTest.java       | 116 -------------
 2 files changed, 296 deletions(-)

diff --git 
a/cayenne/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java 
b/cayenne/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java
deleted file mode 100644
index 59540dcd8..000000000
--- 
a/cayenne/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.log;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-
-import org.apache.cayenne.access.jdbc.PSParameter;
-import org.apache.cayenne.configuration.RuntimeProperties;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.map.DbAttribute;
-
-/**
- * @since 4.1
- */
-public class CompactSlf4jJdbcEventLogger extends Slf4jJdbcEventLogger {
-
-    private static final String UNION  = "UNION";
-    private static final String SELECT = "SELECT";
-    private static final String FROM   = "FROM";
-    private static final char   SPACE  = ' ';
-
-    private static final Pattern UNION_PATTERN = Pattern.compile(UNION, 
Pattern.CASE_INSENSITIVE);
-
-    public CompactSlf4jJdbcEventLogger(@Inject RuntimeProperties 
runtimeProperties) {
-        super(runtimeProperties);
-    }
-
-    @Override
-    public void logQuery(String sql, PSParameter[] bindings) {
-        if (!isLoggable()) {
-            return;
-        }
-
-        String str;
-        if (UNION_PATTERN.matcher(sql).find()) {
-            str = processUnionSql(sql);
-        } else {
-            str = trimSqlSelectColumns(sql);
-        }
-
-        super.logQuery(str, bindings);
-    }
-
-    protected String processUnionSql(String sql) {
-        String modified = UNION_PATTERN.matcher(sql)
-                .replaceAll(UNION);
-        String[] queries = modified.split(UNION);
-        return Arrays.stream(queries)
-                .map(this::trimSqlSelectColumns)
-                .collect(Collectors.joining(SPACE + UNION));
-    }
-
-    protected String trimSqlSelectColumns(String sql) {
-        String str = sql.toUpperCase();
-        int selectIndex = str.indexOf(SELECT);
-        if (selectIndex == -1) {
-            return sql;
-        }
-        selectIndex += SELECT.length();
-        int fromIndex = str.indexOf(FROM);
-        String columns = sql.substring(selectIndex, fromIndex);
-        String[] columnsArray = columns.split(",");
-        if (columnsArray.length <= 3) {
-            return sql;
-        }
-
-        columns = "(" + columnsArray.length + " columns)";
-        return new StringBuilder(sql.substring(0, selectIndex))
-                .append(SPACE)
-                .append(columns)
-                .append(SPACE)
-                .append(sql, fromIndex, sql.length())
-                .toString();
-    }
-
-    @Override
-    protected void appendParameters(StringBuilder buffer, String label, 
PSParameter[] bindings) {
-        int bindingLength = bindings.length;
-        if (bindingLength == 0) {
-            return;
-        }
-
-        buildBinding(buffer, label, collectBindings(bindings));
-    }
-
-    @SuppressWarnings("unchecked")
-    private Map<String, List<String>> collectBindings(PSParameter[] bindings) {
-        Map<String, List<String>> bindingsMap = new HashMap<>();
-
-        String key = null;
-        String value;
-        for (PSParameter b : bindings) {
-            DbAttribute attribute = b.attribute();
-            if (attribute != null) {
-                key = attribute.getName();
-            }
-
-            if (b.binder() != null) {
-                value = b.binder().toString(b.value());
-            } else if (b.value() == null) {
-                value = "NULL";
-            } else {
-                value = b.value().getClass().getName() +
-                        "@" +
-                        System.identityHashCode(b.value());
-            }
-
-            List<String> objects = bindingsMap.computeIfAbsent(key, k -> new 
ArrayList<>());
-            objects.add(value);
-        }
-
-        return bindingsMap;
-    }
-
-    private void buildBinding(StringBuilder buffer, String label, Map<String, 
List<String>> bindingsMap) {
-        int j = 1;
-        boolean hasIncluded = false;
-        for (String k : bindingsMap.keySet()) {
-            if (!hasIncluded) {
-                hasIncluded = true;
-                buffer.append("[").append(label).append(": ");
-            } else {
-                buffer.append(", ");
-            }
-            buffer.append(j).append("->").append(k).append(": ");
-
-            List<String> bindingsList = bindingsMap.get(k);
-            if (bindingsList.size() == 1 ) {
-                buffer.append(bindingsList.get(0));
-            } else {
-                buffer.append("{");
-                boolean wasAdded = false;
-                for (Object val : bindingsList) {
-                    if (wasAdded) {
-                        buffer.append(", ");
-                    } else {
-                        wasAdded = true;
-                    }
-                    buffer.append(val);
-                }
-                buffer.append("}");
-            }
-            j++;
-        }
-
-        if (hasIncluded) {
-            buffer.append("]");
-        }
-    }
-
-    @Override
-    public void logBeginTransaction(String transactionLabel) {
-    }
-
-    @Override
-    public void logCommitTransaction(String transactionLabel) {
-    }
-}
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLoggerTest.java
 
b/cayenne/src/test/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLoggerTest.java
deleted file mode 100644
index 2877fe339..000000000
--- 
a/cayenne/src/test/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLoggerTest.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.log;
-
-import org.apache.cayenne.access.jdbc.PSParameter;
-import org.apache.cayenne.access.types.BooleanType;
-import org.apache.cayenne.access.types.CharType;
-import org.apache.cayenne.access.types.ExtendedType;
-import org.apache.cayenne.access.types.IntegerType;
-import org.apache.cayenne.configuration.DefaultRuntimeProperties;
-import org.apache.cayenne.map.DbAttribute;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import java.util.Collections;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-public class CompactSlf4jJdbcEventLoggerTest {
-
-    private CompactSlf4jJdbcEventLogger logger;
-
-    @BeforeEach
-    public void createLogger() {
-        logger = new CompactSlf4jJdbcEventLogger(new 
DefaultRuntimeProperties(Collections.emptyMap()));
-    }
-
-    @Test
-    public void compactSimpleSql() {
-        String processesSelectSql = logger.trimSqlSelectColumns(
-                "SELECT t0.NAME AS ec0_0, t0.F_KEY1 AS ec0_1, t0.F_KEY2 AS 
ec0_2," +
-                        " t0.PKEY AS ec0_3 FROM COMPOUND_FK_TEST t0 INNER JOIN 
COMPOUND_PK_TEST " +
-                        "t1 ON (t0.F_KEY1 = t1.KEY1 AND t0.F_KEY2 = t1.KEY2) 
WHERE t1.NAME LIKE ?");
-
-        assertEquals(processesSelectSql, "SELECT (4 columns) FROM 
COMPOUND_FK_TEST t0 " +
-                "INNER JOIN COMPOUND_PK_TEST t1 ON (t0.F_KEY1 = t1.KEY1 AND 
t0.F_KEY2 = t1.KEY2) " +
-                "WHERE t1.NAME LIKE ?");
-    }
-
-
-    @Test
-    public void compactNotSelect() {
-        String processedSql = logger.trimSqlSelectColumns(
-                "UPDATE test SET name = 'abc', value = 123 WHERE id = 321");
-
-        assertEquals("UPDATE test SET name = 'abc', value = 123 WHERE id = 
321", processedSql);
-    }
-
-    @Test
-    public void compactSubSelect() {
-        String processedSql = logger.trimSqlSelectColumns(
-                "INSERT INTO test1 SELECT column1, column2, column3, column4, 
column5, column6 FROM test2 WHERE id = 321");
-
-        assertEquals("INSERT INTO test1 SELECT (6 columns) FROM test2 WHERE id 
= 321", processedSql);
-    }
-
-    @Test
-    public void compactUnion() {
-        String processedUnionSql = logger.processUnionSql(
-                "SELECT t0.NAME AS ec0_0, t0.F_KEY1 AS ec0_1, " +
-                        "t0.PKEY AS ec0_3 FROM COMPOUND_FK_TEST t0 INNER JOIN 
COMPOUND_PK_TEST " +
-                        "t1 ON (t0.F_KEY1 = t1.KEY1 AND t0.F_KEY2 = t1.KEY2) 
WHERE t1.NAME LIKE ?" +
-                        "UNION ALL " +
-                        "SELECT t0.NAME AS ec0_0, t0.F_KEY1 AS ec0_1," +
-                        " t0.PKEY AS ec0_3 FROM COMPOUND_FK_TEST t0 INNER JOIN 
COMPOUND_PK_TEST " +
-                        "t1 ON (t0.F_KEY1 = t1.KEY1 AND t0.F_KEY2 = t1.KEY2) 
WHERE t1.NAME LIKE ?" +
-                        "union all " +
-                        "SELECT t0.NAME AS ec0_0, t0.F_KEY1 AS ec0_1, 
t0.F_KEY2 AS ec0_2," +
-                        " t0.PKEY AS ec0_3 FROM COMPOUND_FK_TEST t0 INNER JOIN 
COMPOUND_PK_TEST " +
-                        "t1 ON (t0.F_KEY1 = t1.KEY1 AND t0.F_KEY2 = t1.KEY2) 
WHERE t1.NAME LIKE ?");
-
-        assertEquals("SELECT t0.NAME AS ec0_0, t0.F_KEY1 AS ec0_1, t0.PKEY AS 
ec0_3 FROM COMPOUND_FK_TEST t0 " +
-                "INNER JOIN COMPOUND_PK_TEST t1 ON (t0.F_KEY1 = t1.KEY1 AND 
t0.F_KEY2 = t1.KEY2) " +
-                "WHERE t1.NAME LIKE ? UNION ALL SELECT t0.NAME AS ec0_0, 
t0.F_KEY1 AS ec0_1, t0.PKEY AS ec0_3 " +
-                "FROM COMPOUND_FK_TEST t0 INNER JOIN COMPOUND_PK_TEST t1 ON 
(t0.F_KEY1 = t1.KEY1 AND t0.F_KEY2 = t1.KEY2) " +
-                "WHERE t1.NAME LIKE ? UNION all SELECT (4 columns) FROM 
COMPOUND_FK_TEST t0 " +
-                "INNER JOIN COMPOUND_PK_TEST t1 ON (t0.F_KEY1 = t1.KEY1 AND 
t0.F_KEY2 = t1.KEY2) " +
-                "WHERE t1.NAME LIKE ?",
-                processedUnionSql);
-    }
-
-    @Test
-    public void compactBindings() {
-        StringBuilder buffer = new StringBuilder();
-        PSParameter[] bindings = new PSParameter[] {
-                createBinding("t0.NAME", 1, "", new CharType(false, false)),
-                createBinding("t0.NAME", 2, 52, new IntegerType()),
-                createBinding("t0.NAME", 3, true, new BooleanType()),
-                createBinding("t0.F_KEY1", 4, true, new BooleanType())
-        };
-        logger.appendParameters(buffer, "bind", bindings);
-
-        assertEquals("[bind: 1->t0.NAME: {'', 52, 'true'}, 2->t0.F_KEY1: 
'true']", buffer.toString());
-    }
-
-    private PSParameter createBinding(String name, int position, Object 
object, ExtendedType type){
-        DbAttribute attribute = new DbAttribute(name);
-        return new PSParameter(object, position, attribute.getType(), -1, 
type, attribute);
-    }
-}

Reply via email to