Skip to content

Commit 9f19010

Browse files
committed
Slf4jJdbcLogger backward compatible
1 parent 8027101 commit 9f19010

File tree

2 files changed

+50
-3
lines changed

2 files changed

+50
-3
lines changed

.github/workflows/ci.yml

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ jobs:
4848
steps:
4949
- uses: actions/checkout@v2
5050

51-
- name: Set up JDK ${{ matrix.java }}
51+
- name: Set up JDK 11
5252
uses: actions/setup-java@v2
5353
with:
5454
distribution: zulu
@@ -71,10 +71,38 @@ jobs:
7171
name: reports
7272
path: ./**/target/surefire-reports
7373

74+
test-slf4j-backward-compatible:
75+
if: contains(github.event.head_commit.message, '[skip ci]') == false
76+
runs-on: ubuntu-latest
77+
timeout-minutes: 30
78+
79+
steps:
80+
- uses: actions/checkout@v2
81+
82+
- name: Set up JDK 8
83+
uses: actions/setup-java@v2
84+
with:
85+
distribution: zulu
86+
java-version: 8
87+
cache: maven
88+
89+
- name: Grant execute permission for mvnw
90+
run: chmod +x mvnw
91+
92+
- name: Test with Maven
93+
run: ./mvnw -B compile -pl doma-spring-boot-core,doma-spring-boot-autoconfigure && ./mvnw -B test -pl doma-spring-boot-core,doma-spring-boot-autoconfigure -Dmaven.main.skip=true -Ddoma.version=4.49.0
94+
95+
- name: Upload reports
96+
if: failure()
97+
uses: actions/upload-artifact@v2
98+
with:
99+
name: reports
100+
path: ./**/target/surefire-reports
101+
74102
deploy:
75103
if: github.event_name == 'push' && contains(github.event.head_commit.message, '[skip ci]') == false
76104
runs-on: ubuntu-latest
77-
needs: [ test, test-module ]
105+
needs: [ test, test-module, test-slf4j-backward-compatible ]
78106

79107
steps:
80108
- uses: actions/checkout@v2

doma-spring-boot-autoconfigure/src/main/java/org/seasar/doma/boot/autoconfigure/DomaProperties.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
import java.util.function.Supplier;
66

7+
import org.apache.commons.logging.Log;
8+
import org.apache.commons.logging.LogFactory;
79
import org.seasar.doma.jdbc.*;
810
import org.seasar.doma.jdbc.dialect.*;
911
import org.seasar.doma.slf4j.Slf4jJdbcLogger;
@@ -228,7 +230,24 @@ public Naming naming() {
228230

229231
public static enum JdbcLoggerType {
230232
JUL(UtilLoggingJdbcLogger::new),
231-
SLF4J(() -> new Slf4jJdbcLogger());
233+
SLF4J(JdbcLoggerType::slf4jJdbcLogger);
234+
235+
private static JdbcLogger slf4jJdbcLogger() {
236+
try {
237+
return new Slf4jJdbcLogger();
238+
} catch (NoClassDefFoundError e) {
239+
Log logger = LogFactory.getLog(JdbcLoggerType.class);
240+
logger.info(
241+
"org.seasar.doma.slf4j.Slf4jJdbcLogger is not found, fallback to org.seasar.doma.jdbc.Slf4jJdbcLogger");
242+
try {
243+
return (JdbcLogger) Class.forName("org.seasar.doma.jdbc.Slf4jJdbcLogger")
244+
.getConstructor().newInstance();
245+
} catch (ReflectiveOperationException roe) {
246+
logger.warn("org.seasar.doma.jdbc.Slf4jJdbcLogger could not be instantiated either.", roe);
247+
}
248+
throw e;
249+
}
250+
}
232251

233252
private final Supplier<JdbcLogger> constructor;
234253

0 commit comments

Comments
 (0)