[jboss-cvs] JBossCache/src/org/jboss/cache ...

Manik Surtani msurtani at jboss.com
Mon Jan 15 13:10:55 EST 2007


  User: msurtani
  Date: 07/01/15 13:10:55

  Modified:    src/org/jboss/cache    CacheImpl.java CacheSPI.java
                        RegionManager.java
  Log:
  Made marshallers pluggable (JBCACHE-870)
  
  Revision  Changes    Path
  1.29      +27 -4     JBossCache/src/org/jboss/cache/CacheImpl.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: CacheImpl.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossCache/src/org/jboss/cache/CacheImpl.java,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -b -r1.28 -r1.29
  --- CacheImpl.java	15 Jan 2007 16:19:09 -0000	1.28
  +++ CacheImpl.java	15 Jan 2007 18:10:55 -0000	1.29
  @@ -29,6 +29,7 @@
   import org.jboss.cache.lock.NodeLock;
   import org.jboss.cache.lock.TimeoutException;
   import org.jboss.cache.marshall.InactiveRegionAwareRpcDispatcher;
  +import org.jboss.cache.marshall.Marshaller;
   import org.jboss.cache.marshall.MethodCall;
   import org.jboss.cache.marshall.MethodCallFactory;
   import org.jboss.cache.marshall.MethodDeclarations;
  @@ -96,7 +97,7 @@
    * @author <a href="mailto:manik at jboss.org">Manik Surtani (manik at jboss.org)</a>
    * @author Brian Stansberry
    * @author Daniel Huang (dhuang at jboss.org)
  - * @version $Id: CacheImpl.java,v 1.28 2007/01/15 16:19:09 msurtani Exp $
  + * @version $Id: CacheImpl.java,v 1.29 2007/01/15 18:10:55 msurtani Exp $
    *          <p/>
    * @see <a href="http://labs.jboss.com/portal/jbosscache/docs">JBossCache doc</a>
    */
  @@ -165,7 +166,7 @@
      /**
       * Marshaller if register to handle marshalling
       */
  -   protected VersionAwareMarshaller marshaller_ = null;
  +   protected Marshaller marshaller_ = null;
   
      /**
       * {@link #invokeMethod(MethodCall)} will dispatch to this chain of interceptors.
  @@ -3839,12 +3840,34 @@
      }
   
   
  -   public VersionAwareMarshaller getMarshaller()
  +   public Marshaller getMarshaller()
      {
         if (marshaller_ == null)
         {
  +         synchronized (this)
  +         {
  +            if (marshaller_ == null)
  +            {
  +               if (configuration.getMarshallerClass() == null || configuration.getMarshallerClass().equals(VersionAwareMarshaller.class.getName()))
  +               {
            marshaller_ = new VersionAwareMarshaller(getRegionManager(), configuration.isInactiveOnStartup(), configuration.isUseRegionBasedMarshalling(), configuration.getReplVersionString());
         }
  +               else
  +               {
  +                  try
  +                  {
  +                     marshaller_ = (Marshaller) org.jboss.cache.util.Util.loadClass(configuration.getMarshallerClass()).newInstance();
  +                  }
  +                  catch (Exception e)
  +                  {
  +                     log.error("Unable to load marshaller " + configuration.getMarshallerClass() + ".  Falling back to default (" + VersionAwareMarshaller.class.getName() + ")");
  +                     marshaller_ = new VersionAwareMarshaller(getRegionManager(), configuration.isInactiveOnStartup(), configuration.isUseRegionBasedMarshalling(), configuration.getReplVersionString());
  +                  }
  +               }
  +               if (log.isInfoEnabled()) log.info("Using marshaller " + marshaller_.getClass().getName());
  +            }
  +         }
  +      }
         return marshaller_;
      }
   
  
  
  
  1.29      +5 -5      JBossCache/src/org/jboss/cache/CacheSPI.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: CacheSPI.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossCache/src/org/jboss/cache/CacheSPI.java,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -b -r1.28 -r1.29
  --- CacheSPI.java	15 Jan 2007 16:19:09 -0000	1.28
  +++ CacheSPI.java	15 Jan 2007 18:10:55 -0000	1.29
  @@ -12,7 +12,7 @@
   import org.jboss.cache.loader.CacheLoader;
   import org.jboss.cache.loader.CacheLoaderManager;
   import org.jboss.cache.lock.NodeLock;
  -import org.jboss.cache.marshall.VersionAwareMarshaller;
  +import org.jboss.cache.marshall.Marshaller;
   import org.jboss.cache.notifications.Notifier;
   import org.jboss.cache.statetransfer.StateTransferManager;
   
  @@ -163,15 +163,15 @@
      GravitateResult gravitateData(Fqn fqn, boolean searchBuddyBackupSubtrees);
   
      /**
  -    * Retrieves an instance of a {@link VersionAwareMarshaller}, which is capable of
  +    * Retrieves an instance of a {@link Marshaller}, which is capable of
       * converting Java objects to bytestreams and back in an efficient manner, which is
       * also interoperable with bytestreams produced/consumed by other versions of JBoss
       * Cache.
       * <p/>
       * The use of this marshaller is the <b>recommended</b> way of creating efficient,
  -    * compatible, version-aware byte streams from objects.
  +    * compatible, byte streams from objects.
       *
  -    * @return an instance of {@link VersionAwareMarshaller}
  +    * @return an instance of {@link Marshaller}
       */
  -   VersionAwareMarshaller getMarshaller();
  +   Marshaller getMarshaller();
   }
  
  
  
  1.22      +2 -2      JBossCache/src/org/jboss/cache/RegionManager.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: RegionManager.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossCache/src/org/jboss/cache/RegionManager.java,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -b -r1.21 -r1.22
  --- RegionManager.java	4 Jan 2007 17:10:36 -0000	1.21
  +++ RegionManager.java	15 Jan 2007 18:10:55 -0000	1.22
  @@ -9,7 +9,7 @@
   import org.jboss.cache.eviction.EvictionTimerTask;
   import org.jboss.cache.eviction.RegionNameConflictException;
   import org.jboss.cache.lock.NodeLock;
  -import org.jboss.cache.marshall.VersionAwareMarshaller;
  +import org.jboss.cache.marshall.Marshaller;
   import org.jgroups.Address;
   
   import java.util.ArrayList;
  @@ -485,7 +485,7 @@
            // Record that this fqn is in status change, so can't provide state
            activationChangeNodes.add(fqn);
   
  -         VersionAwareMarshaller marshaller = cache.getMarshaller();
  +         Marshaller marshaller = cache.getMarshaller();
            boolean inactive = marshaller.isInactive(subtreeFqn);
            if (!inactive)
            {
  
  
  



More information about the jboss-cvs-commits mailing list