1
1
/*
2
- * Copyright 2005-2022 the original author or authors.
2
+ * Copyright 2005-2023 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
74
74
*
75
75
* @author Mattias Hellborg Arthursson
76
76
* @author Ulrik Sandberg
77
+ * @author Roman Zabaluev
77
78
* @see org.springframework.ldap.core.ContextSource
78
79
*/
79
80
public class LdapTemplate implements LdapOperations , InitializingBean {
@@ -253,15 +254,10 @@ public void search(final Name base, final String filter, final SearchControls co
253
254
NameClassPairCallbackHandler handler ) {
254
255
255
256
// Create a SearchExecutor to perform the search.
256
- SearchExecutor se = new SearchExecutor () {
257
- public NamingEnumeration executeSearch (DirContext ctx ) throws javax .naming .NamingException {
258
- return ctx .search (base , filter , controls );
259
- }
260
- };
261
257
if (handler instanceof ContextMapperCallbackHandler ) {
262
258
assureReturnObjFlagSet (controls );
263
259
}
264
- search (se , handler );
260
+ search (searchExecutorWithLogging ( base , filter , controls ) , handler );
265
261
}
266
262
267
263
/**
@@ -272,15 +268,10 @@ public void search(final String base, final String filter, final SearchControls
272
268
NameClassPairCallbackHandler handler ) {
273
269
274
270
// Create a SearchExecutor to perform the search.
275
- SearchExecutor se = new SearchExecutor () {
276
- public NamingEnumeration executeSearch (DirContext ctx ) throws javax .naming .NamingException {
277
- return ctx .search (base , filter , controls );
278
- }
279
- };
280
271
if (handler instanceof ContextMapperCallbackHandler ) {
281
272
assureReturnObjFlagSet (controls );
282
273
}
283
- search (se , handler );
274
+ search (searchExecutorWithLogging ( base , filter , controls ) , handler );
284
275
}
285
276
286
277
/**
@@ -291,15 +282,10 @@ public void search(final Name base, final String filter, final SearchControls co
291
282
NameClassPairCallbackHandler handler , DirContextProcessor processor ) {
292
283
293
284
// Create a SearchExecutor to perform the search.
294
- SearchExecutor se = new SearchExecutor () {
295
- public NamingEnumeration executeSearch (DirContext ctx ) throws javax .naming .NamingException {
296
- return ctx .search (base , filter , controls );
297
- }
298
- };
299
285
if (handler instanceof ContextMapperCallbackHandler ) {
300
286
assureReturnObjFlagSet (controls );
301
287
}
302
- search (se , handler , processor );
288
+ search (searchExecutorWithLogging ( base , filter , controls ) , handler , processor );
303
289
}
304
290
305
291
/**
@@ -310,15 +296,10 @@ public void search(final String base, final String filter, final SearchControls
310
296
NameClassPairCallbackHandler handler , DirContextProcessor processor ) {
311
297
312
298
// Create a SearchExecutor to perform the search.
313
- SearchExecutor se = new SearchExecutor () {
314
- public NamingEnumeration executeSearch (DirContext ctx ) throws javax .naming .NamingException {
315
- return ctx .search (base , filter , controls );
316
- }
317
- };
318
299
if (handler instanceof ContextMapperCallbackHandler ) {
319
300
assureReturnObjFlagSet (controls );
320
301
}
321
- search (se , handler , processor );
302
+ search (searchExecutorWithLogging ( base , filter , controls ) , handler , processor );
322
303
}
323
304
324
305
/**
@@ -1599,7 +1580,7 @@ <T> Stream<T> searchForStream(LdapQuery query, Function<SearchResult, T> mapper)
1599
1580
1600
1581
assureReturnObjFlagSet (searchControls );
1601
1582
1602
- NamingEnumeration <SearchResult > results = unchecked (() -> ctx . search ( base , encodedFilter , searchControls ));
1583
+ NamingEnumeration <SearchResult > results = unchecked (searchSupplier ( ctx , base , encodedFilter , searchControls ));
1603
1584
if (results == null ) {
1604
1585
return Stream .empty ();
1605
1586
}
@@ -1828,6 +1809,38 @@ public <T> Stream<T> findForStream(LdapQuery query, Class<T> clazz) {
1828
1809
return searchForStream (builder .filter (includeClass ), contextMapper );
1829
1810
}
1830
1811
1812
+ private SearchExecutor searchExecutorWithLogging (final Name base , final String filter ,
1813
+ final SearchControls controls ) {
1814
+ return ctx -> {
1815
+ if (LOG .isDebugEnabled ()) {
1816
+ LOG .debug ("Executing search with base [{}] and filter [{}]" , base , filter );
1817
+ }
1818
+ return ctx .search (base , filter , controls );
1819
+ };
1820
+ }
1821
+
1822
+ private SearchExecutor searchExecutorWithLogging (final String base , final String filter ,
1823
+ final SearchControls controls ) {
1824
+ return ctx -> {
1825
+ if (LOG .isDebugEnabled ()) {
1826
+ LOG .debug ("Executing search with base [{}] and filter [{}]" , base , filter );
1827
+ }
1828
+ return ctx .search (base , filter , controls );
1829
+ };
1830
+ }
1831
+
1832
+ private CheckedSupplier <NamingEnumeration <SearchResult >> searchSupplier (final DirContext ctx ,
1833
+ final Name base ,
1834
+ final String filter ,
1835
+ final SearchControls controls ) {
1836
+ return () -> {
1837
+ if (LOG .isDebugEnabled ()) {
1838
+ LOG .debug ("Executing search with base [{}] and filter [{}]" , base , filter );
1839
+ }
1840
+ return ctx .search (base , filter , controls );
1841
+ };
1842
+ }
1843
+
1831
1844
private <T > T unchecked (CheckedSupplier <T > supplier ) {
1832
1845
try {
1833
1846
return supplier .get ();
0 commit comments