package io.lumify.web.clientapi.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; import io.lumify.web.clientapi.model.util.ClientApiConverter; @JsonTypeInfo( use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type") @JsonSubTypes({ @JsonSubTypes.Type(value = ClientApiVertexPublishItem.class, name = "vertex"), @JsonSubTypes.Type(value = ClientApiPropertyPublishItem.class, name = "property"), @JsonSubTypes.Type(value = ClientApiRelationshipPublishItem.class, name = "relationship") }) public abstract class ClientApiPublishItem implements ClientApiObject { private Action action; private String errorMessage; public Action getAction() { return action; } public void setAction(Action action) { this.action = action; } public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; } public String getErrorMessage() { return errorMessage; } public abstract String getType(); @Override public String toString() { return ClientApiConverter.clientApiToString(this); } public static enum Action { delete, addOrUpdate; @JsonCreator public static Action create(String value) { if (value == null) { return addOrUpdate; } if (value.equalsIgnoreCase("delete")) { return delete; } return addOrUpdate; } } }