package com.github.hburgmeier.jerseyoauth2.authsrv.impl.endpoints.servlet;
import java.io.IOException;
import javax.inject.Inject;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.github.hburgmeier.jerseyoauth2.api.protocol.ResponseBuilderException;
import com.github.hburgmeier.jerseyoauth2.authsrv.api.authorization.IAuthorizationService;
import com.github.hburgmeier.jerseyoauth2.authsrv.api.protocol.IHttpContext;
import com.github.hburgmeier.jerseyoauth2.authsrv.api.protocol.IOAuth2Response;
import com.github.hburgmeier.jerseyoauth2.authsrv.api.ui.AuthorizationFlowException;
import com.github.hburgmeier.jerseyoauth2.authsrv.impl.protocol.response.HttpServletContextImplementation;
import com.google.inject.Singleton;
@Singleton
public class AuthorizationServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
private static final Logger LOGGER = LoggerFactory.getLogger(AuthorizationServlet.class);
private final IAuthorizationService authService;
@Inject
public AuthorizationServlet(final IAuthorizationService authService)
{
this.authService = authService;
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
IOAuth2Response oauth2Response = authService.evaluateAuthorizationRequest(request, response, getServletContext());
IHttpContext context = new HttpServletContextImplementation(request, response, getServletContext());
oauth2Response.render(context);
} catch (AuthorizationFlowException e) {
LOGGER.error("Error in authorization flow",e);
throw new ServletException(e.getMessage(), e);
} catch (ResponseBuilderException e) {
LOGGER.error("Error in OAuth2 Protocol",e);
throw new ServletException(e);
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
IOAuth2Response oauth2Response = authService.evaluateAuthorizationRequest(request, response, getServletContext());
IHttpContext context = new HttpServletContextImplementation(request, response, getServletContext());
oauth2Response.render(context);
} catch (AuthorizationFlowException e) {
LOGGER.error("Error in authorization flow",e);
throw new ServletException(e.getMessage(), e);
} catch (ResponseBuilderException e) {
LOGGER.error("Error in OAuth2 Protocol",e);
throw new ServletException(e);
}
}
}