Skip to content

Commit d0150eb

Browse files
bdemersclaude
andcommitted
Add FilterResponse.paginate() Collector and simplify find() methods
Encapsulate the pagination + FilterResponse construction boilerplate into a Collector factory, matching the pattern of FilterExpressions.inMemory() and SortExpressions.comparator(). All 16 InMemory service find() methods now use the fluent .collect(FilterResponse.paginate(...)) terminal operation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 7145df7 commit d0150eb

18 files changed

Lines changed: 160 additions & 96 deletions

File tree

scim-server-examples/scim-server-jersey-4/src/main/java/org/apache/directory/scim/example/jersey4/service/InMemoryGroupService.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import org.apache.directory.scim.spec.filter.Filter;
3636
import org.apache.directory.scim.spec.filter.FilterExpressions;
3737
import org.apache.directory.scim.spec.filter.FilterResponse;
38-
import org.apache.directory.scim.spec.filter.PageRequest;
3938
import org.apache.directory.scim.spec.filter.SortExpressions;
4039
import org.apache.directory.scim.spec.schema.Schema;
4140
import org.apache.directory.scim.spec.resources.ScimExtension;
@@ -118,13 +117,10 @@ public void delete(String id) throws ResourceException {
118117
@Override
119118
public FilterResponse<ScimGroup> find(Filter filter, ScimRequestContext requestContext) {
120119
Schema schema = schemaRegistry.getSchema(ScimGroup.SCHEMA_URI);
121-
List<ScimGroup> filtered = groups.values().stream()
120+
return groups.values().stream()
122121
.filter(FilterExpressions.inMemory(filter, schema))
123122
.sorted(SortExpressions.comparator(requestContext.getSortRequest(), schema))
124-
.toList();
125-
126-
PageRequest pageRequest = requestContext.getPageRequestOrDefault();
127-
return new FilterResponse<>(pageRequest.paginate(filtered), filtered.size());
123+
.collect(FilterResponse.paginate(requestContext.getPageRequestOrDefault()));
128124
}
129125

130126
@Override

scim-server-examples/scim-server-jersey-4/src/main/java/org/apache/directory/scim/example/jersey4/service/InMemoryUserService.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import org.apache.directory.scim.spec.filter.Filter;
3737
import org.apache.directory.scim.spec.filter.FilterExpressions;
3838
import org.apache.directory.scim.spec.filter.FilterResponse;
39-
import org.apache.directory.scim.spec.filter.PageRequest;
4039
import org.apache.directory.scim.spec.filter.SortExpressions;
4140
import org.apache.directory.scim.spec.schema.Schema;
4241
import org.apache.directory.scim.spec.resources.Email;
@@ -151,13 +150,10 @@ public void delete(String id) throws ResourceException {
151150
@Override
152151
public FilterResponse<ScimUser> find(Filter filter, ScimRequestContext requestContext) {
153152
Schema schema = schemaRegistry.getSchema(ScimUser.SCHEMA_URI);
154-
List<ScimUser> filtered = users.values().stream()
153+
return users.values().stream()
155154
.filter(FilterExpressions.inMemory(filter, schema))
156155
.sorted(SortExpressions.comparator(requestContext.getSortRequest(), schema))
157-
.toList();
158-
159-
PageRequest pageRequest = requestContext.getPageRequestOrDefault();
160-
return new FilterResponse<>(pageRequest.paginate(filtered), filtered.size());
156+
.collect(FilterResponse.paginate(requestContext.getPageRequestOrDefault()));
161157
}
162158

163159
@Override

scim-server-examples/scim-server-jersey/src/main/java/org/apache/directory/scim/example/jersey/service/InMemoryGroupService.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import org.apache.directory.scim.spec.filter.Filter;
3636
import org.apache.directory.scim.spec.filter.FilterExpressions;
3737
import org.apache.directory.scim.spec.filter.FilterResponse;
38-
import org.apache.directory.scim.spec.filter.PageRequest;
3938
import org.apache.directory.scim.spec.filter.SortExpressions;
4039
import org.apache.directory.scim.spec.schema.Schema;
4140
import org.apache.directory.scim.spec.resources.ScimExtension;
@@ -118,13 +117,10 @@ public void delete(String id) throws ResourceException {
118117
@Override
119118
public FilterResponse<ScimGroup> find(Filter filter, ScimRequestContext requestContext) {
120119
Schema schema = schemaRegistry.getSchema(ScimGroup.SCHEMA_URI);
121-
List<ScimGroup> filtered = groups.values().stream()
120+
return groups.values().stream()
122121
.filter(FilterExpressions.inMemory(filter, schema))
123122
.sorted(SortExpressions.comparator(requestContext.getSortRequest(), schema))
124-
.toList();
125-
126-
PageRequest pageRequest = requestContext.getPageRequestOrDefault();
127-
return new FilterResponse<>(pageRequest.paginate(filtered), filtered.size());
123+
.collect(FilterResponse.paginate(requestContext.getPageRequestOrDefault()));
128124
}
129125

130126
@Override

scim-server-examples/scim-server-jersey/src/main/java/org/apache/directory/scim/example/jersey/service/InMemoryUserService.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import org.apache.directory.scim.spec.filter.Filter;
3737
import org.apache.directory.scim.spec.filter.FilterExpressions;
3838
import org.apache.directory.scim.spec.filter.FilterResponse;
39-
import org.apache.directory.scim.spec.filter.PageRequest;
4039
import org.apache.directory.scim.spec.filter.SortExpressions;
4140
import org.apache.directory.scim.spec.schema.Schema;
4241
import org.apache.directory.scim.spec.resources.Email;
@@ -151,13 +150,10 @@ public void delete(String id) throws ResourceException {
151150
@Override
152151
public FilterResponse<ScimUser> find(Filter filter, ScimRequestContext requestContext) {
153152
Schema schema = schemaRegistry.getSchema(ScimUser.SCHEMA_URI);
154-
List<ScimUser> filtered = users.values().stream()
153+
return users.values().stream()
155154
.filter(FilterExpressions.inMemory(filter, schema))
156155
.sorted(SortExpressions.comparator(requestContext.getSortRequest(), schema))
157-
.toList();
158-
159-
PageRequest pageRequest = requestContext.getPageRequestOrDefault();
160-
return new FilterResponse<>(pageRequest.paginate(filtered), filtered.size());
156+
.collect(FilterResponse.paginate(requestContext.getPageRequestOrDefault()));
161157
}
162158

163159
@Override

scim-server-examples/scim-server-memory/src/main/java/org/apache/directory/scim/example/memory/service/InMemoryGroupService.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import org.apache.directory.scim.spec.filter.Filter;
3636
import org.apache.directory.scim.spec.filter.FilterExpressions;
3737
import org.apache.directory.scim.spec.filter.FilterResponse;
38-
import org.apache.directory.scim.spec.filter.PageRequest;
3938
import org.apache.directory.scim.spec.filter.SortExpressions;
4039
import org.apache.directory.scim.spec.schema.Schema;
4140
import org.apache.directory.scim.spec.resources.ScimExtension;
@@ -118,13 +117,10 @@ public void delete(String id) throws ResourceException {
118117
@Override
119118
public FilterResponse<ScimGroup> find(Filter filter, ScimRequestContext requestContext) {
120119
Schema schema = schemaRegistry.getSchema(ScimGroup.SCHEMA_URI);
121-
List<ScimGroup> filtered = groups.values().stream()
120+
return groups.values().stream()
122121
.filter(FilterExpressions.inMemory(filter, schema))
123122
.sorted(SortExpressions.comparator(requestContext.getSortRequest(), schema))
124-
.toList();
125-
126-
PageRequest pageRequest = requestContext.getPageRequestOrDefault();
127-
return new FilterResponse<>(pageRequest.paginate(filtered), filtered.size());
123+
.collect(FilterResponse.paginate(requestContext.getPageRequestOrDefault()));
128124
}
129125

130126
@Override

scim-server-examples/scim-server-memory/src/main/java/org/apache/directory/scim/example/memory/service/InMemoryUserService.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import org.apache.directory.scim.spec.filter.Filter;
3737
import org.apache.directory.scim.spec.filter.FilterExpressions;
3838
import org.apache.directory.scim.spec.filter.FilterResponse;
39-
import org.apache.directory.scim.spec.filter.PageRequest;
4039
import org.apache.directory.scim.spec.filter.SortExpressions;
4140
import org.apache.directory.scim.spec.schema.Schema;
4241
import org.apache.directory.scim.spec.resources.Email;
@@ -151,13 +150,10 @@ public void delete(String id) throws ResourceException {
151150
@Override
152151
public FilterResponse<ScimUser> find(Filter filter, ScimRequestContext requestContext) {
153152
Schema schema = schemaRegistry.getSchema(ScimUser.SCHEMA_URI);
154-
List<ScimUser> filtered = users.values().stream()
153+
return users.values().stream()
155154
.filter(FilterExpressions.inMemory(filter, schema))
156155
.sorted(SortExpressions.comparator(requestContext.getSortRequest(), schema))
157-
.toList();
158-
159-
PageRequest pageRequest = requestContext.getPageRequestOrDefault();
160-
return new FilterResponse<>(pageRequest.paginate(filtered), filtered.size());
156+
.collect(FilterResponse.paginate(requestContext.getPageRequestOrDefault()));
161157
}
162158

163159
@Override

scim-server-examples/scim-server-quarkus/src/main/java/org/apache/directory/scim/example/quarkus/service/InMemoryGroupService.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import org.apache.directory.scim.spec.filter.Filter;
3636
import org.apache.directory.scim.spec.filter.FilterExpressions;
3737
import org.apache.directory.scim.spec.filter.FilterResponse;
38-
import org.apache.directory.scim.spec.filter.PageRequest;
3938
import org.apache.directory.scim.spec.filter.SortExpressions;
4039
import org.apache.directory.scim.spec.schema.Schema;
4140
import org.apache.directory.scim.spec.resources.ScimExtension;
@@ -118,13 +117,10 @@ public void delete(String id) throws ResourceException {
118117
@Override
119118
public FilterResponse<ScimGroup> find(Filter filter, ScimRequestContext requestContext) {
120119
Schema schema = schemaRegistry.getSchema(ScimGroup.SCHEMA_URI);
121-
List<ScimGroup> filtered = groups.values().stream()
120+
return groups.values().stream()
122121
.filter(FilterExpressions.inMemory(filter, schema))
123122
.sorted(SortExpressions.comparator(requestContext.getSortRequest(), schema))
124-
.toList();
125-
126-
PageRequest pageRequest = requestContext.getPageRequestOrDefault();
127-
return new FilterResponse<>(pageRequest.paginate(filtered), filtered.size());
123+
.collect(FilterResponse.paginate(requestContext.getPageRequestOrDefault()));
128124
}
129125

130126
@Override

scim-server-examples/scim-server-quarkus/src/main/java/org/apache/directory/scim/example/quarkus/service/InMemoryUserService.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import org.apache.directory.scim.spec.filter.Filter;
3737
import org.apache.directory.scim.spec.filter.FilterExpressions;
3838
import org.apache.directory.scim.spec.filter.FilterResponse;
39-
import org.apache.directory.scim.spec.filter.PageRequest;
4039
import org.apache.directory.scim.spec.filter.SortExpressions;
4140
import org.apache.directory.scim.spec.schema.Schema;
4241
import org.apache.directory.scim.spec.resources.Email;
@@ -151,13 +150,10 @@ public void delete(String id) throws ResourceException {
151150
@Override
152151
public FilterResponse<ScimUser> find(Filter filter, ScimRequestContext requestContext) {
153152
Schema schema = schemaRegistry.getSchema(ScimUser.SCHEMA_URI);
154-
List<ScimUser> filtered = users.values().stream()
153+
return users.values().stream()
155154
.filter(FilterExpressions.inMemory(filter, schema))
156155
.sorted(SortExpressions.comparator(requestContext.getSortRequest(), schema))
157-
.toList();
158-
159-
PageRequest pageRequest = requestContext.getPageRequestOrDefault();
160-
return new FilterResponse<>(pageRequest.paginate(filtered), filtered.size());
156+
.collect(FilterResponse.paginate(requestContext.getPageRequestOrDefault()));
161157
}
162158

163159
@Override

scim-server-examples/scim-server-spring-boot-4/src/main/java/org/apache/directory/scim/example/spring/service/InMemoryGroupService.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import org.apache.directory.scim.spec.filter.Filter;
3232
import org.apache.directory.scim.spec.filter.FilterExpressions;
3333
import org.apache.directory.scim.spec.filter.FilterResponse;
34-
import org.apache.directory.scim.spec.filter.PageRequest;
3534
import org.apache.directory.scim.spec.filter.SortExpressions;
3635
import org.apache.directory.scim.spec.schema.Schema;
3736
import org.apache.directory.scim.spec.resources.ScimExtension;
@@ -112,13 +111,10 @@ public void delete(String id) throws ResourceException {
112111
@Override
113112
public FilterResponse<ScimGroup> find(Filter filter, ScimRequestContext requestContext) {
114113
Schema schema = schemaRegistry.getSchema(ScimGroup.SCHEMA_URI);
115-
List<ScimGroup> filtered = groups.values().stream()
114+
return groups.values().stream()
116115
.filter(FilterExpressions.inMemory(filter, schema))
117116
.sorted(SortExpressions.comparator(requestContext.getSortRequest(), schema))
118-
.toList();
119-
120-
PageRequest pageRequest = requestContext.getPageRequestOrDefault();
121-
return new FilterResponse<>(pageRequest.paginate(filtered), filtered.size());
117+
.collect(FilterResponse.paginate(requestContext.getPageRequestOrDefault()));
122118
}
123119

124120
@Override

scim-server-examples/scim-server-spring-boot-4/src/main/java/org/apache/directory/scim/example/spring/service/InMemoryUserService.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import org.apache.directory.scim.spec.filter.Filter;
3434
import org.apache.directory.scim.spec.filter.FilterExpressions;
3535
import org.apache.directory.scim.spec.filter.FilterResponse;
36-
import org.apache.directory.scim.spec.filter.PageRequest;
3736
import org.apache.directory.scim.spec.filter.SortExpressions;
3837
import org.apache.directory.scim.spec.schema.Schema;
3938
import org.apache.directory.scim.spec.resources.Email;
@@ -145,13 +144,10 @@ public void delete(String id) throws ResourceException {
145144
@Override
146145
public FilterResponse<ScimUser> find(Filter filter, ScimRequestContext requestContext) {
147146
Schema schema = schemaRegistry.getSchema(ScimUser.SCHEMA_URI);
148-
List<ScimUser> filtered = users.values().stream()
147+
return users.values().stream()
149148
.filter(FilterExpressions.inMemory(filter, schema))
150149
.sorted(SortExpressions.comparator(requestContext.getSortRequest(), schema))
151-
.toList();
152-
153-
PageRequest pageRequest = requestContext.getPageRequestOrDefault();
154-
return new FilterResponse<>(pageRequest.paginate(filtered), filtered.size());
150+
.collect(FilterResponse.paginate(requestContext.getPageRequestOrDefault()));
155151
}
156152

157153
@Override

0 commit comments

Comments
 (0)