1 8 9 15 package jfun.yan.lifecycle; 16 17 import java.util.Collections ; 18 import java.util.Map ; 19 20 import jfun.util.WeakRef; 21 22 31 public class LiveObject extends WeakRef { 32 private volatile Map procs; 33 38 public LiveObject(Object obj, Map procs) { 39 super(obj); 40 this.procs = procs; 41 } 42 47 public boolean containsPhase(Object key){ 48 return procs.containsKey(key); 49 } 50 55 public Procedure getProc(Object key){ 56 return (Procedure)procs.get(key); 57 } 58 64 public void invoke(Object key, Object [] args) 65 throws Throwable { 66 final Object obj = super.get(); 67 if(obj == null){ 68 procs = Collections.EMPTY_MAP; 70 return; 71 } 72 final Procedure inv = getProc(key); 73 if(inv==null){ 74 throw new IllegalArgumentException ("unsupported key: "+key); 75 } 76 inv.invoke(obj, args); 77 } 78 } 79 | Popular Tags |