Skip to content

Commit 2312ce4

Browse files
xdurvakRaja Maragani
authored and
Raja Maragani
committed
POJO generation from json schemas (#35)
* Added functionality for generating events from schemas * Added changes for Pojo generation from schemas * added constants for eventParams and msgParams * added static methods and constants for message and cause * added changes in CHANGELOG.md * Added changelog for Pojo generation
1 parent 6d475d0 commit 2312ce4

File tree

132 files changed

+11255
-645
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

132 files changed

+11255
-645
lines changed

CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 0.2.0
2+
- Implemented pojo's generation from json schemas using jsonSchema2pojo plugin
3+
we used Eiffel repo,topic-drop4 branch sha_id: 5bc648b4fb906db6c370e35fe45c941462ca18a8
4+
5+
16
## 0.1.9
27
- Implemented getServiceName and added remrem-protocol-interface
38

build.gradle

+34-8
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,22 @@
1-
plugins{
2-
id 'java'
3-
id 'com.github.johnrengelman.shadow' version '1.2.3'
4-
id 'maven'
5-
id 'jacoco'
6-
id 'com.github.kt3k.coveralls' version '2.6.3'
7-
}
1+
apply plugin: 'java'
2+
apply plugin: "com.github.johnrengelman.shadow"
3+
apply plugin: 'maven'
4+
apply plugin: 'jacoco'
5+
apply plugin: 'jsonschema2pojo'
6+
apply plugin: "com.github.kt3k.coveralls"
7+
8+
buildscript {
9+
repositories {
10+
mavenLocal()
11+
jcenter()
12+
}
13+
dependencies {
14+
classpath "com.github.jengelman.gradle.plugins:shadow:1.2.4"
15+
classpath 'org.jsonschema2pojo:jsonschema2pojo-gradle-plugin:latest.integration'
16+
classpath 'joda-time:joda-time:2.2'
17+
classpath "org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.6.3"
18+
}
19+
}
820

921
jacocoTestReport {
1022
reports {
@@ -35,7 +47,7 @@ jar {
3547

3648
shadowJar {
3749
baseName = 'eiffel-remrem-semantics'
38-
version = '0.1.9'
50+
version = '0.2.0'
3951
classifier = ''
4052
}
4153

@@ -80,4 +92,18 @@ dependencies {
8092
compile 'org.slf4j:slf4j-api:1.7.18'
8193
compile group: 'com.google.code.gson', name: 'gson', version: '1.7.2'
8294
testCompile 'junit:junit:4.12'
95+
compile 'org.apache.commons:commons-lang3:3.5'
96+
compile 'javax.validation:validation-api:1.1.0.CR2'
97+
compile 'joda-time:joda-time:2.2'
8398
}
99+
100+
// This task is used to generate Eiffel events from json schema using jsonschema2pojo plugin.
101+
jsonSchema2Pojo {
102+
source = files("${sourceSets.main.output.resourcesDir}/schemas/input")
103+
targetDirectory = file("src/main/java")
104+
targetPackage = 'com.ericsson.eiffel.semantics.events'
105+
useCommonsLang3 = true
106+
includeHashcodeAndEquals = false
107+
includeToString = false
108+
annotationStyle= 'gson'
109+
}

src/main/java/com/ericsson/eiffel/remrem/semantics/EiffelEventType.java

+19-3
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,25 @@
44

55

66
public enum EiffelEventType {
7-
ARTIFACT_PUBLISHED("eiffelartifactpublished"),
8-
ACTIVITY_FINISHED("eiffelactivityfinished");
9-
7+
ARTIFACT_PUBLISHED("EiffelArtifactPublishedEvent"),
8+
ACTIVITY_FINISHED("EiffelActivityFinishedEvent"),
9+
ACTIVITY_CANCELED("EiffelActivityCanceledEvent"),
10+
ARTIFACT_CREATED("EiffelArtifactCreatedEvent"),
11+
ACTIVITY_TRIGGERED("EiffelActivityTriggeredEvent"),
12+
CONFIDENCELEVEL_MODIFIED("EiffelConfidenceLevelModifiedEvent"),
13+
ACTIVITY_STARTED("EiffelActivityStartedEvent"),
14+
ANNOUNCEMENT_PUBLISHED("EiffelAnnouncementPublishedEvent"),
15+
COMPOSITION_DEFINED("EiffelCompositionDefinedEvent"),
16+
CONFIGURATION_APPLIED("EiffelConfigurationAppliedEvent"),
17+
ENVIRONMENT_DEFINED("EiffelEnvironmentDefinedEvent"),
18+
FLOWCONTEXT_DEFINED("EiffelFlowContextDefinedEvent"),
19+
SOURCECHANGE_CREATED("EiffelSourceChangeCreatedEvent"),
20+
SOURCECHANGE_SUBMITTED("EiffelSourceChangeSubmittedEvent"),
21+
TESTCASE_FINISHED("EiffelTestCaseFinishedEvent"),
22+
TESTCASE_STARTED("EiffelTestCaseStartedEvent"),
23+
TESTSUITE_FINISHED("EiffelTestSuiteFinishedEvent"),
24+
TESTSUITE_STARTED("EiffelTestSuiteStartedEvent");
25+
1026
private String id;
1127

1228
EiffelEventType(String id) {

src/main/java/com/ericsson/eiffel/remrem/semantics/SemanticsService.java

+68-13
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,24 @@
11
package com.ericsson.eiffel.remrem.semantics;
22

33

4+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.ACTIVITY_CANCELED;
45
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.ACTIVITY_FINISHED;
6+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.ACTIVITY_STARTED;
7+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.ACTIVITY_TRIGGERED;
8+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.ANNOUNCEMENT_PUBLISHED;
9+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.ARTIFACT_CREATED;
510
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.ARTIFACT_PUBLISHED;
11+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.COMPOSITION_DEFINED;
12+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.CONFIDENCELEVEL_MODIFIED;
13+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.CONFIGURATION_APPLIED;
14+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.ENVIRONMENT_DEFINED;
15+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.FLOWCONTEXT_DEFINED;
16+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.SOURCECHANGE_CREATED;
17+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.SOURCECHANGE_SUBMITTED;
18+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.TESTCASE_FINISHED;
19+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.TESTCASE_STARTED;
20+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.TESTSUITE_FINISHED;
21+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.TESTSUITE_STARTED;
622

723
import java.util.HashMap;
824
import java.util.Map;
@@ -14,12 +30,28 @@
1430

1531
import com.ericsson.eiffel.remrem.protocol.MsgService;
1632
import com.ericsson.eiffel.remrem.protocol.ValidationResult;
17-
import com.ericsson.eiffel.remrem.semantics.events.EiffelActivityFinishedEvent;
18-
import com.ericsson.eiffel.remrem.semantics.events.EiffelArtifactPublishedEvent;
19-
import com.ericsson.eiffel.remrem.semantics.events.Event;
2033
import com.ericsson.eiffel.remrem.semantics.factory.EiffelOutputValidatorFactory;
2134
import com.ericsson.eiffel.remrem.semantics.validator.EiffelValidationException;
2235
import com.ericsson.eiffel.remrem.semantics.validator.EiffelValidator;
36+
import com.ericsson.eiffel.semantics.events.EiffelActivityCanceledEvent;
37+
import com.ericsson.eiffel.semantics.events.EiffelActivityFinishedEvent;
38+
import com.ericsson.eiffel.semantics.events.EiffelActivityStartedEvent;
39+
import com.ericsson.eiffel.semantics.events.EiffelActivityTriggeredEvent;
40+
import com.ericsson.eiffel.semantics.events.EiffelAnnouncementPublishedEvent;
41+
import com.ericsson.eiffel.semantics.events.EiffelArtifactCreatedEvent;
42+
import com.ericsson.eiffel.semantics.events.EiffelArtifactPublishedEvent;
43+
import com.ericsson.eiffel.semantics.events.EiffelCompositionDefinedEvent;
44+
import com.ericsson.eiffel.semantics.events.EiffelConfidenceLevelModifiedEvent;
45+
import com.ericsson.eiffel.semantics.events.EiffelConfigurationAppliedEvent;
46+
import com.ericsson.eiffel.semantics.events.EiffelEnvironmentDefinedEvent;
47+
import com.ericsson.eiffel.semantics.events.EiffelFlowContextDefinedEvent;
48+
import com.ericsson.eiffel.semantics.events.EiffelSourceChangeCreatedEvent;
49+
import com.ericsson.eiffel.semantics.events.EiffelSourceChangeSubmittedEvent;
50+
import com.ericsson.eiffel.semantics.events.EiffelTestCaseFinishedEvent;
51+
import com.ericsson.eiffel.semantics.events.EiffelTestCaseStartedEvent;
52+
import com.ericsson.eiffel.semantics.events.EiffelTestSuiteFinishedEvent;
53+
import com.ericsson.eiffel.semantics.events.EiffelTestSuiteStartedEvent;
54+
import com.ericsson.eiffel.semantics.events.Event;
2355
import com.google.gson.Gson;
2456
import com.google.gson.JsonObject;
2557
import com.google.gson.JsonParser;
@@ -38,15 +70,32 @@ public class SemanticsService implements MsgService{
3870

3971
public static final Logger log = LoggerFactory.getLogger(SemanticsService.class);
4072

41-
private Gson gson = new Gson();
42-
private Map<EiffelEventType, Class<? extends Event>> eventTypes;
43-
44-
public SemanticsService() {
73+
private static Gson gson = new Gson();
74+
private static Map<EiffelEventType, Class<? extends Event>> eventTypes=SemanticsService.eventType();
75+
76+
public static Map<EiffelEventType, Class<? extends Event>> eventType()
77+
{
4578
eventTypes = new HashMap<>();
4679
eventTypes.put(ARTIFACT_PUBLISHED, EiffelArtifactPublishedEvent.class);
4780
eventTypes.put(ACTIVITY_FINISHED, EiffelActivityFinishedEvent.class);
81+
eventTypes.put(ARTIFACT_CREATED, EiffelArtifactCreatedEvent.class);
82+
eventTypes.put(ACTIVITY_CANCELED, EiffelActivityCanceledEvent.class);
83+
eventTypes.put(ACTIVITY_STARTED, EiffelActivityStartedEvent.class);
84+
eventTypes.put(ACTIVITY_TRIGGERED, EiffelActivityTriggeredEvent.class);
85+
eventTypes.put(CONFIDENCELEVEL_MODIFIED, EiffelConfidenceLevelModifiedEvent.class);
86+
eventTypes.put(ANNOUNCEMENT_PUBLISHED, EiffelAnnouncementPublishedEvent.class);
87+
eventTypes.put(COMPOSITION_DEFINED, EiffelCompositionDefinedEvent.class);
88+
eventTypes.put(CONFIGURATION_APPLIED, EiffelConfigurationAppliedEvent.class);
89+
eventTypes.put(ENVIRONMENT_DEFINED, EiffelEnvironmentDefinedEvent.class);
90+
eventTypes.put(FLOWCONTEXT_DEFINED, EiffelFlowContextDefinedEvent.class);
91+
eventTypes.put(SOURCECHANGE_CREATED, EiffelSourceChangeCreatedEvent.class);
92+
eventTypes.put(SOURCECHANGE_SUBMITTED, EiffelSourceChangeSubmittedEvent.class);
93+
eventTypes.put(TESTCASE_FINISHED, EiffelTestCaseFinishedEvent.class);
94+
eventTypes.put(TESTCASE_STARTED, EiffelTestCaseStartedEvent.class);
95+
eventTypes.put(TESTSUITE_FINISHED, EiffelTestSuiteFinishedEvent.class);
96+
eventTypes.put(TESTSUITE_STARTED, EiffelTestSuiteStartedEvent.class);
97+
return eventTypes;
4898
}
49-
5099
@Override
51100
public String generateMsg(String msgType, JsonObject bodyJson){
52101
EiffelEventType eiffelType = EiffelEventType.fromString(msgType);
@@ -59,10 +108,9 @@ public String generateMsg(String msgType, JsonObject bodyJson){
59108
JsonObject msgNodes = bodyJson.get(MSG_PARAMS).getAsJsonObject();
60109
JsonObject eventNodes = bodyJson.get(EVENT_PARAMS).getAsJsonObject();
61110

62-
Event event = createEvent(eventNodes, eventType);
63-
event.generateMeta(msgType, msgNodes);
111+
Event event = eventCreation(msgType, eventType, msgNodes, eventNodes);
64112

65-
String result = gson.toJson(event);
113+
String result = gson.toJson(event);
66114
try {
67115
outputValidate(eiffelType, result);
68116
} catch (EiffelValidationException e) {
@@ -71,9 +119,16 @@ public String generateMsg(String msgType, JsonObject bodyJson){
71119
}
72120
return result;
73121
}
122+
private static Event eventCreation(String msgType, Class<? extends Event> eventType, JsonObject msgNodes,
123+
JsonObject eventNodes) {
124+
Event event = createEvent(eventNodes, eventType);
125+
event.generateMeta(msgType, msgNodes);
126+
event.setMeta(event.meta);
127+
return event;
128+
}
74129

75-
private Event createEvent(JsonObject eventNodes, Class<? extends Event> eventType) {
76-
return gson.fromJson(eventNodes, eventType);
130+
private static Event createEvent(JsonObject eventNodes, Class<? extends Event> eventType) {
131+
return gson.fromJson(eventNodes, eventType);
77132
}
78133

79134
private String createErrorResponse(final String message, final String cause){

src/main/java/com/ericsson/eiffel/remrem/semantics/events/EiffelActivityFinishedEvent.java

-24
This file was deleted.

src/main/java/com/ericsson/eiffel/remrem/semantics/events/EiffelArtifactPublishedEvent.java

-22
This file was deleted.

src/main/java/com/ericsson/eiffel/remrem/semantics/factory/EiffelOutputValidatorFactory.java

+38-7
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,52 @@
44
import com.ericsson.eiffel.remrem.semantics.validator.EiffelValidator;
55
import com.ericsson.eiffel.remrem.semantics.validator.OutputValidator;
66

7-
import java.util.EnumMap;
8-
7+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.ACTIVITY_CANCELED;
98
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.ACTIVITY_FINISHED;
9+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.ACTIVITY_STARTED;
10+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.ACTIVITY_TRIGGERED;
11+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.ANNOUNCEMENT_PUBLISHED;
12+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.ARTIFACT_CREATED;
1013
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.ARTIFACT_PUBLISHED;
14+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.COMPOSITION_DEFINED;
15+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.CONFIDENCELEVEL_MODIFIED;
16+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.CONFIGURATION_APPLIED;
17+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.ENVIRONMENT_DEFINED;
18+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.FLOWCONTEXT_DEFINED;
19+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.SOURCECHANGE_CREATED;
20+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.SOURCECHANGE_SUBMITTED;
21+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.TESTCASE_FINISHED;
22+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.TESTCASE_STARTED;
23+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.TESTSUITE_FINISHED;
24+
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.TESTSUITE_STARTED;
25+
26+
import java.util.EnumMap;
1127

1228
public class EiffelOutputValidatorFactory {
1329

1430
private static final EnumMap<EiffelEventType, EiffelValidator> validators = new EnumMap<>(EiffelEventType.class);
1531

16-
static {
17-
validators.put(ACTIVITY_FINISHED,
18-
new OutputValidator("schemas/output/ActivityFinished.json"));
1932

20-
validators.put(ARTIFACT_PUBLISHED,
21-
new OutputValidator("schemas/output/ArtifactPublished.json"));
33+
static {
34+
validators.put(ACTIVITY_FINISHED, new OutputValidator("schemas/input/EiffelActivityFinishedEvent.json"));
35+
validators.put(ARTIFACT_PUBLISHED, new OutputValidator("schemas/input/EiffelArtifactPublishedEvent.json"));
36+
validators.put(ARTIFACT_CREATED, new OutputValidator("schemas/input/EiffelArtifactCreatedEvent.json"));
37+
validators.put(ACTIVITY_STARTED, new OutputValidator("schemas/input/EiffelActivityStartedEvent.json"));
38+
validators.put(ACTIVITY_CANCELED, new OutputValidator("schemas/input/EiffelActivityCanceledEvent.json"));
39+
validators.put(ACTIVITY_TRIGGERED, new OutputValidator("schemas/input/EiffelActivityTriggeredEvent.json"));
40+
validators.put(ANNOUNCEMENT_PUBLISHED, new OutputValidator("schemas/input/EiffelAnnouncementPublishedEvent.json"));
41+
validators.put(COMPOSITION_DEFINED, new OutputValidator("schemas/input/EiffelCompositionDefinedEvent.json"));
42+
validators.put(CONFIGURATION_APPLIED, new OutputValidator("schemas/input/EiffelConfigurationAppliedEvent.json"));
43+
validators.put(ENVIRONMENT_DEFINED, new OutputValidator("schemas/input/EiffelEnvironmentDefinedEvent.json"));
44+
validators.put(FLOWCONTEXT_DEFINED, new OutputValidator("schemas/input/EiffelFlowContextDefinedEvent.json"));
45+
validators.put(SOURCECHANGE_CREATED, new OutputValidator("schemas/input/EiffelSourceChangeCreatedEvent.json"));
46+
validators.put(SOURCECHANGE_SUBMITTED, new OutputValidator("schemas/input/EiffelSourceChangeSubmittedEvent.json"));
47+
validators.put(TESTCASE_FINISHED, new OutputValidator("schemas/input/EiffelTestCaseFinishedEvent.json"));
48+
validators.put(TESTCASE_STARTED, new OutputValidator("schemas/input/EiffelTestCaseStartedEvent.json"));
49+
validators.put(TESTSUITE_FINISHED, new OutputValidator("schemas/input/EiffelTestSuiteFinishedEvent.json"));
50+
validators.put(TESTSUITE_STARTED, new OutputValidator("schemas/input/EiffelTestSuiteStartedEvent.json"));
51+
validators.put(CONFIDENCELEVEL_MODIFIED,
52+
new OutputValidator("schemas/input/EiffelConfidenceLevelModifiedEvent.json"));
2253
}
2354

2455
public static EiffelValidator getEiffelValidator(EiffelEventType type) {

src/main/java/com/ericsson/eiffel/remrem/semantics/models/Data.java

-30
This file was deleted.

src/main/java/com/ericsson/eiffel/remrem/semantics/models/Links.java

-6
This file was deleted.

0 commit comments

Comments
 (0)