[jboss-cvs] JBossCache/src-50/org/jboss/cache/pojo/impl ...

Ben Wang bwang at jboss.com
Thu Jul 13 21:46:48 EDT 2006


  User: bwang   
  Date: 06/07/13 21:46:48

  Modified:    src-50/org/jboss/cache/pojo/impl     
                        CollectionClassHandler.java ObjectGraphHandler.java
                        PojoCacheDelegate.java
                        SerializableObjectHandler.java
  Added:       src-50/org/jboss/cache/pojo/impl     
                        AdvisedPojoHandler.java
  Log:
  Refactored the code flow.
  
  Revision  Changes    Path
  1.2       +6 -6      JBossCache/src-50/org/jboss/cache/pojo/impl/CollectionClassHandler.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: CollectionClassHandler.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossCache/src-50/org/jboss/cache/pojo/impl/CollectionClassHandler.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- CollectionClassHandler.java	13 Jul 2006 15:56:12 -0000	1.1
  +++ CollectionClassHandler.java	14 Jul 2006 01:46:48 -0000	1.2
  @@ -31,7 +31,7 @@
    *
    * @author Ben Wang
    *         Date: Aug 4, 2005
  - * @version $Id: CollectionClassHandler.java,v 1.1 2006/07/13 15:56:12 bwang Exp $
  + * @version $Id: CollectionClassHandler.java,v 1.2 2006/07/14 01:46:48 bwang Exp $
    */
   class CollectionClassHandler
   {
  @@ -50,7 +50,7 @@
         graphHandler_ = graphHandler;
      }
   
  -   Object collectionObjectGet(Fqn fqn, Class clazz)
  +   Object get(Fqn fqn, Class clazz)
              throws CacheException
      {
         Object obj = null;
  @@ -78,7 +78,7 @@
      }
   
   
  -   boolean collectionObjectPut(Fqn fqn, Object obj) throws CacheException
  +   boolean put(Fqn fqn, Object obj) throws CacheException
      {
         boolean isCollection = false;
   
  @@ -101,14 +101,14 @@
            {
               if (log.isDebugEnabled())
               {
  -               log.debug("collectionObjectPut(): null interceptor. Could be removed previously. " + fqn);
  +               log.debug("put(): null interceptor. Could be removed previously. " + fqn);
               }
            } else
            {
               if (interceptor.isAttached()) // If it is not attached, it is not active.
               {
                  // Let's check for object graph, e.g., multiple and circular references first
  -               if (graphHandler_.objectGraphPut(fqn, interceptor, type))
  +               if (graphHandler_.put(fqn, interceptor, type))
                  { // found cross references
                     return true;
                  }
  @@ -235,7 +235,7 @@
         return isCollection;
      }
   
  -   boolean collectionObjectRemove(Fqn fqn
  +   boolean remove(Fqn fqn
      ) throws CacheException
      {
         Class clazz = internal_.peekAopClazz(fqn);
  
  
  
  1.2       +9 -9      JBossCache/src-50/org/jboss/cache/pojo/impl/ObjectGraphHandler.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ObjectGraphHandler.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossCache/src-50/org/jboss/cache/pojo/impl/ObjectGraphHandler.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- ObjectGraphHandler.java	13 Jul 2006 15:56:12 -0000	1.1
  +++ ObjectGraphHandler.java	14 Jul 2006 01:46:48 -0000	1.2
  @@ -27,7 +27,7 @@
    *
    * @author Ben Wang
    *         Date: Aug 4, 2005
  - * @version $Id: ObjectGraphHandler.java,v 1.1 2006/07/13 15:56:12 bwang Exp $
  + * @version $Id: ObjectGraphHandler.java,v 1.2 2006/07/14 01:46:48 bwang Exp $
    */
   class ObjectGraphHandler
   {
  @@ -43,7 +43,7 @@
         internal_ = internal;
      }
   
  -   Object objectGraphGet(Fqn fqn) throws CacheException
  +   Object get(Fqn fqn) throws CacheException
      {
         // Note this is actually the aliasFqn, not the real fqn!
         String refFqn = internal_.getRefFqn(fqn);
  @@ -59,7 +59,7 @@
            }
            obj = pCache_.getObject(Fqn.fromString(refFqn));
            if (obj == null)
  -            throw new RuntimeException("ObjectGraphHandler.objectGraphGet(): null object from internal ref node." +
  +            throw new RuntimeException("ObjectGraphHandler.get(): null object from internal ref node." +
                       " Original fqn: " + fqn + " Internal ref node: " + refFqn);
   
            return obj; // No need to set the instance under fqn. It is located in refFqn anyway.
  @@ -68,7 +68,7 @@
         return null;
      }
   
  -   boolean objectGraphPut(Fqn fqn, Interceptor interceptor, CachedType type) throws CacheException
  +   boolean put(Fqn fqn, Interceptor interceptor, CachedType type) throws CacheException
      {
         Fqn originalFqn = null;
   
  @@ -96,7 +96,7 @@
         return true;
      }
   
  -   boolean objectGraphRemove(Fqn fqn, boolean removeCacheInterceptor, Object pojo, boolean evict)
  +   boolean remove(Fqn fqn, boolean removeCacheInterceptor, Object pojo, boolean evict)
              throws CacheException
      {
         boolean isTrue = false;
  @@ -109,7 +109,7 @@
         {
            if (log.isDebugEnabled())
            {
  -            log.debug("objectGraphRemove(): removing object fqn: " + fqn + " but is actually from ref fqn: " + refFqn
  +            log.debug("remove(): removing object fqn: " + fqn + " but is actually from ref fqn: " + refFqn
                       + " Will just de-reference it.");
            }
            removeFromReference(fqn, refFqn, removeCacheInterceptor, evict);
  @@ -134,7 +134,7 @@
   
                  if (log.isDebugEnabled())
                  {
  -                  log.debug("objectGraphRemove(): this node " + fqn + " is currently referenced by a cyclic reference: "
  +                  log.debug("remove(): this node " + fqn + " is currently referenced by a cyclic reference: "
                             + newFqn + "Will only decrement reference count.");
                  }
               } else
  @@ -145,7 +145,7 @@
                  InstanceAdvisor advisor = ((Advised) pojo)._getInstanceAdvisor();
                  CacheFieldInterceptor interceptor = (CacheFieldInterceptor) AopUtil.findCacheInterceptor(advisor);
                  if (interceptor == null)
  -                  throw new IllegalStateException("ObjectGraphHandler.objectGraphRemove(): null interceptor");
  +                  throw new IllegalStateException("ObjectGraphHandler.remove(): null interceptor");
                  interceptor.setFqn(newFqn);
                  // reset the fqn in the indirect fqn map
                  internal_.setIndirectFqn(fqn.toString(), newFqn.toString());
  @@ -154,7 +154,7 @@
   
                  if (log.isDebugEnabled())
                  {
  -                  log.debug("objectGraphRemove(): this node " + fqn + " is currently referenced by " +
  +                  log.debug("remove(): this node " + fqn + " is currently referenced by " +
                             +internal_.getRefCount(newFqn) +
                             " other pojos after relocating to " + newFqn.toString());
                  }
  
  
  
  1.2       +16 -17    JBossCache/src-50/org/jboss/cache/pojo/impl/PojoCacheDelegate.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: PojoCacheDelegate.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossCache/src-50/org/jboss/cache/pojo/impl/PojoCacheDelegate.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- PojoCacheDelegate.java	13 Jul 2006 15:56:12 -0000	1.1
  +++ PojoCacheDelegate.java	14 Jul 2006 01:46:48 -0000	1.2
  @@ -120,7 +120,7 @@
         Object obj;
   
         // Check for both Advised and Collection classes for object graph.
  -      if ((obj = graphHandler_.objectGraphGet(fqn)) != null)
  +      if ((obj = graphHandler_.get(fqn)) != null)
            return obj; // retrieved from internal ref node. We are done.
   
         PojoReference pojoReference = internal_.getAopInstance(fqn);
  @@ -149,12 +149,12 @@
         { // Must be Collection classes. We will use aop.ClassProxy instance instead.
            try
            {
  -            if ((obj = collectionHandler_.collectionObjectGet(fqn, clazz)) != null)
  +            if ((obj = collectionHandler_.get(fqn, clazz)) != null)
               {
               } else
               {
                  // Maybe it is just a serialized object.
  -               obj = serializableHandler_.serializableObjectGet(fqn);
  +               obj = serializableHandler_.get(fqn);
               }
            }
            catch (Exception e)
  @@ -177,21 +177,20 @@
       */
      Object _putObject(Fqn fqn, Object obj) throws CacheException
      {
  -      if (obj == null)
  -      {
  -         return pCache_._removeObject(fqn, true);
  -      }
         // Skip some un-necessary update if obj is the same class as the old one
         Object oldValue = internal_.getPojo(fqn);
         if (oldValue == obj) return obj;  // value already in cache. return right away.
   
  -      if (oldValue != null)
  -      {
  -         // Trigger bulk remove here for performance
  -         setBulkRemove(true);
            pCache_._removeObject(fqn, true); // remove old value before overwriting it.
  +
  +      if (obj == null)
  +      {
  +         return oldValue; // we are done
         }
   
  +      // Trigger bulk remove here for performance. Let's not worry about performance optimization yet.
  +      setBulkRemove(false);
  +
         // Remember not to print obj here since it will trigger the CacheFieldInterceptor.
         if (log.isDebugEnabled())
         {
  @@ -209,7 +208,7 @@
   
            // Step Check for cross references
            Interceptor interceptor = AopUtil.findCacheInterceptor(advisor);
  -         if (interceptor != null && graphHandler_.objectGraphPut(fqn, interceptor, type))
  +         if (interceptor != null && graphHandler_.put(fqn, interceptor, type))
            { // found cross references
               return oldValue;
            }
  @@ -222,10 +221,10 @@
             * First check if obj has been aspectized? That is, if it is a ClassProxy or not.
             * If not, we will need to create a proxy first for the Collection classes
             */
  -      } else if (collectionHandler_.collectionObjectPut(fqn, obj))
  +      } else if (collectionHandler_.put(fqn, obj))
         {
            //
  -      } else if (serializableHandler_.serializableObjectPut(fqn, obj))
  +      } else if (serializableHandler_.put(fqn, obj))
         {
            // must be Serializable, including primitive types
         } else
  @@ -569,7 +568,7 @@
            setBulkRemove(false);
         }
   
  -      if (graphHandler_.objectGraphRemove(fqn, removeCacheInterceptor, result, evict))
  +      if (graphHandler_.remove(fqn, removeCacheInterceptor, result, evict))
         {
            return result;
         }
  @@ -578,11 +577,11 @@
         if (Advised.class.isAssignableFrom(clazz))
         {
            _regularRemoveObject(fqn, removeCacheInterceptor, result, clazz, evict);
  -      } else if (collectionHandler_.collectionObjectRemove(fqn))
  +      } else if (collectionHandler_.remove(fqn))
         {
         } else
         { // Just Serializable objects. Do a brute force remove is ok.
  -         serializableHandler_.serializableObjectRemove();
  +         serializableHandler_.remove();
         }
   
         internal_.cleanUp(fqn, evict);
  
  
  
  1.3       +4 -4      JBossCache/src-50/org/jboss/cache/pojo/impl/SerializableObjectHandler.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: SerializableObjectHandler.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossCache/src-50/org/jboss/cache/pojo/impl/SerializableObjectHandler.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- SerializableObjectHandler.java	13 Jul 2006 16:53:12 -0000	1.2
  +++ SerializableObjectHandler.java	14 Jul 2006 01:46:48 -0000	1.3
  @@ -22,7 +22,7 @@
    * Handle Serializable object cache management.
    *
    * @author Ben Wang
  - * @version $Id: SerializableObjectHandler.java,v 1.2 2006/07/13 16:53:12 bwang Exp $
  + * @version $Id: SerializableObjectHandler.java,v 1.3 2006/07/14 01:46:48 bwang Exp $
    */
   class SerializableObjectHandler
   {
  @@ -38,7 +38,7 @@
         internal_ = internal;
      }
   
  -   Object serializableObjectGet(Fqn fqn)
  +   Object get(Fqn fqn)
              throws CacheException
      {
         Object obj = internal_.get(fqn, InternalConstant.SERIALIZED);
  @@ -46,7 +46,7 @@
      }
   
   
  -   boolean serializableObjectPut(Fqn fqn, Object obj)
  +   boolean put(Fqn fqn, Object obj)
              throws CacheException
      {
           // Note that JBoss Serialization can serialize any type now.
  @@ -76,7 +76,7 @@
      }
   
      @SuppressWarnings({"CanBeStatic"})
  -   void serializableObjectRemove()
  +   void remove()
      {
         // No need to do anything here since we will do clean up afterwards.
      }
  
  
  
  1.1      date: 2006/07/14 01:46:48;  author: bwang;  state: Exp;JBossCache/src-50/org/jboss/cache/pojo/impl/AdvisedPojoHandler.java
  
  Index: AdvisedPojoHandler.java
  ===================================================================
  /*
   * JBoss, Home of Professional Open Source
   *
   * Distributable under LGPL license.
   * See terms of license at gnu.org.
   */
  
  package org.jboss.cache.pojo.impl;
  
  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
  import org.jboss.cache.pojo.PojoTreeCache;
  import org.jboss.cache.pojo.CachedType;
  import org.jboss.cache.pojo.PojoReference;
  import org.jboss.cache.pojo.interceptors.dynamic.AbstractCollectionInterceptor;
  import org.jboss.cache.pojo.interceptors.dynamic.BaseInterceptor;
  import org.jboss.cache.pojo.interceptors.dynamic.CacheFieldInterceptor;
  import org.jboss.cache.pojo.collection.CollectionInterceptorUtil;
  import org.jboss.cache.Fqn;
  import org.jboss.cache.CacheException;
  import org.jboss.aop.proxy.ClassProxy;
  import org.jboss.aop.advice.Interceptor;
  import org.jboss.aop.InstanceAdvisor;
  import org.jboss.aop.Advised;
  
  import java.util.Map;
  import java.util.List;
  import java.util.Set;
  import java.util.Iterator;
  import java.util.Collection;
  
  /**
   * Handling the Collection class management.
   *
   * @author Ben Wang
   *         Date: Aug 4, 2005
   * @version $Id: AdvisedPojoHandler.java,v 1.1 2006/07/14 01:46:48 bwang Exp $
   */
  class AdvisedPojoHandler
  {
     private final Log log = LogFactory.getLog(AdvisedPojoHandler.class);
     private PojoTreeCache cache_;
     private PojoCacheImpl pCache_;
     private InternalHelper internal_;
     private ObjectGraphHandler graphHandler_;
  
     public AdvisedPojoHandler(PojoCacheImpl pCache, InternalHelper internal,
                               ObjectGraphHandler graphHandler)
     {
        pCache_ = pCache;
        cache_ = (PojoTreeCache)pCache_.getCache();
        internal_ = internal;
        graphHandler_ = graphHandler;
     }
  
     Object get(Fqn fqn, Class clazz, CachedType type, PojoReference pojoReference)
             throws CacheException
     {
        Object obj;
        try
        {
           obj = clazz.newInstance();
           // TODO Need to populate the object from the cache as well.
        }
        catch (Exception e)
        {
           throw new CacheException("failed creating instance of " + clazz.getName(), e);
        }
        // Insert interceptor at runtime
        InstanceAdvisor advisor = ((Advised) obj)._getInstanceAdvisor();
        CacheFieldInterceptor interceptor = new CacheFieldInterceptor(pCache_, fqn, type);
        interceptor.setAopInstance(pojoReference);
  //      util_.attachInterceptor(obj, advisor, interceptor, observer_);
        return null;
     }
  
  
     boolean put(Fqn fqn, Object obj) throws CacheException
     {
        return false;
     }
  
     boolean remove(Fqn fqn) throws CacheException
     {
        return false;
     }
  }
  
  
  



More information about the jboss-cvs-commits mailing list