KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jfun > yan > MappedComponent


1 /*****************************************************************************
2  * Copyright (C) Codehaus.org. All rights reserved. *
3  * ------------------------------------------------------------------------- *
4  * The software in this package is published under the terms of the BSD *
5  * style license a copy of which has been included with this distribution in *
6  * the LICENSE.txt file. *
7  *****************************************************************************/

8 /*
9  * Created on Mar 21, 2005
10  *
11  * Author Ben Yu
12  * ZBS
13  */

14 package jfun.yan;
15
16 /**
17  * Codehaus.org.
18  *
19  * @author Ben Yu
20  *
21  */

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   /**
29    * @param cc
30    */

31   public MappedComponent(Creator<From> cc, jfun.yan.Map<From,To> m) {
32     this.cc = cc;
33     this.m = m;
34   }
35   public Class JavaDoc<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 JavaDoc e){
44       throw e;
45     }
46     catch(YanException e){
47       throw e;
48     }
49     catch(Throwable JavaDoc e){
50       throw new ComponentInstantiationException(e);
51     }
52   }
53   public Class JavaDoc verify(Dependency dep){
54     cc.verify(dep);
55     return Object JavaDoc.class;
56   }
57   
58   public boolean equals(Object JavaDoc 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 JavaDoc toString(){
69     return "map " + cc;
70   }
71   public boolean isSingleton(){
72     return false;
73   }
74 }
75
Popular Tags