This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git
commit b5c2d1c1bf495fb6ca5be34522d15c7b8514eed0 Author: Lei Zhang <coolbee...@gmail.com> AuthorDate: Tue Sep 10 17:30:17 2019 +0800 SCB-1368 Indicate sub types of serializable polymorphic types --- .../pack/alpha/core/fsm/event/base/BaseEvent.java | 30 +++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/alpha/alpha-core/src/main/java/org/apache/servicecomb/pack/alpha/core/fsm/event/base/BaseEvent.java b/alpha/alpha-core/src/main/java/org/apache/servicecomb/pack/alpha/core/fsm/event/base/BaseEvent.java index d0d8859..0f13c6d 100644 --- a/alpha/alpha-core/src/main/java/org/apache/servicecomb/pack/alpha/core/fsm/event/base/BaseEvent.java +++ b/alpha/alpha-core/src/main/java/org/apache/servicecomb/pack/alpha/core/fsm/event/base/BaseEvent.java @@ -17,11 +17,35 @@ package org.apache.servicecomb.pack.alpha.core.fsm.event.base; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.Serializable; import java.util.Date; import java.util.Map; - +import org.apache.servicecomb.pack.alpha.core.fsm.event.SagaAbortedEvent; +import org.apache.servicecomb.pack.alpha.core.fsm.event.SagaEndedEvent; +import org.apache.servicecomb.pack.alpha.core.fsm.event.SagaStartedEvent; +import org.apache.servicecomb.pack.alpha.core.fsm.event.SagaTimeoutEvent; +import org.apache.servicecomb.pack.alpha.core.fsm.event.TxAbortedEvent; +import org.apache.servicecomb.pack.alpha.core.fsm.event.TxCompensatedEvent; +import org.apache.servicecomb.pack.alpha.core.fsm.event.TxEndedEvent; +import org.apache.servicecomb.pack.alpha.core.fsm.event.TxStartedEvent; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY) +@JsonSubTypes({ + @JsonSubTypes.Type(value = SagaStartedEvent.class, name = "SagaStartedEvent"), + @JsonSubTypes.Type(value = SagaEndedEvent.class, name = "SagaEndedEvent"), + @JsonSubTypes.Type(value = SagaAbortedEvent.class, name = "SagaAbortedEvent"), + @JsonSubTypes.Type(value = SagaTimeoutEvent.class, name = "SagaTimeoutEvent"), + @JsonSubTypes.Type(value = TxStartedEvent.class, name = "TxStartedEvent"), + @JsonSubTypes.Type(value = TxEndedEvent.class, name = "TxEndedEvent"), + @JsonSubTypes.Type(value = TxAbortedEvent.class, name = "TxAbortedEvent"), + @JsonSubTypes.Type(value = TxCompensatedEvent.class, name = "TxCompensatedEvent") +}) public abstract class BaseEvent implements Serializable { private final ObjectMapper mapper = new ObjectMapper(); private String serviceName; @@ -89,6 +113,9 @@ public abstract class BaseEvent implements Serializable { @Override public String toString() { + try { + return mapper.writeValueAsString(this); + } catch (JsonProcessingException e) { return this.getClass().getSimpleName()+"{" + "serviceName='" + serviceName + '\'' + ", instanceId='" + instanceId + '\'' + @@ -97,6 +124,7 @@ public abstract class BaseEvent implements Serializable { ", localTxId='" + localTxId + '\'' + ", createTime=" + createTime + '}'; + } } public Map<String,Object> toMap() throws Exception {