[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