1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.guice.datasource.builtin;
17
18 import jakarta.inject.Inject;
19 import jakarta.inject.Named;
20 import jakarta.inject.Provider;
21
22 import java.util.Properties;
23
24 import javax.naming.Context;
25 import javax.sql.DataSource;
26
27 import org.apache.ibatis.datasource.jndi.JndiDataSourceFactory;
28
29
30
31
32 public final class JndiDataSourceProvider implements Provider<DataSource> {
33
34
35 private final Properties properties = new Properties();
36
37
38
39
40
41
42
43 @Inject
44 public JndiDataSourceProvider(@Named("jndi.dataSource") final String dataSource) {
45 properties.setProperty(JndiDataSourceFactory.DATA_SOURCE, dataSource);
46 }
47
48
49
50
51
52
53
54 @com.google.inject.Inject(optional = true)
55 public void setInitialContext(@Named("jndi.initialContext") final String initialContext) {
56 properties.setProperty(JndiDataSourceFactory.INITIAL_CONTEXT, initialContext);
57 }
58
59
60
61
62
63
64
65 @com.google.inject.Inject(optional = true)
66 public void setEnvInitialContextFactory(@Named(Context.INITIAL_CONTEXT_FACTORY) final String initialContextFactory) {
67 properties.setProperty(JndiDataSourceFactory.ENV_PREFIX + Context.INITIAL_CONTEXT_FACTORY, initialContextFactory);
68 }
69
70
71
72
73
74
75
76 @com.google.inject.Inject(optional = true)
77 public void setEnvProviderURL(@Named(Context.PROVIDER_URL) final String providerUrl) {
78 properties.setProperty(JndiDataSourceFactory.ENV_PREFIX + Context.PROVIDER_URL, providerUrl);
79 }
80
81 @Override
82 public DataSource get() {
83 JndiDataSourceFactory factory = new JndiDataSourceFactory();
84 factory.setProperties(properties);
85 return factory.getDataSource();
86 }
87 }