Skip to content

Commit bf0dd4f

Browse files
committed
Added some improvements
1 parent 3cc245c commit bf0dd4f

File tree

2 files changed

+31
-31
lines changed

2 files changed

+31
-31
lines changed

Diff for: core/src/main/java/org/springframework/security/access/expression/method/DefaultMethodSecurityExpressionHandler.java

+7-7
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ public Object filter(Object filterTarget, Expression filterExpression, Evaluatio
125125
"Filter target must be a collection, array, map, stream or optional type, but was " + filterTarget);
126126
}
127127

128-
private <T> Object filterCollection(Collection<T> filterTarget, Expression filterExpression, EvaluationContext ctx,
128+
private <T> Collection<T> filterCollection(final Collection<T> filterTarget, Expression filterExpression, EvaluationContext ctx,
129129
MethodSecurityExpressionOperations rootObject) {
130130
this.logger.debug(LogMessage.format("Filtering collection with %s elements", filterTarget.size()));
131131
List<T> retain = new ArrayList<>(filterTarget.size());
@@ -144,7 +144,7 @@ private <T> Object filterCollection(Collection<T> filterTarget, Expression filte
144144
return filterTarget;
145145
}
146146

147-
private Object filterArray(Object[] filterTarget, Expression filterExpression, EvaluationContext ctx,
147+
private Object[] filterArray(final Object[] filterTarget, Expression filterExpression, EvaluationContext ctx,
148148
MethodSecurityExpressionOperations rootObject) {
149149
List<Object> retain = new ArrayList<>(filterTarget.length);
150150
this.logger.debug(LogMessage.format("Filtering array with %s elements", filterTarget.length));
@@ -166,7 +166,7 @@ private Object filterArray(Object[] filterTarget, Expression filterExpression, E
166166
return filtered;
167167
}
168168

169-
private <K, V> Object filterMap(final Map<K, V> filterTarget, Expression filterExpression, EvaluationContext ctx,
169+
private <K, V> Map<K, V> filterMap(final Map<K, V> filterTarget, Expression filterExpression, EvaluationContext ctx,
170170
MethodSecurityExpressionOperations rootObject) {
171171
Map<K, V> retain = new LinkedHashMap<>(filterTarget.size());
172172
this.logger.debug(LogMessage.format("Filtering map with %s elements", filterTarget.size()));
@@ -182,16 +182,16 @@ private <K, V> Object filterMap(final Map<K, V> filterTarget, Expression filterE
182182
return filterTarget;
183183
}
184184

185-
private Object filterStream(final Stream<?> filterTarget, Expression filterExpression, EvaluationContext ctx,
185+
private <T> Stream<T> filterStream(final Stream<T> filterTarget, Expression filterExpression, EvaluationContext ctx,
186186
MethodSecurityExpressionOperations rootObject) {
187-
return filterTarget.filter((filterObject) -> {
187+
return filterTarget.filter(filterObject -> {
188188
rootObject.setFilterObject(filterObject);
189189
return ExpressionUtils.evaluateAsBoolean(filterExpression, ctx);
190190
}).onClose(filterTarget::close);
191191
}
192192

193-
private Object filterOptional(final Optional<?> filterTarget, Expression filterExpression, EvaluationContext ctx,
194-
MethodSecurityExpressionOperations rootObject) {
193+
private <T> Optional<T> filterOptional(final Optional<T> filterTarget, Expression filterExpression,
194+
EvaluationContext ctx, MethodSecurityExpressionOperations rootObject) {
195195
return filterTarget.filter(filterObject -> {
196196
rootObject.setFilterObject(filterObject);
197197
return ExpressionUtils.evaluateAsBoolean(filterExpression, ctx);

Diff for: core/src/test/java/org/springframework/security/access/expression/method/DefaultMethodSecurityExpressionHandlerTests.java

+24-24
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
import static org.mockito.Mockito.verify;
4747

4848
@ExtendWith(MockitoExtension.class)
49-
public class DefaultMethodSecurityExpressionHandlerTests {
49+
class DefaultMethodSecurityExpressionHandlerTests {
5050

5151
private DefaultMethodSecurityExpressionHandler handler;
5252

@@ -75,12 +75,12 @@ public void cleanup() {
7575
}
7676

7777
@Test
78-
public void setTrustResolverNull() {
78+
void setTrustResolverNull() {
7979
assertThatIllegalArgumentException().isThrownBy(() -> this.handler.setTrustResolver(null));
8080
}
8181

8282
@Test
83-
public void createEvaluationContextCustomTrustResolver() {
83+
void createEvaluationContextCustomTrustResolver() {
8484
setupMocks();
8585
this.handler.setTrustResolver(this.trustResolver);
8686
Expression expression = this.handler.getExpressionParser().parseExpression("anonymous");
@@ -91,7 +91,7 @@ public void createEvaluationContextCustomTrustResolver() {
9191

9292
@Test
9393
@SuppressWarnings("unchecked")
94-
public void filterByKeyWhenUsingMapThenFiltersMap() {
94+
void filterByKeyWhenUsingMapThenFiltersMap() {
9595
setupMocks();
9696
final Map<String, String> map = new HashMap<>();
9797
map.put("key1", "value1");
@@ -100,16 +100,16 @@ public void filterByKeyWhenUsingMapThenFiltersMap() {
100100
Expression expression = this.handler.getExpressionParser().parseExpression("filterObject.key eq 'key2'");
101101
EvaluationContext context = this.handler.createEvaluationContext(this.authentication, this.methodInvocation);
102102
Object filtered = this.handler.filter(map, expression, context);
103-
assertThat(filtered == map);
103+
assertThat(filtered).isSameAs(map);
104104
Map<String, String> result = ((Map<String, String>) filtered);
105-
assertThat(result.size() == 1);
106-
assertThat(result).containsKey("key2");
107-
assertThat(result).containsValue("value2");
105+
assertThat(result).hasSize(1)
106+
.containsOnlyKeys("key2")
107+
.containsValue("value2");
108108
}
109109

110110
@Test
111111
@SuppressWarnings("unchecked")
112-
public void filterByValueWhenUsingMapThenFiltersMap() {
112+
void filterByValueWhenUsingMapThenFiltersMap() {
113113
setupMocks();
114114
final Map<String, String> map = new HashMap<>();
115115
map.put("key1", "value1");
@@ -118,16 +118,16 @@ public void filterByValueWhenUsingMapThenFiltersMap() {
118118
Expression expression = this.handler.getExpressionParser().parseExpression("filterObject.value eq 'value3'");
119119
EvaluationContext context = this.handler.createEvaluationContext(this.authentication, this.methodInvocation);
120120
Object filtered = this.handler.filter(map, expression, context);
121-
assertThat(filtered == map);
121+
assertThat(filtered).isSameAs(map);
122122
Map<String, String> result = ((Map<String, String>) filtered);
123-
assertThat(result.size() == 1);
124-
assertThat(result).containsKey("key3");
125-
assertThat(result).containsValue("value3");
123+
assertThat(result).hasSize(1)
124+
.containsOnlyKeys("key3")
125+
.containsValue("value3");
126126
}
127127

128128
@Test
129129
@SuppressWarnings("unchecked")
130-
public void filterByKeyAndValueWhenUsingMapThenFiltersMap() {
130+
void filterByKeyAndValueWhenUsingMapThenFiltersMap() {
131131
setupMocks();
132132
final Map<String, String> map = new HashMap<>();
133133
map.put("key1", "value1");
@@ -137,16 +137,16 @@ public void filterByKeyAndValueWhenUsingMapThenFiltersMap() {
137137
.parseExpression("(filterObject.key eq 'key1') or (filterObject.value eq 'value2')");
138138
EvaluationContext context = this.handler.createEvaluationContext(this.authentication, this.methodInvocation);
139139
Object filtered = this.handler.filter(map, expression, context);
140-
assertThat(filtered == map);
140+
assertThat(filtered).isSameAs(map);
141141
Map<String, String> result = ((Map<String, String>) filtered);
142-
assertThat(result.size() == 2);
143-
assertThat(result).containsKeys("key1", "key2");
144-
assertThat(result).containsValues("value1", "value2");
142+
assertThat(result).hasSize(2)
143+
.containsOnlyKeys("key1", "key2")
144+
.containsValues("value1", "value2");
145145
}
146146

147147
@Test
148148
@SuppressWarnings("unchecked")
149-
public void filterWhenUsingStreamThenFiltersStream() {
149+
void filterWhenUsingStreamThenFiltersStream() {
150150
setupMocks();
151151
final Stream<String> stream = Stream.of("1", "2", "3");
152152
Expression expression = this.handler.getExpressionParser().parseExpression("filterObject ne '2'");
@@ -158,19 +158,19 @@ public void filterWhenUsingStreamThenFiltersStream() {
158158
}
159159

160160
@Test
161-
public void filterStreamWhenClosedThenUpstreamGetsClosed() {
161+
void filterStreamWhenClosedThenUpstreamGetsClosed() {
162162
setupMocks();
163163
final Stream<?> upstream = mock(Stream.class);
164164
doReturn(Stream.<String>empty()).when(upstream).filter(any());
165165
Expression expression = this.handler.getExpressionParser().parseExpression("true");
166166
EvaluationContext context = this.handler.createEvaluationContext(this.authentication, this.methodInvocation);
167-
((Stream) this.handler.filter(upstream, expression, context)).close();
167+
((Stream<?>) this.handler.filter(upstream, expression, context)).close();
168168
verify(upstream).close();
169169
}
170170

171171
@Test
172172
@SuppressWarnings("unchecked")
173-
public void filterMatchingOptional() {
173+
void filterMatchingOptional() {
174174
final Optional<String> optional = Optional.of("1");
175175
Expression expression = this.handler.getExpressionParser().parseExpression("filterObject ne '2'");
176176
EvaluationContext context = this.handler.createEvaluationContext(this.authentication, this.methodInvocation);
@@ -181,7 +181,7 @@ public void filterMatchingOptional() {
181181

182182
@Test
183183
@SuppressWarnings("unchecked")
184-
public void filterNotMatchingOptional() {
184+
void filterNotMatchingOptional() {
185185
final Optional<String> optional = Optional.of("2");
186186
Expression expression = this.handler.getExpressionParser().parseExpression("filterObject ne '2'");
187187
EvaluationContext context = this.handler.createEvaluationContext(this.authentication, this.methodInvocation);
@@ -192,7 +192,7 @@ public void filterNotMatchingOptional() {
192192

193193
@Test
194194
@SuppressWarnings("unchecked")
195-
public void filterEmptyOptional() {
195+
void filterEmptyOptional() {
196196
final Optional<String> optional = Optional.empty();
197197
Expression expression = this.handler.getExpressionParser().parseExpression("filterObject ne '2'");
198198
EvaluationContext context = this.handler.createEvaluationContext(this.authentication, this.methodInvocation);

0 commit comments

Comments
 (0)