[infinispan-commits] Infinispan SVN: r322 - in trunk/core/src/main/java/org/infinispan/marshall: jboss and 1 other directories.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Tue May 19 12:59:52 EDT 2009


Author: galder.zamarreno at jboss.com
Date: 2009-05-19 12:59:52 -0400 (Tue, 19 May 2009)
New Revision: 322

Added:
   trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/ImmortalCacheEntryExternalizer.java
   trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/ImmortalCacheValueExternalizer.java
   trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/MortalCacheEntryExternalizer.java
   trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/MortalCacheValueExternalizer.java
   trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/TransientCacheEntryExternalizer.java
   trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/TransientCacheValueExternalizer.java
   trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/TransientMortalCacheEntryExternalizer.java
   trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/TransientMortalCacheValueExternalizer.java
Modified:
   trunk/core/src/main/java/org/infinispan/marshall/MarshallerImpl.java
   trunk/core/src/main/java/org/infinispan/marshall/jboss/ExternalizerClassFactory.java
   trunk/core/src/main/java/org/infinispan/marshall/jboss/MagicNumberClassTable.java
   trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/InternalCachedEntryExternalizer.java
   trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/UnsuccessfulResponseExternalizer.java
Log:
Ported *CacheEntry and *CacheValue perf improvements to JBoss Marshaller and fixed MarshallingImpl implementations of these.

Modified: trunk/core/src/main/java/org/infinispan/marshall/MarshallerImpl.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/marshall/MarshallerImpl.java	2009-05-19 16:13:14 UTC (rev 321)
+++ trunk/core/src/main/java/org/infinispan/marshall/MarshallerImpl.java	2009-05-19 16:59:52 UTC (rev 322)
@@ -27,12 +27,16 @@
 import org.infinispan.commands.ReplicableCommand;
 import org.infinispan.commands.write.WriteCommand;
 import org.infinispan.container.entries.ImmortalCacheEntry;
+import org.infinispan.container.entries.ImmortalCacheValue;
 import org.infinispan.container.entries.InternalCacheEntry;
 import org.infinispan.container.entries.InternalCacheValue;
 import org.infinispan.container.entries.InternalEntryFactory;
 import org.infinispan.container.entries.MortalCacheEntry;
+import org.infinispan.container.entries.MortalCacheValue;
 import org.infinispan.container.entries.TransientCacheEntry;
+import org.infinispan.container.entries.TransientCacheValue;
 import org.infinispan.container.entries.TransientMortalCacheEntry;
+import org.infinispan.container.entries.TransientMortalCacheValue;
 import org.infinispan.io.ByteBuffer;
 import org.infinispan.io.ExposedByteArrayOutputStream;
 import org.infinispan.io.UnsignedNumeric;
@@ -307,23 +311,23 @@
    }
 
    private void marshallInternalCacheValue(InternalCacheValue icv, ObjectOutput out, Map<Object, Integer> refMap) throws IOException {
-      if (icv.getClass().equals(ImmortalCacheEntry.class)) {
+      if (icv.getClass().equals(ImmortalCacheValue.class)) {
          out.writeByte(MAGICNUMBER_ICV_IMMORTAL);
          marshallObject(icv.getValue(), out, refMap);
 
-      } else if (icv.getClass().equals(MortalCacheEntry.class)) {
+      } else if (icv.getClass().equals(MortalCacheValue.class)) {
          out.writeByte(MAGICNUMBER_ICV_MORTAL);
          marshallObject(icv.getValue(), out, refMap);
          writeUnsignedLong(out, icv.getCreated());
          out.writeLong(icv.getLifespan()); // could be negative so should not use unsigned longs
 
-      } else if (icv.getClass().equals(TransientCacheEntry.class)) {
+      } else if (icv.getClass().equals(TransientCacheValue.class)) {
          out.writeByte(MAGICNUMBER_ICV_TRANSIENT);
          marshallObject(icv.getValue(), out, refMap);
          writeUnsignedLong(out, icv.getLastUsed());
          out.writeLong(icv.getMaxIdle()); // could be negative so should not use unsigned longs
 
-      } else if (icv.getClass().equals(TransientMortalCacheEntry.class)) {
+      } else if (icv.getClass().equals(TransientMortalCacheValue.class)) {
          out.writeByte(MAGICNUMBER_ICV_TRANSIENT_MORTAL);
          marshallObject(icv.getValue(), out, refMap);
          writeUnsignedLong(out, icv.getCreated());
@@ -583,17 +587,17 @@
    private InternalCacheValue unmarshallInternalCacheValue(byte magic, ObjectInput in, UnmarshalledReferences refMap) throws IOException, ClassNotFoundException {
       Object v = unmarshallObject(in, refMap);
       switch (magic) {
-         case MAGICNUMBER_ICE_IMMORTAL:
+         case MAGICNUMBER_ICV_IMMORTAL:
             return InternalEntryFactory.createValue(v);
-         case MAGICNUMBER_ICE_MORTAL:
+         case MAGICNUMBER_ICV_MORTAL:
             return InternalEntryFactory.createValue(v,
                                                     readUnsignedLong(in), (Long) unmarshallObject(in, refMap),
                                                     -1, -1);
-         case MAGICNUMBER_ICE_TRANSIENT:
+         case MAGICNUMBER_ICV_TRANSIENT:
             return InternalEntryFactory.createValue(v,
                                                     -1, -1,
                                                     readUnsignedLong(in), (Long) unmarshallObject(in, refMap));
-         case MAGICNUMBER_ICE_TRANSIENT_MORTAL:
+         case MAGICNUMBER_ICV_TRANSIENT_MORTAL:
             return InternalEntryFactory.createValue(v,
                                                     readUnsignedLong(in), (Long) unmarshallObject(in, refMap),
                                                     readUnsignedLong(in), (Long) unmarshallObject(in, refMap));

Modified: trunk/core/src/main/java/org/infinispan/marshall/jboss/ExternalizerClassFactory.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/marshall/jboss/ExternalizerClassFactory.java	2009-05-19 16:13:14 UTC (rev 321)
+++ trunk/core/src/main/java/org/infinispan/marshall/jboss/ExternalizerClassFactory.java	2009-05-19 16:59:52 UTC (rev 322)
@@ -24,6 +24,7 @@
 import net.jcip.annotations.Immutable;
 import org.infinispan.CacheException;
 import org.infinispan.atomic.AtomicHashMap;
+import org.infinispan.commands.LockControlCommand;
 import org.infinispan.commands.control.StateTransferControlCommand;
 import org.infinispan.commands.read.GetKeyValueCommand;
 import org.infinispan.commands.remote.ClusteredGetCommand;
@@ -40,15 +41,18 @@
 import org.infinispan.commands.write.RemoveCommand;
 import org.infinispan.commands.write.ReplaceCommand;
 import org.infinispan.container.entries.ImmortalCacheEntry;
+import org.infinispan.container.entries.ImmortalCacheValue;
 import org.infinispan.container.entries.MortalCacheEntry;
+import org.infinispan.container.entries.MortalCacheValue;
 import org.infinispan.container.entries.TransientCacheEntry;
+import org.infinispan.container.entries.TransientCacheValue;
 import org.infinispan.container.entries.TransientMortalCacheEntry;
+import org.infinispan.container.entries.TransientMortalCacheValue;
 import org.infinispan.marshall.MarshalledValue;
 import org.infinispan.marshall.jboss.externalizers.*;
 import org.infinispan.remoting.responses.ExceptionResponse;
 import org.infinispan.remoting.responses.ExtendedResponse;
 import org.infinispan.remoting.responses.SuccessfulResponse;
-import org.infinispan.remoting.responses.UnsuccessfulResponse;
 import org.infinispan.remoting.transport.Transport;
 import org.infinispan.remoting.transport.jgroups.JGroupsAddress;
 import org.infinispan.transaction.xa.GlobalTransaction;
@@ -93,7 +97,6 @@
       EXTERNALIZERS.put("org.infinispan.transaction.TransactionLog$LogEntry", TransactionLogExternalizer.class.getName());
       EXTERNALIZERS.put(ExtendedResponse.class.getName(), ExtendedResponseExternalizer.class.getName());
       EXTERNALIZERS.put(SuccessfulResponse.class.getName(), SuccessfulResponseExternalizer.class.getName());
-      EXTERNALIZERS.put(UnsuccessfulResponse.class.getName(), UnsuccessfulResponseExternalizer.class.getName());
       EXTERNALIZERS.put(ExceptionResponse.class.getName(), ExceptionResponseExternalizer.class.getName());
       EXTERNALIZERS.put(AtomicHashMap.class.getName(), DeltaAwareExternalizer.class.getName());
 
@@ -111,13 +114,19 @@
       EXTERNALIZERS.put(PrepareCommand.class.getName(), ReplicableCommandExternalizer.class.getName());
       EXTERNALIZERS.put(CommitCommand.class.getName(), ReplicableCommandExternalizer.class.getName());
       EXTERNALIZERS.put(RollbackCommand.class.getName(), ReplicableCommandExternalizer.class.getName());
+      EXTERNALIZERS.put(LockControlCommand.class.getName(), ReplicableCommandExternalizer.class.getName());
 
-      EXTERNALIZERS.put(ImmortalCacheEntry.class.getName(), InternalCachedEntryExternalizer.class.getName());
-      EXTERNALIZERS.put(MortalCacheEntry.class.getName(), InternalCachedEntryExternalizer.class.getName());
-      EXTERNALIZERS.put(TransientCacheEntry.class.getName(), InternalCachedEntryExternalizer.class.getName());
-      EXTERNALIZERS.put(TransientMortalCacheEntry.class.getName(), InternalCachedEntryExternalizer.class.getName());
+      EXTERNALIZERS.put(ImmortalCacheEntry.class.getName(), ImmortalCacheEntryExternalizer.class.getName());
+      EXTERNALIZERS.put(MortalCacheEntry.class.getName(), MortalCacheEntryExternalizer.class.getName());
+      EXTERNALIZERS.put(TransientCacheEntry.class.getName(), TransientCacheEntryExternalizer.class.getName());
+      EXTERNALIZERS.put(TransientMortalCacheEntry.class.getName(), TransientMortalCacheEntryExternalizer.class.getName());    
 
       EXTERNALIZERS.put(InvalidateL1Command.class.getName(), ReplicableCommandExternalizer.class.getName());
+      
+      EXTERNALIZERS.put(ImmortalCacheValue.class.getName(), ImmortalCacheValueExternalizer.class.getName());
+      EXTERNALIZERS.put(MortalCacheValue.class.getName(), MortalCacheValueExternalizer.class.getName());
+      EXTERNALIZERS.put(TransientCacheValue.class.getName(), TransientCacheValueExternalizer.class.getName());
+      EXTERNALIZERS.put(TransientMortalCacheValue.class.getName(), TransientMortalCacheValueExternalizer.class.getName());
    }
 
    private final Map<Class<?>, Externalizer> externalizers = new WeakHashMap<Class<?>, Externalizer>();

Modified: trunk/core/src/main/java/org/infinispan/marshall/jboss/MagicNumberClassTable.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/marshall/jboss/MagicNumberClassTable.java	2009-05-19 16:13:14 UTC (rev 321)
+++ trunk/core/src/main/java/org/infinispan/marshall/jboss/MagicNumberClassTable.java	2009-05-19 16:59:52 UTC (rev 322)
@@ -24,6 +24,7 @@
 import net.jcip.annotations.Immutable;
 import org.infinispan.CacheException;
 import org.infinispan.atomic.AtomicHashMap;
+import org.infinispan.commands.LockControlCommand;
 import org.infinispan.commands.control.StateTransferControlCommand;
 import org.infinispan.commands.read.GetKeyValueCommand;
 import org.infinispan.commands.remote.ClusteredGetCommand;
@@ -40,9 +41,13 @@
 import org.infinispan.commands.write.RemoveCommand;
 import org.infinispan.commands.write.ReplaceCommand;
 import org.infinispan.container.entries.ImmortalCacheEntry;
+import org.infinispan.container.entries.ImmortalCacheValue;
 import org.infinispan.container.entries.MortalCacheEntry;
+import org.infinispan.container.entries.MortalCacheValue;
 import org.infinispan.container.entries.TransientCacheEntry;
+import org.infinispan.container.entries.TransientCacheValue;
 import org.infinispan.container.entries.TransientMortalCacheEntry;
+import org.infinispan.container.entries.TransientMortalCacheValue;
 import org.infinispan.marshall.MarshalledValue;
 import org.infinispan.remoting.responses.ExceptionResponse;
 import org.infinispan.remoting.responses.ExtendedResponse;
@@ -121,6 +126,13 @@
       MAGIC_NUMBERS.put(TransientMortalCacheEntry.class.getName(), 37);
       
       MAGIC_NUMBERS.put(InvalidateL1Command.class.getName(), 38);
+
+      MAGIC_NUMBERS.put(ImmortalCacheValue.class.getName(), 39);
+      MAGIC_NUMBERS.put(MortalCacheValue.class.getName(), 40);
+      MAGIC_NUMBERS.put(TransientCacheValue.class.getName(), 41);
+      MAGIC_NUMBERS.put(TransientMortalCacheValue.class.getName(), 42);
+      
+      MAGIC_NUMBERS.put(LockControlCommand.class.getName(), 43);
    }
 
    private final Map<Class<?>, Writer> writers = new WeakHashMap<Class<?>, Writer>();

Added: trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/ImmortalCacheEntryExternalizer.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/ImmortalCacheEntryExternalizer.java	                        (rev 0)
+++ trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/ImmortalCacheEntryExternalizer.java	2009-05-19 16:59:52 UTC (rev 322)
@@ -0,0 +1,61 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.infinispan.marshall.jboss.externalizers;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import net.jcip.annotations.Immutable;
+
+import org.infinispan.container.entries.ImmortalCacheEntry;
+import org.infinispan.container.entries.InternalEntryFactory;
+import org.jboss.marshalling.Creator;
+import org.jboss.marshalling.Externalizer;
+
+/**
+ * ImmortalCacheEntryExternalizer.
+ * 
+ * @author Galder Zamarreño
+ */
+ at Immutable
+public class ImmortalCacheEntryExternalizer implements Externalizer {
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -5694009544854594909L;
+
+   public void writeExternal(Object subject, ObjectOutput output) throws IOException {
+      ImmortalCacheEntry ice = (ImmortalCacheEntry) subject;
+      output.writeObject(ice.getKey());
+      output.writeObject(ice.getValue());
+   }
+   
+   public Object createExternal(Class<?> subjectType, ObjectInput input, Creator defaultCreator)
+         throws IOException, ClassNotFoundException {
+      Object k = input.readObject();
+      Object v = input.readObject();
+      return InternalEntryFactory.create(k, v);
+   }
+   
+   public void readExternal(Object subject, ObjectInput input) throws IOException, ClassNotFoundException {
+      // No-op
+   }
+}

Added: trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/ImmortalCacheValueExternalizer.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/ImmortalCacheValueExternalizer.java	                        (rev 0)
+++ trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/ImmortalCacheValueExternalizer.java	2009-05-19 16:59:52 UTC (rev 322)
@@ -0,0 +1,57 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.infinispan.marshall.jboss.externalizers;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.infinispan.container.entries.ImmortalCacheValue;
+import org.infinispan.container.entries.InternalEntryFactory;
+import org.jboss.marshalling.Creator;
+import org.jboss.marshalling.Externalizer;
+
+/**
+ * ImmortalCacheValueExternalizer.
+ * 
+ * @author Galder Zamarreño
+ */
+public class ImmortalCacheValueExternalizer implements Externalizer {
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 1196375204861850495L;
+
+   public void writeExternal(Object subject, ObjectOutput output) throws IOException {
+      ImmortalCacheValue icv = (ImmortalCacheValue) subject;
+      output.writeObject(icv.getValue());
+   }
+   
+   public Object createExternal(Class<?> subjectType, ObjectInput input, Creator defaultCreator)
+         throws IOException, ClassNotFoundException {
+      Object v = input.readObject();
+      return InternalEntryFactory.createValue(v);
+   }
+   
+   public void readExternal(Object subject, ObjectInput input) throws IOException, ClassNotFoundException {
+      // No-op
+   }
+
+}

Modified: trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/InternalCachedEntryExternalizer.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/InternalCachedEntryExternalizer.java	2009-05-19 16:13:14 UTC (rev 321)
+++ trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/InternalCachedEntryExternalizer.java	2009-05-19 16:59:52 UTC (rev 322)
@@ -37,8 +37,10 @@
  *
  * @author Galder Zamarreño
  * @since 4.0
+ * @deprecated Use individual cached entry externalizers instead
  */
 @Immutable
+ at Deprecated
 public class InternalCachedEntryExternalizer implements Externalizer {
 
    /**

Added: trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/MortalCacheEntryExternalizer.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/MortalCacheEntryExternalizer.java	                        (rev 0)
+++ trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/MortalCacheEntryExternalizer.java	2009-05-19 16:59:52 UTC (rev 322)
@@ -0,0 +1,63 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.infinispan.marshall.jboss.externalizers;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.infinispan.container.entries.InternalEntryFactory;
+import org.infinispan.container.entries.MortalCacheEntry;
+import org.infinispan.io.UnsignedNumeric;
+import org.jboss.marshalling.Creator;
+import org.jboss.marshalling.Externalizer;
+
+/**
+ * MortalCacheEntryExternalizer.
+ * 
+ * @author Galder Zamarreño
+ */
+public class MortalCacheEntryExternalizer implements Externalizer {
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -6500630714670073716L;
+
+   public void writeExternal(Object subject, ObjectOutput output) throws IOException {
+      MortalCacheEntry ice = (MortalCacheEntry) subject;
+      output.writeObject(ice.getKey());
+      output.writeObject(ice.getValue());
+      UnsignedNumeric.writeUnsignedLong(output, ice.getCreated());
+      output.writeLong(ice.getLifespan()); // could be negative so should not use unsigned longs
+   }
+   
+   public Object createExternal(Class<?> subjectType, ObjectInput input, Creator defaultCreator)
+         throws IOException, ClassNotFoundException {
+      Object k = input.readObject();
+      Object v = input.readObject();
+      long created = UnsignedNumeric.readUnsignedLong(input);
+      Long lifespan = input.readLong();
+      return InternalEntryFactory.create(k, v, created, lifespan, -1, -1);
+   }
+   
+   public void readExternal(Object subject, ObjectInput input) throws IOException, ClassNotFoundException {
+      // No-op
+   }
+}

Added: trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/MortalCacheValueExternalizer.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/MortalCacheValueExternalizer.java	                        (rev 0)
+++ trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/MortalCacheValueExternalizer.java	2009-05-19 16:59:52 UTC (rev 322)
@@ -0,0 +1,61 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.infinispan.marshall.jboss.externalizers;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.infinispan.container.entries.InternalEntryFactory;
+import org.infinispan.container.entries.MortalCacheValue;
+import org.infinispan.io.UnsignedNumeric;
+import org.jboss.marshalling.Creator;
+import org.jboss.marshalling.Externalizer;
+
+/**
+ * MortalCacheValueExternalizer.
+ * 
+ * @author Galder Zamarreño
+ */
+public class MortalCacheValueExternalizer implements Externalizer {
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 7962755251611394481L;
+
+   public void writeExternal(Object subject, ObjectOutput output) throws IOException {
+      MortalCacheValue icv = (MortalCacheValue) subject;
+      output.writeObject(icv.getValue());
+      UnsignedNumeric.writeUnsignedLong(output, icv.getCreated());
+      output.writeLong(icv.getLifespan()); // could be negative so should not use unsigned longs
+   }
+   
+   public Object createExternal(Class<?> subjectType, ObjectInput input, Creator defaultCreator)
+         throws IOException, ClassNotFoundException {
+      Object v = input.readObject();
+      long created = UnsignedNumeric.readUnsignedLong(input);
+      Long lifespan = input.readLong();
+      return InternalEntryFactory.createValue(v, created, lifespan, -1, -1);
+   }
+   
+   public void readExternal(Object subject, ObjectInput input) throws IOException, ClassNotFoundException {
+      // No-op
+   }
+}

Added: trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/TransientCacheEntryExternalizer.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/TransientCacheEntryExternalizer.java	                        (rev 0)
+++ trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/TransientCacheEntryExternalizer.java	2009-05-19 16:59:52 UTC (rev 322)
@@ -0,0 +1,63 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.infinispan.marshall.jboss.externalizers;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.infinispan.container.entries.InternalEntryFactory;
+import org.infinispan.container.entries.TransientCacheEntry;
+import org.infinispan.io.UnsignedNumeric;
+import org.jboss.marshalling.Creator;
+import org.jboss.marshalling.Externalizer;
+
+/**
+ * TransientCacheEntryExternalizer.
+ * 
+ * @author Galder Zamarreño
+ */
+public class TransientCacheEntryExternalizer implements Externalizer {
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -1076893995615398371L;
+
+   public void writeExternal(Object subject, ObjectOutput output) throws IOException {
+      TransientCacheEntry ice = (TransientCacheEntry) subject;
+      output.writeObject(ice.getKey());
+      output.writeObject(ice.getValue());
+      UnsignedNumeric.writeUnsignedLong(output, ice.getLastUsed());
+      output.writeLong(ice.getMaxIdle()); // could be negative so should not use unsigned longs
+   }
+   
+   public Object createExternal(Class<?> subjectType, ObjectInput input, Creator defaultCreator)
+         throws IOException, ClassNotFoundException {
+      Object k = input.readObject();
+      Object v = input.readObject();
+      long lastUsed = UnsignedNumeric.readUnsignedLong(input);
+      Long maxIdle = input.readLong();
+      return InternalEntryFactory.create(k, v, -1, -1, lastUsed, maxIdle);
+   }
+   
+   public void readExternal(Object subject, ObjectInput input) throws IOException, ClassNotFoundException {
+      // No-op
+   }
+}

Added: trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/TransientCacheValueExternalizer.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/TransientCacheValueExternalizer.java	                        (rev 0)
+++ trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/TransientCacheValueExternalizer.java	2009-05-19 16:59:52 UTC (rev 322)
@@ -0,0 +1,62 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.infinispan.marshall.jboss.externalizers;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.infinispan.container.entries.InternalEntryFactory;
+import org.infinispan.container.entries.TransientCacheValue;
+import org.infinispan.io.UnsignedNumeric;
+import org.jboss.marshalling.Creator;
+import org.jboss.marshalling.Externalizer;
+
+/**
+ * TransientCacheValueExternalizer.
+ * 
+ * @author Galder Zamarreño
+ */
+public class TransientCacheValueExternalizer implements Externalizer {
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 7600812173331344919L;
+
+   public void writeExternal(Object subject, ObjectOutput output) throws IOException {
+      TransientCacheValue icv = (TransientCacheValue) subject;
+      output.writeObject(icv.getValue());
+      UnsignedNumeric.writeUnsignedLong(output, icv.getLastUsed());
+      output.writeLong(icv.getMaxIdle()); // could be negative so should not use unsigned longs
+   }
+   
+   public Object createExternal(Class<?> subjectType, ObjectInput input, Creator defaultCreator)
+         throws IOException, ClassNotFoundException {
+      Object v = input.readObject();
+      long lastUsed = UnsignedNumeric.readUnsignedLong(input);
+      Long maxIdle = input.readLong();
+      return InternalEntryFactory.createValue(v, -1, -1, lastUsed, maxIdle);
+   }
+   
+   public void readExternal(Object subject, ObjectInput input) throws IOException, ClassNotFoundException {
+      // No-op
+   }
+
+}

Added: trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/TransientMortalCacheEntryExternalizer.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/TransientMortalCacheEntryExternalizer.java	                        (rev 0)
+++ trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/TransientMortalCacheEntryExternalizer.java	2009-05-19 16:59:52 UTC (rev 322)
@@ -0,0 +1,67 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.infinispan.marshall.jboss.externalizers;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.infinispan.container.entries.InternalEntryFactory;
+import org.infinispan.container.entries.TransientMortalCacheEntry;
+import org.infinispan.io.UnsignedNumeric;
+import org.jboss.marshalling.Creator;
+import org.jboss.marshalling.Externalizer;
+
+/**
+ * TransientMortalCacheEntryExternalizer.
+ * 
+ * @author Galder Zamarreño
+ */
+public class TransientMortalCacheEntryExternalizer implements Externalizer {
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -1076893995615398371L;
+
+   public void writeExternal(Object subject, ObjectOutput output) throws IOException {
+      TransientMortalCacheEntry ice = (TransientMortalCacheEntry) subject;
+      output.writeObject(ice.getKey());
+      output.writeObject(ice.getValue());
+      UnsignedNumeric.writeUnsignedLong(output, ice.getCreated());
+      output.writeLong(ice.getLifespan()); // could be negative so should not use unsigned longs
+      UnsignedNumeric.writeUnsignedLong(output, ice.getLastUsed());
+      output.writeLong(ice.getMaxIdle()); // could be negative so should not use unsigned longs
+   }
+   
+   public Object createExternal(Class<?> subjectType, ObjectInput input, Creator defaultCreator)
+         throws IOException, ClassNotFoundException {
+      Object k = input.readObject();
+      Object v = input.readObject();
+      long created = UnsignedNumeric.readUnsignedLong(input);
+      Long lifespan = input.readLong();
+      long lastUsed = UnsignedNumeric.readUnsignedLong(input);
+      Long maxIdle = input.readLong();
+      return InternalEntryFactory.create(k, v, created, lifespan, lastUsed, maxIdle);
+   }
+   
+   public void readExternal(Object subject, ObjectInput input) throws IOException, ClassNotFoundException {
+      // No-op
+   }
+}

Added: trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/TransientMortalCacheValueExternalizer.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/TransientMortalCacheValueExternalizer.java	                        (rev 0)
+++ trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/TransientMortalCacheValueExternalizer.java	2009-05-19 16:59:52 UTC (rev 322)
@@ -0,0 +1,66 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.infinispan.marshall.jboss.externalizers;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.infinispan.container.entries.InternalEntryFactory;
+import org.infinispan.container.entries.TransientMortalCacheValue;
+import org.infinispan.io.UnsignedNumeric;
+import org.jboss.marshalling.Creator;
+import org.jboss.marshalling.Externalizer;
+
+/**
+ * TransientMortalCacheValueExternalizer.
+ * 
+ * @author Galder Zamarreño
+ */
+public class TransientMortalCacheValueExternalizer implements Externalizer {
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 8471189995556621061L;
+
+   public void writeExternal(Object subject, ObjectOutput output) throws IOException {
+      TransientMortalCacheValue icv = (TransientMortalCacheValue) subject;
+      output.writeObject(icv.getValue());
+      UnsignedNumeric.writeUnsignedLong(output, icv.getCreated());
+      output.writeLong(icv.getLifespan()); // could be negative so should not use unsigned longs
+      UnsignedNumeric.writeUnsignedLong(output, icv.getLastUsed());
+      output.writeLong(icv.getMaxIdle()); // could be negative so should not use unsigned longs
+   }
+   
+   public Object createExternal(Class<?> subjectType, ObjectInput input, Creator defaultCreator)
+         throws IOException, ClassNotFoundException {
+      Object v = input.readObject();
+      long created = UnsignedNumeric.readUnsignedLong(input);
+      Long lifespan = input.readLong();
+      long lastUsed = UnsignedNumeric.readUnsignedLong(input);
+      Long maxIdle = input.readLong();
+      return InternalEntryFactory.createValue(v, created, lifespan, lastUsed, maxIdle);
+   }
+   
+   public void readExternal(Object subject, ObjectInput input) throws IOException, ClassNotFoundException {
+      // No-op
+   }
+
+}

Modified: trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/UnsuccessfulResponseExternalizer.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/UnsuccessfulResponseExternalizer.java	2009-05-19 16:13:14 UTC (rev 321)
+++ trunk/core/src/main/java/org/infinispan/marshall/jboss/externalizers/UnsuccessfulResponseExternalizer.java	2009-05-19 16:59:52 UTC (rev 322)
@@ -13,7 +13,7 @@
  *
  * @author Manik Surtani
  * @since 4.0
- * @deprecated Not needed RequestIgnoredResponseExternalizer, it's more 
+ * @deprecated Not needed UnsuccessfulResponseExternalizer, it's more 
  * performant adding singleton instance to ObjectTable, see 
  * RequestIgnoredResponse example in CustomObjectTable
  */




More information about the infinispan-commits mailing list