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 interfaceClass; 9 protected Class targetClass; 10 11 public Introductor(Class interfaceClass, Class 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 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 getInterfaceClass() { 36 return interfaceClass; 37 } 38 39 public Class getTargetClass() { 40 return targetClass; 41 } 42 } 43 | Popular Tags |