[infinispan-commits] Infinispan SVN: r521 - trunk/core/src/main/java/org/infinispan/marshall/jboss.
infinispan-commits at lists.jboss.org
infinispan-commits at lists.jboss.org
Wed Jul 8 05:03:29 EDT 2009
Author: galder.zamarreno at jboss.com
Date: 2009-07-08 05:03:28 -0400 (Wed, 08 Jul 2009)
New Revision: 521
Modified:
trunk/core/src/main/java/org/infinispan/marshall/jboss/ConstantObjectTable.java
Log:
Make singleton instances use ExternalizerAdapter as well to avoid an instanceof call when reading objects.
Modified: trunk/core/src/main/java/org/infinispan/marshall/jboss/ConstantObjectTable.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/marshall/jboss/ConstantObjectTable.java 2009-07-08 08:30:45 UTC (rev 520)
+++ trunk/core/src/main/java/org/infinispan/marshall/jboss/ConstantObjectTable.java 2009-07-08 09:03:28 UTC (rev 521)
@@ -187,10 +187,12 @@
public void init(RemoteCommandFactory cmdFactory, org.infinispan.marshall.Marshaller ispnMarshaller) {
// Init singletons
- objects.add(RequestIgnoredResponse.INSTANCE);
- writers.put(RequestIgnoredResponse.class, new ExternalizerAdapter(index++, new InstanceWriter()));
- objects.add(UnsuccessfulResponse.INSTANCE);
- writers.put(UnsuccessfulResponse.class, new ExternalizerAdapter(index++, new InstanceWriter()));
+ ExternalizerAdapter adapter = new ExternalizerAdapter(index++, new InstanceWriter(RequestIgnoredResponse.INSTANCE));
+ objects.add(adapter);
+ writers.put(RequestIgnoredResponse.class, adapter);
+ adapter = new ExternalizerAdapter(index++, new InstanceWriter(UnsuccessfulResponse.INSTANCE));
+ objects.add(adapter);
+ writers.put(UnsuccessfulResponse.class, adapter);
try {
for (Map.Entry<String, String> entry : EXTERNALIZERS.entrySet()) {
@@ -226,20 +228,23 @@
}
public Object readObject(Unmarshaller unmarshaller) throws IOException, ClassNotFoundException {
- Object o = objects.get(unmarshaller.readUnsignedByte());
- if (o instanceof ExternalizerAdapter) {
- return ((ExternalizerAdapter) o).readObject(unmarshaller);
- }
- return o;
+ ExternalizerAdapter adapter = (ExternalizerAdapter) objects.get(unmarshaller.readUnsignedByte());
+ return adapter.readObject(unmarshaller);
}
static class InstanceWriter implements Externalizer {
+ private final Object singleton;
+
+ InstanceWriter(Object singleton) {
+ this.singleton = singleton;
+ }
+
public void writeObject(ObjectOutput output, Object object) throws IOException {
// no-op
}
public Object readObject(ObjectInput input) throws IOException, ClassNotFoundException {
- throw new CacheException("Read on constant instances shouldn't be called");
+ return singleton;
}
}
More information about the infinispan-commits
mailing list