View Javadoc

1   package org.seasar.cubby.controller;
2   
3   import static org.seasar.cubby.CubbyConstants.RES_MESSAGES;
4   
5   import java.util.Locale;
6   import java.util.Map;
7   import java.util.ResourceBundle;
8   
9   import javax.servlet.http.HttpServletRequest;
10  
11  import org.seasar.framework.util.ResourceBundleUtil;
12  
13  public class ThreadContext {
14  
15  	private static final ThreadLocal<ThreadContext> CONTEXT = new ThreadLocal<ThreadContext>() {
16  
17  		@Override
18  		protected ThreadContext initialValue() {
19  			return new ThreadContext();
20  		}
21  
22  	};
23  
24  	public static void remove() {
25  		CONTEXT.remove();
26  	}
27  
28  	public static HttpServletRequest getRequest() {
29  		return CONTEXT.get().request;
30  	}
31  
32  	public static void setRequest(final HttpServletRequest request) {
33  		CONTEXT.get().request = request;
34  	}
35  
36  	public static ResourceBundle getMessagesResourceBundle() {
37  		final ThreadContext context = CONTEXT.get();
38  		if (context.resourceBundle == null) {
39  			final Locale locale;
40  			if (context.request == null) {
41  				locale = Locale.getDefault();
42  			} else {
43  				locale = context.request.getLocale();
44  			}
45  			context.resourceBundle = ResourceBundleUtil.getBundle(RES_MESSAGES,
46  					locale);
47  		}
48  		return context.resourceBundle;
49  	}
50  
51  	public static Map<?, ?> getMessagesMap() {
52  		final ThreadContext context = CONTEXT.get();
53  		if (context.messages == null) {
54  			final ResourceBundle resourceBundle = getMessagesResourceBundle();
55  			context.messages = ResourceBundleUtil.convertMap(resourceBundle);
56  		}
57  		return context.messages;
58  	}
59  
60  	private ThreadContext() {
61  	}
62  
63  	private HttpServletRequest request;
64  
65  	private ResourceBundle resourceBundle = null;
66  
67  	private Map<?, ?> messages = null;
68  
69  }