@Morlack Thank you very much for your quick reply!!
I have seen that there may be problems with refactoring from Refactoring where events are (packaging-wise), what happens to events already in evenstore (MongoDB).
that’s why i want to know how to implement custom payload type.
public class ShorterJacksonSerializer extends JacksonSerializer {
protected ShorterJacksonSerializer(Builder builder) {
super(builder);
}
String basePackage = "com.example.axon";
protected String resolveClassName(SerializedType serializedType) {
return basePackage + "." + serializedType.getName();
}
@Override
public SerializedType typeForClass(Class type) {
if (type.getName().startsWith(basePackage)) {
String shortName = type.getName().replace(basePackage + ".", "");
return new SimpleSerializedType(shortName, getRevisionResolver().revisionOf(type));
}
throw new IllegalArgumentException("All payloads have to match base class " + basePackage);
}
}
after using above code, i can see o.a.c.gateway.DefaultCommandGateway : Command 'com.example.axon.CreateSampleCommand' resulted in org.axonframework.eventsourcing.eventstore.EventStoreException(Cannot reuse aggregate identifier [SampleId(id=4_101_101)] to create aggregate [SampleAggregate] since identifiers need to be unique.)
Exception.
public class ShorterJacksonSerializer extends JacksonSerializer {
protected ShorterJacksonSerializer(Builder builder) {
super(builder);
}
String basePackage = "com.example.axon";
protected String resolveClassName(SerializedType serializedType) {
return basePackage + "." + serializedType.getName();
}
@Override
public SerializedType typeForClass(Class type) {
if (type.getName().startsWith(basePackage)) {
String shortName = type.getName().replace(basePackage + ".", "");
return new SimpleSerializedType(shortName, getRevisionResolver().revisionOf(type));
} else {
return SimpleSerializedType(type.name, revisionResolver.revisionOf(type))
}
}
}
but after using above code, i can see only EventClass payload.
so It works!! but I don’t understand why it works.
Could you explain it plaese?
thanks.