package com.aol.micro.server.s3.data;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import com.aol.micro.server.distributed.DistributedMap;
import lombok.AllArgsConstructor;
@AllArgsConstructor
@Component
public class S3DistributedMapClient<T> implements DistributedMap<T> {
private final S3Reader reader;
private final S3ObjectWriter writer;
private final S3Deleter deleter;
@Autowired
public S3DistributedMapClient(@Value("${s3.distributed.map.bucket:}") String bucket, S3Utils utils) {
this.reader = utils.reader(bucket);
this.writer = utils.writer(bucket);
this.deleter = utils.deleter(bucket);
}
@Override
public boolean put(String key, T value) {
return writer.put(key, value)
.isSuccess();
}
@Override
public Optional<T> get(String key) {
return reader.<T> getAsObject(key)
.toOptional();
}
@Override
public void delete(String key) {
deleter.delete(key);
}
}