Skip to content

Commit 2284466

Browse files
authored
feat: add NO_NAS_IN_ACCOUNT failure reason and refactor Synology extension exception handling (#1480)
Changes: Core SPI Updates * New Failure Reason: Added NO_NAS_IN_ACCOUNT to FailureReasons enum. * New Exception: Created NoNasInAccountException in the SPI to handle cases where the destination account lacks a NAS setup. Synology Extension Refactoring * Exception Standardization: Removed custom Synology exception classes (e.g., SynologyException, SynologyImportException, SynologyErrorCode) and replaced them with standard SPI exceptions: * SynologyImportException -> UploadErrorException for general errors * Enhanced Error Handling: * HTTP 413: Now throws DestinationMemoryFullException. * HTTP 422: Checks specific Synology error codes (2000, 2001) and throws NoNasInAccountException. * Code Cleanup: Updated SynologyMediaImporter, SynologyPhotosImporter, and SynologyVideosImporter to directly re-throw exceptions for the framework to handle, rather than catching them and returning failure results. * Avoid using lambda function for checked exception * Replace `forEach()` by for-loop * Replace atomic `readyAlbumMap.compute()` by synchronized lock protected map operations Testing * Updated all Synology unit tests to assert against the new SPI exceptions. * Added specific test cases to verify handling of HTTP 413 and 422 response codes.
1 parent 2890c47 commit 2284466

File tree

20 files changed

+413
-493
lines changed

20 files changed

+413
-493
lines changed

extensions/data-transfer/portability-data-transfer-synology/src/main/java/org/datatransferproject/datatransfer/synology/constant/SynologyErrorCode.java

Lines changed: 0 additions & 45 deletions
This file was deleted.

extensions/data-transfer/portability-data-transfer-synology/src/main/java/org/datatransferproject/datatransfer/synology/exceptions/SynologyException.java

Lines changed: 0 additions & 54 deletions
This file was deleted.

extensions/data-transfer/portability-data-transfer-synology/src/main/java/org/datatransferproject/datatransfer/synology/exceptions/SynologyHttpException.java

Lines changed: 0 additions & 51 deletions
This file was deleted.

extensions/data-transfer/portability-data-transfer-synology/src/main/java/org/datatransferproject/datatransfer/synology/exceptions/SynologyImportException.java

Lines changed: 0 additions & 31 deletions
This file was deleted.

extensions/data-transfer/portability-data-transfer-synology/src/main/java/org/datatransferproject/datatransfer/synology/exceptions/SynologyMaxRetriesExceededException.java

Lines changed: 0 additions & 54 deletions
This file was deleted.

extensions/data-transfer/portability-data-transfer-synology/src/main/java/org/datatransferproject/datatransfer/synology/media/SynologyMediaImporter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public ImportResult importItem(
4141
synologyUploader.importVideos(data.getVideos(), jobId);
4242
} catch (Exception e) {
4343
monitor.severe(() -> "[SynologyImporter] SynologyMediaImporter failed to import data:" + e);
44-
return new ImportResult(e);
44+
throw e;
4545
}
4646

4747
return ImportResult.OK;

extensions/data-transfer/portability-data-transfer-synology/src/main/java/org/datatransferproject/datatransfer/synology/photos/SynologyPhotosImporter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public ImportResult importItem(
4040
synologyUploader.importPhotos(data.getPhotos(), jobId);
4141
} catch (Exception e) {
4242
monitor.severe(() -> "[SynologyImporter] SynologyPhotosImporter failed to import data:" + e);
43-
return new ImportResult(e);
43+
throw e;
4444
}
4545

4646
return ImportResult.OK;

0 commit comments

Comments
 (0)