Skip to content

Commit 07d9b1d

Browse files
authored
Improved exception handling functionality for message type mismatch (#42)
1 parent 9ce2b6c commit 07d9b1d

File tree

5 files changed

+31
-8
lines changed

5 files changed

+31
-8
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
## 0.2.4
2+
- Improved exception handling functionality for event type mismatch
3+
14
## 0.2.3
25
- Implemented event specific meta class generation functionality
36

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ allprojects {
3434

3535
jar {
3636
baseName = 'eiffel-remrem-semantics'
37-
version = '0.2.3'
37+
version = '0.2.4'
3838
manifest {
3939
attributes('remremVersionKey': 'semanticsVersion')
4040
attributes('semanticsVersion': version)
@@ -50,7 +50,7 @@ jar {
5050

5151
shadowJar {
5252
baseName = 'eiffel-remrem-semantics'
53-
version = '0.2.3'
53+
version = '0.2.4'
5454
classifier = ''
5555
}
5656

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,8 @@ public static EiffelEventType fromString(String id) {
4040
}
4141
return idMap.get(id);
4242
}
43+
44+
String getEventName() {
45+
return id;
46+
}
4347
}

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

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.ISSUE_VERIFIED;
2323
import static com.ericsson.eiffel.remrem.semantics.EiffelEventType.ARTIFACT_REUSED;
2424

25+
import java.util.ArrayList;
2526
import java.util.HashMap;
2627
import java.util.Map;
2728

@@ -62,7 +63,10 @@
6263

6364
@Named("eiffel-semantics")
6465
public class SemanticsService implements MsgService{
65-
66+
private static final String ERROR = "error";
67+
private static final String SUPPORTED_EVENT_TYPES = "SUPPORTED_EVENT_TYPES";
68+
private static final String RESULT = "result";
69+
private static final String UNKNOWN_EVENT_TYPE_REQUESTED = "Unknown event type requested";
6670
private static final String EVENT_PARAMS = "eventParams";
6771
private static final String MSG_PARAMS = "msgParams";
6872
private static final String MESSAGE = "message";
@@ -71,12 +75,18 @@ public class SemanticsService implements MsgService{
7175
private static final String ID = "id";
7276
private static final String META = "meta";
7377
private static final String TYPE = "type";
74-
78+
private static final ArrayList<String> supportedEventTypes = new ArrayList<String>();
7579
public static final Logger log = LoggerFactory.getLogger(SemanticsService.class);
7680

7781
private static Gson gson = new Gson();
7882
private static Map<EiffelEventType, Class<? extends Event>> eventTypes=SemanticsService.eventType();
7983

84+
public SemanticsService(){
85+
for (final EiffelEventType msg : EiffelEventType.values()) {
86+
supportedEventTypes.add(msg.getEventName());
87+
}
88+
}
89+
8090
public static Map<EiffelEventType, Class<? extends Event>> eventType()
8191
{
8292
eventTypes = new HashMap<>();
@@ -107,7 +117,7 @@ public String generateMsg(String msgType, JsonObject bodyJson){
107117
EiffelEventType eiffelType = EiffelEventType.fromString(msgType);
108118
if (eiffelType == null) {
109119
log.error("Unknown message type requested: " + msgType);
110-
return createErrorResponse("Unknown message type requested", "'" + msgType + "' is not in the vocabulary of this service");
120+
return createErrorResponse(msgType,supportedEventTypes);
111121
}
112122
Class<? extends Event> eventType = eventTypes.get(eiffelType);
113123

@@ -143,7 +153,13 @@ private String createErrorResponse(final String message, final String cause){
143153
errorResponse.addProperty(CAUSE, cause.replace("\n", ""));
144154
return errorResponse.toString();
145155
}
146-
156+
private String createErrorResponse(final String message, final ArrayList<String> supportedEventTypes){
157+
JsonObject errorResponse = new JsonObject();
158+
errorResponse.addProperty(RESULT, ERROR);
159+
errorResponse.addProperty(MESSAGE, UNKNOWN_EVENT_TYPE_REQUESTED+" - " + message);
160+
errorResponse.addProperty(SUPPORTED_EVENT_TYPES,supportedEventTypes.toString());
161+
return errorResponse.toString();
162+
}
147163
private void outputValidate(EiffelEventType eiffelType, String jsonStringInput) throws EiffelValidationException {
148164
EiffelValidator validator = EiffelOutputValidatorFactory.getEiffelValidator(eiffelType);
149165
JsonObject jsonObject = new JsonParser().parse(jsonStringInput).getAsJsonObject();

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -226,8 +226,8 @@ private void testGenerateMsg(String msgType, String fileName) {
226226
JsonObject input = parser.parse(new FileReader(file)).getAsJsonObject();
227227
String msg = service.generateMsg("unknownmessage",input);
228228
Assert.assertTrue(msg.contains("message"));
229-
Assert.assertTrue(msg.contains("Unknown message type requested"));
230-
Assert.assertTrue(msg.contains("cause"));
229+
Assert.assertTrue(msg.contains("Unknown event type requested"));
230+
Assert.assertTrue(msg.contains("SUPPORTED_EVENT_TYPES"));
231231
} catch(FileNotFoundException e) {
232232
Assert.assertFalse(false);
233233
}

0 commit comments

Comments
 (0)