[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