1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.dbcp2;
19
20 import static org.junit.jupiter.api.Assertions.assertNotNull;
21
22 import java.util.Hashtable;
23
24 import javax.naming.Context;
25 import javax.naming.InitialContext;
26 import javax.naming.NamingException;
27 import javax.sql.DataSource;
28
29 import org.apache.commons.dbcp2.datasources.PerUserPoolDataSource;
30 import org.apache.commons.dbcp2.datasources.SharedPoolDataSource;
31 import org.junit.jupiter.api.AfterEach;
32 import org.junit.jupiter.api.BeforeEach;
33 import org.junit.jupiter.api.Test;
34
35
36
37
38
39 public class TestJndi {
40
41
42
43 protected static final String JNDI_SUBCONTEXT = "jdbc";
44
45
46
47
48 protected static final String JNDI_PATH = JNDI_SUBCONTEXT + "/"
49 + "jndiTestDataSource";
50
51
52 protected Context context;
53
54
55
56
57
58
59 protected void bindDataSource(final DataSource dataSource) throws Exception {
60 context.bind(JNDI_PATH, dataSource);
61 }
62
63
64
65
66
67
68
69 protected void checkBind(final DataSource dataSource) throws Exception {
70 bindDataSource(dataSource);
71 retrieveDataSource();
72 }
73
74
75
76
77
78
79
80
81 protected InitialContext getInitialContext() throws NamingException {
82 final Hashtable<String, String> environment = new Hashtable<>();
83 environment.put(Context.INITIAL_CONTEXT_FACTORY,
84 org.apache.naming.java.javaURLContextFactory.class.getName());
85 return new InitialContext(environment);
86 }
87
88
89
90
91
92
93 protected DataSource retrieveDataSource() throws Exception {
94 final Context ctx = getInitialContext();
95 final DataSource dataSource = (DataSource) ctx.lookup(JNDI_PATH);
96 assertNotNull(dataSource, "DataSource should not be null");
97 return dataSource;
98 }
99
100 @BeforeEach
101 public void setUp() throws Exception {
102 context = getInitialContext();
103 context.createSubcontext(JNDI_SUBCONTEXT);
104 }
105
106 @AfterEach
107 public void tearDown() throws Exception {
108 context.unbind(JNDI_PATH);
109 context.destroySubcontext(JNDI_SUBCONTEXT);
110 }
111
112
113
114
115
116
117 @Test
118 void testBasicDataSourceBind() throws Exception {
119 final BasicDataSource dataSource = new BasicDataSource();
120 checkBind(dataSource);
121 }
122
123
124
125
126
127
128 @Test
129 void testPerUserPoolDataSourceBind() throws Exception {
130 final PerUserPoolDataSource dataSource = new PerUserPoolDataSource();
131 checkBind(dataSource);
132 }
133
134
135
136
137
138
139 @Test
140 void testSharedPoolDataSourceBind() throws Exception {
141 final SharedPoolDataSource dataSource = new SharedPoolDataSource();
142 checkBind(dataSource);
143 }
144 }