Skip to content

Commit

Permalink
Add externalizers for the ConsistentHashFactory implementations
Browse files Browse the repository at this point in the history
Should reduce the number of generated accessor classes (used
by the default serialization).
  • Loading branch information
danberindei authored and anistor committed Oct 26, 2012
1 parent 4d8b606 commit 98d7f03
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 3 deletions.
Expand Up @@ -19,10 +19,15 @@

package org.infinispan.distribution.ch;

import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.io.Serializable;
import java.util.*;

import org.infinispan.commons.hash.Hash;
import org.infinispan.marshall.AbstractExternalizer;
import org.infinispan.marshall.Ids;
import org.infinispan.remoting.transport.Address;
import org.infinispan.util.logging.Log;
import org.infinispan.util.logging.LogFactory;
Expand Down Expand Up @@ -473,4 +478,27 @@ public int getOwned(Address node) {
return stats.getOwned(node);
}
}

public static class Externalizer extends AbstractExternalizer<DefaultConsistentHashFactory> {

@Override
public void writeObject(ObjectOutput output, DefaultConsistentHashFactory chf) throws IOException {
}

@Override
@SuppressWarnings("unchecked")
public DefaultConsistentHashFactory readObject(ObjectInput unmarshaller) throws IOException, ClassNotFoundException {
return new DefaultConsistentHashFactory();
}

@Override
public Integer getId() {
return Ids.DEFAULT_CONSISTENT_HASH_FACTORY;
}

@Override
public Set<Class<? extends DefaultConsistentHashFactory>> getTypeClasses() {
return Collections.<Class<? extends DefaultConsistentHashFactory>>singleton(DefaultConsistentHashFactory.class);
}
}
}
Expand Up @@ -40,7 +40,7 @@ public class ReplicatedConsistentHash implements ConsistentHash {

private final List<Address> members;

private final Set<Integer> theSegment = Collections.singleton(0);
private static final Set<Integer> theSegment = Collections.singleton(0);

public ReplicatedConsistentHash(List<Address> members) {
this.members = new ArrayList<Address>(members);
Expand Down
Expand Up @@ -20,10 +20,16 @@
package org.infinispan.distribution.ch;

import org.infinispan.commons.hash.Hash;
import org.infinispan.marshall.AbstractExternalizer;
import org.infinispan.marshall.Ids;
import org.infinispan.remoting.transport.Address;

import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
Expand Down Expand Up @@ -60,4 +66,27 @@ public ReplicatedConsistentHash union(ReplicatedConsistentHash ch1, ReplicatedCo
membersUnion.addAll(ch2.getMembers());
return new ReplicatedConsistentHash(new ArrayList<Address>(membersUnion));
}

public static class Externalizer extends AbstractExternalizer<ReplicatedConsistentHashFactory> {

@Override
public void writeObject(ObjectOutput output, ReplicatedConsistentHashFactory chf) throws IOException {
}

@Override
@SuppressWarnings("unchecked")
public ReplicatedConsistentHashFactory readObject(ObjectInput unmarshaller) throws IOException, ClassNotFoundException {
return new ReplicatedConsistentHashFactory();
}

@Override
public Integer getId() {
return Ids.REPLICATED_CONSISTENT_HASH_FACTORY;
}

@Override
public Set<Class<? extends ReplicatedConsistentHashFactory>> getTypeClasses() {
return Collections.<Class<? extends ReplicatedConsistentHashFactory>>singleton(ReplicatedConsistentHashFactory.class);
}
}
}
Expand Up @@ -53,7 +53,9 @@
import org.infinispan.container.entries.versioned.VersionedTransientMortalCacheValue;
import org.infinispan.context.Flag;
import org.infinispan.distribution.ch.DefaultConsistentHash;
import org.infinispan.distribution.ch.DefaultConsistentHashFactory;
import org.infinispan.distribution.ch.ReplicatedConsistentHash;
import org.infinispan.distribution.ch.ReplicatedConsistentHashFactory;
import org.infinispan.factories.GlobalComponentRegistry;
import org.infinispan.factories.annotations.ComponentName;
import org.infinispan.factories.annotations.Inject;
Expand Down Expand Up @@ -276,8 +278,6 @@ private void loadInternalMarshallables() {
addInternalExternalizer(new PutOperation.Externalizer());
addInternalExternalizer(new RemoveOperation.Externalizer());
addInternalExternalizer(new ClearOperation.Externalizer());
addInternalExternalizer(new DefaultConsistentHash.Externalizer());
addInternalExternalizer(new ReplicatedConsistentHash.Externalizer());
addInternalExternalizer(new JGroupsTopologyAwareAddress.Externalizer());
addInternalExternalizer(new ByteArrayKey.Externalizer());

Expand All @@ -288,6 +288,10 @@ private void loadInternalMarshallables() {
addInternalExternalizer(new MurmurHash2Compat.Externalizer());
addInternalExternalizer(new MurmurHash3.Externalizer());

addInternalExternalizer(new DefaultConsistentHash.Externalizer());
addInternalExternalizer(new ReplicatedConsistentHash.Externalizer());
addInternalExternalizer(new DefaultConsistentHashFactory.Externalizer());
addInternalExternalizer(new ReplicatedConsistentHashFactory.Externalizer());
addInternalExternalizer(new CacheTopology.Externalizer());
addInternalExternalizer(new CacheJoinInfo.Externalizer());
addInternalExternalizer(new TransactionInfo.Externalizer());
Expand Down

0 comments on commit 98d7f03

Please sign in to comment.