1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.cms.security;
35
36 import java.util.Date;
37
38 import javax.servlet.http.HttpServletRequest;
39 import javax.servlet.http.HttpSession;
40
41 import org.slf4j.Logger;
42 import org.slf4j.LoggerFactory;
43 import info.magnolia.context.MgnlContext;
44
45
46
47
48
49
50 public final class Lock {
51
52 private static Logger log = LoggerFactory.getLogger(Lock.class);
53
54
55
56
57 private static final String SESSION_LOCK = "mgnlSessionLock";
58
59
60
61
62 private static boolean isSystemLocked;
63
64
65
66
67 private static Date lockSetDate;
68
69
70
71
72 private Lock() {
73
74 }
75
76
77
78
79 public static void setSessionLock(HttpServletRequest request) {
80 log.info("Session lock enabled for user ( "
81 + MgnlContext.getUser().getName()
82 + " ) on "
83 + (new Date()).toString());
84
85 HttpSession httpsession = request.getSession(true);
86 httpsession.setAttribute(SESSION_LOCK, (new Date()).toString());
87 }
88
89
90
91
92
93
94 public static boolean isSessionLocked(HttpServletRequest request) {
95
96 if (request.getSession(true).getAttribute(Lock.SESSION_LOCK) != null) {
97 return true;
98 }
99 return false;
100 }
101
102
103
104
105 public static void resetSessionLock(HttpServletRequest request) {
106 if (!Lock.isSessionLocked(request)) {
107 if (log.isDebugEnabled()) {
108 log.debug("No Lock found to reset");
109 }
110 }
111 else {
112 if (log.isDebugEnabled()) {
113 log.debug("Resetting session lock");
114 }
115 Lock.isSystemLocked = false;
116 }
117
118 HttpSession httpsession = request.getSession(true);
119 httpsession.removeAttribute(Lock.SESSION_LOCK);
120 }
121
122
123
124
125 public static void setSystemLock() {
126 if (Lock.isSystemLocked()) {
127 if (log.isDebugEnabled()) {
128 log.debug("System lock exist, created on " + Lock.lockSetDate.toString());
129 }
130 }
131 else {
132 Lock.isSystemLocked = true;
133 Lock.lockSetDate = new Date();
134 if (log.isDebugEnabled()) {
135 log.debug("New System lock created on " + Lock.lockSetDate.toString() + " )");
136 }
137 }
138 }
139
140
141
142
143 public static void resetSystemLock() {
144 if (!Lock.isSystemLocked()) {
145 log.debug("No Lock found to reset");
146 }
147 else {
148 if (log.isDebugEnabled()) {
149 log.debug("Resetting system lock created on " + Lock.lockSetDate.toString());
150 }
151 Lock.isSystemLocked = false;
152 }
153 }
154
155
156
157
158
159 public static boolean isSystemLocked() {
160 return Lock.isSystemLocked;
161 }
162 }