1 package org.codehaus.nanning.config;
2
3 import org.codehaus.nanning.AspectException;
4 import org.codehaus.nanning.AspectInstance;
5 import org.codehaus.nanning.Mixin;
6
7 public class MixinAspect extends AbstractAspect {
8 protected Class interfaceClass;
9 protected Class targetClass;
10 protected Pointcut pointcut;
11
12 public MixinAspect(Class interfaceClass, Class targetClass, Pointcut pointcut) {
13 this.interfaceClass = interfaceClass;
14 this.targetClass = targetClass;
15 this.pointcut = pointcut;
16 }
17
18 public MixinAspect(Class interfaceClass, Class targetClass) {
19 this(interfaceClass, targetClass, P.isClass(interfaceClass));
20 }
21
22 public void introduce(AspectInstance aspectInstance) {
23 if (shouldIntroduce(aspectInstance)) {
24 Mixin mixinInstance = new Mixin();
25 mixinInstance.setInterfaceClass(interfaceClass);
26 if (targetClass != null) {
27 try {
28 mixinInstance.setTarget(targetClass.newInstance());
29 } catch (Exception e) {
30 throw new AspectException("could not instantiate target " + e);
31 }
32 }
33 aspectInstance.addMixin(mixinInstance);
34 }
35 }
36
37 public boolean shouldIntroduce(AspectInstance aspectInstance) {
38 return pointcut.introduceOn(aspectInstance);
39 }
40
41 public Class getInterfaceClass() {
42 return interfaceClass;
43 }
44
45 public Class getTargetClass() {
46 return targetClass;
47 }
48 }
This page was automatically generated by Maven