Skip to content

Commit

Permalink
Register serializable types via SerializableTypeResolver.
Browse files Browse the repository at this point in the history
  • Loading branch information
kuujo committed Feb 12, 2016
1 parent f03c1e7 commit bbaa794
Show file tree
Hide file tree
Showing 66 changed files with 635 additions and 399 deletions.
Expand Up @@ -46,7 +46,7 @@
* @param <V> The map entry type.
* @author <a href="http://github.com/kuujo">Jordan Halterman</a>
*/
@ResourceTypeInfo(id=-11, stateMachine=MapState.class)
@ResourceTypeInfo(id=-11, stateMachine=MapState.class, typeResolver=MapCommands.TypeResolver.class)
public class DistributedMap<K, V> extends Resource<DistributedMap<K, V>, Resource.Options> {

public DistributedMap(CopycatClient client, Resource.Options options) {
Expand Down
Expand Up @@ -30,7 +30,7 @@
*
* @author <a href="http://github.com/kuujo>Jordan Halterman</a>
*/
@ResourceTypeInfo(id=-12, stateMachine=MultiMapState.class)
@ResourceTypeInfo(id=-12, stateMachine=MultiMapState.class, typeResolver=MultiMapCommands.TypeResolver.class)
public class DistributedMultiMap<K, V> extends Resource<DistributedMultiMap<K, V>, Resource.Options> {

public DistributedMultiMap(CopycatClient client, Resource.Options options) {
Expand Down
Expand Up @@ -29,7 +29,7 @@
* @param <T> The queue value type.
* @author <a href="http://github.com/kuujo">Jordan Halterman</a>
*/
@ResourceTypeInfo(id=-14, stateMachine=QueueState.class)
@ResourceTypeInfo(id=-14, stateMachine=QueueState.class, typeResolver=QueueCommands.TypeResolver.class)
public class DistributedQueue<T> extends Resource<DistributedQueue<T>, Resource.Options> {

public DistributedQueue(CopycatClient client, Resource.Options options) {
Expand Down
Expand Up @@ -30,7 +30,7 @@
* @param <T> The set value type.
* @author <a href="http://github.com/kuujo">Jordan Halterman</a>
*/
@ResourceTypeInfo(id=-13, stateMachine=SetState.class)
@ResourceTypeInfo(id=-13, stateMachine=SetState.class, typeResolver=SetCommands.TypeResolver.class)
public class DistributedSet<T> extends Resource<DistributedSet<T>, Resource.Options> {

public DistributedSet(CopycatClient client, Resource.Options options) {
Expand Down
Expand Up @@ -18,8 +18,9 @@
import io.atomix.catalyst.buffer.BufferInput;
import io.atomix.catalyst.buffer.BufferOutput;
import io.atomix.catalyst.serializer.CatalystSerializable;
import io.atomix.catalyst.serializer.SerializeWith;
import io.atomix.catalyst.serializer.SerializableTypeResolver;
import io.atomix.catalyst.serializer.Serializer;
import io.atomix.catalyst.serializer.SerializerRegistry;
import io.atomix.catalyst.util.Assert;
import io.atomix.copycat.client.Command;
import io.atomix.copycat.client.Query;
Expand Down Expand Up @@ -135,7 +136,6 @@ public void readObject(BufferInput<?> buffer, Serializer serializer) {
/**
* Contains key command.
*/
@SerializeWith(id=60)
public static class ContainsKey extends KeyQuery<Boolean> {
public ContainsKey() {
}
Expand All @@ -148,7 +148,6 @@ public ContainsKey(Object key) {
/**
* Abstract key-based query.
*/
@SerializeWith(id=61)
public static class ContainsValue extends MapQuery<Boolean> {
protected Object value;

Expand Down Expand Up @@ -257,7 +256,6 @@ public void readObject(BufferInput<?> buffer, Serializer serializer) {
/**
* Put command.
*/
@SerializeWith(id=62)
public static class Put extends TtlCommand<Object> {
public Put() {
}
Expand All @@ -274,7 +272,6 @@ public Put(Object key, Object value, long ttl) {
/**
* Put if absent command.
*/
@SerializeWith(id=63)
public static class PutIfAbsent extends TtlCommand<Object> {
public PutIfAbsent() {
}
Expand All @@ -291,7 +288,6 @@ public PutIfAbsent(Object key, Object value, long ttl) {
/**
* Get query.
*/
@SerializeWith(id=64)
public static class Get extends KeyQuery<Object> {
public Get() {
}
Expand All @@ -304,7 +300,6 @@ public Get(Object key) {
/**
* Get or default query.
*/
@SerializeWith(id=65)
public static class GetOrDefault extends KeyQuery<Object> {
private Object defaultValue;

Expand Down Expand Up @@ -341,7 +336,6 @@ public void writeObject(BufferOutput<?> buffer, Serializer serializer) {
/**
* Remove command.
*/
@SerializeWith(id=66)
public static class Remove extends KeyCommand<Object> {

public Remove() {
Expand All @@ -360,7 +354,6 @@ public CompactionMode compaction() {
/**
* Remove if absent command.
*/
@SerializeWith(id=67)
public static class RemoveIfPresent extends KeyValueCommand<Boolean> {

public RemoveIfPresent() {
Expand All @@ -379,7 +372,6 @@ public CompactionMode compaction() {
/**
* Remove command.
*/
@SerializeWith(id=68)
public static class Replace extends TtlCommand<Object> {
public Replace() {
}
Expand All @@ -396,7 +388,6 @@ public Replace(Object key, Object value, long ttl) {
/**
* Remove if absent command.
*/
@SerializeWith(id=69)
public static class ReplaceIfPresent extends TtlCommand<Boolean> {
private Object replace;

Expand Down Expand Up @@ -437,21 +428,18 @@ public void readObject(BufferInput<?> buffer, Serializer serializer) {
/**
* Is empty query.
*/
@SerializeWith(id=70)
public static class IsEmpty extends MapQuery<Boolean> {
}

/**
* Size query.
*/
@SerializeWith(id=71)
public static class Size extends MapQuery<Integer> {
}

/**
* Clear command.
*/
@SerializeWith(id=72)
public static class Clear extends MapCommand<Void> {

@Override
Expand All @@ -460,4 +448,26 @@ public CompactionMode compaction() {
}
}

/**
* Map command type resolver.
*/
public static class TypeResolver implements SerializableTypeResolver {
@Override
public void resolve(SerializerRegistry registry) {
registry.register(ContainsKey.class, -65);
registry.register(ContainsValue.class, -66);
registry.register(Put.class, -67);
registry.register(PutIfAbsent.class, -68);
registry.register(Get.class, -69);
registry.register(GetOrDefault.class, -70);
registry.register(Remove.class, -71);
registry.register(RemoveIfPresent.class, -72);
registry.register(Replace.class, -73);
registry.register(ReplaceIfPresent.class, -74);
registry.register(IsEmpty.class, -75);
registry.register(Size.class, -76);
registry.register(Clear.class, -77);
}
}

}
Expand Up @@ -16,8 +16,10 @@
package io.atomix.collections.state;

import io.atomix.catalyst.util.concurrent.Scheduled;
import io.atomix.collections.DistributedMap;
import io.atomix.copycat.server.Commit;
import io.atomix.resource.ResourceStateMachine;
import io.atomix.resource.ResourceType;

import java.time.Duration;
import java.util.HashMap;
Expand All @@ -32,6 +34,10 @@
public class MapState extends ResourceStateMachine {
private final Map<Object, Value> map = new HashMap<>();

public MapState() {
super(new ResourceType(DistributedMap.class));
}

/**
* Handles a contains key commit.
*/
Expand Down
Expand Up @@ -18,8 +18,9 @@
import io.atomix.catalyst.buffer.BufferInput;
import io.atomix.catalyst.buffer.BufferOutput;
import io.atomix.catalyst.serializer.CatalystSerializable;
import io.atomix.catalyst.serializer.SerializeWith;
import io.atomix.catalyst.serializer.SerializableTypeResolver;
import io.atomix.catalyst.serializer.Serializer;
import io.atomix.catalyst.serializer.SerializerRegistry;
import io.atomix.catalyst.util.Assert;
import io.atomix.copycat.client.Command;
import io.atomix.copycat.client.Query;
Expand Down Expand Up @@ -206,7 +207,6 @@ public void readObject(BufferInput<?> buffer, Serializer serializer) {
/**
* Contains key query.
*/
@SerializeWith(id=75)
public static class ContainsKey extends KeyQuery<Boolean> {
public ContainsKey() {
}
Expand All @@ -219,7 +219,6 @@ public ContainsKey(Object key) {
/**
* Contains entry query.
*/
@SerializeWith(id=76)
public static class ContainsEntry extends EntryQuery<Boolean> {
public ContainsEntry() {
}
Expand All @@ -232,7 +231,6 @@ public ContainsEntry(Object key, Object value) {
/**
* Contains value query.
*/
@SerializeWith(id=77)
public static class ContainsValue extends ValueQuery<Boolean> {
public ContainsValue() {
}
Expand Down Expand Up @@ -324,7 +322,6 @@ public void readObject(BufferInput<?> buffer, Serializer serializer) {
/**
* Put command.
*/
@SerializeWith(id=78)
public static class Put extends TtlCommand<Boolean> {
public Put() {
}
Expand All @@ -341,7 +338,6 @@ public Put(Object key, Object value, long ttl) {
/**
* Get query.
*/
@SerializeWith(id=79)
public static class Get extends KeyQuery<Collection> {
public Get() {
}
Expand All @@ -354,7 +350,6 @@ public Get(Object key) {
/**
* Remove command.
*/
@SerializeWith(id=80)
public static class Remove extends EntryCommand<Object> {
public Remove() {
}
Expand All @@ -376,7 +371,6 @@ public CompactionMode compaction() {
/**
* Remove command.
*/
@SerializeWith(id=81)
public static class RemoveValue extends MultiMapCommand<Void> {
private Object value;

Expand Down Expand Up @@ -413,14 +407,12 @@ public void readObject(BufferInput<?> buffer, Serializer serializer) {
/**
* Is empty query.
*/
@SerializeWith(id=82)
public static class IsEmpty extends MultiMapQuery<Boolean> {
}

/**
* Size query.
*/
@SerializeWith(id=83)
public static class Size extends KeyQuery<Integer> {
public Size() {
}
Expand All @@ -433,7 +425,6 @@ public Size(Object key) {
/**
* Clear command.
*/
@SerializeWith(id=84)
public static class Clear extends MultiMapCommand<Void> {

@Override
Expand All @@ -442,4 +433,23 @@ public CompactionMode compaction() {
}
}

/**
* Multi-map command type resolver.
*/
public static class TypeResolver implements SerializableTypeResolver {
@Override
public void resolve(SerializerRegistry registry) {
registry.register(ContainsKey.class, -80);
registry.register(ContainsEntry.class, -81);
registry.register(ContainsValue.class, -82);
registry.register(Put.class, -83);
registry.register(Get.class, -84);
registry.register(Remove.class, -85);
registry.register(RemoveValue.class, -86);
registry.register(IsEmpty.class, -87);
registry.register(Size.class, -88);
registry.register(Clear.class, -89);
}
}

}
Expand Up @@ -16,8 +16,10 @@
package io.atomix.collections.state;

import io.atomix.catalyst.util.concurrent.Scheduled;
import io.atomix.collections.DistributedMultiMap;
import io.atomix.copycat.server.Commit;
import io.atomix.resource.ResourceStateMachine;
import io.atomix.resource.ResourceType;

import java.time.Duration;
import java.util.*;
Expand All @@ -31,6 +33,10 @@ public class MultiMapState extends ResourceStateMachine {
private final Map<Object, Map<Object, Commit<? extends MultiMapCommands.TtlCommand>>> map = new HashMap<>();
private final Map<Long, Scheduled> timers = new HashMap<>();

public MultiMapState() {
super(new ResourceType(DistributedMultiMap.class));
}

/**
* Handles a contains key commit.
*/
Expand Down

0 comments on commit bbaa794

Please sign in to comment.