]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/auth/HttpRequestCallbackHandler.java
Use Argeo TP Core v2.1.25 and Argeo TP Extras v2.1.13.
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / auth / 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 import javax.servlet.http.HttpSession;
12
13 /**
14 * Callback handler populating {@link HttpRequestCallback}s with the provided
15 * {@link HttpServletRequest}, and ignoring any other callback.
16 */
17 public class HttpRequestCallbackHandler implements CallbackHandler {
18 final private HttpServletRequest request;
19 final private HttpServletResponse response;
20 final private HttpSession httpSession;
21
22 public HttpRequestCallbackHandler(HttpServletRequest request, HttpServletResponse response) {
23 this.request = request;
24 this.httpSession = request.getSession(false);
25 this.response = response;
26 }
27
28 public HttpRequestCallbackHandler(HttpSession httpSession) {
29 this.httpSession = httpSession;
30 this.request = null;
31 this.response = null;
32 }
33
34 @Override
35 public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
36 for (Callback callback : callbacks)
37 if (callback instanceof HttpRequestCallback) {
38 ((HttpRequestCallback) callback).setRequest(request);
39 ((HttpRequestCallback) callback).setResponse(response);
40 ((HttpRequestCallback) callback).setHttpSession(httpSession);
41 } else if (callback instanceof LanguageCallback) {
42 ((LanguageCallback) callback).setLocale(request.getLocale());
43 }
44 }
45
46 }