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 }