View Javadoc

1   package org.sourceforge.jemm.lifecycle;
2   
3   import org.sourceforge.jemm.types.ID;
4   import org.sourceforge.jemm.util.JEMMObject;
5   
6   /**
7    * An implementation of the ShadowObject interface that passes all
8    * method calls onto a set MethodListener.
9    * 
10   * @author Paul Keeble
11   * 
12   */
13  public class ShadowUserObjectImpl implements ShadowUserObject {
14  	MethodListener listener;
15  	JEMMObject object;
16  	ShadowData data;
17  
18  	public ShadowUserObjectImpl(JEMMObject object, MethodListener l, ID id,
19  			int version) {
20  		this.data = new ShadowData(id, version);
21  		this.object = object;
22  		this.listener = l;
23  	}
24  	
25  	public ShadowUserObjectImpl(MethodListener l, ID id,
26  			int version) {
27  		this.data = new ShadowData(id, version);
28  		this.listener = l;
29  	}
30  	
31  	@Override
32  	public void beginLock() {
33  		listener.beginLock(new LockEvent(getUserObject(), getUserObject()));
34  	}
35  
36  	@Override
37  	public void beginLock(Object obj) {
38  		listener.beginLock(new LockEvent(getUserObject(), obj));
39  	}
40  
41  	@Override
42  	public void endLock() {
43  		listener.endLock(new LockEvent(getUserObject(), getUserObject()));
44  	}
45  
46  	@Override
47  	public void endLock(Object obj) {
48  		listener.endLock(new LockEvent(getUserObject(), obj));
49  	}
50  
51  	@Override
52  	public void entityEntered(String methodSignature) {
53  		listener.entityEntered(new MethodEvent(getUserObject(),
54  				methodSignature, MethodType.ENTER));
55  	}
56  
57  	@Override
58  	public void entityExited(String methodSignature) {
59  		listener.entityExited(new MethodEvent(getUserObject(),
60  				methodSignature, MethodType.EXIT));
61  	}
62  
63  	@Override
64  	public JEMMObject getUserObject() {
65  		return object;
66  	}
67  	
68  	public void setUserObject(JEMMObject newObject) {
69  		this.object = newObject;
70  	}
71  
72  	@Override
73  	public ID getID() {
74  		return data.getID();
75  	}
76  
77  	public int getVersion() {
78  		return data.getVersion();
79  	}
80  
81  	@Override
82  	public ShadowData getData() {
83  		return data;
84  	}
85  }