001 /* 002 @license.text@ 003 */ 004 package biz.hammurapi.wrap; 005 006 import java.lang.ref.Reference; 007 import java.lang.ref.WeakReference; 008 009 /** 010 * @author Pavel Vlasov 011 * @version $Revision: 1.1 $ 012 */ 013 public abstract class WeakWrapperHandler extends WrapperHandler { 014 private Reference masterRef; 015 016 public WeakWrapperHandler(Object master) { 017 super(master); 018 masterRef=new WeakReference(master); 019 } 020 021 protected final Object getMaster() throws Throwable { 022 Object master=masterRef.get(); 023 if (master==null) { 024 master=getMasterInternal(); 025 masterRef=new WeakReference(master); 026 } 027 return master; 028 } 029 030 protected abstract Object getMasterInternal() throws Throwable; 031 }