Hazelcast IAtomicReference.alter lambda - PullRequest
       47

Hazelcast IAtomicReference.alter lambda

0 голосов
/ 21 ноября 2018

Я пытаюсь заполнить другую атомарную ссылку на основе существующего кэша.Я хочу использовать лямбды для простоты кода (требуется меньше кода котла), но, похоже, он не работает.

Это работает:

class PutFunction implements IFunction<Graph<Long,Long>,Graph<Long,Long>>{
    private Long key;

    public PutFunction(Long key) {
        this.key = key;
    }

    public Graph<Long,Long> apply(Graph<Long,Long> graph){
        graph.addVertex(key);
        return graph;
    }
}

getGraphCache().alter(new IFunction<Graph<Long,Long>,Graph<Long,Long>>(){
    public Graph<Long,Long> apply(Graph<Long,Long> graph){
       graph.addVertex(event.getValue().getId());
       return graph;
    }
});

Когда я переключаюсь на лямбда-синтаксис ниже, он выдает ошибку сериализации:

getGraphCache().alter((IFunction<Graph<Long, Long>, Graph<Long, Long>>) graph -> {
   graph.removeVertex(event.getValue().getId());
   return graph;
});

ОШИБКАcom.hazelcast.nio.serialization.HazelcastSerializationException: Failed to serialize 'com.portal.objects.ObjectGraphEntryListener$$Lambda$61/1840645556'

Кто-нибудь заставил его работать с лямбдами?

ObjectGraphEntryListener

hazelcast.xml

...