KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tcspring > SpringAspectContainer


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package com.tcspring;
5
6 import org.springframework.context.ApplicationContext;
7 import org.springframework.context.support.ClassPathXmlApplicationContext;
8
9 import com.tc.aspectwerkz.AspectContext;
10 import com.tc.aspectwerkz.aspect.AbstractAspectContainer;
11
12 import java.util.Map JavaDoc;
13
14 /**
15  * Spring custom aspect container, grabs the aspects from the bean factory.
16  *
17  * @author Jonas Bonér
18  */

19 public final class SpringAspectContainer extends AbstractAspectContainer {
20
21   public static final String JavaDoc BEAN_FACTORY_KEY = "bean-factory";
22
23   private final ApplicationContext m_beanFactory;
24
25   /**
26    * Create a new Spring aspect container.
27    *
28    * @param aspectClass
29    * @param aopSystemClassLoader the classloader of the defining system (not necessary the one of the aspect class)
30    * @param uuid
31    * @param qualifiedName
32    * @param parameters
33    */

34   public SpringAspectContainer(final Class JavaDoc aspectClass, final ClassLoader JavaDoc aopSystemClassLoader, final String JavaDoc uuid,
35                                final String JavaDoc qualifiedName, final Map JavaDoc parameters) {
36     super(aspectClass, aopSystemClassLoader, uuid, qualifiedName, parameters);
37     String JavaDoc beanConfig = (String JavaDoc) parameters.get(BEAN_FACTORY_KEY);
38     if (beanConfig == null) { throw new AssertionError JavaDoc(); }
39
40     m_beanFactory = new ClassPathXmlApplicationContext(beanConfig);
41   }
42
43   /**
44    * Creates a new aspect by getting it from the spring bean factory for the proxy.
45    *
46    * @param aspectContext
47    * @return an aspect instance
48    */

49   protected Object JavaDoc createAspect(final AspectContext aspectContext) {
50     return m_beanFactory.getBean(aspectContext.getName());
51   }
52 }
53
Popular Tags