You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2018/10/18 14:30:06 UTC

[4/4] cayenne git commit: CAY-2485 Compact Slf4j Logger additional tests release notes cleanup

CAY-2485 Compact Slf4j Logger
  additional tests
  release notes
  cleanup


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/7694a64d
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/7694a64d
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/7694a64d

Branch: refs/heads/master
Commit: 7694a64d3b83175e3e2ffd2db315e78c1bf0813f
Parents: a4ad4b6
Author: Nikita Timofeev <st...@gmail.com>
Authored: Thu Oct 18 17:29:52 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Thu Oct 18 17:29:52 2018 +0300

----------------------------------------------------------------------
 RELEASE-NOTES.txt                               |  1 +
 .../log/CompactSlf4jJdbcEventLogger.java        | 15 ++--
 .../log/CompactSlf4jJdbcEventLoggerTest.java    | 80 +++++++++++++-------
 .../src/test/resources/logback-test.xml         | 42 ----------
 4 files changed, 60 insertions(+), 78 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/7694a64d/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index e1c1e28..dce64ec 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -20,6 +20,7 @@ CAY-2473 Modeler: cleanup attributes and relationship editors
 CAY-2474 Modeler: swap buttons in dialog toolbar
 CAY-2475 Modeler: move inheritance icon to name column in objAttr table and objRel table
 CAY-2481 Support for Object[] as return type in SQLTemplate and SQLExec
+CAY-2485 Compact Slf4j Logger
 CAY-2487 Removed usage of CayenneException.
 CAY-2489 Add validation to the case of not to PK relationships
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/7694a64d/cayenne-server/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java b/cayenne-server/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java
index d4d57a9..b6ea8b3 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java
@@ -65,8 +65,7 @@ public class CompactSlf4jJdbcEventLogger extends Slf4jJdbcEventLogger {
     protected String processUnionSql(String sql) {
 
         String modified = Pattern.compile(UNION.toLowerCase(), Pattern.CASE_INSENSITIVE).matcher(sql).replaceAll(UNION);
-        String[] queries = modified.split(
-                UNION);
+        String[] queries = modified.split(UNION);
         List<String> formattedQueries = Arrays.stream(queries).map(this::trimSqlSelectColumns).collect(Collectors.toList());
         StringBuilder buffer = new StringBuilder();
         boolean used =  false;
@@ -119,9 +118,7 @@ public class CompactSlf4jJdbcEventLogger extends Slf4jJdbcEventLogger {
 
         String key = null;
         String value;
-        for (int i = 0; i < bindings.length; i++) {
-            ParameterBinding b = bindings[i];
-
+        for (ParameterBinding b : bindings) {
             if (b.isExcluded()) {
                 continue;
             }
@@ -135,12 +132,12 @@ public class CompactSlf4jJdbcEventLogger extends Slf4jJdbcEventLogger {
 
             if (b.getExtendedType() != null) {
                 value = b.getExtendedType().toString(b.getValue());
-            } else if(b.getValue() == null) {
+            } else if (b.getValue() == null) {
                 value = "NULL";
             } else {
-                value = new StringBuilder(b.getValue().getClass().getName())
-                        .append("@")
-                        .append(System.identityHashCode(b.getValue())).toString();
+                value = b.getValue().getClass().getName() +
+                        "@" +
+                        System.identityHashCode(b.getValue());
             }
 
             List<String> objects = bindingsMap.computeIfAbsent(key, k -> new ArrayList<>());

http://git-wip-us.apache.org/repos/asf/cayenne/blob/7694a64d/cayenne-server/src/test/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLoggerTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLoggerTest.java b/cayenne-server/src/test/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLoggerTest.java
index 4846463..84ecd6c 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLoggerTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLoggerTest.java
@@ -25,32 +25,54 @@ 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.Before;
 import org.junit.Test;
 
 import java.util.Collections;
 
-import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.*;
 
 public class CompactSlf4jJdbcEventLoggerTest {
 
-    @Test
-    public void logWithCompact_Union() {
+    private CompactSlf4jJdbcEventLogger logger;
 
-        CompactSlf4jJdbcEventLogger compactSl4jJdbcEventLogger = new CompactSlf4jJdbcEventLogger(new DefaultRuntimeProperties(Collections.emptyMap()));
-        DbAttributeBinding[] bindings = createBindings();
+    @Before
+    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 ?");
 
-        String processesSelectSql = compactSl4jJdbcEventLogger.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 ?");
+                "WHERE t1.NAME LIKE ?");
+    }
 
-        StringBuilder buffer = new StringBuilder();
-        compactSl4jJdbcEventLogger.appendParameters(buffer, "bind", bindings);
-        assertThat(buffer.toString(), is("[bind: 1->t0.NAME: {'', 52, 'true'}, 2->t0.F_KEY1: 'true']"));
-        String processedUnionSql = compactSl4jJdbcEventLogger.processUnionSql(
+
+    @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 ?" +
@@ -63,31 +85,35 @@ public class CompactSlf4jJdbcEventLoggerTest {
                         " 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 ?");
 
-        assertThat(processedUnionSql, is("SELECT t0.NAME AS ec0_0, t0.F_KEY1 AS ec0_1, t0.PKEY AS ec0_3 FROM COMPOUND_FK_TEST t0 " +
+        assertEquals(processedUnionSql,
+                "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 ?"));
-
+                "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 ?");
     }
 
-    private DbAttributeBinding [] createBindings() {
-        return new DbAttributeBinding[] { 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())};
+    @Test
+    public void compactBindings() {
+        StringBuilder buffer = new StringBuilder();
+        DbAttributeBinding[] bindings = new DbAttributeBinding[] {
+                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(buffer.toString(), "[bind: 1->t0.NAME: {'', 52, 'true'}, 2->t0.F_KEY1: 'true']");
     }
 
     private DbAttributeBinding createBinding(String name, int position, Object object, ExtendedType type){
-
         DbAttributeBinding dbAttributeBinding = new DbAttributeBinding(new DbAttribute(name));
         dbAttributeBinding.setValue(object);
         dbAttributeBinding.setStatementPosition(position);
-        if (type != null) {
-            dbAttributeBinding.setExtendedType(type);
-        }
-
+        dbAttributeBinding.setExtendedType(type);
         return dbAttributeBinding;
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/7694a64d/cayenne-server/src/test/resources/logback-test.xml
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/resources/logback-test.xml b/cayenne-server/src/test/resources/logback-test.xml
deleted file mode 100644
index 616beac..0000000
--- a/cayenne-server/src/test/resources/logback-test.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<configuration>
-
-    <statusListener class="ch.qos.logback.core.status.NopStatusListener" />
-
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <layout class="ch.qos.logback.classic.PatternLayout">
-            <Pattern>
-                %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
-            </Pattern>
-        </layout>
-    </appender>
-
-
-    <appender name="TEST-INFO"
-              class="org.apache.cayenne.log.TestAppender">
-        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
-            <Pattern>
-                %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
-            </Pattern>
-        </encoder>
-
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!-- rollover daily -->
-            <fileNamePattern>archived/error.%d{yyyy-MM-dd}.%i.log
-            </fileNamePattern>
-            <timeBasedFileNamingAndTriggeringPolicy
-                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
-                <maxFileSize>10MB</maxFileSize>
-            </timeBasedFileNamingAndTriggeringPolicy>
-        </rollingPolicy>
-
-    </appender>
-
-    <root level="info">
-        <appender-ref ref="TEST-INFO" />
-    </root>
-
-    <logger name="org.apache.cayenne" level="info">
-        <appender-ref ref="STDOUT"/>
-    </logger>
-
-</configuration>
\ No newline at end of file