1 10 package org.nanocontainer.aop.dynaop; 11 12 import dynaop.Aspects; 13 import dynaop.Interceptor; 14 import dynaop.Invocation; 15 import dynaop.Pointcuts; 16 import dynaop.ProxyFactory; 17 import org.picocontainer.PicoContainer; 18 19 27 class PicoContainerProxy implements Interceptor { 28 29 private final ContainerLoader containerLoader; 30 31 38 static PicoContainer create(ContainerLoader containerLoader) { 39 Aspects aspects = new Aspects(); 40 aspects.interceptor(Pointcuts.ALL_CLASSES, Pointcuts.ALL_METHODS, new PicoContainerProxy(containerLoader)); 41 aspects.interfaces(Pointcuts.ALL_CLASSES, new Class []{PicoContainer.class}); 42 return (PicoContainer) ProxyFactory.getInstance(aspects).wrap(new Object ()); 43 } 44 45 public Object intercept(Invocation invocation) throws Throwable { 46 return invocation.getMethod().invoke(containerLoader.getContainer(), invocation.getArguments()); 47 } 48 49 private PicoContainerProxy(ContainerLoader containerLoader) { 50 this.containerLoader = containerLoader; 51 } 52 53 } | Popular Tags |