Clover coverage report - brownies library - 1.0-beta-1
Coverage timestamp: 月 8 16 2004 17:14:42 GMT+09:00
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%
coverage coverage
 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   
 }