1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.guice.datasource.dbcp;
17
18 import jakarta.inject.Named;
19 import jakarta.inject.Provider;
20
21 import java.time.Duration;
22
23 import javax.sql.ConnectionPoolDataSource;
24 import javax.sql.DataSource;
25
26 import org.apache.commons.dbcp2.datasources.SharedPoolDataSource;
27
28
29
30
31 public final class SharedPoolDataSourceProvider implements Provider<DataSource> {
32
33 private final SharedPoolDataSource dataSource = new SharedPoolDataSource();
34
35 @com.google.inject.Inject(optional = true)
36 public void setConnectionPoolDataSource(ConnectionPoolDataSource cpds) {
37 dataSource.setConnectionPoolDataSource(cpds);
38 }
39
40 @com.google.inject.Inject(optional = true)
41 public void setDataSourceName(@Named("DBCP.name") String name) {
42 dataSource.setDataSourceName(name);
43 }
44
45 @com.google.inject.Inject(optional = true)
46 public void setDefaultAutoCommit(@Named("JDBC.autoCommit") boolean autoCommit) {
47 dataSource.setDefaultAutoCommit(autoCommit);
48 }
49
50 @com.google.inject.Inject(optional = true)
51 public void setDefaultReadOnly(@Named("DBCP.defaultReadOnly") boolean defaultReadOnly) {
52 dataSource.setDefaultReadOnly(defaultReadOnly);
53 }
54
55 @com.google.inject.Inject(optional = true)
56 public void setDefaultTransactionIsolation(
57 @Named("DBCP.defaultTransactionIsolation") int defaultTransactionIsolation) {
58 dataSource.setDefaultTransactionIsolation(defaultTransactionIsolation);
59 }
60
61 @com.google.inject.Inject(optional = true)
62 public void setDescription(@Named("DBCP.description") String description) {
63 dataSource.setDescription(description);
64 }
65
66 @com.google.inject.Inject(optional = true)
67 public void setJndiEnvironment(@Named("DBCP.jndi.key") String key, @Named("DBCP.jndi.value") String value) {
68 dataSource.setJndiEnvironment(key, value);
69 }
70
71 @com.google.inject.Inject(optional = true)
72 public void setLoginTimeout(@Named("JDBC.loginTimeout") int loginTimeout) {
73 dataSource.setLoginTimeout(Duration.ofSeconds(loginTimeout));
74 }
75
76 @com.google.inject.Inject(optional = true)
77 public void setDefaultMinEvictableIdleTimeMillis(
78 @Named("DBCP.defaultMinEvictableIdleTimeMillis") int defaultMinEvictableIdleTimeMillis) {
79 dataSource.setDefaultMinEvictableIdle(Duration.ofMillis(defaultMinEvictableIdleTimeMillis));
80 }
81
82 @com.google.inject.Inject(optional = true)
83 public void setDefaultNumTestsPerEvictionRun(
84 @Named("DBCP.defaultNumTestsPerEvictionRun") int defaultNumTestsPerEvictionRun) {
85 dataSource.setDefaultNumTestsPerEvictionRun(defaultNumTestsPerEvictionRun);
86 }
87
88 @com.google.inject.Inject(optional = true)
89 public void setRollbackAfterValidation(@Named("DBCP.rollbackAfterValidation") boolean rollbackAfterValidation) {
90 dataSource.setRollbackAfterValidation(rollbackAfterValidation);
91 }
92
93 @com.google.inject.Inject(optional = true)
94 public void setDefaultTestOnBorrow(@Named("DBCP.defaultTestOnBorrow") boolean defaultTestOnBorrow) {
95 dataSource.setDefaultTestOnBorrow(defaultTestOnBorrow);
96 }
97
98 @com.google.inject.Inject(optional = true)
99 public void setDefaultTestOnReturn(@Named("DBCP.defaultTestOnReturn") boolean defaultTestOnReturn) {
100 dataSource.setDefaultTestOnReturn(defaultTestOnReturn);
101 }
102
103 @com.google.inject.Inject(optional = true)
104 public void setDefaultTestWhileIdle(@Named("DBCP.defaultTestWhileIdle") boolean defaultTestWhileIdle) {
105 dataSource.setDefaultTestWhileIdle(defaultTestWhileIdle);
106 }
107
108 @com.google.inject.Inject(optional = true)
109 public void setDefaultTimeBetweenEvictionRunsMillis(
110 @Named("DBCP.defaultTimeBetweenEvictionRunsMillis") int defaultTimeBetweenEvictionRunsMillis) {
111 dataSource.setDefaultDurationBetweenEvictionRuns(Duration.ofMillis((defaultTimeBetweenEvictionRunsMillis)));
112 }
113
114 @com.google.inject.Inject(optional = true)
115 public void setValidationQuery(@Named("DBCP.validationQuery") String validationQuery) {
116 dataSource.setValidationQuery(validationQuery);
117 }
118
119
120
121
122
123
124
125 @com.google.inject.Inject(optional = true)
126 public void setDefaultMaxTotal(@Named("DBCP.defaultMaxTotal") final int defaultMaxTotal) {
127 dataSource.setDefaultMaxTotal(defaultMaxTotal);
128 }
129
130
131
132
133
134
135
136 @com.google.inject.Inject(optional = true)
137 public void setDefaultMaxIdle(@Named("DBCP.defaultMaxIdle") final int defaultMaxIdle) {
138 dataSource.setDefaultMaxIdle(defaultMaxIdle);
139 }
140
141
142
143
144
145
146
147 @com.google.inject.Inject(optional = true)
148 public void setDefaultMaxWaitMillis(@Named("DBCP.defaultMaxWaitMillis") final int defaultMaxWaitMillis) {
149 dataSource.setDefaultMaxWait(Duration.ofMillis(defaultMaxWaitMillis));
150 }
151
152 @Override
153 public DataSource get() {
154 return dataSource;
155 }
156
157 }