Skip to content

Commit 1395dd7

Browse files
committed
Environment class made thread safety
1 parent 1e886ec commit 1395dd7

File tree

2 files changed

+28
-20
lines changed

2 files changed

+28
-20
lines changed

src/main/java/org/apache/ibatis/builder/xml/XMLConfigBuilder.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,9 @@ private void environmentsElement(XNode context) throws Exception {
181181
if (isSpecifiedEnvironment(id)) {
182182
TransactionFactory txFactory = transactionManagerElement(child.evalNode("transactionManager"));
183183
DataSourceFactory dsFactory = dataSourceElement(child.evalNode("dataSource"));
184-
Environment.Builder environmentBuilder = new Environment.Builder(id, txFactory, dsFactory.getDataSource());
184+
Environment.Builder environmentBuilder = new Environment.Builder(id)
185+
.transactionFactory(txFactory)
186+
.dataSource(dsFactory.getDataSource());
185187
configuration.setEnvironment(environmentBuilder.build());
186188
}
187189
}

src/main/java/org/apache/ibatis/mapping/Environment.java

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,59 +4,65 @@
44

55
import javax.sql.DataSource;
66

7-
public class Environment {
8-
private String id;
9-
private TransactionFactory transactionFactory;
10-
private DataSource dataSource;
7+
public final class Environment {
8+
private final String id;
9+
private final TransactionFactory transactionFactory;
10+
private final DataSource dataSource;
1111

1212
public Environment(String id, TransactionFactory transactionFactory, DataSource dataSource) {
13+
if (id == null) {
14+
throw new IllegalArgumentException("Parameter 'id' must not be null");
15+
}
16+
if (transactionFactory == null) {
17+
throw new IllegalArgumentException("Parameter 'transactionFactory' must not be null");
18+
}
1319
this.id = id;
20+
if (dataSource == null) {
21+
throw new IllegalArgumentException("Parameter 'dataSource' must not be null");
22+
}
1423
this.transactionFactory = transactionFactory;
1524
this.dataSource = dataSource;
1625
}
1726

18-
private Environment() {
19-
}
20-
2127
public static class Builder {
22-
private Environment environment = new Environment();
28+
private String id;
29+
private TransactionFactory transactionFactory;
30+
private DataSource dataSource;
2331

24-
public Builder(String id, TransactionFactory transactionManager, DataSource dataSource) {
25-
environment.id = id;
26-
environment.transactionFactory = transactionManager;
27-
environment.dataSource = dataSource;
32+
public Builder(String id) {
33+
this.id = id;
2834
}
2935

3036
public Builder transactionFactory(TransactionFactory transactionFactory) {
31-
environment.transactionFactory = transactionFactory;
37+
this.transactionFactory = transactionFactory;
3238
return this;
3339
}
3440

3541
public Builder dataSource(DataSource dataSource) {
36-
environment.dataSource = dataSource;
42+
this.dataSource = dataSource;
3743
return this;
3844
}
3945

4046
public String id() {
41-
return environment.id;
47+
return this.id;
4248
}
4349

4450
public Environment build() {
45-
return environment;
51+
return new Environment(this.id, this.transactionFactory, this.dataSource);
4652
}
4753

4854
}
4955

5056
public String getId() {
51-
return id;
57+
return this.id;
5258
}
5359

5460
public TransactionFactory getTransactionFactory() {
55-
return transactionFactory;
61+
return this.transactionFactory;
5662
}
5763

5864
public DataSource getDataSource() {
59-
return dataSource;
65+
return this.dataSource;
6066
}
6167

6268
}

0 commit comments

Comments
 (0)