@@ -78,17 +78,80 @@ public interface Driver extends AutoCloseable {
7878 * @return a new {@link Session} object.
7979 */
8080 default Session session () {
81- return session (SessionConfig . defaultConfig () );
81+ return session (Session . class );
8282 }
8383
8484 /**
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}.
8686 * Use {@link SessionConfig#forDatabase(String)} to obtain a general purpose session configuration for the specified database.
8787 * @param sessionConfig specifies session configurations for this session.
8888 * @return a new {@link Session} object.
8989 * @see SessionConfig
9090 */
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 );
92155
93156 /**
94157 * 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() {
97160 * Alias to {@link #rxSession(SessionConfig)}}.
98161 *
99162 * @return a new {@link RxSession} object.
100- * @deprecated superseded by {@link #reactiveSession()}.
163+ * @deprecated superseded by {@link #session(Class)}
101164 */
102165 @ Deprecated
103166 default RxSession rxSession () {
104- return rxSession ( SessionConfig . defaultConfig () );
167+ return session ( RxSession . class );
105168 }
106169
107170 /**
@@ -110,10 +173,12 @@ default RxSession rxSession() {
110173 *
111174 * @param sessionConfig used to customize the session.
112175 * @return a new {@link RxSession} object.
113- * @deprecated superseded by {@link #reactiveSession( SessionConfig)}.
176+ * @deprecated superseded by {@link #session(Class, SessionConfig)}
114177 */
115178 @ Deprecated
116- RxSession rxSession (SessionConfig sessionConfig );
179+ default RxSession rxSession (SessionConfig sessionConfig ) {
180+ return session (RxSession .class , sessionConfig );
181+ }
117182
118183 /**
119184 * 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() {
122187 * Alias to {@link #rxSession(SessionConfig)}}.
123188 *
124189 * @return a new {@link ReactiveSession} object.
190+ * @deprecated superseded by {@link #session(Class)}
125191 */
192+ @ Deprecated
126193 default ReactiveSession reactiveSession () {
127- return reactiveSession ( SessionConfig . defaultConfig () );
194+ return session ( ReactiveSession . class );
128195 }
129196
130197 /**
@@ -134,53 +201,25 @@ default ReactiveSession reactiveSession() {
134201 *
135202 * @param sessionConfig used to customize the session.
136203 * @return a new {@link ReactiveSession} object.
204+ * @deprecated superseded by {@link #session(Class, SessionConfig)}
137205 */
206+ @ Deprecated
138207 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 );
157209 }
158210
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-
174211 /**
175212 * Create a new general purpose {@link AsyncSession} with default {@link SessionConfig session configuration}. The {@link AsyncSession} provides an
176213 * asynchronous way to run queries and process results.
177214 * <p>
178215 * Alias to {@link #asyncSession(SessionConfig)}}.
179216 *
180217 * @return a new {@link AsyncSession} object.
218+ * @deprecated superseded by {@link #session(Class)}
181219 */
220+ @ Deprecated
182221 default AsyncSession asyncSession () {
183- return asyncSession ( SessionConfig . defaultConfig () );
222+ return session ( AsyncSession . class );
184223 }
185224
186225 /**
@@ -190,8 +229,12 @@ default AsyncSession asyncSession() {
190229 *
191230 * @param sessionConfig used to customize the session.
192231 * @return a new {@link AsyncSession} object.
232+ * @deprecated superseded by {@link #session(Class, SessionConfig)}
193233 */
194- AsyncSession asyncSession (SessionConfig sessionConfig );
234+ @ Deprecated
235+ default AsyncSession asyncSession (SessionConfig sessionConfig ) {
236+ return session (AsyncSession .class , sessionConfig );
237+ }
195238
196239 /**
197240 * Close all the resources assigned to this driver, including open connections and IO threads.
0 commit comments