1 package jfun.yan.xml.nuts; 2 3 import java.util.Locale ; 4 5 import jfun.yan.Component; 6 import jfun.yan.lifecycle.DefaultLifecycleDescriptor; 7 import jfun.yan.lifecycle.Lifecycle; 8 import jfun.yan.lifecycle.LifecycleManager; 9 10 11 23 public class LifecycleNut extends DelegatingNut { 24 private String name; 25 private boolean reentrant; 26 private boolean reentrant_set = false; 27 public String getName() { 28 return name; 29 } 30 31 public void setName(String name) { 32 this.name = name; 33 } 34 35 public boolean isReentrant() { 36 return reentrant; 37 } 38 39 public void setReentrant(boolean reentrant) { 40 this.reentrant = reentrant; 41 this.reentrant_set = true; 42 } 43 44 public Component eval(){ 45 checkMandatory("name", name); 46 final Component target = getMandatory(); 47 final String phase = name.toLowerCase(Locale.US) 48 .trim(); 49 if(DefaultLifecycleDescriptor 50 .DEFAULT_INITIALIZER_NAME.equals(phase)){ 51 return target; 53 } 54 else{ 55 final Component factory = 59 target.factory(); 60 final LifecycleManager man = super.getNutEnvironment() 61 .getLifecycleManager(); 62 final Lifecycle lifecycle = new Lifecycle(); 63 lifecycle.put(phase, FactoryProcedure.instance(), isReentrant(phase)); 64 return man.withLifecycle(factory, lifecycle); 65 } 66 } 67 private boolean isReentrant(String phase){ 68 if(reentrant_set){ 69 return reentrant; 70 } 71 return !DefaultLifecycleDescriptor.DEFAULT_DISPOSER_NAME 72 .equals(phase); 73 } 74 } 75 | Popular Tags |