All Downloads are FREE. Search and download functionalities are using the official Maven repository.

pro.jk.ejoker.eventing.impl.DefaultEventSerializer Maven / Gradle / Ivy

There is a newer version: 3.0.7.1
Show newest version
package pro.jk.ejoker.eventing.impl;

import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import pro.jk.ejoker.common.context.annotation.context.Dependence;
import pro.jk.ejoker.common.service.IJSONConverter;
import pro.jk.ejoker.eventing.IDomainEvent;
import pro.jk.ejoker.eventing.IEventSerializer;
import pro.jk.ejoker.infrastructure.ITypeNameProvider;

/**
 * 线性化和立体化协议,此职责应该由用户自己负起,
* 此处提供一个参考实现 * @author kimffy * */ public class DefaultEventSerializer implements IEventSerializer { @Dependence private IJSONConverter jsonSerializer; @Dependence private ITypeNameProvider typeNameProvider; @Override public Map serializer(Collection> events) { Map dict = new LinkedHashMap<>(); for(IDomainEvent event:events) dict.put(typeNameProvider.getTypeName(event.getClass()), jsonSerializer.convert(event)); return dict; } @Override public List> deserializer(Map data) { List> list = new ArrayList>(); Set> entrySet = data.entrySet(); for(Entry entry:entrySet) { Class eventType = typeNameProvider.getType(entry.getKey()); Object revert = jsonSerializer.revert(entry.getValue(), eventType); list.add((IDomainEvent )revert); } return list; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy