package com.fbecart.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.context.ApplicationContext;
import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
import com.google.common.base.Joiner;
@SuppressWarnings("serial")
public class CustomDispatcherServlet extends DispatcherServlet {
private RequestMappingHandlerMapping requestMappingHandlerMapping;
@Override
protected void onRefresh(ApplicationContext context) {
super.onRefresh(context);
requestMappingHandlerMapping = context.getBean(RequestMappingHandlerMapping.class);
}
@Override
protected void doOptions(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
try {
requestMappingHandlerMapping.getHandler(request);
super.doOptions(request, response);
} catch (HttpRequestMethodNotSupportedException e) {
response.setHeader("Allow", Joiner.on(',').join(e.getSupportedHttpMethods()));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}