diff --git a/src/main/java/dev/cdevents/constants/CDEventConstants.java b/src/main/java/dev/cdevents/constants/CDEventConstants.java index f5db73b..e123608 100644 --- a/src/main/java/dev/cdevents/constants/CDEventConstants.java +++ b/src/main/java/dev/cdevents/constants/CDEventConstants.java @@ -40,7 +40,27 @@ public enum SubjectType { /** * Subject type change. */ - CHANGE("change"); + CHANGE("change"), + + /** + * Subject type build. + */ + BUILD("build"), + + /** + * subject type testCase. + */ + TESTCASE("testCase"), + + /** + * subject type testSuite. + */ + TESTSUITE("testSuite"), + + /** + * subject type artifact. + */ + ARTIFACT("artifact"); private String subjectType; diff --git a/src/main/java/dev/cdevents/events/ArtifactPackagedCDEvent.java b/src/main/java/dev/cdevents/events/ArtifactPackagedCDEvent.java new file mode 100644 index 0000000..58edde6 --- /dev/null +++ b/src/main/java/dev/cdevents/events/ArtifactPackagedCDEvent.java @@ -0,0 +1,203 @@ +package dev.cdevents.events; + +import com.fasterxml.jackson.annotation.JsonProperty; +import dev.cdevents.constants.CDEventConstants; +import dev.cdevents.models.ArtifactPackagedSubject; +import dev.cdevents.models.CDEvent; + +import java.net.URI; + +public class ArtifactPackagedCDEvent extends CDEvent { + + private static final String CDEVENT_VERSION = "0.1.0"; + @JsonProperty(required = true) + private ArtifactPackagedSubject subject; + + /** + * Constructor to init CDEvent and set the Subject for {@link ArtifactPackagedCDEvent}. + */ + public ArtifactPackagedCDEvent() { + initCDEvent(currentCDEventType()); + setSubject(new ArtifactPackagedSubject(CDEventConstants.SubjectType.ARTIFACT)); + } + + /** + * @return subject + */ + public ArtifactPackagedSubject getSubject() { + return subject; + } + + /** + * @param subject + */ + public void setSubject(ArtifactPackagedSubject subject) { + this.subject = subject; + } + + /** + * @return the current CDEvent type + */ + @Override + public String currentCDEventType() { + return CDEventConstants.CDEventTypes.ArtifactPackagedEvent.getEventType().concat(CDEVENT_VERSION); + } + + /** + * @return the artifact-packaged-event schema URL + */ + @Override + public String schemaURL() { + return String.format("https://cdevents.dev/%s/schema/artifact-packaged-event", CDEventConstants.CDEVENTS_SPEC_VERSION); + } + + /** + * @return the artifact-packaged-event schema Json + */ + @Override + public String eventSchema() { + return "{\n" + + " \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n" + + " \"$id\": \"https://cdevents.dev/0.1.2/schema/artifact-packaged-event\",\n" + + " \"properties\": {\n" + + " \"context\": {\n" + + " \"properties\": {\n" + + " \"version\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"id\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"source\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"type\": {\n" + + " \"type\": \"string\",\n" + + " \"enum\": [\n" + + " \"dev.cdevents.artifact.packaged.0.1.0\"\n" + + " ],\n" + + " \"default\": \"dev.cdevents.artifact.packaged.0.1.0\"\n" + + " },\n" + + " \"timestamp\": {\n" + + " \"type\": \"string\",\n" + + " \"format\": \"date-time\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"version\",\n" + + " \"id\",\n" + + " \"source\",\n" + + " \"type\",\n" + + " \"timestamp\"\n" + + " ]\n" + + " },\n" + + " \"subject\": {\n" + + " \"properties\": {\n" + + " \"id\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"source\": {\n" + + " \"type\": \"string\"\n" + + " },\n" + + " \"type\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"content\": {\n" + + " \"properties\": {\n" + + " \"change\": {\n" + + " \"properties\": {\n" + + " \"id\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"source\": {\n" + + " \"type\": \"string\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"id\"\n" + + " ]\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"change\"\n" + + " ]\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"id\",\n" + + " \"type\",\n" + + " \"content\"\n" + + " ]\n" + + " },\n" + + " \"customData\": {\n" + + " \"oneOf\": [\n" + + " {\n" + + " \"type\": \"object\"\n" + + " },\n" + + " {\n" + + " \"type\": \"string\",\n" + + " \"contentEncoding\": \"base64\"\n" + + " }\n" + + " ]\n" + + " },\n" + + " \"customDataContentType\": {\n" + + " \"type\": \"string\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"context\",\n" + + " \"subject\"\n" + + " ]\n" + + "}"; + } + + /** + * @param subjectId + * sets the subject Id + */ + public void setSubjectId(String subjectId) { + getSubject().setId(subjectId); + } + + /** + * @param subjectSource + * sets the subject source + */ + public void setSubjectSource(URI subjectSource) { + getSubject().setSource(subjectSource); + } + + /** + * @param changeId + * sets The changeId that this artifact belongs to + */ + public void setSubjectChangeId(String changeId) { + getSubject().getContent().getChange().setId(changeId); + + } + + /** + * @param changeSource + * sets The changeSource that this artifact belongs to + */ + public void setSubjectChangeSource(URI changeSource) { + getSubject().getContent().getChange().setSource(changeSource); + } + +} diff --git a/src/main/java/dev/cdevents/events/ArtifactPublishedCDEvent.java b/src/main/java/dev/cdevents/events/ArtifactPublishedCDEvent.java new file mode 100644 index 0000000..057f1c2 --- /dev/null +++ b/src/main/java/dev/cdevents/events/ArtifactPublishedCDEvent.java @@ -0,0 +1,166 @@ +package dev.cdevents.events; + +import com.fasterxml.jackson.annotation.JsonProperty; +import dev.cdevents.constants.CDEventConstants; +import dev.cdevents.models.ArtifactPublishedSubject; +import dev.cdevents.models.CDEvent; + +import java.net.URI; + +public class ArtifactPublishedCDEvent extends CDEvent { + + private static final String CDEVENT_VERSION = "0.1.0"; + @JsonProperty(required = true) + private ArtifactPublishedSubject subject; + + /** + * Constructor to init CDEvent and set the Subject for {@link ArtifactPublishedCDEvent}. + */ + public ArtifactPublishedCDEvent() { + initCDEvent(currentCDEventType()); + setSubject(new ArtifactPublishedSubject(CDEventConstants.SubjectType.ARTIFACT)); + } + + /** + * @return subject + */ + public ArtifactPublishedSubject getSubject() { + return subject; + } + + /** + * @param subject + */ + public void setSubject(ArtifactPublishedSubject subject) { + this.subject = subject; + } + + /** + * @return the current CDEvent type + */ + @Override + public String currentCDEventType() { + return CDEventConstants.CDEventTypes.ArtifactPublishedEvent.getEventType().concat(CDEVENT_VERSION); + } + + /** + * @return the artifact-published-event schema URL + */ + @Override + public String schemaURL() { + return String.format("https://cdevents.dev/%s/schema/artifact-published-event", CDEventConstants.CDEVENTS_SPEC_VERSION); + } + + /** + * @return the artifact-published-event schema Json + */ + @Override + public String eventSchema() { + return "{\n" + + " \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n" + + " \"$id\": \"https://cdevents.dev/0.1.2/schema/artifact-published-event\",\n" + + " \"properties\": {\n" + + " \"context\": {\n" + + " \"properties\": {\n" + + " \"version\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"id\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"source\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"type\": {\n" + + " \"type\": \"string\",\n" + + " \"enum\": [\n" + + " \"dev.cdevents.artifact.published.0.1.0\"\n" + + " ],\n" + + " \"default\": \"dev.cdevents.artifact.published.0.1.0\"\n" + + " },\n" + + " \"timestamp\": {\n" + + " \"type\": \"string\",\n" + + " \"format\": \"date-time\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"version\",\n" + + " \"id\",\n" + + " \"source\",\n" + + " \"type\",\n" + + " \"timestamp\"\n" + + " ]\n" + + " },\n" + + " \"subject\": {\n" + + " \"properties\": {\n" + + " \"id\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"source\": {\n" + + " \"type\": \"string\"\n" + + " },\n" + + " \"type\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"content\": {\n" + + " \"properties\": {},\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"id\",\n" + + " \"type\",\n" + + " \"content\"\n" + + " ]\n" + + " },\n" + + " \"customData\": {\n" + + " \"oneOf\": [\n" + + " {\n" + + " \"type\": \"object\"\n" + + " },\n" + + " {\n" + + " \"type\": \"string\",\n" + + " \"contentEncoding\": \"base64\"\n" + + " }\n" + + " ]\n" + + " },\n" + + " \"customDataContentType\": {\n" + + " \"type\": \"string\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"context\",\n" + + " \"subject\"\n" + + " ]\n" + + "}"; + } + + /** + * @param subjectId + * sets the subject Id + */ + public void setSubjectId(String subjectId) { + getSubject().setId(subjectId); + } + + /** + * @param subjectSource + * sets the subject source + */ + public void setSubjectSource(URI subjectSource) { + getSubject().setSource(subjectSource); + } + +} diff --git a/src/main/java/dev/cdevents/events/BuildFinishedCDEvent.java b/src/main/java/dev/cdevents/events/BuildFinishedCDEvent.java new file mode 100644 index 0000000..53e5943 --- /dev/null +++ b/src/main/java/dev/cdevents/events/BuildFinishedCDEvent.java @@ -0,0 +1,179 @@ +package dev.cdevents.events; + +import com.fasterxml.jackson.annotation.JsonProperty; +import dev.cdevents.constants.CDEventConstants; +import dev.cdevents.models.BuildFinishedSubject; +import dev.cdevents.models.CDEvent; + +import java.net.URI; + +public class BuildFinishedCDEvent extends CDEvent { + + private static final String CDEVENT_VERSION = "0.1.0"; + @JsonProperty(required = true) + private BuildFinishedSubject subject; + + /** + * Constructor to init CDEvent and set the Subject for {@link BuildFinishedCDEvent}. + */ + public BuildFinishedCDEvent() { + initCDEvent(currentCDEventType()); + setSubject(new BuildFinishedSubject(CDEventConstants.SubjectType.BUILD)); + } + + /** + * @return subject + */ + public BuildFinishedSubject getSubject() { + return subject; + } + + /** + * @param subject + */ + public void setSubject(BuildFinishedSubject subject) { + this.subject = subject; + } + + /** + * @return the current CDEvent type + */ + @Override + public String currentCDEventType() { + return CDEventConstants.CDEventTypes.BuildFinishedEvent.getEventType().concat(CDEVENT_VERSION); + } + + /** + * @return the build-finished-event schema URL + */ + @Override + public String schemaURL() { + return String.format("https://cdevents.dev/%s/schema/build-finished-event", CDEventConstants.CDEVENTS_SPEC_VERSION); + } + + /** + * @return the build-finished-event schema Json + */ + @Override + public String eventSchema() { + return "{\n" + + " \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n" + + " \"$id\": \"https://cdevents.dev/0.1.2/schema/build-finished-event\",\n" + + " \"properties\": {\n" + + " \"context\": {\n" + + " \"properties\": {\n" + + " \"version\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"id\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"source\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"type\": {\n" + + " \"type\": \"string\",\n" + + " \"enum\": [\n" + + " \"dev.cdevents.build.finished.0.1.0\"\n" + + " ],\n" + + " \"default\": \"dev.cdevents.build.finished.0.1.0\"\n" + + " },\n" + + " \"timestamp\": {\n" + + " \"type\": \"string\",\n" + + " \"format\": \"date-time\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"version\",\n" + + " \"id\",\n" + + " \"source\",\n" + + " \"type\",\n" + + " \"timestamp\"\n" + + " ]\n" + + " },\n" + + " \"subject\": {\n" + + " \"properties\": {\n" + + " \"id\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"source\": {\n" + + " \"type\": \"string\"\n" + + " },\n" + + " \"type\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"content\": {\n" + + " \"properties\": {\n" + + " \"artifactId\": {\n" + + " \"type\": \"string\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"id\",\n" + + " \"type\",\n" + + " \"content\"\n" + + " ]\n" + + " },\n" + + " \"customData\": {\n" + + " \"oneOf\": [\n" + + " {\n" + + " \"type\": \"object\"\n" + + " },\n" + + " {\n" + + " \"type\": \"string\",\n" + + " \"contentEncoding\": \"base64\"\n" + + " }\n" + + " ]\n" + + " },\n" + + " \"customDataContentType\": {\n" + + " \"type\": \"string\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"context\",\n" + + " \"subject\"\n" + + " ]\n" + + "}"; + } + + /** + * @param subjectId + * sets the subject Id + */ + public void setSubjectId(String subjectId) { + getSubject().setId(subjectId); + } + + /** + * @param subjectSource + * sets the subject source + */ + public void setSubjectSource(URI subjectSource) { + getSubject().setSource(subjectSource); + } + + /** + * @param artifactId + * sets the subjects artifactId + */ + public void setSubjectArtifactId(String artifactId) { + getSubject().getContent().setArtifactId(artifactId); + + } + +} diff --git a/src/main/java/dev/cdevents/events/BuildQueuedCDEvent.java b/src/main/java/dev/cdevents/events/BuildQueuedCDEvent.java new file mode 100644 index 0000000..af32ef4 --- /dev/null +++ b/src/main/java/dev/cdevents/events/BuildQueuedCDEvent.java @@ -0,0 +1,166 @@ +package dev.cdevents.events; + +import com.fasterxml.jackson.annotation.JsonProperty; +import dev.cdevents.constants.CDEventConstants; +import dev.cdevents.models.BuildQueuedSubject; +import dev.cdevents.models.CDEvent; + +import java.net.URI; + +public class BuildQueuedCDEvent extends CDEvent { + + private static final String CDEVENT_VERSION = "0.1.0"; + @JsonProperty(required = true) + private BuildQueuedSubject subject; + + /** + * Constructor to init CDEvent and set the Subject for {@link BuildQueuedCDEvent}. + */ + public BuildQueuedCDEvent() { + initCDEvent(currentCDEventType()); + setSubject(new BuildQueuedSubject(CDEventConstants.SubjectType.BUILD)); + } + + /** + * @return subject + */ + public BuildQueuedSubject getSubject() { + return subject; + } + + /** + * @param subject + */ + public void setSubject(BuildQueuedSubject subject) { + this.subject = subject; + } + + /** + * @return the current CDEvent type + */ + @Override + public String currentCDEventType() { + return CDEventConstants.CDEventTypes.BuildQueuedEvent.getEventType().concat(CDEVENT_VERSION); + } + + /** + * @return the build-queued-event schema URL + */ + @Override + public String schemaURL() { + return String.format("https://cdevents.dev/%s/schema/build-queued-event", CDEventConstants.CDEVENTS_SPEC_VERSION); + } + + /** + * @return the build-queued-event schema Json + */ + @Override + public String eventSchema() { + return "{\n" + + " \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n" + + " \"$id\": \"https://cdevents.dev/0.1.2/schema/build-queued-event\",\n" + + " \"properties\": {\n" + + " \"context\": {\n" + + " \"properties\": {\n" + + " \"version\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"id\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"source\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"type\": {\n" + + " \"type\": \"string\",\n" + + " \"enum\": [\n" + + " \"dev.cdevents.build.queued.0.1.0\"\n" + + " ],\n" + + " \"default\": \"dev.cdevents.build.queued.0.1.0\"\n" + + " },\n" + + " \"timestamp\": {\n" + + " \"type\": \"string\",\n" + + " \"format\": \"date-time\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"version\",\n" + + " \"id\",\n" + + " \"source\",\n" + + " \"type\",\n" + + " \"timestamp\"\n" + + " ]\n" + + " },\n" + + " \"subject\": {\n" + + " \"properties\": {\n" + + " \"id\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"source\": {\n" + + " \"type\": \"string\"\n" + + " },\n" + + " \"type\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"content\": {\n" + + " \"properties\": {},\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"id\",\n" + + " \"type\",\n" + + " \"content\"\n" + + " ]\n" + + " },\n" + + " \"customData\": {\n" + + " \"oneOf\": [\n" + + " {\n" + + " \"type\": \"object\"\n" + + " },\n" + + " {\n" + + " \"type\": \"string\",\n" + + " \"contentEncoding\": \"base64\"\n" + + " }\n" + + " ]\n" + + " },\n" + + " \"customDataContentType\": {\n" + + " \"type\": \"string\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"context\",\n" + + " \"subject\"\n" + + " ]\n" + + "}"; + } + + /** + * @param subjectId + * sets the subject Id + */ + public void setSubjectId(String subjectId) { + getSubject().setId(subjectId); + } + + /** + * @param subjectSource + * sets the subject source + */ + public void setSubjectSource(URI subjectSource) { + getSubject().setSource(subjectSource); + } + +} diff --git a/src/main/java/dev/cdevents/events/BuildStartedCDEvent.java b/src/main/java/dev/cdevents/events/BuildStartedCDEvent.java new file mode 100644 index 0000000..54d8513 --- /dev/null +++ b/src/main/java/dev/cdevents/events/BuildStartedCDEvent.java @@ -0,0 +1,166 @@ +package dev.cdevents.events; + +import com.fasterxml.jackson.annotation.JsonProperty; +import dev.cdevents.constants.CDEventConstants; +import dev.cdevents.models.BuildStartedSubject; +import dev.cdevents.models.CDEvent; + +import java.net.URI; + +public class BuildStartedCDEvent extends CDEvent { + + private static final String CDEVENT_VERSION = "0.1.0"; + @JsonProperty(required = true) + private BuildStartedSubject subject; + + /** + * Constructor to init CDEvent and set the Subject for {@link BuildStartedCDEvent}. + */ + public BuildStartedCDEvent() { + initCDEvent(currentCDEventType()); + setSubject(new BuildStartedSubject(CDEventConstants.SubjectType.BUILD)); + } + + /** + * @return subject + */ + public BuildStartedSubject getSubject() { + return subject; + } + + /** + * @param subject + */ + public void setSubject(BuildStartedSubject subject) { + this.subject = subject; + } + + /** + * @return the current CDEvent type + */ + @Override + public String currentCDEventType() { + return CDEventConstants.CDEventTypes.BuildStartedEvent.getEventType().concat(CDEVENT_VERSION); + } + + /** + * @return the build-started-event schema URL + */ + @Override + public String schemaURL() { + return String.format("https://cdevents.dev/%s/schema/build-started-event", CDEventConstants.CDEVENTS_SPEC_VERSION); + } + + /** + * @return the build-started-event schema Json + */ + @Override + public String eventSchema() { + return "{\n" + + " \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n" + + " \"$id\": \"https://cdevents.dev/0.1.2/schema/build-started-event\",\n" + + " \"properties\": {\n" + + " \"context\": {\n" + + " \"properties\": {\n" + + " \"version\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"id\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"source\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"type\": {\n" + + " \"type\": \"string\",\n" + + " \"enum\": [\n" + + " \"dev.cdevents.build.started.0.1.0\"\n" + + " ],\n" + + " \"default\": \"dev.cdevents.build.started.0.1.0\"\n" + + " },\n" + + " \"timestamp\": {\n" + + " \"type\": \"string\",\n" + + " \"format\": \"date-time\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"version\",\n" + + " \"id\",\n" + + " \"source\",\n" + + " \"type\",\n" + + " \"timestamp\"\n" + + " ]\n" + + " },\n" + + " \"subject\": {\n" + + " \"properties\": {\n" + + " \"id\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"source\": {\n" + + " \"type\": \"string\"\n" + + " },\n" + + " \"type\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"content\": {\n" + + " \"properties\": {},\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"id\",\n" + + " \"type\",\n" + + " \"content\"\n" + + " ]\n" + + " },\n" + + " \"customData\": {\n" + + " \"oneOf\": [\n" + + " {\n" + + " \"type\": \"object\"\n" + + " },\n" + + " {\n" + + " \"type\": \"string\",\n" + + " \"contentEncoding\": \"base64\"\n" + + " }\n" + + " ]\n" + + " },\n" + + " \"customDataContentType\": {\n" + + " \"type\": \"string\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"context\",\n" + + " \"subject\"\n" + + " ]\n" + + "}"; + } + + /** + * @param subjectId + * sets the subject Id + */ + public void setSubjectId(String subjectId) { + getSubject().setId(subjectId); + } + + /** + * @param subjectSource + * sets the subject source + */ + public void setSubjectSource(URI subjectSource) { + getSubject().setSource(subjectSource); + } + +} diff --git a/src/main/java/dev/cdevents/events/TestCaseFinishedCDEvent.java b/src/main/java/dev/cdevents/events/TestCaseFinishedCDEvent.java new file mode 100644 index 0000000..08bfea4 --- /dev/null +++ b/src/main/java/dev/cdevents/events/TestCaseFinishedCDEvent.java @@ -0,0 +1,166 @@ +package dev.cdevents.events; + +import com.fasterxml.jackson.annotation.JsonProperty; +import dev.cdevents.constants.CDEventConstants; +import dev.cdevents.models.CDEvent; +import dev.cdevents.models.TestCaseSubject; + +import java.net.URI; + +public class TestCaseFinishedCDEvent extends CDEvent { + + private static final String CDEVENT_VERSION = "0.1.0"; + @JsonProperty(required = true) + private TestCaseSubject subject; + + /** + * Constructor to init CDEvent and set the Subject for {@link TestCaseFinishedCDEvent}. + */ + public TestCaseFinishedCDEvent() { + initCDEvent(currentCDEventType()); + setSubject(new TestCaseSubject(CDEventConstants.SubjectType.TESTCASE)); + } + + /** + * @return subject + */ + public TestCaseSubject getSubject() { + return subject; + } + + /** + * @param subject + */ + public void setSubject(TestCaseSubject subject) { + this.subject = subject; + } + + /** + * @return the current CDEvent type + */ + @Override + public String currentCDEventType() { + return CDEventConstants.CDEventTypes.TestCaseFinishedEvent.getEventType().concat(CDEVENT_VERSION); + } + + /** + * @return the test-case-finished-event schema URL + */ + @Override + public String schemaURL() { + return String.format("https://cdevents.dev/%s/schema/test-case-finished-event", CDEventConstants.CDEVENTS_SPEC_VERSION); + } + + /** + * @return the test-case-finished-event schema Json + */ + @Override + public String eventSchema() { + return "{\n" + + " \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n" + + " \"$id\": \"https://cdevents.dev/0.1.2/schema/test-case-finished-event\",\n" + + " \"properties\": {\n" + + " \"context\": {\n" + + " \"properties\": {\n" + + " \"version\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"id\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"source\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"type\": {\n" + + " \"type\": \"string\",\n" + + " \"enum\": [\n" + + " \"dev.cdevents.testcase.finished.0.1.0\"\n" + + " ],\n" + + " \"default\": \"dev.cdevents.testcase.finished.0.1.0\"\n" + + " },\n" + + " \"timestamp\": {\n" + + " \"type\": \"string\",\n" + + " \"format\": \"date-time\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"version\",\n" + + " \"id\",\n" + + " \"source\",\n" + + " \"type\",\n" + + " \"timestamp\"\n" + + " ]\n" + + " },\n" + + " \"subject\": {\n" + + " \"properties\": {\n" + + " \"id\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"source\": {\n" + + " \"type\": \"string\"\n" + + " },\n" + + " \"type\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"content\": {\n" + + " \"properties\": {},\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"id\",\n" + + " \"type\",\n" + + " \"content\"\n" + + " ]\n" + + " },\n" + + " \"customData\": {\n" + + " \"oneOf\": [\n" + + " {\n" + + " \"type\": \"object\"\n" + + " },\n" + + " {\n" + + " \"type\": \"string\",\n" + + " \"contentEncoding\": \"base64\"\n" + + " }\n" + + " ]\n" + + " },\n" + + " \"customDataContentType\": {\n" + + " \"type\": \"string\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"context\",\n" + + " \"subject\"\n" + + " ]\n" + + "}"; + } + + /** + * @param subjectId + * sets the subject Id + */ + public void setSubjectId(String subjectId) { + getSubject().setId(subjectId); + } + + /** + * @param subjectSource + * sets the subject source + */ + public void setSubjectSource(URI subjectSource) { + getSubject().setSource(subjectSource); + } + +} diff --git a/src/main/java/dev/cdevents/events/TestCaseQueuedCDEvent.java b/src/main/java/dev/cdevents/events/TestCaseQueuedCDEvent.java new file mode 100644 index 0000000..f68a495 --- /dev/null +++ b/src/main/java/dev/cdevents/events/TestCaseQueuedCDEvent.java @@ -0,0 +1,166 @@ +package dev.cdevents.events; + +import com.fasterxml.jackson.annotation.JsonProperty; +import dev.cdevents.constants.CDEventConstants; +import dev.cdevents.models.CDEvent; +import dev.cdevents.models.TestCaseSubject; + +import java.net.URI; + +public class TestCaseQueuedCDEvent extends CDEvent { + + private static final String CDEVENT_VERSION = "0.1.0"; + @JsonProperty(required = true) + private TestCaseSubject subject; + + /** + * Constructor to init CDEvent and set the Subject for {@link TestCaseQueuedCDEvent}. + */ + public TestCaseQueuedCDEvent() { + initCDEvent(currentCDEventType()); + setSubject(new TestCaseSubject(CDEventConstants.SubjectType.TESTCASE)); + } + + /** + * @return subject + */ + public TestCaseSubject getSubject() { + return subject; + } + + /** + * @param subject + */ + public void setSubject(TestCaseSubject subject) { + this.subject = subject; + } + + /** + * @return the current CDEvent type + */ + @Override + public String currentCDEventType() { + return CDEventConstants.CDEventTypes.TestCaseQueuedEvent.getEventType().concat(CDEVENT_VERSION); + } + + /** + * @return the test-case-queued-event schema URL + */ + @Override + public String schemaURL() { + return String.format("https://cdevents.dev/%s/schema/test-case-queued-event", CDEventConstants.CDEVENTS_SPEC_VERSION); + } + + /** + * @return the test-case-queued-event schema Json + */ + @Override + public String eventSchema() { + return "{\n" + + " \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n" + + " \"$id\": \"https://cdevents.dev/0.1.2/schema/test-case-queued-event\",\n" + + " \"properties\": {\n" + + " \"context\": {\n" + + " \"properties\": {\n" + + " \"version\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"id\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"source\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"type\": {\n" + + " \"type\": \"string\",\n" + + " \"enum\": [\n" + + " \"dev.cdevents.testcase.queued.0.1.0\"\n" + + " ],\n" + + " \"default\": \"dev.cdevents.testcase.queued.0.1.0\"\n" + + " },\n" + + " \"timestamp\": {\n" + + " \"type\": \"string\",\n" + + " \"format\": \"date-time\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"version\",\n" + + " \"id\",\n" + + " \"source\",\n" + + " \"type\",\n" + + " \"timestamp\"\n" + + " ]\n" + + " },\n" + + " \"subject\": {\n" + + " \"properties\": {\n" + + " \"id\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"source\": {\n" + + " \"type\": \"string\"\n" + + " },\n" + + " \"type\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"content\": {\n" + + " \"properties\": {},\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"id\",\n" + + " \"type\",\n" + + " \"content\"\n" + + " ]\n" + + " },\n" + + " \"customData\": {\n" + + " \"oneOf\": [\n" + + " {\n" + + " \"type\": \"object\"\n" + + " },\n" + + " {\n" + + " \"type\": \"string\",\n" + + " \"contentEncoding\": \"base64\"\n" + + " }\n" + + " ]\n" + + " },\n" + + " \"customDataContentType\": {\n" + + " \"type\": \"string\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"context\",\n" + + " \"subject\"\n" + + " ]\n" + + "}"; + } + + /** + * @param subjectId + * sets the subject Id + */ + public void setSubjectId(String subjectId) { + getSubject().setId(subjectId); + } + + /** + * @param subjectSource + * sets the subject source + */ + public void setSubjectSource(URI subjectSource) { + getSubject().setSource(subjectSource); + } + +} diff --git a/src/main/java/dev/cdevents/events/TestCaseStartedCDEvent.java b/src/main/java/dev/cdevents/events/TestCaseStartedCDEvent.java new file mode 100644 index 0000000..ba63ef3 --- /dev/null +++ b/src/main/java/dev/cdevents/events/TestCaseStartedCDEvent.java @@ -0,0 +1,166 @@ +package dev.cdevents.events; + +import com.fasterxml.jackson.annotation.JsonProperty; +import dev.cdevents.constants.CDEventConstants; +import dev.cdevents.models.CDEvent; +import dev.cdevents.models.TestCaseSubject; + +import java.net.URI; + +public class TestCaseStartedCDEvent extends CDEvent { + + private static final String CDEVENT_VERSION = "0.1.0"; + @JsonProperty(required = true) + private TestCaseSubject subject; + + /** + * Constructor to init CDEvent and set the Subject for {@link TestCaseStartedCDEvent}. + */ + public TestCaseStartedCDEvent() { + initCDEvent(currentCDEventType()); + setSubject(new TestCaseSubject(CDEventConstants.SubjectType.TESTCASE)); + } + + /** + * @return subject + */ + public TestCaseSubject getSubject() { + return subject; + } + + /** + * @param subject + */ + public void setSubject(TestCaseSubject subject) { + this.subject = subject; + } + + /** + * @return the current CDEvent type + */ + @Override + public String currentCDEventType() { + return CDEventConstants.CDEventTypes.TestCaseStartedEvent.getEventType().concat(CDEVENT_VERSION); + } + + /** + * @return the test-case-started-event schema URL + */ + @Override + public String schemaURL() { + return String.format("https://cdevents.dev/%s/schema/test-case-started-event", CDEventConstants.CDEVENTS_SPEC_VERSION); + } + + /** + * @return the test-case-started-event schema Json + */ + @Override + public String eventSchema() { + return "{\n" + + " \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n" + + " \"$id\": \"https://cdevents.dev/0.1.2/schema/test-case-started-event\",\n" + + " \"properties\": {\n" + + " \"context\": {\n" + + " \"properties\": {\n" + + " \"version\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"id\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"source\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"type\": {\n" + + " \"type\": \"string\",\n" + + " \"enum\": [\n" + + " \"dev.cdevents.testcase.started.0.1.0\"\n" + + " ],\n" + + " \"default\": \"dev.cdevents.testcase.started.0.1.0\"\n" + + " },\n" + + " \"timestamp\": {\n" + + " \"type\": \"string\",\n" + + " \"format\": \"date-time\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"version\",\n" + + " \"id\",\n" + + " \"source\",\n" + + " \"type\",\n" + + " \"timestamp\"\n" + + " ]\n" + + " },\n" + + " \"subject\": {\n" + + " \"properties\": {\n" + + " \"id\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"source\": {\n" + + " \"type\": \"string\"\n" + + " },\n" + + " \"type\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"content\": {\n" + + " \"properties\": {},\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"id\",\n" + + " \"type\",\n" + + " \"content\"\n" + + " ]\n" + + " },\n" + + " \"customData\": {\n" + + " \"oneOf\": [\n" + + " {\n" + + " \"type\": \"object\"\n" + + " },\n" + + " {\n" + + " \"type\": \"string\",\n" + + " \"contentEncoding\": \"base64\"\n" + + " }\n" + + " ]\n" + + " },\n" + + " \"customDataContentType\": {\n" + + " \"type\": \"string\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"context\",\n" + + " \"subject\"\n" + + " ]\n" + + "}"; + } + + /** + * @param subjectId + * sets the subject Id + */ + public void setSubjectId(String subjectId) { + getSubject().setId(subjectId); + } + + /** + * @param subjectSource + * sets the subject source + */ + public void setSubjectSource(URI subjectSource) { + getSubject().setSource(subjectSource); + } + +} diff --git a/src/main/java/dev/cdevents/events/TestSuiteFinishedCDEvent.java b/src/main/java/dev/cdevents/events/TestSuiteFinishedCDEvent.java new file mode 100644 index 0000000..d005dec --- /dev/null +++ b/src/main/java/dev/cdevents/events/TestSuiteFinishedCDEvent.java @@ -0,0 +1,166 @@ +package dev.cdevents.events; + +import com.fasterxml.jackson.annotation.JsonProperty; +import dev.cdevents.constants.CDEventConstants; +import dev.cdevents.models.CDEvent; +import dev.cdevents.models.TestSuiteSubject; + +import java.net.URI; + +public class TestSuiteFinishedCDEvent extends CDEvent { + + private static final String CDEVENT_VERSION = "0.1.0"; + @JsonProperty(required = true) + private TestSuiteSubject subject; + + /** + * Constructor to init CDEvent and set the Subject for {@link TestSuiteFinishedCDEvent}. + */ + public TestSuiteFinishedCDEvent() { + initCDEvent(currentCDEventType()); + setSubject(new TestSuiteSubject(CDEventConstants.SubjectType.TESTSUITE)); + } + + /** + * @return subject + */ + public TestSuiteSubject getSubject() { + return subject; + } + + /** + * @param subject + */ + public void setSubject(TestSuiteSubject subject) { + this.subject = subject; + } + + /** + * @return the current CDEvent type + */ + @Override + public String currentCDEventType() { + return CDEventConstants.CDEventTypes.TestSuiteFinishedEvent.getEventType().concat(CDEVENT_VERSION); + } + + /** + * @return the test-suite-finished-event schema URL + */ + @Override + public String schemaURL() { + return String.format("https://cdevents.dev/%s/schema/test-suite-finished-event", CDEventConstants.CDEVENTS_SPEC_VERSION); + } + + /** + * @return the test-suite-finished-event schema Json + */ + @Override + public String eventSchema() { + return "{\n" + + " \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n" + + " \"$id\": \"https://cdevents.dev/0.1.2/schema/test-suite-finished-event\",\n" + + " \"properties\": {\n" + + " \"context\": {\n" + + " \"properties\": {\n" + + " \"version\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"id\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"source\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"type\": {\n" + + " \"type\": \"string\",\n" + + " \"enum\": [\n" + + " \"dev.cdevents.testsuite.finished.0.1.0\"\n" + + " ],\n" + + " \"default\": \"dev.cdevents.testsuite.finished.0.1.0\"\n" + + " },\n" + + " \"timestamp\": {\n" + + " \"type\": \"string\",\n" + + " \"format\": \"date-time\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"version\",\n" + + " \"id\",\n" + + " \"source\",\n" + + " \"type\",\n" + + " \"timestamp\"\n" + + " ]\n" + + " },\n" + + " \"subject\": {\n" + + " \"properties\": {\n" + + " \"id\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"source\": {\n" + + " \"type\": \"string\"\n" + + " },\n" + + " \"type\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"content\": {\n" + + " \"properties\": {},\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"id\",\n" + + " \"type\",\n" + + " \"content\"\n" + + " ]\n" + + " },\n" + + " \"customData\": {\n" + + " \"oneOf\": [\n" + + " {\n" + + " \"type\": \"object\"\n" + + " },\n" + + " {\n" + + " \"type\": \"string\",\n" + + " \"contentEncoding\": \"base64\"\n" + + " }\n" + + " ]\n" + + " },\n" + + " \"customDataContentType\": {\n" + + " \"type\": \"string\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"context\",\n" + + " \"subject\"\n" + + " ]\n" + + "}"; + } + + /** + * @param subjectId + * sets the subject Id + */ + public void setSubjectId(String subjectId) { + getSubject().setId(subjectId); + } + + /** + * @param subjectSource + * sets the subject source + */ + public void setSubjectSource(URI subjectSource) { + getSubject().setSource(subjectSource); + } + +} diff --git a/src/main/java/dev/cdevents/events/TestSuiteStartedCDEvent.java b/src/main/java/dev/cdevents/events/TestSuiteStartedCDEvent.java new file mode 100644 index 0000000..a08f115 --- /dev/null +++ b/src/main/java/dev/cdevents/events/TestSuiteStartedCDEvent.java @@ -0,0 +1,166 @@ +package dev.cdevents.events; + +import com.fasterxml.jackson.annotation.JsonProperty; +import dev.cdevents.constants.CDEventConstants; +import dev.cdevents.models.CDEvent; +import dev.cdevents.models.TestSuiteSubject; + +import java.net.URI; + +public class TestSuiteStartedCDEvent extends CDEvent { + + private static final String CDEVENT_VERSION = "0.1.0"; + @JsonProperty(required = true) + private TestSuiteSubject subject; + + /** + * Constructor to init CDEvent and set the Subject for {@link TestSuiteStartedCDEvent}. + */ + public TestSuiteStartedCDEvent() { + initCDEvent(currentCDEventType()); + setSubject(new TestSuiteSubject(CDEventConstants.SubjectType.TESTSUITE)); + } + + /** + * @return subject + */ + public TestSuiteSubject getSubject() { + return subject; + } + + /** + * @param subject + */ + public void setSubject(TestSuiteSubject subject) { + this.subject = subject; + } + + /** + * @return the current CDEvent type + */ + @Override + public String currentCDEventType() { + return CDEventConstants.CDEventTypes.TestSuiteStartedEvent.getEventType().concat(CDEVENT_VERSION); + } + + /** + * @return the test-suite-started-event schema URL + */ + @Override + public String schemaURL() { + return String.format("https://cdevents.dev/%s/schema/test-suite-started-event", CDEventConstants.CDEVENTS_SPEC_VERSION); + } + + /** + * @return the test-suite-started-event schema Json + */ + @Override + public String eventSchema() { + return "{\n" + + " \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n" + + " \"$id\": \"https://cdevents.dev/0.1.2/schema/test-suite-started-event\",\n" + + " \"properties\": {\n" + + " \"context\": {\n" + + " \"properties\": {\n" + + " \"version\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"id\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"source\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"type\": {\n" + + " \"type\": \"string\",\n" + + " \"enum\": [\n" + + " \"dev.cdevents.testsuite.started.0.1.0\"\n" + + " ],\n" + + " \"default\": \"dev.cdevents.testsuite.started.0.1.0\"\n" + + " },\n" + + " \"timestamp\": {\n" + + " \"type\": \"string\",\n" + + " \"format\": \"date-time\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"version\",\n" + + " \"id\",\n" + + " \"source\",\n" + + " \"type\",\n" + + " \"timestamp\"\n" + + " ]\n" + + " },\n" + + " \"subject\": {\n" + + " \"properties\": {\n" + + " \"id\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"source\": {\n" + + " \"type\": \"string\"\n" + + " },\n" + + " \"type\": {\n" + + " \"type\": \"string\",\n" + + " \"minLength\": 1\n" + + " },\n" + + " \"content\": {\n" + + " \"properties\": {},\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"id\",\n" + + " \"type\",\n" + + " \"content\"\n" + + " ]\n" + + " },\n" + + " \"customData\": {\n" + + " \"oneOf\": [\n" + + " {\n" + + " \"type\": \"object\"\n" + + " },\n" + + " {\n" + + " \"type\": \"string\",\n" + + " \"contentEncoding\": \"base64\"\n" + + " }\n" + + " ]\n" + + " },\n" + + " \"customDataContentType\": {\n" + + " \"type\": \"string\"\n" + + " }\n" + + " },\n" + + " \"additionalProperties\": false,\n" + + " \"type\": \"object\",\n" + + " \"required\": [\n" + + " \"context\",\n" + + " \"subject\"\n" + + " ]\n" + + "}"; + } + + /** + * @param subjectId + * sets the subject Id + */ + public void setSubjectId(String subjectId) { + getSubject().setId(subjectId); + } + + /** + * @param subjectSource + * sets the subject source + */ + public void setSubjectSource(URI subjectSource) { + getSubject().setSource(subjectSource); + } + +} diff --git a/src/main/java/dev/cdevents/models/ArtifactPackagedSubject.java b/src/main/java/dev/cdevents/models/ArtifactPackagedSubject.java new file mode 100644 index 0000000..774b1f3 --- /dev/null +++ b/src/main/java/dev/cdevents/models/ArtifactPackagedSubject.java @@ -0,0 +1,87 @@ +package dev.cdevents.models; + +import com.fasterxml.jackson.annotation.JsonProperty; +import dev.cdevents.constants.CDEventConstants; + +import java.net.URI; + +public class ArtifactPackagedSubject extends Subject { + + @JsonProperty(required = true) + private ArtifactPackagedSubjectContent content = new ArtifactPackagedSubjectContent(); + + /** + * @return the Artifact subject's Content + */ + public ArtifactPackagedSubjectContent getContent() { + return content; + } + + /** + * @param content + */ + public void setContent(ArtifactPackagedSubjectContent content) { + this.content = content; + } + + /** + * @param subjectType + */ + public ArtifactPackagedSubject(CDEventConstants.SubjectType subjectType) { + super(subjectType); + setContent(new ArtifactPackagedSubjectContent()); + } + + public class ArtifactPackagedSubjectContent { + private Change change = new Change(); + + /** + * @return change + */ + public Change getChange() { + return change; + } + + /** + * @param change + */ + public void setChange(Change change) { + this.change = change; + } + + public class Change { + private String id; + + private URI source; + + /** + * @return id + */ + public String getId() { + return id; + } + + /** + * @param id + */ + public void setId(String id) { + this.id = id; + } + + /** + * @return source + */ + public URI getSource() { + return source; + } + + /** + * @param source + */ + public void setSource(URI source) { + this.source = source; + } + } + } + +} diff --git a/src/main/java/dev/cdevents/models/ArtifactPublishedSubject.java b/src/main/java/dev/cdevents/models/ArtifactPublishedSubject.java new file mode 100644 index 0000000..7749562 --- /dev/null +++ b/src/main/java/dev/cdevents/models/ArtifactPublishedSubject.java @@ -0,0 +1,32 @@ +package dev.cdevents.models; + +import com.fasterxml.jackson.annotation.JsonProperty; +import dev.cdevents.constants.CDEventConstants; + +public class ArtifactPublishedSubject extends Subject { + + @JsonProperty(required = true) + private Object content = new Object(); + + /** + * @return the Artifact subject's Content + */ + public Object getContent() { + return content; + } + + /** + * @param content + */ + public void setContent(Object content) { + this.content = content; + } + + /** + * @param subjectType + */ + public ArtifactPublishedSubject(CDEventConstants.SubjectType subjectType) { + super(subjectType); + } + +} diff --git a/src/main/java/dev/cdevents/models/BuildFinishedSubject.java b/src/main/java/dev/cdevents/models/BuildFinishedSubject.java new file mode 100644 index 0000000..91fdfe8 --- /dev/null +++ b/src/main/java/dev/cdevents/models/BuildFinishedSubject.java @@ -0,0 +1,52 @@ +package dev.cdevents.models; + +import com.fasterxml.jackson.annotation.JsonProperty; +import dev.cdevents.constants.CDEventConstants; + +public class BuildFinishedSubject extends Subject { + + @JsonProperty(required = true) + private BuildFinishedSubjectContent content = new BuildFinishedSubjectContent(); + + /** + * @return the BuildStarted subject's Content + */ + public BuildFinishedSubjectContent getContent() { + return content; + } + + /** + * @param content + */ + public void setContent(BuildFinishedSubjectContent content) { + this.content = content; + } + + /** + * @param subjectType + */ + public BuildFinishedSubject(CDEventConstants.SubjectType subjectType) { + super(subjectType); + } + + public class BuildFinishedSubjectContent { + + @JsonProperty(required = true) + private String artifactId; + + /** + * @return artifactId + */ + public String getArtifactId() { + return artifactId; + } + + /** + * @param artifactId + */ + public void setArtifactId(String artifactId) { + this.artifactId = artifactId; + } + } + +} diff --git a/src/main/java/dev/cdevents/models/BuildQueuedSubject.java b/src/main/java/dev/cdevents/models/BuildQueuedSubject.java new file mode 100644 index 0000000..6b34400 --- /dev/null +++ b/src/main/java/dev/cdevents/models/BuildQueuedSubject.java @@ -0,0 +1,32 @@ +package dev.cdevents.models; + +import com.fasterxml.jackson.annotation.JsonProperty; +import dev.cdevents.constants.CDEventConstants; + +public class BuildQueuedSubject extends Subject { + + @JsonProperty(required = true) + private Object content = new Object(); + + /** + * @return the BuildQueued subject's Content + */ + public Object getContent() { + return content; + } + + /** + * @param content + */ + public void setContent(Object content) { + this.content = content; + } + + /** + * @param subjectType + */ + public BuildQueuedSubject(CDEventConstants.SubjectType subjectType) { + super(subjectType); + } + +} diff --git a/src/main/java/dev/cdevents/models/BuildStartedSubject.java b/src/main/java/dev/cdevents/models/BuildStartedSubject.java new file mode 100644 index 0000000..0dc32d6 --- /dev/null +++ b/src/main/java/dev/cdevents/models/BuildStartedSubject.java @@ -0,0 +1,32 @@ +package dev.cdevents.models; + +import com.fasterxml.jackson.annotation.JsonProperty; +import dev.cdevents.constants.CDEventConstants; + +public class BuildStartedSubject extends Subject { + + @JsonProperty(required = true) + private Object content = new Object(); + + /** + * @return the BuildStarted subject's Content + */ + public Object getContent() { + return content; + } + + /** + * @param content + */ + public void setContent(Object content) { + this.content = content; + } + + /** + * @param subjectType + */ + public BuildStartedSubject(CDEventConstants.SubjectType subjectType) { + super(subjectType); + } + +} diff --git a/src/main/java/dev/cdevents/models/TestCaseSubject.java b/src/main/java/dev/cdevents/models/TestCaseSubject.java new file mode 100644 index 0000000..1f0417a --- /dev/null +++ b/src/main/java/dev/cdevents/models/TestCaseSubject.java @@ -0,0 +1,32 @@ +package dev.cdevents.models; + +import com.fasterxml.jackson.annotation.JsonProperty; +import dev.cdevents.constants.CDEventConstants; + +public class TestCaseSubject extends Subject { + + @JsonProperty(required = true) + private Object content = new Object(); + + /** + * @return the TestCase subject's Content + */ + public Object getContent() { + return content; + } + + /** + * @param content + */ + public void setContent(Object content) { + this.content = content; + } + + /** + * @param subjectType + */ + public TestCaseSubject(CDEventConstants.SubjectType subjectType) { + super(subjectType); + } + +} diff --git a/src/main/java/dev/cdevents/models/TestSuiteSubject.java b/src/main/java/dev/cdevents/models/TestSuiteSubject.java new file mode 100644 index 0000000..451f3a8 --- /dev/null +++ b/src/main/java/dev/cdevents/models/TestSuiteSubject.java @@ -0,0 +1,32 @@ +package dev.cdevents.models; + +import com.fasterxml.jackson.annotation.JsonProperty; +import dev.cdevents.constants.CDEventConstants; + +public class TestSuiteSubject extends Subject { + + @JsonProperty(required = true) + private Object content = new Object(); + + /** + * @return the TestCase subject's Content + */ + public Object getContent() { + return content; + } + + /** + * @param content + */ + public void setContent(Object content) { + this.content = content; + } + + /** + * @param subjectType + */ + public TestSuiteSubject(CDEventConstants.SubjectType subjectType) { + super(subjectType); + } + +} diff --git a/src/test/java/dev/cdevents/CDEventsTest.java b/src/test/java/dev/cdevents/CDEventsTest.java index b73fda2..77d443f 100644 --- a/src/test/java/dev/cdevents/CDEventsTest.java +++ b/src/test/java/dev/cdevents/CDEventsTest.java @@ -581,6 +581,340 @@ void testInvalidChangeUpdatedEventWithNoSubject() { assertThat(exception.getMessage()).isEqualTo(expectedError); } + @Test + void createBuildQueuedEventAsCloudEvent() { + + BuildQueuedCDEvent cdEvent = new BuildQueuedCDEvent(); + cdEvent.setSource(URI.create("http://dev.cdevents")); + + cdEvent.setSubjectId("test-build"); + cdEvent.setSubjectSource(URI.create("/dev/builds/test-build")); + + String cdEventJson = CDEvents.cdEventAsJson(cdEvent); + + CloudEvent ceEvent = CDEvents.cdEventAsCloudEvent(cdEvent); + + String ceDataJson = new String(ceEvent.getData().toBytes(), StandardCharsets.UTF_8); + + assertThat(ceEvent.getType()).isEqualTo(cdEvent.getContext().getType()); + assertThat(ceEvent.getSource()).isEqualTo(cdEvent.getContext().getSource()); + assertThat(ceDataJson).isEqualTo(cdEventJson); + } + + @Test + void testInvalidBuildQueuedEventWithNoSubject() { + BuildQueuedCDEvent cdEvent = new BuildQueuedCDEvent(); + cdEvent.setSource(URI.create("http://dev.cdevents")); + + Exception exception = assertThrows(CDEventsException.class, () -> { + CDEvents.cdEventAsCloudEvent(cdEvent); + }); + String expectedError = "CDEvent validation failed against schema URL - " + cdEvent.schemaURL(); + + assertThat(exception.getMessage()).isEqualTo(expectedError); + } + + @Test + void createBuildStartedEventAsCloudEvent() { + + BuildStartedCDEvent cdEvent = new BuildStartedCDEvent(); + cdEvent.setSource(URI.create("http://dev.cdevents")); + + cdEvent.setSubjectId("test-build"); + cdEvent.setSubjectSource(URI.create("/dev/builds/test-build")); + + String cdEventJson = CDEvents.cdEventAsJson(cdEvent); + + CloudEvent ceEvent = CDEvents.cdEventAsCloudEvent(cdEvent); + + String ceDataJson = new String(ceEvent.getData().toBytes(), StandardCharsets.UTF_8); + + assertThat(ceEvent.getType()).isEqualTo(cdEvent.getContext().getType()); + assertThat(ceEvent.getSource()).isEqualTo(cdEvent.getContext().getSource()); + assertThat(ceDataJson).isEqualTo(cdEventJson); + } + + @Test + void testInvalidBuildStartedEventWithNoSubject() { + BuildStartedCDEvent cdEvent = new BuildStartedCDEvent(); + cdEvent.setSource(URI.create("http://dev.cdevents")); + + Exception exception = assertThrows(CDEventsException.class, () -> { + CDEvents.cdEventAsCloudEvent(cdEvent); + }); + String expectedError = "CDEvent validation failed against schema URL - " + cdEvent.schemaURL(); + + assertThat(exception.getMessage()).isEqualTo(expectedError); + } + + @Test + void createBuildFinishedAsCloudEvent() { + + BuildFinishedCDEvent cdEvent = new BuildFinishedCDEvent(); + cdEvent.setSource(URI.create("http://dev.cdevents")); + + cdEvent.setSubjectId("test-build"); + cdEvent.setSubjectSource(URI.create("/dev/builds/test-build")); + cdEvent.setSubjectArtifactId("pkg:oci/myapp@sha256%3A0b31b1c02ff458ad9b7b81cbdf8f"); + + String cdEventJson = CDEvents.cdEventAsJson(cdEvent); + + CloudEvent ceEvent = CDEvents.cdEventAsCloudEvent(cdEvent); + + String ceDataJson = new String(ceEvent.getData().toBytes(), StandardCharsets.UTF_8); + + assertThat(ceEvent.getType()).isEqualTo(cdEvent.getContext().getType()); + assertThat(ceEvent.getSource()).isEqualTo(cdEvent.getContext().getSource()); + assertThat(ceDataJson).isEqualTo(cdEventJson); + } + + @Test + void testInvalidBuildFinishedEventWithNoSubject() { + BuildFinishedCDEvent cdEvent = new BuildFinishedCDEvent(); + cdEvent.setSource(URI.create("http://dev.cdevents")); + + Exception exception = assertThrows(CDEventsException.class, () -> { + CDEvents.cdEventAsCloudEvent(cdEvent); + }); + String expectedError = "CDEvent validation failed against schema URL - " + cdEvent.schemaURL(); + + assertThat(exception.getMessage()).isEqualTo(expectedError); + } + + @Test + void createTestCaseQueuedEventAsCloudEvent() { + + TestCaseQueuedCDEvent cdEvent = new TestCaseQueuedCDEvent(); + cdEvent.setSource(URI.create("http://dev.cdevents")); + + cdEvent.setSubjectId("test-case-1"); + cdEvent.setSubjectSource(URI.create("/dev/test-case")); + + String cdEventJson = CDEvents.cdEventAsJson(cdEvent); + + CloudEvent ceEvent = CDEvents.cdEventAsCloudEvent(cdEvent); + + String ceDataJson = new String(ceEvent.getData().toBytes(), StandardCharsets.UTF_8); + + assertThat(ceEvent.getType()).isEqualTo(cdEvent.getContext().getType()); + assertThat(ceEvent.getSource()).isEqualTo(cdEvent.getContext().getSource()); + assertThat(ceDataJson).isEqualTo(cdEventJson); + } + + @Test + void testInvalidTestCaseQueuedEventWithNoSubject() { + TestCaseQueuedCDEvent cdEvent = new TestCaseQueuedCDEvent(); + cdEvent.setSource(URI.create("http://dev.cdevents")); + + Exception exception = assertThrows(CDEventsException.class, () -> { + CDEvents.cdEventAsCloudEvent(cdEvent); + }); + String expectedError = "CDEvent validation failed against schema URL - " + cdEvent.schemaURL(); + + assertThat(exception.getMessage()).isEqualTo(expectedError); + } + @Test + void createTestCaseStartedEventAsCloudEvent() { + + TestCaseStartedCDEvent cdEvent = new TestCaseStartedCDEvent(); + cdEvent.setSource(URI.create("http://dev.cdevents")); + + cdEvent.setSubjectId("test-case-1"); + cdEvent.setSubjectSource(URI.create("/dev/test-case")); + + String cdEventJson = CDEvents.cdEventAsJson(cdEvent); + + CloudEvent ceEvent = CDEvents.cdEventAsCloudEvent(cdEvent); + + String ceDataJson = new String(ceEvent.getData().toBytes(), StandardCharsets.UTF_8); + + assertThat(ceEvent.getType()).isEqualTo(cdEvent.getContext().getType()); + assertThat(ceEvent.getSource()).isEqualTo(cdEvent.getContext().getSource()); + assertThat(ceDataJson).isEqualTo(cdEventJson); + } + + @Test + void testInvalidTestCaseStartedEventWithNoSubject() { + TestCaseStartedCDEvent cdEvent = new TestCaseStartedCDEvent(); + cdEvent.setSource(URI.create("http://dev.cdevents")); + + Exception exception = assertThrows(CDEventsException.class, () -> { + CDEvents.cdEventAsCloudEvent(cdEvent); + }); + String expectedError = "CDEvent validation failed against schema URL - " + cdEvent.schemaURL(); + + assertThat(exception.getMessage()).isEqualTo(expectedError); + } + + @Test + void createTestCaseFinishedEventAsCloudEvent() { + + TestCaseFinishedCDEvent cdEvent = new TestCaseFinishedCDEvent(); + cdEvent.setSource(URI.create("http://dev.cdevents")); + + cdEvent.setSubjectId("test-case-1"); + cdEvent.setSubjectSource(URI.create("/dev/test-case")); + + String cdEventJson = CDEvents.cdEventAsJson(cdEvent); + + CloudEvent ceEvent = CDEvents.cdEventAsCloudEvent(cdEvent); + + String ceDataJson = new String(ceEvent.getData().toBytes(), StandardCharsets.UTF_8); + + assertThat(ceEvent.getType()).isEqualTo(cdEvent.getContext().getType()); + assertThat(ceEvent.getSource()).isEqualTo(cdEvent.getContext().getSource()); + assertThat(ceDataJson).isEqualTo(cdEventJson); + } + + @Test + void testInvalidTestCaseFinishedEventWithNoSubject() { + TestCaseFinishedCDEvent cdEvent = new TestCaseFinishedCDEvent(); + cdEvent.setSource(URI.create("http://dev.cdevents")); + + Exception exception = assertThrows(CDEventsException.class, () -> { + CDEvents.cdEventAsCloudEvent(cdEvent); + }); + String expectedError = "CDEvent validation failed against schema URL - " + cdEvent.schemaURL(); + + assertThat(exception.getMessage()).isEqualTo(expectedError); + } + + @Test + void createTestSuiteStartedEventAsCloudEvent() { + + TestSuiteStartedCDEvent cdEvent = new TestSuiteStartedCDEvent(); + cdEvent.setSource(URI.create("http://dev.cdevents")); + + cdEvent.setSubjectId("test-suite-1"); + cdEvent.setSubjectSource(URI.create("/dev/test-suite")); + + String cdEventJson = CDEvents.cdEventAsJson(cdEvent); + + CloudEvent ceEvent = CDEvents.cdEventAsCloudEvent(cdEvent); + + String ceDataJson = new String(ceEvent.getData().toBytes(), StandardCharsets.UTF_8); + + assertThat(ceEvent.getType()).isEqualTo(cdEvent.getContext().getType()); + assertThat(ceEvent.getSource()).isEqualTo(cdEvent.getContext().getSource()); + assertThat(ceDataJson).isEqualTo(cdEventJson); + } + + @Test + void testInvalidTestSuiteStartedEventWithNoSubject() { + TestSuiteStartedCDEvent cdEvent = new TestSuiteStartedCDEvent(); + cdEvent.setSource(URI.create("http://dev.cdevents")); + + Exception exception = assertThrows(CDEventsException.class, () -> { + CDEvents.cdEventAsCloudEvent(cdEvent); + }); + String expectedError = "CDEvent validation failed against schema URL - " + cdEvent.schemaURL(); + + assertThat(exception.getMessage()).isEqualTo(expectedError); + } + + @Test + void createTestSuiteFinishedEventAsCloudEvent() { + + TestSuiteFinishedCDEvent cdEvent = new TestSuiteFinishedCDEvent(); + cdEvent.setSource(URI.create("http://dev.cdevents")); + + cdEvent.setSubjectId("test-suite-1"); + cdEvent.setSubjectSource(URI.create("/dev/test-suite")); + + String cdEventJson = CDEvents.cdEventAsJson(cdEvent); + + CloudEvent ceEvent = CDEvents.cdEventAsCloudEvent(cdEvent); + + String ceDataJson = new String(ceEvent.getData().toBytes(), StandardCharsets.UTF_8); + + assertThat(ceEvent.getType()).isEqualTo(cdEvent.getContext().getType()); + assertThat(ceEvent.getSource()).isEqualTo(cdEvent.getContext().getSource()); + assertThat(ceDataJson).isEqualTo(cdEventJson); + } + + @Test + void testInvalidTestSuiteFinishedEventWithNoSubject() { + TestSuiteFinishedCDEvent cdEvent = new TestSuiteFinishedCDEvent(); + cdEvent.setSource(URI.create("http://dev.cdevents")); + + Exception exception = assertThrows(CDEventsException.class, () -> { + CDEvents.cdEventAsCloudEvent(cdEvent); + }); + String expectedError = "CDEvent validation failed against schema URL - " + cdEvent.schemaURL(); + + assertThat(exception.getMessage()).isEqualTo(expectedError); + } + + @Test + void createArtifactPackagedEventAsCloudEvent() { + + ArtifactPackagedCDEvent cdEvent = new ArtifactPackagedCDEvent(); + cdEvent.setSource(URI.create("http://dev.cdevents")); + + cdEvent.setSubjectId("pkg:oci/myapp@sha256%3A0b31b1c02ff458ad9b7b"); + cdEvent.setSubjectSource(URI.create("/dev/artifact/source")); + + cdEvent.setSubjectChangeId("test-feature"); + cdEvent.setSubjectChangeSource(URI.create("/github.com/test-repo")); + + String cdEventJson = CDEvents.cdEventAsJson(cdEvent); + + CloudEvent ceEvent = CDEvents.cdEventAsCloudEvent(cdEvent); + + String ceDataJson = new String(ceEvent.getData().toBytes(), StandardCharsets.UTF_8); + + assertThat(ceEvent.getType()).isEqualTo(cdEvent.getContext().getType()); + assertThat(ceEvent.getSource()).isEqualTo(cdEvent.getContext().getSource()); + assertThat(ceDataJson).isEqualTo(cdEventJson); + } + + @Test + void testInvalidArtifactPackagedEventWithNoSubject() { + ArtifactPackagedCDEvent cdEvent = new ArtifactPackagedCDEvent(); + cdEvent.setSource(URI.create("http://dev.cdevents")); + + Exception exception = assertThrows(CDEventsException.class, () -> { + CDEvents.cdEventAsCloudEvent(cdEvent); + }); + String expectedError = "CDEvent validation failed against schema URL - " + cdEvent.schemaURL(); + + assertThat(exception.getMessage()).isEqualTo(expectedError); + } + + @Test + void createArtifactPublishedEventAsCloudEvent() { + ArtifactPublishedCDEvent cdEvent = new ArtifactPublishedCDEvent(); + cdEvent.setSource(URI.create("http://dev.cdevents")); + + cdEvent.setSubjectId("pkg:oci/myapp@sha256%3A0b31b1c02ff458ad9b7b"); + cdEvent.setSubjectSource(URI.create("/dev/artifact/source")); + + String cdEventJson = CDEvents.cdEventAsJson(cdEvent); + + CloudEvent ceEvent = CDEvents.cdEventAsCloudEvent(cdEvent); + + String ceDataJson = new String(ceEvent.getData().toBytes(), StandardCharsets.UTF_8); + + assertThat(ceEvent.getType()).isEqualTo(cdEvent.getContext().getType()); + assertThat(ceEvent.getSource()).isEqualTo(cdEvent.getContext().getSource()); + assertThat(ceDataJson).isEqualTo(cdEventJson); + + } + + @Test + void testInvalidArtifactPublishedEventWithNoSubject() { + ArtifactPublishedCDEvent cdEvent = new ArtifactPublishedCDEvent(); + + cdEvent.setSource(URI.create("http://dev.cdevents")); + + Exception exception = assertThrows(CDEventsException.class, () -> { + CDEvents.cdEventAsCloudEvent(cdEvent); + }); + String expectedError = "CDEvent validation failed against schema URL - " + cdEvent.schemaURL(); + + assertThat(exception.getMessage()).isEqualTo(expectedError); + } + @Test void createEnvironmentCreatedEventAsCloudEvent(){ EnvironmentCreatedCDEvent cdEvent = new EnvironmentCreatedCDEvent();