View Javadoc

1   /*
2    * Created on 30-Jul-2003
3    */
4   package org.neo.swarm.interceptor.logging;
5   
6   import org.neo.swarm.core.aop.AspectComponent;
7   import org.neo.swarm.core.aop.silc.comp.MethodInterceptor;
8   import org.neo.swarm.core.aop.silc.comp.Perspective;
9   import org.neo.swarm.core.aop.silc.comp.Pointcut;
10  import org.neo.swarm.core.aop.silc.comp.RegexPointCut;
11  
12  /***
13   * Handle Tracer
14   * 
15   * @author neil.avery
16   */
17  public class Tracer implements Trace {
18  
19  	Pointcut pointcut1 = new RegexPointCut("(.*enableTracing)");
20  	Pointcut pointcut2 = new RegexPointCut("(.*disableTracing)");	
21  	private TracingInterceptor interceptor;
22  	
23  	public Tracer(boolean enabled) {
24  		this.interceptor = new TracingInterceptor(enabled);
25  	}
26  	
27  	public void advise(AspectComponent componentInstance) {
28  		pointcut1.advise(Perspective.DEFAULT, componentInstance, interceptor);
29  		pointcut2.advise(Perspective.DEFAULT, componentInstance, interceptor);
30  	}
31  	
32  	public MethodInterceptor getInterceptor() {
33  		return interceptor;
34  	}
35  	
36  	public void replaceInterceptor(MethodInterceptor interceptor) {
37  		// XXX: nga - impaired through the class mechanism when applying orthoganal aspects,
38  		// we need to expose the AspectInterface (i.e. Tracer)
39  		//this.interceptor = (TracingInterceptor) interceptor;
40  	}
41  	/*
42  	 * (non-Javadoc)
43  	 * 
44  	 * @see org.neo.swarm.interceptor.logging.Trace#isEnabled()
45  	 */
46  	public boolean isEnabled() {
47  		return interceptor.isEnabled();
48  	}
49  	/*
50  	 * (non-Javadoc)
51  	 * 
52  	 * @see org.neo.swarm.interceptor.logging.Trace#setEnabled(boolean)
53  	 */
54  	public void setEnabled(boolean enabled) {
55  		interceptor.setEnabled(enabled);
56  	}
57  
58  	public void enableTracing() {
59  		setEnabled(true);
60  	}
61  	public void disableTracing() {
62  		setEnabled(false);
63  	}	
64  }