Skip to content

Commit a5009d0

Browse files
committed
create an exceptionHandler class to unify the exception logs
1 parent fb4627c commit a5009d0

26 files changed

Lines changed: 257 additions & 158 deletions

src/main/java/fr/insee/genesis/controller/rest/DataProcessingContextController.java

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import io.swagger.v3.oas.annotations.Parameter;
1212
import lombok.AllArgsConstructor;
1313
import lombok.extern.slf4j.Slf4j;
14+
import org.springframework.http.HttpStatus;
1415
import org.springframework.http.HttpStatusCode;
1516
import org.springframework.http.ResponseEntity;
1617
import org.springframework.scheduling.support.CronExpression;
@@ -46,7 +47,7 @@ public ResponseEntity<Object> saveContext(
4647
withReview = withReview != null && withReview; //False if null
4748
dataProcessingContextApiPort.saveContext(partitionId, withReview);
4849
}catch (GenesisException e){
49-
return new ResponseEntity<>(e.getMessage(), HttpStatusCode.valueOf(e.getStatus()));
50+
return new ResponseEntity<>(e.getMessage(), e.getStatus());
5051
}
5152
return ResponseEntity.ok().build();
5253
}
@@ -62,7 +63,7 @@ public ResponseEntity<Object> saveContextWithCollectionInstrumentId(
6263
withReview = withReview != null && withReview; //False if null
6364
dataProcessingContextApiPort.saveContextByCollectionInstrumentId(collectionInstrumentId, withReview);
6465
}catch (GenesisException e){
65-
return new ResponseEntity<>(e.getMessage(), HttpStatusCode.valueOf(e.getStatus()));
66+
return new ResponseEntity<>(e.getMessage(), e.getStatus());
6667
}
6768
return ResponseEntity.ok().build();
6869
}
@@ -78,7 +79,7 @@ public ResponseEntity<Object> getReviewIndicatorByCollectionInstrumentId(
7879
boolean withReview = dataProcessingContextApiPort.getReviewByCollectionInstrumentId(collectionInstrumentId);
7980
return ResponseEntity.ok(withReview);
8081
}catch (GenesisException e){
81-
return new ResponseEntity<>(e.getMessage(), HttpStatusCode.valueOf(e.getStatus()));
82+
return new ResponseEntity<>(e.getMessage(), e.getStatus());
8283
}
8384
}
8485

@@ -93,7 +94,7 @@ public ResponseEntity<Object> getReviewIndicator(
9394
boolean withReview = dataProcessingContextApiPort.getReviewByPartitionId(partitionId);
9495
return ResponseEntity.ok(withReview);
9596
}catch (GenesisException e){
96-
return new ResponseEntity<>(e.getMessage(), HttpStatusCode.valueOf(e.getStatus()));
97+
return new ResponseEntity<>(e.getMessage(), e.getStatus());
9798
}
9899
}
99100

@@ -119,7 +120,7 @@ public ResponseEntity<Object> saveSchedule(
119120
//Check frequency
120121
if(!CronExpression.isValidExpression(frequency)) {
121122
log.warn("Returned error for wrong frequency : {}", frequency);
122-
throw new GenesisException(400, "Wrong frequency syntax");
123+
throw new GenesisException(HttpStatus.BAD_REQUEST, "Wrong frequency syntax");
123124
}
124125

125126
TrustParameters trustParameters = null;
@@ -138,7 +139,7 @@ public ResponseEntity<Object> saveSchedule(
138139
scheduleBeginDate, scheduleEndDate, trustParameters
139140
);
140141
}catch (GenesisException e){
141-
return new ResponseEntity<>(e.getMessage(), HttpStatusCode.valueOf(e.getStatus()));
142+
return new ResponseEntity<>(e.getMessage(), e.getStatus());
142143
}
143144
return ResponseEntity.ok().build();
144145
}
@@ -165,7 +166,7 @@ public ResponseEntity<Object> saveScheduleWithCollectionInstrumentId(
165166
//Check frequency
166167
if(!CronExpression.isValidExpression(frequency)) {
167168
log.warn("Returned error for wrong frequency : {}", frequency);
168-
throw new GenesisException(400, "Wrong frequency syntax");
169+
throw new GenesisException(HttpStatus.BAD_REQUEST, "Wrong frequency syntax");
169170
}
170171

171172
TrustParameters trustParameters = null;
@@ -184,7 +185,7 @@ public ResponseEntity<Object> saveScheduleWithCollectionInstrumentId(
184185
scheduleBeginDate, scheduleEndDate, trustParameters
185186
);
186187
}catch (GenesisException e){
187-
return new ResponseEntity<>(e.getMessage(), HttpStatusCode.valueOf(e.getStatus()));
188+
return new ResponseEntity<>(e.getMessage(), e.getStatus());
188189
}
189190
return ResponseEntity.ok().build();
190191
}
@@ -228,7 +229,7 @@ public ResponseEntity<Object> setSurveyLastExecution(
228229
dataProcessingContextApiPort.updateLastExecutionDate(partitionId, newDate);
229230
log.info("{} last execution updated at {} !", partitionId, newDate);
230231
}catch (GenesisException e){
231-
return new ResponseEntity<>(e.getMessage(), HttpStatusCode.valueOf(e.getStatus()));
232+
return new ResponseEntity<>(e.getMessage(), e.getStatus());
232233
}
233234
return ResponseEntity.ok().build();
234235
}
@@ -244,7 +245,7 @@ public ResponseEntity<Object> setSurveyLastExecutionByCollectionInstrumentId(
244245
dataProcessingContextApiPort.updateLastExecutionDateByCollectionInstrumentId(collectionInstrumentId, newDate);
245246
log.info("{} last execution updated at {} !", collectionInstrumentId, newDate);
246247
}catch (GenesisException e){
247-
return new ResponseEntity<>(e.getMessage(), HttpStatusCode.valueOf(e.getStatus()));
248+
return new ResponseEntity<>(e.getMessage(), e.getStatus());
248249
}
249250
return ResponseEntity.ok().build();
250251
}
@@ -259,7 +260,7 @@ public ResponseEntity<Object> deleteSchedules(
259260
try {
260261
dataProcessingContextApiPort.deleteSchedules(partitionId);
261262
}catch (GenesisException e){
262-
return new ResponseEntity<>(e.getMessage(), HttpStatusCode.valueOf(e.getStatus()));
263+
return new ResponseEntity<>(e.getMessage(), e.getStatus());
263264
}
264265
log.info("Schedule deleted for survey {}", partitionId);
265266
return ResponseEntity.ok().build();
@@ -274,7 +275,7 @@ public ResponseEntity<Object> deleteSchedulesByCollectionInstrumentId(
274275
try {
275276
dataProcessingContextApiPort.deleteSchedulesByCollectionInstrumentId(collectionInstrumentId);
276277
}catch (GenesisException e){
277-
return new ResponseEntity<>(e.getMessage(), HttpStatusCode.valueOf(e.getStatus()));
278+
return new ResponseEntity<>(e.getMessage(), e.getStatus());
278279
}
279280
log.info("Schedule deleted for survey {}", collectionInstrumentId);
280281
return ResponseEntity.ok().build();
@@ -287,7 +288,7 @@ public ResponseEntity<Object> deleteExpiredSchedules(){
287288
try{
288289
dataProcessingContextApiPort.deleteExpiredSchedules(fileUtils.getLogFolder());
289290
} catch (GenesisException e){
290-
return new ResponseEntity<>(e.getMessage(), HttpStatusCode.valueOf(e.getStatus()));
291+
return new ResponseEntity<>(e.getMessage(), e.getStatus());
291292
}
292293
log.info("Expired schedules deleted");
293294
return ResponseEntity.ok().build();

src/main/java/fr/insee/genesis/controller/rest/responses/ContextualVariableController.java

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -52,18 +52,15 @@ public ResponseEntity<Object> getContextualVariables(
5252
@PreAuthorize("hasAnyRole('USER_PLATINE','SCHEDULER')")
5353
public ResponseEntity<Object> saveContextualVariables(
5454
@RequestParam("questionnaireId") String questionnaireId
55-
) {
56-
try {
55+
) throws GenesisException{
5756
FileUtils fileUtils = new FileUtils(config);
5857

5958
String contextualFolderPath = fileUtils.getDataFolder(questionnaireId, "WEB", null) + Constants.CONTEXTUAL_FOLDER;
6059

6160
int fileCount = contextualVariableApiPort.saveContextualVariableFiles(questionnaireId, fileUtils,contextualFolderPath);
6261

6362
return ResponseEntity.ok("%d file(s) processed for questionnaire %s !".formatted(fileCount, questionnaireId));
64-
} catch (GenesisException ge) {
65-
return ResponseEntity.status(HttpStatusCode.valueOf(ge.getStatus())).body(ge.getMessage());
66-
}
63+
6764
}
6865

6966
@Operation(summary = "Add contextual previous json file")
@@ -74,8 +71,8 @@ public ResponseEntity<Object> readContextualPreviousJson(
7471
@RequestParam("mode") Mode mode,
7572
@RequestParam(value = "sourceState", required = false) String sourceState,
7673
@RequestParam(value = "jsonFileName") String jsonFileName
77-
){
78-
try {
74+
) throws GenesisException{
75+
7976
FileUtils fileUtils = new FileUtils(config);
8077

8178
fileUtils.ensureContextualFolderExists(questionnaireId, mode);
@@ -86,15 +83,11 @@ public ResponseEntity<Object> readContextualPreviousJson(
8683
jsonFileName
8784
);
8885
if (!jsonFileName.toLowerCase().endsWith(".json")) {
89-
throw new GenesisException(400, "File must be a JSON file !");
86+
throw new GenesisException(HttpStatus.BAD_REQUEST, "File must be a JSON file !");
9087
}
9188
contextualPreviousVariableApiPort.readContextualPreviousFile(questionnaireId.toUpperCase(), sourceState, filePath);
9289
moveFile(questionnaireId, mode, fileUtils, filePath);
9390
return ResponseEntity.ok("Contextual previous variable file %s saved !".formatted(filePath));
94-
}catch (GenesisException ge){
95-
return ResponseEntity.status(HttpStatusCode.valueOf(ge.getStatus())).body(ge.getMessage());
96-
} catch (IOException ioe) {
97-
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Erreur IO : " + ioe.getMessage()); }
9891
}
9992

10093
@Operation(summary = "Add contextual external json file")
@@ -104,8 +97,7 @@ public ResponseEntity<Object> readContextualExternalJson(
10497
@RequestParam("questionnaireId") String questionnaireId,
10598
@RequestParam("mode") Mode mode,
10699
@RequestParam(value = "jsonFileName") String jsonFileName
107-
){
108-
try {
100+
) throws GenesisException{
109101
FileUtils fileUtils = new FileUtils(config);
110102

111103
fileUtils.ensureContextualFolderExists(questionnaireId, mode);
@@ -116,23 +108,18 @@ public ResponseEntity<Object> readContextualExternalJson(
116108
jsonFileName
117109
);
118110
if (!jsonFileName.toLowerCase().endsWith(".json")) {
119-
throw new GenesisException(400, "File must be a JSON file !");
111+
throw new GenesisException(HttpStatus.BAD_REQUEST, "File must be a JSON file !");
120112
}
121113
contextualExternalVariableApiPort.readContextualExternalFile(questionnaireId, filePath);
122114
moveFile(questionnaireId, mode, fileUtils, filePath);
123115
return ResponseEntity.ok("Contextual external variable file %s saved !".formatted(filePath));
124-
}catch (GenesisException ge){
125-
return ResponseEntity.status(HttpStatusCode.valueOf(ge.getStatus())).body(ge.getMessage());
126-
} catch (IOException ioe) {
127-
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Erreur IO : " + ioe.getMessage());
128-
}
129116
}
130117

131118
private static void moveFile(String questionnaireId, Mode mode, FileUtils fileUtils, String filePath) throws GenesisException {
132119
try {
133120
fileUtils.moveFiles(Path.of(filePath), fileUtils.getDoneFolder(questionnaireId, mode.getFolder()));
134121
} catch (IOException e) {
135-
throw new GenesisException(500, "Error while moving file to done : %s".formatted(e.toString()));
122+
throw new GenesisException(HttpStatus.INTERNAL_SERVER_ERROR, "Error while moving file to done");
136123
}
137124
}
138125
}

src/main/java/fr/insee/genesis/controller/rest/responses/ModeController.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,8 @@ public ModeController(SurveyUnitApiPort surveyUnitService) {
3232
@Operation(summary = "List sources/modes used for a given collection instrument (ex questionnaire)")
3333
@GetMapping(path = "/by-questionnaire")
3434
public ResponseEntity<List<Mode>> getModesByQuestionnaire(@RequestParam("collectionInstrumentId") String collectionInstrumentId) {
35-
try {
3635
List<Mode> modes = surveyUnitService.findModesByCollectionInstrumentId(collectionInstrumentId);
3736
return ResponseEntity.ok(modes);
38-
} catch (QuestionnaireNotFoundException e) {
39-
return ResponseEntity.status(HttpStatus.NOT_FOUND)
40-
.body(Collections.emptyList());
41-
}
4237
}
4338

4439
@Operation(summary = "List sources/modes used for a given campaign")

src/main/java/fr/insee/genesis/controller/rest/responses/QuestionnaireController.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,14 +85,9 @@ public ResponseEntity<Set<String>> getQuestionnairesByCampaignV2(@RequestParam("
8585
@Operation(summary = "Get the questionnaireId corresponding to an interrogationId")
8686
@GetMapping(path = "/by-interrogation")
8787
@ApiResponse(responseCode = "200", description = "Successfully retrieved the questionnaireId")
88-
public ResponseEntity<String> getQuestionnaireByInterrogation(@RequestParam("interrogationId") String interrogationId){
89-
try {
88+
public ResponseEntity<String> getQuestionnaireByInterrogation(@RequestParam("interrogationId") String interrogationId) throws GenesisException {
9089
String questionnaireId = surveyUnitService.findQuestionnaireIdByInterrogationId(interrogationId);
9190
return ResponseEntity.ok(questionnaireId);
92-
} catch (GenesisException e) {
93-
return ResponseEntity.status(e.getStatus()).body(e.getMessage());
94-
}
95-
9691
}
9792

9893

0 commit comments

Comments
 (0)