001: /*
002: * Copyright 2005-2006 The Kuali Foundation.
003: *
004: * Licensed under the Educational Community License, Version 1.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.opensource.org/licenses/ecl1.php
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016: package org.kuali.core.util;
017:
018: import java.util.ArrayList;
019: import java.util.HashMap;
020:
021: import org.kuali.core.UserSession;
022:
023: /**
024: * This class will hold all of our thread local variables and accessors for those
025: *
026: *
027: */
028: public class GlobalVariables {
029:
030: private static ThreadLocal<UserSession> userSessions = new ThreadLocal<UserSession>();
031: private static ThreadLocal<String> hideSessionFromTestsMessage = new ThreadLocal<String>();
032: private static ThreadLocal<ErrorMap> errorMaps = new ThreadLocal<ErrorMap>();
033: // todo: generic collections
034: private static ThreadLocal<ArrayList> messageLists = new ThreadLocal<ArrayList>();
035: private static ThreadLocal<HashMap> auditErrorMaps = new ThreadLocal<HashMap>();
036:
037: /**
038: * @return the UserSession that has been assigned to this thread of execution it is important that this not be called by
039: * anything that lives outside
040: */
041: public static UserSession getUserSession() {
042: String message = hideSessionFromTestsMessage.get();
043: if (message != null) {
044: throw new RuntimeException(message);
045: }
046: return userSessions.get();
047: }
048:
049: /**
050: * Sets an error message for tests that try to use the session without declaring it.
051: * This method should be use by only KualiTestBase, not by other test code and especially not by production code.
052: *
053: * @param message the detail to throw, or null to allow access to the session
054: */
055: public static void setHideSessionFromTestsMessage(String message) {
056: hideSessionFromTestsMessage.set(message);
057: }
058:
059: /**
060: * sets the userSession object into the global variable for this thread
061: *
062: * @param userSession
063: */
064: public static void setUserSession(UserSession userSession) {
065: userSessions.set(userSession);
066: }
067:
068: /**
069: * @return ErrorMap containing error messages.
070: */
071: public static ErrorMap getErrorMap() {
072: return errorMaps.get();
073: }
074:
075: /**
076: * Sets a new (clean) ErrorMap
077: *
078: * @param errorMap
079: */
080: public static void setErrorMap(ErrorMap errorMap) {
081: errorMaps.set(errorMap);
082: }
083:
084: /**
085: * @return ArrayList containing messages.
086: */
087: public static ArrayList getMessageList() {
088: return messageLists.get();
089: }
090:
091: /**
092: * Sets a new message list
093: *
094: * @param messageList
095: */
096: public static void setMessageList(ArrayList messageList) {
097: messageLists.set(messageList);
098: }
099:
100: /**
101: * @return ArrayList containing audit error messages.
102: */
103: public static HashMap getAuditErrorMap() {
104: return auditErrorMaps.get();
105: }
106:
107: /**
108: * Sets a new (clean) AuditErrorList
109: *
110: * @param errorMap
111: */
112: public static void setAuditErrorMap(HashMap errorMap) {
113: auditErrorMaps.set(errorMap);
114: }
115:
116: /**
117: * Clears out GlobalVariable objects
118: */
119: public static void clear() {
120: errorMaps.set(new ErrorMap());
121: auditErrorMaps.set(new HashMap());
122: messageLists.set(new ArrayList());
123: }
124: }
|