Merge pull request #35 from arkuksin/hazelcast

Implement StreamSerializer for Car object.
This commit is contained in:
Tom Hombergs
2020-07-01 06:47:10 +10:00
committed by GitHub
3 changed files with 40 additions and 3 deletions

View File

@@ -2,10 +2,12 @@ package io.refectoring.cache.embedded;
import com.hazelcast.config.Config;
import com.hazelcast.config.MapConfig;
import com.hazelcast.config.SerializerConfig;
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.map.IMap;
import io.refectoring.cache.embedded.rest.Car;
import io.refectoring.cache.embedded.serializer.CarSerializer;
import org.springframework.stereotype.Component;
@Component
@@ -27,9 +29,16 @@ public class CacheClient {
public Config createConfig() {
Config config = new Config();
config.addMapConfig(mapConfig());
config.getSerializationConfig().addSerializerConfig(serializerConfig());
return config;
}
private SerializerConfig serializerConfig() {
return new SerializerConfig()
.setImplementation(new CarSerializer())
.setTypeClass(Car.class);
}
private MapConfig mapConfig() {
MapConfig mapConfig = new MapConfig(CARS);
mapConfig.setTimeToLiveSeconds(360);

View File

@@ -5,13 +5,11 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Car implements Serializable {
public class Car {
private String number;
private String name;
}

View File

@@ -0,0 +1,30 @@
package io.refectoring.cache.embedded.serializer;
import com.hazelcast.nio.ObjectDataInput;
import com.hazelcast.nio.ObjectDataOutput;
import com.hazelcast.nio.serialization.StreamSerializer;
import io.refectoring.cache.embedded.rest.Car;
import java.io.IOException;
public class CarSerializer implements StreamSerializer<Car> {
@Override
public void write(ObjectDataOutput out, Car object) throws IOException {
out.writeUTF(object.getName());
out.writeUTF(object.getNumber());
}
@Override
public Car read(ObjectDataInput in) throws IOException {
return Car.builder()
.name(in.readUTF())
.number(in.readUTF())
.build();
}
@Override
public int getTypeId() {
return 1;
}
}