Skip to content

Commit 2a81421

Browse files
committed
Fix comment
1 parent 026ba28 commit 2a81421

File tree

9 files changed

+238
-179
lines changed

9 files changed

+238
-179
lines changed

jspwiki-event/pom.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,9 @@
6464
</dependency>
6565

6666
<dependency>
67-
<groupId>org.apache.jspwiki</groupId>
67+
<groupId>${project.groupId}</groupId>
6868
<artifactId>jspwiki-util</artifactId>
69+
<version>${project.version}</version>
6970
</dependency>
7071
</dependencies>
7172
</project>

jspwiki-event/src/main/java/org/apache/wiki/event/WikiEventManager.java

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,18 @@ public final class WikiEventManager {
152152
*
153153
* @see java.util.concurrent.locks.ReentrantLock
154154
*/
155-
private static final ReentrantLock lock = new ReentrantLock();
155+
private static final ReentrantLock instanceLock = new ReentrantLock();
156+
private static final ReentrantLock removeWikiEventListenerLock = new ReentrantLock();
157+
private static final ReentrantLock delegatesLockLock = new ReentrantLock();
158+
private static final ReentrantLock preloadCacheLock = new ReentrantLock();
159+
private static final ReentrantLock delegateForLock = new ReentrantLock();
160+
private static final ReentrantLock wikiEventListenersLock = new ReentrantLock();
161+
private static final ReentrantLock wikiEventListenerLock = new ReentrantLock();
162+
private static final ReentrantLock removeWikiEventListenerLock2 = new ReentrantLock();
163+
private static final ReentrantLock isListeningLock = new ReentrantLock();
164+
private static final ReentrantLock fireEventLock = new ReentrantLock();
165+
166+
156167

157168

158169
/** Constructor for a WikiEventManager. */
@@ -169,7 +180,7 @@ private WikiEventManager() {
169180
*/
170181
public static WikiEventManager getInstance() {
171182
if (c_instance == null) {
172-
Synchronizer.synchronize(lock, () -> {
183+
Synchronizer.synchronize(instanceLock, () -> {
173184
if (c_instance == null) {
174185
c_instance = new WikiEventManager();
175186
// start up any post-instantiation services here
@@ -258,7 +269,7 @@ public static boolean removeWikiEventListener( final WikiEventListener listener
258269
// get the Map.entry object for the entire Map, then check match on entry (listener)
259270
final WikiEventManager mgr = getInstance();
260271
final Map< Object, WikiEventDelegate > sources = Collections.synchronizedMap( mgr.getDelegates() );
261-
Synchronizer.synchronize(lock, () -> {
272+
Synchronizer.synchronize(removeWikiEventListenerLock, () -> {
262273
// get an iterator over the Map.Enty objects in the map
263274
for( final Map.Entry< Object, WikiEventDelegate > entry : sources.entrySet() ) {
264275
// the entry value is the delegate
@@ -274,8 +285,8 @@ public static boolean removeWikiEventListener( final WikiEventListener listener
274285
}
275286

276287
private void removeDelegates() {
277-
Synchronizer.synchronize(lock, m_delegates::clear);
278-
Synchronizer.synchronize(lock, m_preloadCache::clear);
288+
Synchronizer.synchronize(delegatesLockLock, m_delegates::clear);
289+
Synchronizer.synchronize(preloadCacheLock, m_preloadCache::clear);
279290
}
280291

281292
public static void shutdown() {
@@ -327,7 +338,7 @@ private Map< Object, WikiEventDelegate > getDelegates() {
327338
* @return the WikiEventDelegate.
328339
*/
329340
private WikiEventDelegate getDelegateFor(final Object client) {
330-
return Synchronizer.synchronize(lock, () -> {
341+
return Synchronizer.synchronize(delegateForLock, () -> {
331342
if (client == null || client instanceof Class) { // then preload the cache
332343
final WikiEventDelegate delegate = new WikiEventDelegate(client);
333344
m_preloadCache.add(delegate);
@@ -398,7 +409,7 @@ private static final class WikiEventDelegate {
398409
* @throws java.lang.UnsupportedOperationException if any attempt is made to modify the Set
399410
*/
400411
public Set< WikiEventListener > getWikiEventListeners() {
401-
return Synchronizer.synchronize(lock, () -> {
412+
return Synchronizer.synchronize(wikiEventListenersLock, () -> {
402413
final TreeSet< WikiEventListener > set = new TreeSet<>( new WikiEventListenerComparator() );
403414
for( final WeakReference< WikiEventListener > wikiEventListenerWeakReference : m_listenerList ) {
404415
final WikiEventListener l = wikiEventListenerWeakReference.get();
@@ -418,7 +429,7 @@ public Set< WikiEventListener > getWikiEventListeners() {
418429
* @return true if the listener was added (i.e., it was not already in the list and was added)
419430
*/
420431
public boolean addWikiEventListener( final WikiEventListener listener ) {
421-
return Synchronizer.synchronize(lock, () -> {
432+
return Synchronizer.synchronize(wikiEventListenerLock, () -> {
422433
final boolean listenerAlreadyContained = m_listenerList.stream()
423434
.map( WeakReference::get )
424435
.anyMatch( ref -> ref == listener );
@@ -436,7 +447,7 @@ public boolean addWikiEventListener( final WikiEventListener listener ) {
436447
* @return true if the listener was removed (i.e., it was actually in the list and was removed)
437448
*/
438449
public boolean removeWikiEventListener( final WikiEventListener listener ) {
439-
return Synchronizer.synchronize(lock, () -> {
450+
return Synchronizer.synchronize(removeWikiEventListenerLock2, () -> {
440451
for (final Iterator<WeakReference<WikiEventListener>> i = m_listenerList.iterator(); i.hasNext(); ) {
441452
final WikiEventListener l = i.next().get();
442453
if (l == listener) {
@@ -452,7 +463,7 @@ public boolean removeWikiEventListener( final WikiEventListener listener ) {
452463
* Returns true if there are one or more listeners registered with this instance.
453464
*/
454465
public boolean isListening() {
455-
return Synchronizer.synchronize(lock, () -> !m_listenerList.isEmpty());
466+
return Synchronizer.synchronize(isListeningLock, () -> !m_listenerList.isEmpty());
456467
}
457468

458469
/**
@@ -461,7 +472,7 @@ public boolean isListening() {
461472
public void fireEvent(final WikiEvent event) {
462473
final AtomicBoolean needsCleanup = new AtomicBoolean(false);
463474
try {
464-
Synchronizer.synchronize(lock, () -> {
475+
Synchronizer.synchronize(fireEventLock, () -> {
465476
for (final WeakReference<WikiEventListener> wikiEventListenerWeakReference : m_listenerList) {
466477
final WikiEventListener listener = wikiEventListenerWeakReference.get();
467478
if (listener != null) {

jspwiki-main/src/main/java/org/apache/wiki/WatchDog.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,13 @@ public final class WatchDog {
6767
*
6868
* @see java.util.concurrent.locks.ReentrantLock
6969
*/
70-
private final ReentrantLock lock;
70+
private final ReentrantLock watchDogLock = new ReentrantLock();
71+
private final ReentrantLock enableLock = new ReentrantLock();
72+
private final ReentrantLock disableLock = new ReentrantLock();
73+
private final ReentrantLock enterStateLock = new ReentrantLock();
74+
private final ReentrantLock exitStateLock = new ReentrantLock();
75+
private final ReentrantLock checkLock = new ReentrantLock();
76+
private final ReentrantLock toStringLock = new ReentrantLock();
7177

7278
/**
7379
* Returns the current watchdog for the current thread. This is the preferred method of getting you a Watchdog, since it
@@ -104,9 +110,7 @@ public WatchDog( final Engine engine, final Watchable watch ) {
104110
m_engine = engine;
105111
m_watchable = watch;
106112

107-
lock = new ReentrantLock();
108-
109-
Synchronizer.synchronize(lock, () -> {
113+
Synchronizer.synchronize(watchDogLock, () -> {
110114
if (c_watcherThread == null) {
111115
c_watcherThread = new WatchDogThread(engine);
112116
c_watcherThread.start();
@@ -150,7 +154,7 @@ private static void scrub() {
150154
* Can be used to enable the WatchDog. Will cause a new Thread to be created, if none was existing previously.
151155
*/
152156
public void enable() {
153-
Synchronizer.synchronize(lock, () -> {
157+
Synchronizer.synchronize(enableLock, () -> {
154158
if( !m_enabled ) {
155159
m_enabled = true;
156160
c_watcherThread = new WatchDogThread( m_engine );
@@ -163,7 +167,7 @@ public void enable() {
163167
* Is used to disable a WatchDog. The watchdog thread is shut down and resources released.
164168
*/
165169
public void disable() {
166-
Synchronizer.synchronize(lock, () -> {
170+
Synchronizer.synchronize(disableLock, () -> {
167171
if( m_enabled ) {
168172
m_enabled = false;
169173
c_watcherThread.shutdown();
@@ -200,7 +204,7 @@ public void enterState( final String state ) {
200204
*/
201205
public void enterState( final String state, final int expectedCompletionTime ) {
202206
LOG.debug( "{}: Entering state {}, expected completion in {} s", m_watchable.getName(), state, expectedCompletionTime );
203-
Synchronizer.synchronize(lock, () -> {
207+
Synchronizer.synchronize(enterStateLock, () -> {
204208
final State st = new State( state, expectedCompletionTime );
205209
m_stateStack.push( st );
206210
});
@@ -222,7 +226,7 @@ public void exitState() {
222226
*/
223227
public void exitState( final String state ) {
224228
if( !m_stateStack.empty() ) {
225-
Synchronizer.synchronize(lock, () -> {
229+
Synchronizer.synchronize(exitStateLock, () -> {
226230
final State st = m_stateStack.peek();
227231
if( state == null || st.getState().equals( state ) ) {
228232
m_stateStack.pop();
@@ -258,7 +262,7 @@ public boolean isWatchableAlive() {
258262

259263
private void check() {
260264
LOG.debug( "Checking watchdog '{}'", m_watchable.getName() );
261-
Synchronizer.synchronize(lock, () -> {
265+
Synchronizer.synchronize(checkLock, () -> {
262266
if( !m_stateStack.empty() ) {
263267
final State st = m_stateStack.peek();
264268
final long now = System.currentTimeMillis();
@@ -315,7 +319,7 @@ private void dumpStackTraceForWatchable() {
315319
*/
316320
@Override
317321
public String toString() {
318-
return Synchronizer.synchronize(lock, () -> {
322+
return Synchronizer.synchronize(toStringLock, () -> {
319323
String state = "Idle";
320324

321325
if( !m_stateStack.empty() ) {

jspwiki-main/src/main/java/org/apache/wiki/auth/SessionMonitor.java

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,12 @@ public class SessionMonitor implements HttpSessionListener {
7171
*
7272
* @see ReentrantLock
7373
*/
74-
private final ReentrantLock lock;
74+
private final ReentrantLock createGuestSessionForLock;
75+
private final ReentrantLock removeLock;
76+
private final ReentrantLock userPrincipalsLock;
77+
private final ReentrantLock addWikiEventListenerLock;
78+
private final ReentrantLock removeWikiEventListenerLock;
79+
7580

7681
/**
7782
* Returns the instance of the SessionMonitor for this wiki. Only one SessionMonitor exists per Engine.
@@ -94,7 +99,11 @@ public static SessionMonitor getInstance( final Engine engine ) {
9499

95100
/** Construct the SessionListener */
96101
public SessionMonitor() {
97-
lock = new ReentrantLock();
102+
createGuestSessionForLock = new ReentrantLock();
103+
removeLock = new ReentrantLock();
104+
userPrincipalsLock = new ReentrantLock();
105+
addWikiEventListenerLock = new ReentrantLock();
106+
removeWikiEventListenerLock = new ReentrantLock();
98107
}
99108

100109
private SessionMonitor( final Engine engine ) {
@@ -186,7 +195,7 @@ public final Session find( final String sessionId ) {
186195
private Session createGuestSessionFor( final String sessionId ) {
187196
LOG.debug( "Session for session ID={}... not found. Creating guestSession()", sessionId );
188197
final Session wikiSession = Wiki.session().guest( m_engine );
189-
Synchronizer.synchronize(lock, () -> {
198+
Synchronizer.synchronize(createGuestSessionForLock, () -> {
190199
m_sessions.put(sessionId, wikiSession);
191200
});
192201
return wikiSession;
@@ -213,7 +222,7 @@ public final void remove( final HttpSession session ) {
213222
if( session == null ) {
214223
throw new IllegalArgumentException( "Session cannot be null." );
215224
}
216-
Synchronizer.synchronize(lock, () -> {
225+
Synchronizer.synchronize(removeLock, () -> {
217226
m_sessions.remove( session.getId() );
218227
});
219228
}
@@ -237,7 +246,7 @@ public final int sessions()
237246
* @return the array of user principals
238247
*/
239248
public final Principal[] userPrincipals() {
240-
final Collection<Principal> principals = Synchronizer.synchronize(lock, () ->
249+
final Collection<Principal> principals = Synchronizer.synchronize(userPrincipalsLock, () ->
241250
m_sessions.values().stream().map(Session::getUserPrincipal).collect(Collectors.toList()));
242251

243252
final Principal[] p = principals.toArray(new Principal[0]);
@@ -252,7 +261,7 @@ public final Principal[] userPrincipals() {
252261
* @since 2.4.75
253262
*/
254263
public final void addWikiEventListener( final WikiEventListener listener ) {
255-
Synchronizer.synchronize(lock, () -> {
264+
Synchronizer.synchronize(addWikiEventListenerLock, () -> {
256265
WikiEventManager.addWikiEventListener( this, listener );
257266
});
258267
}
@@ -264,7 +273,7 @@ public final void addWikiEventListener( final WikiEventListener listener ) {
264273
* @since 2.4.75
265274
*/
266275
public final void removeWikiEventListener(final WikiEventListener listener) {
267-
Synchronizer.synchronize(lock, () -> {
276+
Synchronizer.synchronize(removeWikiEventListenerLock, () -> {
268277
WikiEventManager.removeWikiEventListener(this, listener);
269278
});
270279
}

jspwiki-main/src/main/java/org/apache/wiki/auth/authorize/DefaultGroupManager.java

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,22 @@ public class DefaultGroupManager implements GroupManager, Authorizer, WikiEventL
8585
*
8686
* @see java.util.concurrent.locks.ReentrantLock
8787
*/
88-
private final ReentrantLock lock;
88+
private final ReentrantLock initializeLock;
89+
private final ReentrantLock removeGroupLock;
90+
private final ReentrantLock setGroupLock;
91+
private final ReentrantLock setGroupLockPut;
92+
private final ReentrantLock setGroupLockCatch;
93+
private final ReentrantLock addWikiEventListenerLock;
94+
private final ReentrantLock removeWikiEventListenerLock;
8995

9096
public DefaultGroupManager() {
91-
lock = new ReentrantLock();
97+
initializeLock = new ReentrantLock();
98+
removeGroupLock = new ReentrantLock();
99+
setGroupLock = new ReentrantLock();
100+
setGroupLockPut = new ReentrantLock();
101+
setGroupLockCatch = new ReentrantLock();
102+
addWikiEventListenerLock = new ReentrantLock();
103+
removeWikiEventListenerLock = new ReentrantLock();
92104
}
93105

94106
/** {@inheritDoc} */
@@ -168,7 +180,7 @@ public void initialize( final Engine engine, final Properties props ) throws Wik
168180

169181
// Load all groups from the database into the cache
170182
final Group[] groups = m_groupDatabase.groups();
171-
Synchronizer.synchronize(lock, () -> {
183+
Synchronizer.synchronize(initializeLock, () -> {
172184
for( final Group group : groups ) {
173185
// Add new group to cache; fire GROUP_ADD event
174186
m_groups.put( group.getPrincipal(), group );
@@ -269,7 +281,7 @@ public void removeGroup( final String index ) throws WikiSecurityException {
269281

270282
// Delete the group
271283
// TODO: need rollback procedure
272-
Synchronizer.synchronize(lock, () -> {
284+
Synchronizer.synchronize(removeGroupLock, () -> {
273285
m_groups.remove( group.getPrincipal() );
274286
});
275287
m_groupDatabase.delete( group );
@@ -285,7 +297,7 @@ public void setGroup( final Session session, final Group group ) throws WikiSecu
285297
final Group oldGroup = m_groups.get( group.getPrincipal() );
286298
if( oldGroup != null ) {
287299
fireEvent( WikiSecurityEvent.GROUP_REMOVE, oldGroup );
288-
Synchronizer.synchronize(lock, () -> {
300+
Synchronizer.synchronize(setGroupLock, () -> {
289301
m_groups.remove( oldGroup.getPrincipal() );
290302
});
291303
}
@@ -299,7 +311,7 @@ public void setGroup( final Session session, final Group group ) throws WikiSecu
299311
}
300312

301313
// Add new group to cache; announce GROUP_ADD event
302-
Synchronizer.synchronize(lock, () -> {
314+
Synchronizer.synchronize(setGroupLockPut, () -> {
303315
m_groups.put( group.getPrincipal(), group );
304316
});
305317
fireEvent( WikiSecurityEvent.GROUP_ADD, group );
@@ -316,7 +328,7 @@ public void setGroup( final Session session, final Group group ) throws WikiSecu
316328
// Restore previous version, re-throw...
317329
fireEvent( WikiSecurityEvent.GROUP_REMOVE, group );
318330
fireEvent( WikiSecurityEvent.GROUP_ADD, oldGroup );
319-
Synchronizer.synchronize(lock, () -> {
331+
Synchronizer.synchronize(setGroupLockCatch, () -> {
320332
m_groups.put( oldGroup.getPrincipal(), oldGroup );
321333
});
322334
throw new WikiSecurityException( e.getMessage() + " (rolled back to previous version).", e );
@@ -384,15 +396,15 @@ protected String[] extractMembers( final String memberLine ) {
384396
/** {@inheritDoc} */
385397
@Override
386398
public void addWikiEventListener( final WikiEventListener listener ) {
387-
Synchronizer.synchronize(lock, () -> {
399+
Synchronizer.synchronize(addWikiEventListenerLock, () -> {
388400
WikiEventManager.addWikiEventListener( this, listener );
389401
});
390402
}
391403

392404
/** {@inheritDoc} */
393405
@Override
394406
public void removeWikiEventListener( final WikiEventListener listener ) {
395-
Synchronizer.synchronize(lock, () -> {
407+
Synchronizer.synchronize(removeWikiEventListenerLock, () -> {
396408
WikiEventManager.removeWikiEventListener( this, listener );
397409
});
398410
}

0 commit comments

Comments
 (0)