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 <stari...@gmail.com> Authored: Thu Oct 18 17:29:52 2018 +0300 Committer: Nikita Timofeev <stari...@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