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

Ben Wang bwang at jboss.com
Wed Nov 8 03:47:19 EST 2006


  User: bwang   
  Date: 06/11/08 03:47:19

  Modified:    src-50/org/jboss/cache/pojo/impl  AdvisedPojoHandler.java
  Log:
  1. JBCACHE-839 to allow replicating final field.
  2. JBCACHE-619 to support Enum.
  
  Revision  Changes    Path
  1.12      +31 -2     JBossCache/src-50/org/jboss/cache/pojo/impl/AdvisedPojoHandler.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: AdvisedPojoHandler.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossCache/src-50/org/jboss/cache/pojo/impl/AdvisedPojoHandler.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -b -r1.11 -r1.12
  --- AdvisedPojoHandler.java	17 Sep 2006 05:42:46 -0000	1.11
  +++ AdvisedPojoHandler.java	8 Nov 2006 08:47:19 -0000	1.12
  @@ -12,6 +12,7 @@
   import org.jboss.cache.pojo.CachedType;
   import org.jboss.cache.pojo.PojoInstance;
   import org.jboss.cache.pojo.PojoUtil;
  +import org.jboss.cache.pojo.InternalConstant;
   import org.jboss.cache.pojo.observable.Observer;
   import org.jboss.cache.pojo.memory.FieldPersistentReference;
   import org.jboss.cache.pojo.util.AopUtil;
  @@ -36,7 +37,7 @@
    *
    * @author Ben Wang
    *         Date: Aug 4, 2005
  - * @version $Id: AdvisedPojoHandler.java,v 1.11 2006/09/17 05:42:46 bwang Exp $
  + * @version $Id: AdvisedPojoHandler.java,v 1.12 2006/11/08 08:47:19 bwang Exp $
    */
   class AdvisedPojoHandler
   {
  @@ -67,8 +68,17 @@
         }
         catch (Exception e)
         {
  +         // Is this a case of no-default constructor, e.g., Enum? Let's try it.
  +         try
  +         {
  +            obj = loadFromOthers(fqn, clazz);
  +            if(obj == null) throw e;
  +         }
  +         catch (Exception e1)
  +         {
            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);
  @@ -77,6 +87,25 @@
         return obj;
      }
   
  +   private Object loadFromOthers(Fqn fqn, Class clazz) throws Exception
  +   {
  +      // Try Enum first.
  +      if(clazz.isEnum())
  +      {
  +         String name = (String)pCache_.getCache().get(fqn, InternalConstant.ENUM_KEY);
  +         if(name == null)
  +         {
  +            throw new CacheException(
  +                    "AdvisedPojoHandler.loadFromOthers(): can't retrieve java.lang.Enum name fiel."
  +                     + " fqn: " +fqn);
  +         }
  +         Object obj = Enum.valueOf(clazz, name);
  +         return obj;
  +      }
  +
  +      return null;
  +   }
  +
      void put(Fqn fqn, Fqn referencingFqn, Object obj) throws CacheException
      {
         CachedType type = pCache_.getCachedType(obj.getClass());
  
  
  



More information about the jboss-cvs-commits mailing list