KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tirsen > nanning > config > Introductor


1 package com.tirsen.nanning.config;
2
3 import com.tirsen.nanning.AspectException;
4 import com.tirsen.nanning.AspectInstance;
5 import com.tirsen.nanning.MixinInstance;
6
7 public class Introductor extends AbstractAspect {
8     protected Class JavaDoc interfaceClass;
9     protected Class JavaDoc targetClass;
10
11     public Introductor(Class JavaDoc interfaceClass, Class JavaDoc targetClass) {
12         this.interfaceClass = interfaceClass;
13         this.targetClass = targetClass;
14     }
15
16     public void introduce(AspectInstance aspectInstance) {
17         if (shouldIntroduce(aspectInstance)) {
18             MixinInstance mixinInstance = new MixinInstance();
19             mixinInstance.setInterfaceClass(interfaceClass);
20             if (targetClass != null) {
21                 try {
22                     mixinInstance.setTarget(targetClass.newInstance());
23                 } catch (Exception JavaDoc e) {
24                     throw new AspectException("could not instantiate target " + e);
25                 }
26             }
27             aspectInstance.addMixin(mixinInstance);
28         }
29     }
30
31     public boolean shouldIntroduce(AspectInstance aspectInstance) {
32         return true;
33     }
34
35     public Class JavaDoc getInterfaceClass() {
36         return interfaceClass;
37     }
38
39     public Class JavaDoc getTargetClass() {
40         return targetClass;
41     }
42 }
43
Popular Tags