View Javadoc
1 package org.codehaus.nanning.config; 2 3 import java.util.ArrayList; 4 import java.util.Collections; 5 import java.util.Iterator; 6 import java.util.List; 7 8 import org.codehaus.nanning.AspectFactory; 9 import org.codehaus.nanning.AspectInstance; 10 11 public class AspectSystem implements AspectFactory { 12 private List aspects = new ArrayList(); 13 14 public void addAspect(Aspect aspect) { 15 aspects.add(aspect); 16 } 17 18 public Object newInstance(Class classIdentifier) { 19 AspectInstance aspectInstance = createAspectInstance(classIdentifier); 20 return aspectInstance.getProxy(); 21 } 22 23 private AspectInstance createAspectInstance(Class classIdentifier) { 24 AspectInstance aspectInstance = new AspectInstance(this, classIdentifier); 25 26 initialize(aspectInstance); 27 28 return aspectInstance; 29 } 30 31 /*** 32 * Let the aspects advise and introduce. 33 * @param aspectInstance 34 */ 35 public void initialize(AspectInstance aspectInstance) { 36 introduce(aspectInstance); 37 advise(aspectInstance); 38 } 39 40 protected void advise(AspectInstance aspectInstance) { 41 for (Iterator aspectIterator = aspects.iterator(); aspectIterator.hasNext();) { 42 Aspect aspect = (Aspect) aspectIterator.next(); 43 44 aspect.advise(aspectInstance); 45 } 46 } 47 48 protected void introduce(AspectInstance aspectInstance) { 49 for (Iterator iterator = aspects.iterator(); iterator.hasNext();) { 50 Aspect aspect = (Aspect) iterator.next(); 51 aspect.introduce(aspectInstance); 52 } 53 } 54 55 /*** 56 * Called after serialization, just advise. 57 * @param aspectInstance 58 */ 59 public void reinitialize(AspectInstance aspectInstance) { 60 advise(aspectInstance); 61 } 62 63 public List getAspects() { 64 return Collections.unmodifiableList(aspects); 65 } 66 }

This page was automatically generated by Maven