Skip to content

Commit cbdd824

Browse files
author
Vali (Vasile Baluta)
committed
Merge branch 'p-backman-ericsson-master'
2 parents 5006b72 + bc48ca4 commit cbdd824

File tree

7 files changed

+106
-21
lines changed

7 files changed

+106
-21
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
## 0.1.6
2+
- removed lombok dependecy
3+
- improved logging and error messages to caller

build.gradle

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jar {
2424
baseName = 'eiffel-remrem-semantics'
2525
// If this version is updated please update it in Event.java
2626
// com.ericsson.eiffel.remrem.semantics.events
27-
version = '0.1.5'
27+
version = '0.1.6'
2828
manifest {
2929
attributes('Semantics-Version': version)
3030
}
@@ -33,7 +33,7 @@ jar {
3333

3434
shadowJar {
3535
baseName = 'eiffel-remrem-semantics'
36-
version = '0.1.5'
36+
version = '0.1.6'
3737
classifier = ''
3838
}
3939

@@ -68,6 +68,5 @@ dependencies {
6868
compile 'javax.inject:javax.inject:1'
6969
compile 'org.slf4j:slf4j-api:1.7.18'
7070
compile group: 'com.google.code.gson', name: 'gson', version: '1.7.2'
71-
compile group: 'org.projectlombok', name: 'lombok', version: '1.16.8'
7271
testCompile 'junit:junit:4.12'
7372
}

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

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,22 @@
1212
import com.google.gson.Gson;
1313
import com.google.gson.JsonObject;
1414
import com.google.gson.JsonParser;
15-
import lombok.extern.slf4j.Slf4j;
1615

1716
import java.util.HashMap;
1817
import java.util.Map;
19-
2018
import javax.inject.Named;
19+
import org.slf4j.Logger;
20+
import org.slf4j.LoggerFactory;
2121

2222
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.ACTIVITY_FINISHED;
2323
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.ARTIFACT_PUBLISHED;
2424

25-
@Named("eiffel-semantics") @Slf4j
25+
26+
@Named("eiffel-semantics")
2627
public class SemanticsService implements MsgService{
2728

29+
public static final Logger log = LoggerFactory.getLogger(SemanticsService.class);
30+
2831
private Gson gson = new Gson();
2932
private Map<EiffelEventType, Class<? extends Event>> eventTypes;
3033

@@ -38,7 +41,8 @@ public SemanticsService() {
3841
public String generateMsg(String msgType, JsonObject bodyJson){
3942
EiffelEventType eiffelType = EiffelEventType.fromString(msgType);
4043
if (eiffelType == null) {
41-
throw new IllegalArgumentException("Unknown message type requested: " + msgType);
44+
log.error("Unknown message type requested: " + msgType);
45+
return createErrorResponse("Unknown message type requested", "'" + msgType + "' is not in the vocabulary of this service");
4246
}
4347
Class<? extends Event> eventType = eventTypes.get(eiffelType);
4448

@@ -51,12 +55,9 @@ public String generateMsg(String msgType, JsonObject bodyJson){
5155
String result = gson.toJson(event);
5256
try {
5357
outputValidate(eiffelType, result);
54-
} catch (Exception e) {
55-
log.error(e.getMessage(), e);
56-
JsonObject errorResponse = new JsonObject();
57-
errorResponse.addProperty("message", e.getMessage());
58-
errorResponse.addProperty("cause", e.getCause().toString().replace("\n", ""));
59-
return errorResponse.toString();
58+
} catch (EiffelValidationException e) {
59+
log.error("Could not validate message. Reason:" + e.getMessage() +"\nCause: " + e.getCause().toString());
60+
return createErrorResponse(e.getMessage(), e.getCause().toString());
6061
}
6162
return result;
6263
}
@@ -65,6 +66,13 @@ private Event createEvent(JsonObject eventNodes, Class<? extends Event> eventTyp
6566
return gson.fromJson(eventNodes, eventType);
6667
}
6768

69+
private String createErrorResponse(final String message, final String cause){
70+
JsonObject errorResponse = new JsonObject();
71+
errorResponse.addProperty("message", message);
72+
errorResponse.addProperty("cause", cause.replace("\n", ""));
73+
return errorResponse.toString();
74+
}
75+
6876
private void outputValidate(EiffelEventType eiffelType, String jsonStringInput) throws EiffelValidationException {
6977
EiffelValidator validator = EiffelOutputValidatorFactory.getEiffelValidator(eiffelType);
7078
JsonObject jsonObject = new JsonParser().parse(jsonStringInput).getAsJsonObject();

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
public abstract class Event {
1414
public Meta meta;
15-
public static String version = "0.1.5";
15+
public static String version = "0.1.6";
1616

1717
@Inject
1818
private Attributes attributes;

src/main/java/com/ericsson/eiffel/remrem/semantics/validator/EiffelValidator.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,14 @@
66
import com.github.fge.jsonschema.main.JsonSchema;
77
import com.github.fge.jsonschema.main.JsonSchemaFactory;
88
import com.google.gson.JsonObject;
9-
import lombok.extern.slf4j.Slf4j;
109

11-
@Slf4j
10+
import org.slf4j.Logger;
11+
import org.slf4j.LoggerFactory;
12+
1213
//todo optional fields links.causes and links.context should be mutual exclusive
1314
public class EiffelValidator {
15+
public static final Logger log = LoggerFactory.getLogger(EiffelValidator.class);
16+
1417
private JsonSchema validationSchema;
1518
private String schemaResourceName;
1619

@@ -45,7 +48,7 @@ public void validate(JsonObject jsonObjectInput) throws EiffelValidationExceptio
4548
log.debug("VALIDATED. Schema used: {}", schemaResourceName);
4649
} catch (Exception e) {
4750
String message = "Cannot validate given JSON string";
48-
log.error(message, e);
51+
log.debug(message, e);
4952
throw new EiffelValidationException(message, e);
5053
}
5154
}

src/test/java/com/ericsson/eiffel/remrem/semantics/ServiceTest.java

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,28 @@
22

33
import com.ericsson.eiffel.remrem.semantics.events.EiffelActivityFinishedEvent;
44
import com.ericsson.eiffel.remrem.semantics.events.EiffelArtifactPublishedEvent;
5-
import com.ericsson.eiffel.remrem.semantics.events.Event;
65
import com.google.gson.JsonObject;
76
import com.google.gson.JsonParser;
87
import org.junit.Assert;
98
import org.junit.Before;
109
import org.junit.Test;
1110
import org.mockito.InjectMocks;
12-
import org.mockito.Mockito;
1311
import static org.mockito.Mockito.*;
12+
1413
import org.mockito.MockitoAnnotations;
1514

1615
import java.io.File;
1716
import java.io.FileNotFoundException;
1817
import java.io.FileReader;
1918
import java.util.jar.Attributes;
2019

21-
2220
public class ServiceTest {
2321

2422
private String ACTIVITY_FINISHED = "eiffelactivityfinished";
2523
private String ARTIFACT_PUBLISHED = "eiffelartifactpublished";
2624

2725
JsonParser parser = new JsonParser();
28-
26+
2927
@InjectMocks
3028
SemanticsService service = new SemanticsService();
3129

@@ -66,4 +64,37 @@ private void testGenerateMsg(String msgType, String fileName) {
6664
@Test public void testArtifactPublished() {
6765
testGenerateMsg(ARTIFACT_PUBLISHED, "input/ArtifactPublished.json");
6866
}
67+
68+
@Test public void testUnknownMessage() {
69+
try {
70+
File file = new File(getClass().getClassLoader().getResource("input/ArtifactPublished.json").getFile());
71+
JsonObject input = parser.parse(new FileReader(file)).getAsJsonObject();
72+
73+
String msg = service.generateMsg("unknownmessage",input);
74+
System.out.println(msg);
75+
76+
Assert.assertTrue(msg.contains("message"));
77+
Assert.assertTrue(msg.contains("Unknown message type requested"));
78+
Assert.assertTrue(msg.contains("cause"));
79+
} catch(FileNotFoundException e) {
80+
Assert.assertFalse(false);
81+
}
82+
}
83+
84+
@Test public void testInvalidMessage() {
85+
try {
86+
File file = new File(getClass().getClassLoader().getResource("input/ActivityFinishedInvalid.json").getFile());
87+
JsonObject input = parser.parse(new FileReader(file)).getAsJsonObject();
88+
89+
String msg = service.generateMsg(ACTIVITY_FINISHED, input);
90+
System.out.println(msg);
91+
92+
Assert.assertTrue(msg.contains("message"));
93+
Assert.assertTrue(msg.contains("Cannot validate given JSON string"));
94+
Assert.assertTrue(msg.contains("cause"));
95+
Assert.assertTrue(msg.contains("missing required properties ([\\\"activityExecution"));
96+
} catch(FileNotFoundException e) {
97+
Assert.assertFalse(false);
98+
}
99+
}
69100
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
{"msgParams": {
2+
"meta": {
3+
"type": "EiffelActivityFinishedEvent",
4+
"domainId": "example.domain",
5+
"tags": ["tag1", "tag2"],
6+
"source": {
7+
"host": "host",
8+
"name": "name",
9+
"uri": "http://java.sun.com/j2se/1.3/",
10+
"serializer": {
11+
"groupId": "G",
12+
"artifactId": "A",
13+
"version": "V"
14+
}
15+
}
16+
}
17+
},
18+
"eventParams": {
19+
"data": {
20+
"outcome": {
21+
"conclusion": "TIMED_OUT",
22+
"description": "Compilation timed out."
23+
},
24+
"persistentLogs": [
25+
{
26+
"name": "firstLog",
27+
"uri": "http://myHost.com/firstLog"
28+
},
29+
{
30+
"name": "otherLog",
31+
"uri": "isbn:0-486-27557-4"
32+
}
33+
]
34+
},
35+
"links": {
36+
"activityExecutionMisspelled": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee1",
37+
"causes": ["cause1", "cause2"],
38+
"flowContext": "flowContext"
39+
}
40+
}
41+
}

0 commit comments

Comments
 (0)