Clover coverage report - brownies library - 1.0-beta-1 Coverage timestamp: 月 8 16 2004 17:14:42 GMT+09:00 FRAMES NO FRAMES |
file stats: | LOC: | 81 |  | Methods: | 8
| NCLOC: | 39 |  | Classes: | 2
30 day Evaluation Version distributed via the Maven Jar Repository. Clover is not free. You have 30 days to evaluate it. Please visit http://www.thecortex.net/clover to obtain a licensed version of Clover
Source file | Conditionals | Statements | Methods | TOTAL
WeakReferencedValueMap.java | 50% | 63.6% | 62.5% | 61.9% |

1 |  |
     /*
2 |  |
      * Joey and its relative products are published under the terms
3 |  |
      * of the Apache Software License.
4 |  |
      */
5 |  |
     package org.asyrinx.brownie.core.collection;
6 |  |
7 |  |
     import java.lang.ref.Reference;
8 |  |
     import java.lang.ref.ReferenceQueue;
9 |  |
     import java.lang.ref.WeakReference;
10 |  |
     import java.util.Collection;
11 |  |
     import java.util.HashMap;
12 |  |
     import java.util.Map;
13 |  |
14 |  |
     import org.asyrinx.brownie.core.collection.wrapper.MapWrapper;
15 |  |
16 |  |
     /**
17 |  |
      * 弱参照（WeakReference）で保持された値をキーと関連付けて保持するマップです。
18 |  |
      * putメソッドでkeyに関連付けられたvalueは、弱参照以外の参照がなくなると、
19 |  |
      * ガベッジコレクションの対象となり、valueへの参照はnullにクリアされます。 <br>
20 |  |
      * valuesメソッドで取得できる参照は消されているかも知れないので、 values自身を使用不可としています。
21 |  |
      * 関連付けられた値にアクセスする際には、get必ずメソッドを使用してください。 <br>
22 |  |
      *
23 |  |
      * @author Akima
24 |  |
      */
25 |  |
     public class WeakReferencedValueMap extends MapWrapper {
26 |  |
27 | 1 |
         public WeakReferencedValueMap() {
28 | 1 |
             this(new HashMap());
29 |  |
         }
30 |  |
31 |  |
         /**
32 |  |
          * Constructor for WeakReferencedValueMap.
33 |  |
          *
34 |  |
          * @param impl
35 |  |
          */
36 | 1 |
         public WeakReferencedValueMap(Map impl) {
37 | 1 |
             super(impl);
38 |  |
         }
39 |  |
40 |  |
         /**
41 |  |
          */
42 | 2 |
         public Object get(Object key) {
43 | 2 |
             Reference ref = (Reference) super.get(key);
44 | 2 |
             if (ref == null)
45 | 0 |
                 return null;
46 |  |
             else
47 | 2 |
                 return ref.get();
48 |  |
         }
49 |  |
50 |  |
         /**
51 |  |
          */
52 | 2 |
         public Object put(Object key, Object value) {
53 |  |
             //if (get(key) == value)
54 |  |
             //    return null;
55 | 2 |
             return super.put(key, new WeakValue(value));
56 |  |
         }
57 |  |
58 |  |
         /**
59 |  |
          */
60 | 0 |
         public Collection values() {
61 | 0 |
             throw new UnsupportedOperationException("この操作は使用できません。");
62 |  |
         }
63 |  |
64 |  |
         static class WeakValue extends WeakReference {
65 | 2 |
             public WeakValue(Object referent) {
66 | 2 |
                 super(referent);
67 |  |
             }
68 |  |
69 | 0 |
             public WeakValue(Object referent, ReferenceQueue q) {
70 | 0 |
                 super(referent, q);
71 |  |
             }
72 |  |
73 |  |
             /**
74 |  |
              * @see java.lang.Object#toString()
75 |  |
              */
76 | 0 |
             public String toString() {
77 | 0 |
                 return String.valueOf(super.get());
78 |  |
             }
79 |  |
80 |  |
         }
81 |  |
     }