/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package de.cismet.commons.gui.protocol; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.core.JsonProcessingException; import java.util.Date; import de.cismet.commons.gui.protocol.listener.ProtocolStepListener; /** * DOCUMENT ME! * * @author jruiz * @version $Revision$, $Date$ */ @JsonAutoDetect( fieldVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE ) // Jackson Polymorphic type handling // FIXME: implement customized type handler to avoid the need for java class named in JSON // see https://www.thomaskeller.biz/blog/2013/09/10/custom-polymorphic-type-handling-with-jackson/ // and http://stackoverflow.com/questions/31665620/is-jacksons-jsonsubtypes-still-necessary-for-polymorphic-deserialization @JsonTypeInfo( use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@javatype" ) @JsonIgnoreProperties(ignoreUnknown = true) public interface ProtocolStep { //~ Methods ---------------------------------------------------------------- /** * DOCUMENT ME! * * @return DOCUMENT ME! */ @JsonProperty(required = true) ProtocolStepMetaInfo getMetaInfo(); /** * DOCUMENT ME! * * @return DOCUMENT ME! */ @JsonProperty(required = true) Date getDate(); /** * DOCUMENT ME! * * @return DOCUMENT ME! * * @throws JsonProcessingException com.fasterxml.jackson.core.JsonProcessingException */ String toJsonString() throws JsonProcessingException; /** * DOCUMENT ME! * * @return DOCUMENT ME! */ ProtocolStepConfiguration getConfiguration(); /** * DOCUMENT ME! * * @return DOCUMENT ME! */ ProtocolStepPanel visualize(); /** * DOCUMENT ME! */ void init(); /** * DOCUMENT ME! * * @return DOCUMENT ME! */ boolean isInited(); /** * DOCUMENT ME! * * @param listener DOCUMENT ME! * * @return DOCUMENT ME! */ boolean addProtocolStepListener(final ProtocolStepListener listener); /** * DOCUMENT ME! * * @param listener DOCUMENT ME! * * @return DOCUMENT ME! */ boolean removeProtocolStepListener(final ProtocolStepListener listener); }