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