View Javadoc

1   package org.sourceforge.jemm.client.events;
2   
3   /**
4    * A LockTracer implementation which deals with multiple enter and exit events and tracks the number
5    * of locks per thread.
6    * 
7    * @author Paul
8    *
9    */
10  public class LockTracerImpl implements LockTracer {
11  	LockContext context;
12  	LockContextListener listener;
13  	
14  	public LockTracerImpl(LockContextListener listener) {
15  		context = new LockContext();
16  		this.listener = listener; 
17  	}
18  
19  	public void beginLock(Object source, Object lock) {
20  		context.add();
21  		int count = context.count();
22  		
23  		listener.acquire(new LockEvent(source,lock,count));
24  	}
25  
26  	@Override
27  	public void endLock(Object source, Object lock) {
28  		context.remove();
29  		int count = context.count();
30  		listener.release(new LockEvent(source,lock,count));
31  	}
32  	
33  	public boolean currentTreadHasAnyLock() {
34  		return context.has();
35  	}
36  }