HttpRequestMethodNotSupportedExceptionResolver.java

  1. package cn.home1.oss.lib.errorhandle.internal.resolver;

  2. import static org.springframework.util.ObjectUtils.isEmpty;

  3. import cn.home1.oss.lib.errorhandle.api.AbstractConcreteExceptionResolver;

  4. import org.springframework.http.HttpHeaders;
  5. import org.springframework.web.HttpRequestMethodNotSupportedException;
  6. import org.springframework.web.context.request.RequestAttributes;

  7. import java.util.Optional;

  8. public class HttpRequestMethodNotSupportedExceptionResolver
  9.     extends AbstractConcreteExceptionResolver<HttpRequestMethodNotSupportedException> {

  10.   @Override
  11.   public Optional<HttpHeaders> createHeaders( //
  12.       final RequestAttributes requestAttributes, //
  13.       final HttpRequestMethodNotSupportedException exception //
  14.   ) {
  15.     final HttpHeaders headers = super.createHeaders(requestAttributes, exception).orElse(new HttpHeaders());

  16.     if (!isEmpty(exception.getSupportedMethods())) {
  17.       headers.setAllow(exception.getSupportedHttpMethods());
  18.     }

  19.     return !headers.isEmpty() ? Optional.of(headers) : Optional.empty();
  20.   }
  21. }