1 8 14 package jfun.yan; 15 16 22 final class MappedComponent<From,To> extends Component<To> { 23 private final Creator<From> cc; 24 private final jfun.yan.Map<From,To> m; 25 public boolean isConcrete(){ 26 return false; 27 } 28 31 public MappedComponent(Creator<From> cc, jfun.yan.Map<From,To> m) { 32 this.cc = cc; 33 this.m = m; 34 } 35 public Class <To> getType(){ 36 return null; 37 } 38 public To create(Dependency dep){ 39 final From o1 = cc.create(dep); 40 try{ 41 return m.map(o1); 42 } 43 catch(Error e){ 44 throw e; 45 } 46 catch(YanException e){ 47 throw e; 48 } 49 catch(Throwable e){ 50 throw new ComponentInstantiationException(e); 51 } 52 } 53 public Class verify(Dependency dep){ 54 cc.verify(dep); 55 return Object .class; 56 } 57 58 public boolean equals(Object obj) { 59 if(obj instanceof MappedComponent){ 60 final MappedComponent mc2 = (MappedComponent)obj; 61 return cc.equals(mc2.cc) && m.equals(mc2.m); 62 } 63 else return false; 64 } 65 public int hashCode(){ 66 return cc.hashCode()*31+m.hashCode(); 67 } 68 public String toString(){ 69 return "map " + cc; 70 } 71 public boolean isSingleton(){ 72 return false; 73 } 74 } 75 | Popular Tags |