]> git.argeo.org Git - lgpl/argeo-commons.git/blob - HttpRequestCallbackHandler.java
bcc403fa996c4060cc4e3baa27158a40392cf298
[lgpl/argeo-commons.git] / HttpRequestCallbackHandler.java
1 package org.argeo.cms.auth;
2
3 import java.io.IOException;
4
5 import javax.security.auth.callback.Callback;
6 import javax.security.auth.callback.CallbackHandler;
7 import javax.security.auth.callback.LanguageCallback;
8 import javax.security.auth.callback.UnsupportedCallbackException;
9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11
12 /**
13 * Callback handler populating {@link HttpRequestCallback}s with the provided
14 * {@link HttpServletRequest}, and ignoring any other callback.
15 */
16 public class HttpRequestCallbackHandler implements CallbackHandler {
17 final private HttpServletRequest request;
18 final private HttpServletResponse response;
19
20 public HttpRequestCallbackHandler(HttpServletRequest request, HttpServletResponse response) {
21 this.request = request;
22 this.response = response;
23 }
24
25 @Override
26 public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
27 for (Callback callback : callbacks)
28 if (callback instanceof HttpRequestCallback) {
29 ((HttpRequestCallback) callback).setRequest(request);
30 ((HttpRequestCallback) callback).setResponse(response);
31 } else if (callback instanceof LanguageCallback) {
32 ((LanguageCallback) callback).setLocale(request.getLocale());
33 }
34 }
35
36 }