Coverage Report - org.webslinger.lang.ReferenceWrapper
 
Classes in this File Line Coverage Branch Coverage Complexity
ReferenceWrapper
0%
0/9
0%
0/1
0
 
 1  
 package org.webslinger.lang;
 2  
 
 3  
 import java.lang.ref.Reference;
 4  
 
 5  
 public abstract class ReferenceWrapper<T> implements ObjectWrapper<T> {
 6  
     private final ObjectWrapper<T> fetcher;
 7  
     private Reference<T> ref;
 8  
 
 9  0
     public ReferenceWrapper(ObjectWrapper<T> fetcher) throws Exception {
 10  0
         this.fetcher = fetcher;
 11  0
         ref = newReference(fetcher.getObject());
 12  0
     }
 13  
 
 14  
     public T getObject() throws Exception {
 15  0
         T value = ref.get();
 16  0
         if (value != null) return value;
 17  0
         value = fetcher.getObject();
 18  0
         ref = newReference(value);
 19  0
         return value;
 20  
     }
 21  
 
 22  
     protected abstract Reference<T> newReference(T value);
 23  
 }