[jbosscache-commits] JBoss Cache SVN: r6965 - in core/branches/flat/src/main/java/org/jboss: cache/loader and 10 other directories.

jbosscache-commits at lists.jboss.org jbosscache-commits at lists.jboss.org
Wed Oct 15 16:48:28 EDT 2008


Author: mircea.markus
Date: 2008-10-15 16:48:28 -0400 (Wed, 15 Oct 2008)
New Revision: 6965

Added:
   core/branches/flat/src/main/java/org/jboss/starobrno/marshall/VersionAwareMarshaller.java
   core/branches/flat/src/main/java/org/jboss/starobrno/util/Util.java
Removed:
   core/branches/flat/src/main/java/org/jboss/cache/util/Util.java
Modified:
   core/branches/flat/src/main/java/org/jboss/cache/RegionImpl.java
   core/branches/flat/src/main/java/org/jboss/cache/loader/AdjListJDBCCacheLoader.java
   core/branches/flat/src/main/java/org/jboss/cache/loader/AdjListJDBCCacheLoaderConfig.java
   core/branches/flat/src/main/java/org/jboss/cache/loader/FileCacheLoaderConfig.java
   core/branches/flat/src/main/java/org/jboss/cache/loader/TcpDelegatingCacheLoaderConfig.java
   core/branches/flat/src/main/java/org/jboss/cache/loader/bdbje/BdbjeCacheLoaderConfig.java
   core/branches/flat/src/main/java/org/jboss/cache/loader/jdbm/JdbmCacheLoaderConfig.java
   core/branches/flat/src/main/java/org/jboss/cache/marshall/VersionAwareMarshaller.java
   core/branches/flat/src/main/java/org/jboss/starobrno/commands/CommandsFactoryImpl.java
   core/branches/flat/src/main/java/org/jboss/starobrno/config/BuddyReplicationConfig.java
   core/branches/flat/src/main/java/org/jboss/starobrno/config/CacheLoaderConfig.java
   core/branches/flat/src/main/java/org/jboss/starobrno/config/EvictionRegionConfig.java
   core/branches/flat/src/main/java/org/jboss/starobrno/config/RuntimeConfig.java
   core/branches/flat/src/main/java/org/jboss/starobrno/config/parsing/element/CustomInterceptorsElementParser.java
   core/branches/flat/src/main/java/org/jboss/starobrno/config/parsing/element/EvictionElementParser.java
   core/branches/flat/src/main/java/org/jboss/starobrno/factories/EmptyConstructorFactory.java
   core/branches/flat/src/main/java/org/jboss/starobrno/marshall/CacheMarshallerStarobrno.java
Log:
replication is versioned now

Modified: core/branches/flat/src/main/java/org/jboss/cache/RegionImpl.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/cache/RegionImpl.java	2008-10-15 20:24:43 UTC (rev 6964)
+++ core/branches/flat/src/main/java/org/jboss/cache/RegionImpl.java	2008-10-15 20:48:28 UTC (rev 6965)
@@ -23,7 +23,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.jboss.cache.util.Util;
+import org.jboss.starobrno.util.Util;
 import org.jboss.starobrno.config.Configuration;
 import org.jboss.starobrno.config.EvictionAlgorithmConfig;
 import org.jboss.starobrno.config.EvictionRegionConfig;

Modified: core/branches/flat/src/main/java/org/jboss/cache/loader/AdjListJDBCCacheLoader.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/cache/loader/AdjListJDBCCacheLoader.java	2008-10-15 20:24:43 UTC (rev 6964)
+++ core/branches/flat/src/main/java/org/jboss/cache/loader/AdjListJDBCCacheLoader.java	2008-10-15 20:48:28 UTC (rev 6965)
@@ -27,7 +27,7 @@
 import org.jboss.cache.Modification;
 import org.jboss.starobrno.io.ByteBuffer;
 import org.jboss.cache.lock.StripedLock;
-import org.jboss.cache.util.Util;
+import org.jboss.starobrno.util.Util;
 import org.jboss.starobrno.config.CacheLoaderConfig;
 
 import java.io.IOException;

Modified: core/branches/flat/src/main/java/org/jboss/cache/loader/AdjListJDBCCacheLoaderConfig.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/cache/loader/AdjListJDBCCacheLoaderConfig.java	2008-10-15 20:24:43 UTC (rev 6964)
+++ core/branches/flat/src/main/java/org/jboss/cache/loader/AdjListJDBCCacheLoaderConfig.java	2008-10-15 20:48:28 UTC (rev 6965)
@@ -21,7 +21,7 @@
  */
 package org.jboss.cache.loader;
 
-import org.jboss.cache.util.Util;
+import org.jboss.starobrno.util.Util;
 import org.jboss.starobrno.config.CacheLoaderConfig.IndividualCacheLoaderConfig;
 
 import java.util.Properties;

Modified: core/branches/flat/src/main/java/org/jboss/cache/loader/FileCacheLoaderConfig.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/cache/loader/FileCacheLoaderConfig.java	2008-10-15 20:24:43 UTC (rev 6964)
+++ core/branches/flat/src/main/java/org/jboss/cache/loader/FileCacheLoaderConfig.java	2008-10-15 20:48:28 UTC (rev 6965)
@@ -21,7 +21,7 @@
  */
 package org.jboss.cache.loader;
 
-import org.jboss.cache.util.Util;
+import org.jboss.starobrno.util.Util;
 import org.jboss.starobrno.config.CacheLoaderConfig.IndividualCacheLoaderConfig;
 import org.jboss.starobrno.config.Dynamic;
 

Modified: core/branches/flat/src/main/java/org/jboss/cache/loader/TcpDelegatingCacheLoaderConfig.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/cache/loader/TcpDelegatingCacheLoaderConfig.java	2008-10-15 20:24:43 UTC (rev 6964)
+++ core/branches/flat/src/main/java/org/jboss/cache/loader/TcpDelegatingCacheLoaderConfig.java	2008-10-15 20:48:28 UTC (rev 6965)
@@ -21,7 +21,7 @@
  */
 package org.jboss.cache.loader;
 
-import org.jboss.cache.util.Util;
+import org.jboss.starobrno.util.Util;
 import org.jboss.starobrno.config.CacheLoaderConfig.IndividualCacheLoaderConfig;
 
 import java.util.Properties;

Modified: core/branches/flat/src/main/java/org/jboss/cache/loader/bdbje/BdbjeCacheLoaderConfig.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/cache/loader/bdbje/BdbjeCacheLoaderConfig.java	2008-10-15 20:24:43 UTC (rev 6964)
+++ core/branches/flat/src/main/java/org/jboss/cache/loader/bdbje/BdbjeCacheLoaderConfig.java	2008-10-15 20:48:28 UTC (rev 6965)
@@ -21,7 +21,7 @@
  */
 package org.jboss.cache.loader.bdbje;
 
-import org.jboss.cache.util.Util;
+import org.jboss.starobrno.util.Util;
 import org.jboss.starobrno.config.CacheLoaderConfig.IndividualCacheLoaderConfig;
 
 import java.util.Properties;

Modified: core/branches/flat/src/main/java/org/jboss/cache/loader/jdbm/JdbmCacheLoaderConfig.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/cache/loader/jdbm/JdbmCacheLoaderConfig.java	2008-10-15 20:24:43 UTC (rev 6964)
+++ core/branches/flat/src/main/java/org/jboss/cache/loader/jdbm/JdbmCacheLoaderConfig.java	2008-10-15 20:48:28 UTC (rev 6965)
@@ -21,7 +21,7 @@
  */
 package org.jboss.cache.loader.jdbm;
 
-import org.jboss.cache.util.Util;
+import org.jboss.starobrno.util.Util;
 import org.jboss.starobrno.config.CacheLoaderConfig.IndividualCacheLoaderConfig;
 
 import java.util.Properties;

Modified: core/branches/flat/src/main/java/org/jboss/cache/marshall/VersionAwareMarshaller.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/cache/marshall/VersionAwareMarshaller.java	2008-10-15 20:24:43 UTC (rev 6964)
+++ core/branches/flat/src/main/java/org/jboss/cache/marshall/VersionAwareMarshaller.java	2008-10-15 20:48:28 UTC (rev 6965)
@@ -26,7 +26,7 @@
 import org.jboss.cache.Fqn;
 import org.jboss.starobrno.io.ByteBuffer;
 import org.jboss.starobrno.io.ExposedByteArrayOutputStream;
-import org.jboss.cache.util.Util;
+import org.jboss.starobrno.util.Util;
 import org.jboss.starobrno.factories.ComponentRegistry;
 import org.jboss.starobrno.factories.annotations.Inject;
 import org.jboss.starobrno.factories.annotations.Start;

Deleted: core/branches/flat/src/main/java/org/jboss/cache/util/Util.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/cache/util/Util.java	2008-10-15 20:24:43 UTC (rev 6964)
+++ core/branches/flat/src/main/java/org/jboss/cache/util/Util.java	2008-10-15 20:48:28 UTC (rev 6965)
@@ -1,188 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2000 - 2008, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.cache.util;
-
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * General utility methods used throughout the JBC code base.
- *
- * @author <a href="brian.stansberry at jboss.com">Brian Stansberry</a>
- * @version $Revision$
- */
-public final class Util
-{
-   /**
-    * Loads the specified class using this class's classloader, or, if it is <code>null</code>
-    * (i.e. this class was loaded by the bootstrap classloader), the system classloader.
-    * <p/>
-    * If loadtime instrumentation via GenerateInstrumentedClassLoader is used, this
-    * class may be loaded by the bootstrap classloader.
-    * </p>
-    *
-    * @param classname name of the class to load
-    * @return the class
-    * @throws ClassNotFoundException
-    */
-   public static Class loadClass(String classname) throws ClassNotFoundException
-   {
-      ClassLoader cl = Thread.currentThread().getContextClassLoader();
-      if (cl == null)
-         cl = ClassLoader.getSystemClassLoader();
-      return cl.loadClass(classname);
-   }
-
-   @SuppressWarnings("unchecked")
-   public static <T> T getInstance(Class<T> clazz) throws Exception
-   {
-      // first look for a getInstance() constructor
-      T instance;
-      try
-      {
-         Method factoryMethod = clazz.getMethod("getInstance", new Class[]{});
-         instance = (T) factoryMethod.invoke(null);
-      }
-      catch (Exception e)
-      {
-         // no factory method or factory method failed.  Try a constructor.
-         instance = clazz.newInstance();
-      }
-      return instance;
-   }
-
-   @SuppressWarnings("unchecked")
-   public static Object getInstance(String classname) throws Exception
-   {
-      if (classname == null) throw new IllegalArgumentException("Cannot load null class!");
-      Class clazz = loadClass(classname);
-      return getInstance(clazz);
-   }
-
-   /**
-    * Prevent instantiation
-    */
-   private Util()
-   {
-   }
-
-   /**
-    * Calculates the diffs between data maps passed in to {@link org.jboss.cache.notifications.event.NodeModifiedEvent#getData()}
-    * before and after modification.  This only makes sense if the modification type is {@link org.jboss.cache.notifications.event.NodeModifiedEvent.ModificationType#PUT_MAP}.
-    * Refer to {@link org.jboss.cache.notifications.event.NodeModifiedEvent} and {@link org.jboss.cache.notifications.annotation.NodeModified}.
-    *
-    * @param pre  map of data before the node was modified
-    * @param post Map of data after the node was modified
-    * @return MapModifications containing the differences.
-    */
-   public static MapModifications diffNodeData(Map<Object, Object> pre, Map<Object, Object> post)
-   {
-      MapModifications mods = new MapModifications();
-
-      // let's start with what's been added and modified.
-      for (Map.Entry me : post.entrySet())
-      {
-         Object key = me.getKey();
-         Object value = me.getValue();
-         if (pre.containsKey(key))
-         {
-            if (!value.equals(pre.get(key)))
-            {
-               mods.modifiedEntries.put(key, value);
-            }
-         }
-         else
-         {
-            mods.addedEntries.put(key, value);
-         }
-      }
-
-      // now the removed entries.
-      for (Map.Entry me : pre.entrySet())
-      {
-         Object key = me.getKey();
-         if (!post.containsKey(key))
-         {
-            mods.removedEntries.put(key, me.getValue());
-         }
-      }
-
-      return mods;
-   }
-
-   /**
-    * Null-safe equality test.
-    *
-    * @param a first object to compare
-    * @param b second object to compare
-    * @return true if the objects are equals or both null, false otherwise.
-    */
-   public static boolean safeEquals(Object a, Object b)
-   {
-      return (a == b) || (a != null && a.equals(b));
-   }
-
-   /**
-    * Static inner class that holds 3 maps - for data added, removed and modified.
-    */
-   public static class MapModifications
-   {
-      public final Map<Object, Object> addedEntries = new HashMap<Object, Object>();
-      public final Map<Object, Object> removedEntries = new HashMap<Object, Object>();
-      public final Map<Object, Object> modifiedEntries = new HashMap<Object, Object>();
-
-
-      @Override
-      public boolean equals(Object o)
-      {
-         if (this == o) return true;
-         if (o == null || getClass() != o.getClass()) return false;
-
-         MapModifications that = (MapModifications) o;
-
-         if (addedEntries != null ? !addedEntries.equals(that.addedEntries) : that.addedEntries != null) return false;
-         if (modifiedEntries != null ? !modifiedEntries.equals(that.modifiedEntries) : that.modifiedEntries != null)
-            return false;
-         if (removedEntries != null ? !removedEntries.equals(that.removedEntries) : that.removedEntries != null)
-            return false;
-
-         return true;
-      }
-
-      @Override
-      public int hashCode()
-      {
-         int result;
-         result = (addedEntries != null ? addedEntries.hashCode() : 0);
-         result = 31 * result + (removedEntries != null ? removedEntries.hashCode() : 0);
-         result = 31 * result + (modifiedEntries != null ? modifiedEntries.hashCode() : 0);
-         return result;
-      }
-
-      @Override
-      public String toString()
-      {
-         return "Added Entries " + addedEntries + " Removeed Entries " + removedEntries + " Modified Entries " + modifiedEntries;
-      }
-   }
-}

Modified: core/branches/flat/src/main/java/org/jboss/starobrno/commands/CommandsFactoryImpl.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/commands/CommandsFactoryImpl.java	2008-10-15 20:24:43 UTC (rev 6964)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/commands/CommandsFactoryImpl.java	2008-10-15 20:48:28 UTC (rev 6965)
@@ -22,16 +22,16 @@
 package org.jboss.starobrno.commands;
 
 import org.jboss.starobrno.CacheException;
-import org.jboss.starobrno.interceptors.InterceptorChain;
 import org.jboss.starobrno.commands.read.GetKeyValueCommand;
 import org.jboss.starobrno.commands.read.SizeCommand;
+import org.jboss.starobrno.commands.remote.ReplicateCommand;
 import org.jboss.starobrno.commands.tx.CommitCommand;
 import org.jboss.starobrno.commands.tx.PrepareCommand;
 import org.jboss.starobrno.commands.tx.RollbackCommand;
 import org.jboss.starobrno.commands.write.*;
-import org.jboss.starobrno.commands.remote.ReplicateCommand;
 import org.jboss.starobrno.container.DataContainer;
 import org.jboss.starobrno.factories.annotations.Inject;
+import org.jboss.starobrno.interceptors.InterceptorChain;
 import org.jboss.starobrno.notifications.Notifier;
 import org.jboss.starobrno.transaction.GlobalTransaction;
 import org.jgroups.Address;
@@ -49,7 +49,7 @@
    private InterceptorChain interceptorChain;
 
    @Inject
-   private void setupDependencies(DataContainer container, Notifier notifier, InterceptorChain interceptorChain)
+   public void setupDependencies(DataContainer container, Notifier notifier, InterceptorChain interceptorChain)
    {
       this.dataContainer = container;
       this.notifier = notifier;

Modified: core/branches/flat/src/main/java/org/jboss/starobrno/config/BuddyReplicationConfig.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/config/BuddyReplicationConfig.java	2008-10-15 20:24:43 UTC (rev 6964)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/config/BuddyReplicationConfig.java	2008-10-15 20:48:28 UTC (rev 6965)
@@ -22,7 +22,7 @@
 package org.jboss.starobrno.config;
 
 import org.jboss.cache.buddyreplication.NextMemberBuddyLocator;
-import org.jboss.cache.util.Util;
+import org.jboss.starobrno.util.Util;
 
 import java.util.Properties;
 

Modified: core/branches/flat/src/main/java/org/jboss/starobrno/config/CacheLoaderConfig.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/config/CacheLoaderConfig.java	2008-10-15 20:24:43 UTC (rev 6964)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/config/CacheLoaderConfig.java	2008-10-15 20:48:28 UTC (rev 6965)
@@ -23,7 +23,7 @@
 
 import org.jboss.cache.loader.CacheLoader;
 import org.jboss.cache.loader.SingletonStoreCacheLoader;
-import org.jboss.cache.util.Util;
+import org.jboss.starobrno.util.Util;
 
 import java.util.ArrayList;
 import java.util.List;

Modified: core/branches/flat/src/main/java/org/jboss/starobrno/config/EvictionRegionConfig.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/config/EvictionRegionConfig.java	2008-10-15 20:24:43 UTC (rev 6964)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/config/EvictionRegionConfig.java	2008-10-15 20:48:28 UTC (rev 6965)
@@ -23,7 +23,7 @@
 
 import org.apache.commons.logging.LogFactory;
 import org.jboss.cache.Fqn;
-import org.jboss.cache.util.Util;
+import org.jboss.starobrno.util.Util;
 
 import java.lang.reflect.Method;
 

Modified: core/branches/flat/src/main/java/org/jboss/starobrno/config/RuntimeConfig.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/config/RuntimeConfig.java	2008-10-15 20:24:43 UTC (rev 6964)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/config/RuntimeConfig.java	2008-10-15 20:48:28 UTC (rev 6965)
@@ -23,7 +23,7 @@
 
 import org.jboss.cache.RPCManager;
 import org.jboss.cache.buddyreplication.BuddyGroup;
-import org.jboss.cache.util.Util;
+import org.jboss.starobrno.util.Util;
 import org.jgroups.Channel;
 import org.jgroups.ChannelFactory;
 import org.jgroups.util.ThreadFactory;

Modified: core/branches/flat/src/main/java/org/jboss/starobrno/config/parsing/element/CustomInterceptorsElementParser.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/config/parsing/element/CustomInterceptorsElementParser.java	2008-10-15 20:24:43 UTC (rev 6964)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/config/parsing/element/CustomInterceptorsElementParser.java	2008-10-15 20:48:28 UTC (rev 6965)
@@ -22,7 +22,7 @@
 package org.jboss.starobrno.config.parsing.element;
 
 
-import org.jboss.cache.util.Util;
+import org.jboss.starobrno.util.Util;
 import org.jboss.starobrno.config.ConfigurationException;
 import org.jboss.starobrno.config.CustomInterceptorConfig;
 import org.jboss.starobrno.config.parsing.ParsedAttributes;

Modified: core/branches/flat/src/main/java/org/jboss/starobrno/config/parsing/element/EvictionElementParser.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/config/parsing/element/EvictionElementParser.java	2008-10-15 20:24:43 UTC (rev 6964)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/config/parsing/element/EvictionElementParser.java	2008-10-15 20:48:28 UTC (rev 6965)
@@ -21,7 +21,7 @@
  */
 package org.jboss.starobrno.config.parsing.element;
 
-import org.jboss.cache.util.Util;
+import org.jboss.starobrno.util.Util;
 import org.jboss.starobrno.config.ConfigurationException;
 import org.jboss.starobrno.config.EvictionAlgorithmConfig;
 import org.jboss.starobrno.config.EvictionConfig;

Modified: core/branches/flat/src/main/java/org/jboss/starobrno/factories/EmptyConstructorFactory.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/factories/EmptyConstructorFactory.java	2008-10-15 20:24:43 UTC (rev 6964)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/factories/EmptyConstructorFactory.java	2008-10-15 20:48:28 UTC (rev 6965)
@@ -35,6 +35,7 @@
 import org.jboss.starobrno.remoting.ChannelMessageListener;
 import org.jboss.starobrno.marshall.ExtendedMarshaller;
 import org.jboss.starobrno.marshall.CacheMarshallerStarobrno;
+import org.jboss.starobrno.marshall.VersionAwareMarshaller;
 import org.jboss.starobrno.RPCManager;
 import org.jboss.cache.loader.CacheLoaderManager;
 import org.jboss.cache.invocation.CacheInvocationDelegate;
@@ -65,7 +66,7 @@
             Class componentImpl;
             if (componentType.equals(ExtendedMarshaller.class))
             {
-               componentImpl = CacheMarshallerStarobrno.class;
+               componentImpl = VersionAwareMarshaller.class;
             }
             else 
             if (componentType.equals(RPCManager.class))

Modified: core/branches/flat/src/main/java/org/jboss/starobrno/marshall/CacheMarshallerStarobrno.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/marshall/CacheMarshallerStarobrno.java	2008-10-15 20:24:43 UTC (rev 6964)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/marshall/CacheMarshallerStarobrno.java	2008-10-15 20:48:28 UTC (rev 6965)
@@ -100,11 +100,11 @@
    protected ClassLoader defaultClassLoader;
    protected boolean useRefs = false;
 
-   @Inject
-   void injectDependencies(Configuration configuration, ClassLoader defaultClassLoader)
+   public void init(Configuration configuration, ClassLoader defaultClassLoader, CommandsFactory commandsFactory)
    {
       this.defaultClassLoader = defaultClassLoader;
       this.configuration = configuration;
+      this.commandsFactory = commandsFactory;
    }
 
    protected void initLogger()
@@ -124,13 +124,6 @@
 
    protected CommandsFactory commandsFactory;
 
-
-   @Inject
-   public void injectCommandsFactory(CommandsFactory commandsFactory)
-   {
-      this.commandsFactory = commandsFactory;
-   }
-
    protected void marshallObject(Object o, ObjectOutputStream out, Map<Object, Integer> refMap) throws Exception
    {
       if (o != null && o.getClass().isArray() && isKnownType(o.getClass().getComponentType()))

Copied: core/branches/flat/src/main/java/org/jboss/starobrno/marshall/VersionAwareMarshaller.java (from rev 6959, core/branches/flat/src/main/java/org/jboss/cache/marshall/VersionAwareMarshaller.java)
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/marshall/VersionAwareMarshaller.java	                        (rev 0)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/marshall/VersionAwareMarshaller.java	2008-10-15 20:48:28 UTC (rev 6965)
@@ -0,0 +1,155 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2000 - 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.starobrno.marshall;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jboss.starobrno.io.ByteBuffer;
+import org.jboss.starobrno.io.ExposedByteArrayOutputStream;
+import org.jboss.starobrno.factories.annotations.Inject;
+import org.jboss.starobrno.config.Configuration;
+import org.jboss.starobrno.commands.CommandsFactory;
+import org.jboss.util.stream.MarshalledValueInputStream;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.StringTokenizer;
+
+/**
+ * A delegate to various other marshallers like {@link org.jboss.cache.marshall.CacheMarshaller200}.
+ * This delegating marshaller adds versioning information to the stream when marshalling objects and
+ * is able to pick the appropriate marshaller to delegate to based on the versioning information when
+ * unmarshalling objects.
+ *
+ * @author <a href="mailto:manik at jboss.org">Manik Surtani (manik at jboss.org)</a>
+ * @author <a href="mailto:galder.zamarreno at jboss.com">Galder Zamarreno</a>
+ */
+public class VersionAwareMarshaller implements ExtendedMarshaller
+{
+   private static final Log log = LogFactory.getLog(VersionAwareMarshaller.class);
+   private boolean trace = log.isTraceEnabled();
+
+   private static final int VERSION_400 = 40;
+   private static final int CUSTOM_MARSHALLER = 999;
+
+   private CacheMarshallerStarobrno defaultMarshaller;
+
+   ClassLoader defaultClassLoader;
+   private Configuration configuration;
+
+   @Inject
+   public void init(ClassLoader loader, Configuration configuration, CommandsFactory factory)
+   {
+      defaultMarshaller = new CacheMarshallerStarobrno();
+      defaultMarshaller.init(configuration, loader, factory);
+   }
+
+   protected int getCustomMarshallerVersionInt()
+   {
+      return CUSTOM_MARSHALLER;
+   }
+
+   public ByteBuffer objectToBuffer(Object obj) throws Exception
+   {
+      ExposedByteArrayOutputStream baos = new ExposedByteArrayOutputStream(128);
+      ObjectOutputStream out = new ObjectOutputStream(baos);
+
+      out.writeShort(VERSION_400);
+      if (trace) log.trace("Wrote version " + VERSION_400);
+
+      //now marshall the contents of the object
+      defaultMarshaller.objectToObjectStream(obj, out);
+      out.close();
+
+      // and return bytes.
+      return new ByteBuffer(baos.getRawBuffer(), 0, baos.size());
+   }
+
+   public Object objectFromByteBuffer(byte[] bytes, int offset, int len) throws Exception
+   {
+      int versionId;
+      ObjectInputStream in = new MarshalledValueInputStream(new ByteArrayInputStream(bytes, offset, len));
+      try
+      {
+         versionId = in.readShort();
+         if (trace) log.trace("Read version " + versionId);
+      }
+      catch (Exception e)
+      {
+         log.error("Unable to read version id from first two bytes of stream, barfing.");
+         throw e;
+      }
+      return defaultMarshaller.objectFromObjectStream(in);
+   }
+
+   public Object objectFromStream(InputStream is) throws Exception
+   {
+      short versionId;
+      ObjectInputStream in = new MarshalledValueInputStream(is);
+      try
+      {
+         versionId = in.readShort();
+         if (trace) log.trace("Read version " + versionId);
+      }
+      catch (Exception e)
+      {
+         log.error("Unable to read version id from first two bytes of stream, barfing.");
+         throw e;
+      }
+      return defaultMarshaller.objectFromObjectStream(in);
+   }
+
+   public void objectToObjectStream(Object obj, ObjectOutputStream out) throws Exception
+   {
+      out.writeShort(VERSION_400);
+      if (trace) log.trace("Wrote version " + VERSION_400);
+      defaultMarshaller.objectToObjectStream(obj, out);
+   }
+
+   public Object objectFromObjectStream(ObjectInputStream in) throws Exception
+   {
+      int versionId;
+      try
+      {
+         versionId = in.readShort();
+         if (trace) log.trace("Read version " + versionId);
+      }
+      catch (Exception e)
+      {
+         log.error("Unable to read version id from first two bytes of stream, barfing.");
+         throw e;
+      }
+      return defaultMarshaller.objectFromObjectStream(in);
+   }
+
+   public byte[] objectToByteBuffer(Object obj) throws Exception
+   {
+      return defaultMarshaller.objectToByteBuffer(obj);
+   }
+
+   public Object objectFromByteBuffer(byte[] buf) throws Exception
+   {
+      return defaultMarshaller.objectFromByteBuffer(buf);
+   }
+}
\ No newline at end of file


Property changes on: core/branches/flat/src/main/java/org/jboss/starobrno/marshall/VersionAwareMarshaller.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:mergeinfo
   + 
Name: svn:eol-style
   + native

Copied: core/branches/flat/src/main/java/org/jboss/starobrno/util/Util.java (from rev 6959, core/branches/flat/src/main/java/org/jboss/cache/util/Util.java)
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/util/Util.java	                        (rev 0)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/util/Util.java	2008-10-15 20:48:28 UTC (rev 6965)
@@ -0,0 +1,188 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2000 - 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.starobrno.util;
+
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * General utility methods used throughout the JBC code base.
+ *
+ * @author <a href="brian.stansberry at jboss.com">Brian Stansberry</a>
+ * @version $Revision$
+ */
+public final class Util
+{
+   /**
+    * Loads the specified class using this class's classloader, or, if it is <code>null</code>
+    * (i.e. this class was loaded by the bootstrap classloader), the system classloader.
+    * <p/>
+    * If loadtime instrumentation via GenerateInstrumentedClassLoader is used, this
+    * class may be loaded by the bootstrap classloader.
+    * </p>
+    *
+    * @param classname name of the class to load
+    * @return the class
+    * @throws ClassNotFoundException
+    */
+   public static Class loadClass(String classname) throws ClassNotFoundException
+   {
+      ClassLoader cl = Thread.currentThread().getContextClassLoader();
+      if (cl == null)
+         cl = ClassLoader.getSystemClassLoader();
+      return cl.loadClass(classname);
+   }
+
+   @SuppressWarnings("unchecked")
+   public static <T> T getInstance(Class<T> clazz) throws Exception
+   {
+      // first look for a getInstance() constructor
+      T instance;
+      try
+      {
+         Method factoryMethod = clazz.getMethod("getInstance", new Class[]{});
+         instance = (T) factoryMethod.invoke(null);
+      }
+      catch (Exception e)
+      {
+         // no factory method or factory method failed.  Try a constructor.
+         instance = clazz.newInstance();
+      }
+      return instance;
+   }
+
+   @SuppressWarnings("unchecked")
+   public static Object getInstance(String classname) throws Exception
+   {
+      if (classname == null) throw new IllegalArgumentException("Cannot load null class!");
+      Class clazz = loadClass(classname);
+      return getInstance(clazz);
+   }
+
+   /**
+    * Prevent instantiation
+    */
+   private Util()
+   {
+   }
+
+   /**
+    * Calculates the diffs between data maps passed in to {@link org.jboss.cache.notifications.event.NodeModifiedEvent#getData()}
+    * before and after modification.  This only makes sense if the modification type is {@link org.jboss.cache.notifications.event.NodeModifiedEvent.ModificationType#PUT_MAP}.
+    * Refer to {@link org.jboss.cache.notifications.event.NodeModifiedEvent} and {@link org.jboss.cache.notifications.annotation.NodeModified}.
+    *
+    * @param pre  map of data before the node was modified
+    * @param post Map of data after the node was modified
+    * @return MapModifications containing the differences.
+    */
+   public static MapModifications diffNodeData(Map<Object, Object> pre, Map<Object, Object> post)
+   {
+      MapModifications mods = new MapModifications();
+
+      // let's start with what's been added and modified.
+      for (Map.Entry me : post.entrySet())
+      {
+         Object key = me.getKey();
+         Object value = me.getValue();
+         if (pre.containsKey(key))
+         {
+            if (!value.equals(pre.get(key)))
+            {
+               mods.modifiedEntries.put(key, value);
+            }
+         }
+         else
+         {
+            mods.addedEntries.put(key, value);
+         }
+      }
+
+      // now the removed entries.
+      for (Map.Entry me : pre.entrySet())
+      {
+         Object key = me.getKey();
+         if (!post.containsKey(key))
+         {
+            mods.removedEntries.put(key, me.getValue());
+         }
+      }
+
+      return mods;
+   }
+
+   /**
+    * Null-safe equality test.
+    *
+    * @param a first object to compare
+    * @param b second object to compare
+    * @return true if the objects are equals or both null, false otherwise.
+    */
+   public static boolean safeEquals(Object a, Object b)
+   {
+      return (a == b) || (a != null && a.equals(b));
+   }
+
+   /**
+    * Static inner class that holds 3 maps - for data added, removed and modified.
+    */
+   public static class MapModifications
+   {
+      public final Map<Object, Object> addedEntries = new HashMap<Object, Object>();
+      public final Map<Object, Object> removedEntries = new HashMap<Object, Object>();
+      public final Map<Object, Object> modifiedEntries = new HashMap<Object, Object>();
+
+
+      @Override
+      public boolean equals(Object o)
+      {
+         if (this == o) return true;
+         if (o == null || getClass() != o.getClass()) return false;
+
+         MapModifications that = (MapModifications) o;
+
+         if (addedEntries != null ? !addedEntries.equals(that.addedEntries) : that.addedEntries != null) return false;
+         if (modifiedEntries != null ? !modifiedEntries.equals(that.modifiedEntries) : that.modifiedEntries != null)
+            return false;
+         if (removedEntries != null ? !removedEntries.equals(that.removedEntries) : that.removedEntries != null)
+            return false;
+
+         return true;
+      }
+
+      @Override
+      public int hashCode()
+      {
+         int result;
+         result = (addedEntries != null ? addedEntries.hashCode() : 0);
+         result = 31 * result + (removedEntries != null ? removedEntries.hashCode() : 0);
+         result = 31 * result + (modifiedEntries != null ? modifiedEntries.hashCode() : 0);
+         return result;
+      }
+
+      @Override
+      public String toString()
+      {
+         return "Added Entries " + addedEntries + " Removeed Entries " + removedEntries + " Modified Entries " + modifiedEntries;
+      }
+   }
+}


Property changes on: core/branches/flat/src/main/java/org/jboss/starobrno/util/Util.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native




More information about the jbosscache-commits mailing list