Skip to content

Commit 102f761

Browse files
authored
Source code CDEvents to render as CloudEvent and schema validation (#42)
* Source code events to implement with new object model * updating source code events spec version to 0.1.2
1 parent 2d5515b commit 102f761

15 files changed

+2674
-2
lines changed

src/main/java/dev/cdevents/constants/CDEventConstants.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,29 @@ private CDEventConstants() {
1313
public enum SubjectType {
1414

1515
/**
16-
* Subject Type taskRun.
16+
* Subject type repository.
17+
*/
18+
REPOSITORY("repository"),
19+
20+
/**
21+
* Subject type taskRun.
1722
*/
1823
TASKRUN("taskRun"),
24+
1925
/**
2026
* Subject Type pipelineRun.
2127
*/
22-
PIPELINERUN("pipelineRun");
28+
PIPELINERUN("pipelineRun"),
29+
30+
/**
31+
* Subject type branch.
32+
*/
33+
BRANCH("branch"),
34+
35+
/**
36+
* Subject type change.
37+
*/
38+
CHANGE("change");
2339

2440
private String subjectType;
2541

Lines changed: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
package dev.cdevents.events;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import dev.cdevents.constants.CDEventConstants;
5+
import dev.cdevents.models.BranchSubject;
6+
import dev.cdevents.models.CDEvent;
7+
8+
import java.net.URI;
9+
10+
public class BranchCreatedCDEvent extends CDEvent {
11+
12+
private static final String CDEVENT_VERSION = "0.1.1";
13+
@JsonProperty(required = true)
14+
private BranchSubject subject;
15+
16+
/**
17+
* Constructor to init CDEvent and set the Subject for {@link BranchCreatedCDEvent}.
18+
*/
19+
public BranchCreatedCDEvent() {
20+
initCDEvent(currentCDEventType());
21+
setSubject(new BranchSubject(CDEventConstants.SubjectType.BRANCH));
22+
}
23+
24+
/**
25+
* @return subject
26+
*/
27+
public BranchSubject getSubject() {
28+
return subject;
29+
}
30+
31+
/**
32+
* @param subject
33+
*/
34+
public void setSubject(BranchSubject subject) {
35+
this.subject = subject;
36+
}
37+
38+
/**
39+
* @return the current CDEvent type
40+
*/
41+
@Override
42+
public String currentCDEventType() {
43+
return CDEventConstants.CDEventTypes.BranchCreatedEvent.getEventType().concat(CDEVENT_VERSION);
44+
}
45+
46+
/**
47+
* @return the branch-created-event schema URL
48+
*/
49+
@Override
50+
public String schemaURL() {
51+
return String.format("https://cdevents.dev/%s/schema/branch-created-event", CDEventConstants.CDEVENTS_SPEC_VERSION);
52+
}
53+
54+
/**
55+
* @return the branch-created-event schema Json
56+
*/
57+
@Override
58+
public String eventSchema() {
59+
return "{\n" +
60+
" \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n" +
61+
" \"$id\": \"https://cdevents.dev/0.1.2/schema/branch-created-event\",\n" +
62+
" \"properties\": {\n" +
63+
" \"context\": {\n" +
64+
" \"properties\": {\n" +
65+
" \"version\": {\n" +
66+
" \"type\": \"string\",\n" +
67+
" \"minLength\": 1\n" +
68+
" },\n" +
69+
" \"id\": {\n" +
70+
" \"type\": \"string\",\n" +
71+
" \"minLength\": 1\n" +
72+
" },\n" +
73+
" \"source\": {\n" +
74+
" \"type\": \"string\",\n" +
75+
" \"minLength\": 1\n" +
76+
" },\n" +
77+
" \"type\": {\n" +
78+
" \"type\": \"string\",\n" +
79+
" \"enum\": [\n" +
80+
" \"dev.cdevents.branch.created.0.1.1\"\n" +
81+
" ],\n" +
82+
" \"default\": \"dev.cdevents.branch.created.0.1.1\"\n" +
83+
" },\n" +
84+
" \"timestamp\": {\n" +
85+
" \"type\": \"string\",\n" +
86+
" \"format\": \"date-time\"\n" +
87+
" }\n" +
88+
" },\n" +
89+
" \"additionalProperties\": false,\n" +
90+
" \"type\": \"object\",\n" +
91+
" \"required\": [\n" +
92+
" \"version\",\n" +
93+
" \"id\",\n" +
94+
" \"source\",\n" +
95+
" \"type\",\n" +
96+
" \"timestamp\"\n" +
97+
" ]\n" +
98+
" },\n" +
99+
" \"subject\": {\n" +
100+
" \"properties\": {\n" +
101+
" \"id\": {\n" +
102+
" \"type\": \"string\",\n" +
103+
" \"minLength\": 1\n" +
104+
" },\n" +
105+
" \"source\": {\n" +
106+
" \"type\": \"string\"\n" +
107+
" },\n" +
108+
" \"type\": {\n" +
109+
" \"type\": \"string\",\n" +
110+
" \"minLength\": 1\n" +
111+
" },\n" +
112+
" \"content\": {\n" +
113+
" \"properties\": {\n" +
114+
" \"repository\": {\n" +
115+
" \"properties\": {\n" +
116+
" \"id\": {\n" +
117+
" \"type\": \"string\",\n" +
118+
" \"minLength\": 1\n" +
119+
" },\n" +
120+
" \"source\": {\n" +
121+
" \"type\": \"string\"\n" +
122+
" }\n" +
123+
" },\n" +
124+
" \"additionalProperties\": false,\n" +
125+
" \"type\": \"object\",\n" +
126+
" \"required\": [\n" +
127+
" \"id\"\n" +
128+
" ]\n" +
129+
" }\n" +
130+
" },\n" +
131+
" \"additionalProperties\": false,\n" +
132+
" \"type\": \"object\"\n" +
133+
" }\n" +
134+
" },\n" +
135+
" \"additionalProperties\": false,\n" +
136+
" \"type\": \"object\",\n" +
137+
" \"required\": [\n" +
138+
" \"id\",\n" +
139+
" \"type\",\n" +
140+
" \"content\"\n" +
141+
" ]\n" +
142+
" },\n" +
143+
" \"customData\": {\n" +
144+
" \"oneOf\": [\n" +
145+
" {\n" +
146+
" \"type\": \"object\"\n" +
147+
" },\n" +
148+
" {\n" +
149+
" \"type\": \"string\",\n" +
150+
" \"contentEncoding\": \"base64\"\n" +
151+
" }\n" +
152+
" ]\n" +
153+
" },\n" +
154+
" \"customDataContentType\": {\n" +
155+
" \"type\": \"string\"\n" +
156+
" }\n" +
157+
" },\n" +
158+
" \"additionalProperties\": false,\n" +
159+
" \"type\": \"object\",\n" +
160+
" \"required\": [\n" +
161+
" \"context\",\n" +
162+
" \"subject\"\n" +
163+
" ]\n" +
164+
"}";
165+
}
166+
167+
/**
168+
* @param subjectId
169+
* sets the subject Id
170+
*/
171+
public void setSubjectId(String subjectId) {
172+
getSubject().setId(subjectId);
173+
}
174+
175+
/**
176+
* @param subjectSource
177+
* sets the branch source
178+
*/
179+
public void setSubjectSource(URI subjectSource) {
180+
getSubject().setSource(subjectSource);
181+
}
182+
183+
/**
184+
* @param repositoryId
185+
* sets the id of the repository
186+
*/
187+
public void setSubjectRepositoryId(String repositoryId) {
188+
getSubject().getContent().getRepository().setId(repositoryId);
189+
}
190+
191+
/**
192+
* @param repositorySource
193+
* sets the source of the repository.
194+
*/
195+
public void setSubjectRepositorySource(URI repositorySource) {
196+
getSubject().getContent().getRepository().setSource(repositorySource);
197+
}
198+
199+
}

0 commit comments

Comments
 (0)