Skip to content

Commit 5e10050

Browse files
committed
FIN-350 fix issue in export when storage files are missing.
1 parent e2434e1 commit 5e10050

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

fintrack-api/src/main/java/com/jongsoft/finance/rest/profile/ProfileExportResource.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import lombok.RequiredArgsConstructor;
2929

3030
import java.util.List;
31+
import java.util.function.Supplier;
3132

3233
@Controller("/api/profile/export")
3334
@Secured(SecurityRule.IS_AUTHENTICATED)
@@ -53,21 +54,16 @@ public HttpResponse<ExportJson> export() {
5354
var exportJson = ExportJson.builder()
5455
.accounts(lookupAllOf(Account.class)
5556
.map(account -> AccountJson.fromDomain(
56-
account,
57-
() -> storageService.read(account.getImageFileToken()).get()))
57+
account, loadFromStorage(account.getImageFileToken())))
5858
.toJava())
5959
.budgetPeriods(lookupAllOf(Budget.class).map(BudgetJson::fromDomain).toJava())
6060
.categories(lookupAllOf(Category.class).map(CategoryJson::fromDomain).toJava())
6161
.tags(lookupAllOf(Tag.class).map(Tag::name).toJava())
6262
.contracts(lookupAllOf(Contract.class)
63-
.map(c -> ContractJson.fromDomain(
64-
c,
65-
() -> storageService.read(c.getFileToken()).get()))
63+
.map(c -> ContractJson.fromDomain(c, loadFromStorage(c.getFileToken())))
6664
.toJava())
6765
.rules(lookupAllOf(TransactionRule.class)
68-
.map(rule -> RuleConfigJson.RuleJson.fromDomain(
69-
rule,
70-
this::loadRelation))
66+
.map(rule -> RuleConfigJson.RuleJson.fromDomain(rule, this::loadRelation))
7167
.toJava())
7268
.transactions(lookupRelevantTransactions())
7369
.build();
@@ -77,6 +73,10 @@ public HttpResponse<ExportJson> export() {
7773
.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
7874
}
7975

76+
private Supplier<byte[]> loadFromStorage(String fileToken) {
77+
return () -> storageService.read(fileToken).getOrSupply(() -> new byte[0]);
78+
}
79+
8080
@SuppressWarnings({"unchecked", "rawtypes"})
8181
private <T> Sequence<T> lookupAllOf(Class<T> forClass) {
8282
for (Exportable exporter : exportable) {

0 commit comments

Comments
 (0)