Skip to content

Commit 1b43b09

Browse files
committed
Merge pull request #23612 from KateVasovski/add-principal-method-argument-resolver
2 parents 6c4ac8f + 739d288 commit 1b43b09

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/PrincipalMethodArgumentResolver.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2018 the original author or authors.
2+
* Copyright 2002-2019 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -17,14 +17,15 @@
1717
package org.springframework.messaging.simp.annotation.support;
1818

1919
import java.security.Principal;
20+
import java.util.Optional;
2021

2122
import org.springframework.core.MethodParameter;
2223
import org.springframework.messaging.Message;
2324
import org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolver;
2425
import org.springframework.messaging.simp.SimpMessageHeaderAccessor;
2526

2627
/**
27-
* {@link HandlerMethodArgumentResolver} to a {@link Principal}.
28+
* Resolver for arguments of type {@link Principal}, including {@code Optional<Principal>}.
2829
*
2930
* @author Rossen Stoyanchev
3031
* @since 4.0
@@ -33,17 +34,15 @@ public class PrincipalMethodArgumentResolver implements HandlerMethodArgumentRes
3334

3435
@Override
3536
public boolean supportsParameter(MethodParameter parameter) {
36-
Class<?> paramType = parameter.getParameterType();
37+
MethodParameter nestedParameter = parameter.nestedIfOptional();
38+
Class<?> paramType = nestedParameter.getNestedParameterType();
3739
return Principal.class.isAssignableFrom(paramType);
3840
}
3941

4042
@Override
41-
public Object resolveArgument(MethodParameter parameter, Message<?> message) throws Exception {
43+
public Object resolveArgument(MethodParameter parameter, Message<?> message){
4244
Principal user = SimpMessageHeaderAccessor.getUser(message.getHeaders());
43-
if (user == null) {
44-
throw new MissingSessionUserException(message);
45-
}
46-
return user;
45+
return parameter.isOptional() ? Optional.ofNullable(user) : user;
4746
}
4847

4948
}

0 commit comments

Comments
 (0)