| Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
| ThreadLocalData |
|
| 1.5;1,5 |
| 1 | /* | |
| 2 | * FCKeditor - The text editor for Internet - http://www.fckeditor.net | |
| 3 | * Copyright (C) 2004-2010 Frederico Caldeira Knabben | |
| 4 | * | |
| 5 | * == BEGIN LICENSE == | |
| 6 | * | |
| 7 | * Licensed under the terms of any of the following licenses at your | |
| 8 | * choice: | |
| 9 | * | |
| 10 | * - GNU General Public License Version 2 or later (the "GPL") | |
| 11 | * http://www.gnu.org/licenses/gpl.html | |
| 12 | * | |
| 13 | * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") | |
| 14 | * http://www.gnu.org/licenses/lgpl.html | |
| 15 | * | |
| 16 | * - Mozilla Public License Version 1.1 or later (the "MPL") | |
| 17 | * http://www.mozilla.org/MPL/MPL-1.1.html | |
| 18 | * | |
| 19 | * == END LICENSE == | |
| 20 | */ | |
| 21 | package net.fckeditor.requestcycle; | |
| 22 | ||
| 23 | import javax.servlet.http.HttpServletRequest; | |
| 24 | ||
| 25 | /** | |
| 26 | * Maintains current {@link Context context} and {@link HttpServletRequest | |
| 27 | * request} instances. This container relies on {@link ThreadLocal} and provides | |
| 28 | * static access to the aforementioned objects for the current File Browse | |
| 29 | * request. This means that this class is thread-safe. | |
| 30 | * | |
| 31 | * @version $Id: ThreadLocalData.java 4785 2009-12-21 20:10:28Z mosipov $ | |
| 32 | */ | |
| 33 | 0 | public class ThreadLocalData { |
| 34 | 0 | private static ThreadLocal<HttpServletRequest> request = new ThreadLocal<HttpServletRequest>(); |
| 35 | 0 | private static ThreadLocal<Context> context = new ThreadLocal<Context>(); |
| 36 | ||
| 37 | /** | |
| 38 | * Initializes the current request cycle. | |
| 39 | * | |
| 40 | * @param request | |
| 41 | * current user request instance | |
| 42 | */ | |
| 43 | public static void beginRequest(final HttpServletRequest request) { | |
| 44 | 0 | if (request == null) |
| 45 | 0 | throw new NullPointerException("the request cannot be null"); |
| 46 | 0 | ThreadLocalData.request.set(request); |
| 47 | 0 | ThreadLocalData.context.set(new Context(request)); |
| 48 | 0 | } |
| 49 | ||
| 50 | /** | |
| 51 | * Returns the current user request instance. | |
| 52 | * | |
| 53 | * @return the current user request instance | |
| 54 | */ | |
| 55 | public static HttpServletRequest getRequest() { | |
| 56 | 0 | return request.get(); |
| 57 | } | |
| 58 | ||
| 59 | /** | |
| 60 | * Returns the current context instance. | |
| 61 | * | |
| 62 | * @return the current context instance | |
| 63 | */ | |
| 64 | public static Context getContext() { | |
| 65 | 0 | return context.get(); |
| 66 | } | |
| 67 | ||
| 68 | /** | |
| 69 | * Terminates the current request cycle. <br /> | |
| 70 | * <strong>Important: To prevent memory leaks, make sure that this | |
| 71 | * method is called at the end of the current request cycle!</strong> | |
| 72 | */ | |
| 73 | public static void endRequest() { | |
| 74 | // ThreadLocal#remove is not available in Java 1.4 | |
| 75 | 0 | request.set(null); |
| 76 | 0 | context.set(null); |
| 77 | 0 | } |
| 78 | } |