![JAR search and dependency download from the Maven repository](/logo.png)
pro.jk.ejoker.eventing.impl.DefaultEventSerializer Maven / Gradle / Ivy
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