33 lines
1.3 KiB
Java
33 lines
1.3 KiB
Java
package de.ph87.tools.user.uuid;
|
|
|
|
import jakarta.servlet.http.HttpServletRequest;
|
|
import lombok.NonNull;
|
|
import lombok.SneakyThrows;
|
|
import org.springframework.core.MethodParameter;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.web.bind.support.WebDataBinderFactory;
|
|
import org.springframework.web.context.request.NativeWebRequest;
|
|
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
|
|
import org.springframework.web.method.support.ModelAndViewContainer;
|
|
|
|
import java.io.IOException;
|
|
|
|
@Component
|
|
public class UserPublicUuidArgumentResolver implements HandlerMethodArgumentResolver {
|
|
|
|
@Override
|
|
public boolean supportsParameter(@NonNull final MethodParameter parameter) {
|
|
return parameter.getParameterType() == UserPublicUuid.class;
|
|
}
|
|
|
|
@Override
|
|
@SneakyThrows(IOException.class)
|
|
public UserPublicUuid resolveArgument(@NonNull final MethodParameter parameter, final ModelAndViewContainer mavContainer, @NonNull final NativeWebRequest webRequest, final WebDataBinderFactory binderFactory) {
|
|
if (!(webRequest.getNativeRequest() instanceof final HttpServletRequest request)) {
|
|
throw new RuntimeException();
|
|
}
|
|
final String uuid = new String(request.getInputStream().readAllBytes());
|
|
return new UserPublicUuid(uuid);
|
|
}
|
|
|
|
} |