KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jfun > yan > RecoveredComponent


1 /*****************************************************************************
2  * Copyright (C) Zephyr Business Solution. 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 /*
10  * Created on Apr 9, 2005
11  *
12  * Author Ben Yu
13  * ZBS
14  */

15 package jfun.yan;
16
17 /**
18  * A component that can recover error.
19  * <p>
20  * Zephyr Business Solution
21  *
22  * @author Ben Yu
23  *
24  */

25 final class RecoveredComponent<T> extends Component<T> {
26   private final Creator<T> creator;
27   private final Recovery<T> recovery;
28
29   RecoveredComponent(final Creator<T> creator, final Recovery<T> recovery) {
30     this.creator = creator;
31     this.recovery = recovery;
32   }
33   
34   public boolean equals(Object JavaDoc obj) {
35     if(obj instanceof RecoveredComponent){
36       final RecoveredComponent other = (RecoveredComponent)obj;
37       return creator.equals(other.creator) && recovery.equals(other.recovery);
38     }
39     else return false;
40   }
41   public int hashCode() {
42     return creator.hashCode()*31+recovery.hashCode();
43   }
44   public String JavaDoc toString() {
45     return ""+creator+"."+"otherwise<"+recovery+">";
46   }
47   public Class JavaDoc<T> getType() {
48     return null;
49   }
50   public T create(Dependency dep){
51     try{
52       creator.verify(dep);
53     }
54     catch(RuntimeException JavaDoc e){
55       return recovery.recover(e).create(dep);
56     }
57     return creator.create(dep);
58   }
59   public Class JavaDoc verify(Dependency dep){
60     try{
61       return creator.verify(dep);
62     }
63     catch(RuntimeException JavaDoc e){
64       return recovery.recover(e).verify(dep);
65     }
66   }
67   public boolean isSingleton(){
68     return creator.isSingleton();
69   }
70   public boolean isConcrete(){
71     return creator.isConcrete();
72   }
73 }
74
Popular Tags