@@ -78,17 +78,78 @@ public interface Driver extends AutoCloseable {
78
78
* @return a new {@link Session} object.
79
79
*/
80
80
default Session session () {
81
- return session (SessionConfig . defaultConfig () );
81
+ return session (Session . class );
82
82
}
83
83
84
84
/**
85
- * Create a new {@link Session} with a specified {@link SessionConfig session configuration}.
85
+ * Instantiate a new {@link Session} with a specified {@link SessionConfig session configuration}.
86
86
* Use {@link SessionConfig#forDatabase(String)} to obtain a general purpose session configuration for the specified database.
87
87
* @param sessionConfig specifies session configurations for this session.
88
88
* @return a new {@link Session} object.
89
89
* @see SessionConfig
90
90
*/
91
- Session session (SessionConfig sessionConfig );
91
+ default Session session (SessionConfig sessionConfig ) {
92
+ return session (Session .class , sessionConfig );
93
+ }
94
+
95
+ /**
96
+ * Instantiate a new session of supported type with default {@link SessionConfig session configuration}.
97
+ * <p>
98
+ * Supported types are:
99
+ * <ul>
100
+ * <li>{@link org.neo4j.driver.Session} - synchronous session</li>
101
+ * <li>{@link org.neo4j.driver.async.AsyncSession} - asynchronous session</li>
102
+ * <li>{@link org.neo4j.driver.reactive.ReactiveSession} - reactive session using Flow API</li>
103
+ * <li>{@link org.neo4j.driver.reactivestreams.ReactiveSession} - reactive session using Reactive Streams API</li>
104
+ * <li>{@link org.neo4j.driver.reactive.RxSession} - deprecated reactive session using Reactive Streams API,
105
+ * superseded by {@link org.neo4j.driver.reactivestreams.ReactiveSession}</li>
106
+ * </ul>
107
+ * <p>
108
+ * Sample usage:
109
+ * <pre>
110
+ * {@code
111
+ * var session = driver.session(AsyncSession.class);
112
+ * }
113
+ * </pre>
114
+ *
115
+ * @param sessionClass session type class, must not be null
116
+ * @return session instance
117
+ * @param <T> session type
118
+ * @throws IllegalArgumentException for unsupported session types
119
+ * @since 5.2
120
+ */
121
+ default <T extends BaseSession > T session (Class <T > sessionClass ) {
122
+ return session (sessionClass , SessionConfig .defaultConfig ());
123
+ }
124
+
125
+ /**
126
+ * Create a new session of supported type with a specified {@link SessionConfig session configuration}.
127
+ * <p>
128
+ * Supported types are:
129
+ * <ul>
130
+ * <li>{@link org.neo4j.driver.Session} - synchronous session</li>
131
+ * <li>{@link org.neo4j.driver.async.AsyncSession} - asynchronous session</li>
132
+ * <li>{@link org.neo4j.driver.reactive.ReactiveSession} - reactive session using Flow API</li>
133
+ * <li>{@link org.neo4j.driver.reactivestreams.ReactiveSession} - reactive session using Reactive Streams API</li>
134
+ * <li>{@link org.neo4j.driver.reactive.RxSession} - deprecated reactive session using Reactive Streams API,
135
+ * superseded by {@link org.neo4j.driver.reactivestreams.ReactiveSession}</li>
136
+ * </ul>
137
+ * <p>
138
+ * Sample usage:
139
+ * <pre>
140
+ * {@code
141
+ * var session = driver.session(AsyncSession.class);
142
+ * }
143
+ * </pre>
144
+ *
145
+ * @param sessionClass session type class, must not be null
146
+ * @param sessionConfig session config, must not be null
147
+ * @return session instance
148
+ * @param <T> session type
149
+ * @throws IllegalArgumentException for unsupported session types
150
+ * @since 5.2
151
+ */
152
+ <T extends BaseSession > T session (Class <T > sessionClass , SessionConfig sessionConfig );
92
153
93
154
/**
94
155
* Create a new general purpose {@link RxSession} with default {@link SessionConfig session configuration}. The {@link RxSession} provides a reactive way to
@@ -97,11 +158,11 @@ default Session session() {
97
158
* Alias to {@link #rxSession(SessionConfig)}}.
98
159
*
99
160
* @return a new {@link RxSession} object.
100
- * @deprecated superseded by {@link #reactiveSession()}.
161
+ * @deprecated superseded by {@link #session(Class)}
101
162
*/
102
163
@ Deprecated
103
164
default RxSession rxSession () {
104
- return rxSession ( SessionConfig . defaultConfig () );
165
+ return session ( RxSession . class );
105
166
}
106
167
107
168
/**
@@ -110,10 +171,12 @@ default RxSession rxSession() {
110
171
*
111
172
* @param sessionConfig used to customize the session.
112
173
* @return a new {@link RxSession} object.
113
- * @deprecated superseded by {@link #reactiveSession( SessionConfig)}.
174
+ * @deprecated superseded by {@link #session(Class, SessionConfig)}
114
175
*/
115
176
@ Deprecated
116
- RxSession rxSession (SessionConfig sessionConfig );
177
+ default RxSession rxSession (SessionConfig sessionConfig ) {
178
+ return session (RxSession .class , sessionConfig );
179
+ }
117
180
118
181
/**
119
182
* Create a new general purpose {@link ReactiveSession} with default {@link SessionConfig session configuration}. The {@link ReactiveSession} provides a
@@ -122,9 +185,11 @@ default RxSession rxSession() {
122
185
* Alias to {@link #rxSession(SessionConfig)}}.
123
186
*
124
187
* @return a new {@link ReactiveSession} object.
188
+ * @deprecated superseded by {@link #session(Class)}
125
189
*/
190
+ @ Deprecated
126
191
default ReactiveSession reactiveSession () {
127
- return reactiveSession ( SessionConfig . defaultConfig () );
192
+ return session ( ReactiveSession . class );
128
193
}
129
194
130
195
/**
@@ -134,53 +199,25 @@ default ReactiveSession reactiveSession() {
134
199
*
135
200
* @param sessionConfig used to customize the session.
136
201
* @return a new {@link ReactiveSession} object.
202
+ * @deprecated superseded by {@link #session(Class, SessionConfig)}
137
203
*/
204
+ @ Deprecated
138
205
default ReactiveSession reactiveSession (SessionConfig sessionConfig ) {
139
- return reactiveSession (ReactiveSession .class , sessionConfig );
206
+ return session (ReactiveSession .class , sessionConfig );
140
207
}
141
208
142
- /**
143
- * Create a new reactive session of supported type with default {@link SessionConfig session configuration}.
144
- * <p>
145
- * Supported types are:
146
- * <ul>
147
- * <li>{@link org.neo4j.driver.reactive.ReactiveSession} - reactive session using Flow API</li>
148
- * <li>{@link org.neo4j.driver.reactivestreams.ReactiveSession} - reactive session using Reactive Streams API</li>
149
- * </ul>
150
- *
151
- * @param sessionClass session type class
152
- * @return session instance
153
- * @param <T> session type
154
- */
155
- default <T extends BaseReactiveSession > T reactiveSession (Class <T > sessionClass ) {
156
- return reactiveSession (sessionClass , SessionConfig .defaultConfig ());
157
- }
158
-
159
- /**
160
- * Create a new reactive session of supported type with a specified {@link SessionConfig session configuration}.
161
- * <p>
162
- * Supported types are:
163
- * <ul>
164
- * <li>{@link org.neo4j.driver.reactive.ReactiveSession} - reactive session using Flow API</li>
165
- * <li>{@link org.neo4j.driver.reactivestreams.ReactiveSession} - reactive session using Reactive Streams API</li>
166
- * </ul>
167
- *
168
- * @param sessionClass session type class
169
- * @return session instance
170
- * @param <T> session type
171
- */
172
- <T extends BaseReactiveSession > T reactiveSession (Class <T > sessionClass , SessionConfig sessionConfig );
173
-
174
209
/**
175
210
* Create a new general purpose {@link AsyncSession} with default {@link SessionConfig session configuration}. The {@link AsyncSession} provides an
176
211
* asynchronous way to run queries and process results.
177
212
* <p>
178
213
* Alias to {@link #asyncSession(SessionConfig)}}.
179
214
*
180
215
* @return a new {@link AsyncSession} object.
216
+ * @deprecated superseded by {@link #session(Class)}
181
217
*/
218
+ @ Deprecated
182
219
default AsyncSession asyncSession () {
183
- return asyncSession ( SessionConfig . defaultConfig () );
220
+ return session ( AsyncSession . class );
184
221
}
185
222
186
223
/**
@@ -190,8 +227,12 @@ default AsyncSession asyncSession() {
190
227
*
191
228
* @param sessionConfig used to customize the session.
192
229
* @return a new {@link AsyncSession} object.
230
+ * @deprecated superseded by {@link #session(Class, SessionConfig)}
193
231
*/
194
- AsyncSession asyncSession (SessionConfig sessionConfig );
232
+ @ Deprecated
233
+ default AsyncSession asyncSession (SessionConfig sessionConfig ) {
234
+ return session (AsyncSession .class , sessionConfig );
235
+ }
195
236
196
237
/**
197
238
* Close all the resources assigned to this driver, including open connections and IO threads.
0 commit comments