Package org.xmlBlaster.util

Source Code of org.xmlBlaster.util.Container

/*------------------------------------------------------------------------------
Name:      Container.java
Project:   xmlBlaster.org
Copyright: xmlBlaster.org, see xmlBlaster-LICENSE file
------------------------------------------------------------------------------*/
package org.xmlBlaster.util;
import java.lang.ref.WeakReference;

/**
* Helper holding the callback interface an some user data to be
* looped through.
*/
final class Container {
   private final boolean useWeakReference;
   private Object callback;
   private Object userData;
   final long creation;
  
   /** @param callback The handle to callback a client (is checked already to be not null) */
   Container(boolean useWeakReference, I_Timeout callback, Object userData) {
      this.useWeakReference = useWeakReference;
      if (this.useWeakReference) {
         this.callback = new WeakReference(callback);
         if (userData != null)
            this.userData = new WeakReference(userData);
      }
      else {
         this.callback = callback;
         this.userData = userData;
      }
      this.creation = System.currentTimeMillis();
   }

   /** @return The callback handle can be null for weak references */
   I_Timeout getCallback() {
      if (this.useWeakReference) {
         WeakReference weak = (WeakReference)this.callback;
         return (I_Timeout)weak.get();
      }
      else {
         return (I_Timeout)this.callback;
      }
   }
   /** @return The userData, can be null for weak references */
   Object getUserData() {
      if (this.userData == null) {
         return null;
      }
      if (this.useWeakReference) {
         WeakReference weak = (WeakReference)this.userData;
         return weak.get();
      }
      else {
         return this.userData;
      }
   }

   void reset() {
      if (this.callback != null && useWeakReference) {
         ((WeakReference)this.callback).clear();
      }
      this.callback = null;

      if (this.userData != null && useWeakReference) {
         ((WeakReference)this.userData).clear();
      }
      this.userData = null;
   }
}

TOP

Related Classes of org.xmlBlaster.util.Container

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.