diff --git a/README.md b/README.md index a5b3f2062..1f5db616b 100644 --- a/README.md +++ b/README.md @@ -364,7 +364,7 @@ The following table gives an overview of the fields and the i18n codes: | ---------- | --------------------- | | `content` | `attachment_content` | | `mimeType` | `attachment_mimeType` | -| `fileName` | `attachment_fileName` | +| `filename` | `attachment_fileName` | | `status` | `attachment_status` | | `note` | `attachment_note` | diff --git a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/handler/applicationservice/ReadAttachmentsHandler.java b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/handler/applicationservice/ReadAttachmentsHandler.java index 98f9c44ec..8ac657106 100644 --- a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/handler/applicationservice/ReadAttachmentsHandler.java +++ b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/handler/applicationservice/ReadAttachmentsHandler.java @@ -10,13 +10,13 @@ import com.sap.cds.CdsDataProcessor; import com.sap.cds.CdsDataProcessor.Converter; import com.sap.cds.feature.attachments.generated.cds4j.sap.attachments.Attachments; -import com.sap.cds.feature.attachments.generated.cds4j.sap.attachments.StatusCode; import com.sap.cds.feature.attachments.handler.applicationservice.readhelper.AttachmentStatusValidator; import com.sap.cds.feature.attachments.handler.applicationservice.readhelper.BeforeReadItemsModifier; import com.sap.cds.feature.attachments.handler.applicationservice.readhelper.LazyProxyInputStream; import com.sap.cds.feature.attachments.handler.common.ApplicationHandlerHelper; import com.sap.cds.feature.attachments.service.AttachmentService; import com.sap.cds.feature.attachments.service.malware.AsyncMalwareScanExecutor; +import com.sap.cds.feature.attachments.service.model.StatusCode; import com.sap.cds.ql.CQL; import com.sap.cds.ql.cqn.CqnSelect; import com.sap.cds.ql.cqn.Path; diff --git a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/handler/applicationservice/helper/ReadonlyDataContextEnhancer.java b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/handler/applicationservice/helper/ReadonlyDataContextEnhancer.java index 2df30e3d1..31cfa157b 100644 --- a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/handler/applicationservice/helper/ReadonlyDataContextEnhancer.java +++ b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/handler/applicationservice/helper/ReadonlyDataContextEnhancer.java @@ -39,7 +39,7 @@ public static void preserveReadonlyFields(CdsEntity target, List data, Attachments attachment = Attachments.create(); attachment.setContentId(values.getContentId()); attachment.setStatus(values.getStatus()); - attachment.setScannedAt(values.getScannedAt()); + attachment.setLastScan(values.getLastScan()); path.target().values().put(DRAFT_READONLY_CONTEXT, attachment); } else { path.target().values().remove(DRAFT_READONLY_CONTEXT); @@ -62,7 +62,7 @@ public static void restoreReadonlyFields(CdsData data) { if (Objects.nonNull(readOnlyData)) { data.put(Attachments.CONTENT_ID, readOnlyData.get(Attachments.CONTENT_ID)); data.put(Attachments.STATUS, readOnlyData.get(Attachments.STATUS)); - data.put(Attachments.SCANNED_AT, readOnlyData.get(Attachments.SCANNED_AT)); + data.put(Attachments.LAST_SCAN, readOnlyData.get(Attachments.LAST_SCAN)); data.remove(DRAFT_READONLY_CONTEXT); } } diff --git a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/handler/applicationservice/modifyevents/CreateAttachmentEvent.java b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/handler/applicationservice/modifyevents/CreateAttachmentEvent.java index 0b3295fb8..cc66ecdd1 100644 --- a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/handler/applicationservice/modifyevents/CreateAttachmentEvent.java +++ b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/handler/applicationservice/modifyevents/CreateAttachmentEvent.java @@ -50,7 +50,7 @@ public InputStream processEvent( Map values = path.target().values(); Map keys = ApplicationHandlerHelper.removeDraftKey(path.target().keys()); Optional mimeTypeOptional = getFieldValue(MediaData.MIME_TYPE, values, attachment); - Optional fileNameOptional = getFieldValue(MediaData.FILE_NAME, values, attachment); + Optional fileNameOptional = getFieldValue(MediaData.FILENAME, values, attachment); CreateAttachmentInput createEventInput = new CreateAttachmentInput( diff --git a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/handler/applicationservice/modifyevents/MarkAsDeletedAttachmentEvent.java b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/handler/applicationservice/modifyevents/MarkAsDeletedAttachmentEvent.java index c1316ee9f..3522997df 100644 --- a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/handler/applicationservice/modifyevents/MarkAsDeletedAttachmentEvent.java +++ b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/handler/applicationservice/modifyevents/MarkAsDeletedAttachmentEvent.java @@ -56,7 +56,7 @@ public InputStream processEvent( || !path.target().values().containsKey(Attachments.CONTENT_ID)) { path.target().values().put(Attachments.CONTENT_ID, null); path.target().values().put(Attachments.STATUS, null); - path.target().values().put(Attachments.SCANNED_AT, null); + path.target().values().put(Attachments.LAST_SCAN, null); } } return content; diff --git a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/handler/applicationservice/readhelper/AttachmentStatusValidator.java b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/handler/applicationservice/readhelper/AttachmentStatusValidator.java index bd7d6ec34..a93f24205 100644 --- a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/handler/applicationservice/readhelper/AttachmentStatusValidator.java +++ b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/handler/applicationservice/readhelper/AttachmentStatusValidator.java @@ -3,7 +3,7 @@ */ package com.sap.cds.feature.attachments.handler.applicationservice.readhelper; -import com.sap.cds.feature.attachments.generated.cds4j.sap.attachments.StatusCode; +import com.sap.cds.feature.attachments.service.model.StatusCode; /** * The class {@link AttachmentStatusValidator} is responsible for validating the status of an diff --git a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/AttachmentService.java b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/AttachmentService.java index 4d057d5f7..f91a90da2 100644 --- a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/AttachmentService.java +++ b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/AttachmentService.java @@ -46,7 +46,7 @@ public interface AttachmentService extends Service { *
    *
  • attachmentIds - list of keys for attachment entity *
  • attachmentEntity - cds entity in which the attachment will be stored - *
  • fileName + *
  • filename *
  • mimeType *
  • content (mandatory) *
diff --git a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/AttachmentsServiceImpl.java b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/AttachmentsServiceImpl.java index 8fca05a57..9f4afe5bc 100644 --- a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/AttachmentsServiceImpl.java +++ b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/AttachmentsServiceImpl.java @@ -46,7 +46,7 @@ public AttachmentModificationResult createAttachment(CreateAttachmentInput input createContext.setAttachmentIds(input.attachmentIds()); createContext.setAttachmentEntity(input.attachmentEntity()); var mediaData = MediaData.create(); - mediaData.setFileName(input.fileName()); + mediaData.setFilename(input.filename()); mediaData.setMimeType(input.mimeType()); mediaData.setContent(input.content()); createContext.setData(mediaData); diff --git a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/handler/DefaultAttachmentsServiceHandler.java b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/handler/DefaultAttachmentsServiceHandler.java index 6d769d4d0..4d1f3f8f5 100644 --- a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/handler/DefaultAttachmentsServiceHandler.java +++ b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/handler/DefaultAttachmentsServiceHandler.java @@ -4,9 +4,9 @@ package com.sap.cds.feature.attachments.service.handler; import com.sap.cds.feature.attachments.generated.cds4j.sap.attachments.Attachments; -import com.sap.cds.feature.attachments.generated.cds4j.sap.attachments.StatusCode; import com.sap.cds.feature.attachments.service.AttachmentService; import com.sap.cds.feature.attachments.service.handler.transaction.EndTransactionMalwareScanProvider; +import com.sap.cds.feature.attachments.service.model.StatusCode; import com.sap.cds.feature.attachments.service.model.servicehandler.AttachmentCreateEventContext; import com.sap.cds.feature.attachments.service.model.servicehandler.AttachmentMarkAsDeletedEventContext; import com.sap.cds.feature.attachments.service.model.servicehandler.AttachmentReadEventContext; diff --git a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/malware/DefaultAttachmentMalwareScanner.java b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/malware/DefaultAttachmentMalwareScanner.java index 552161aab..88c04ed46 100644 --- a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/malware/DefaultAttachmentMalwareScanner.java +++ b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/malware/DefaultAttachmentMalwareScanner.java @@ -8,10 +8,10 @@ import com.google.common.annotations.VisibleForTesting; import com.sap.cds.Result; import com.sap.cds.feature.attachments.generated.cds4j.sap.attachments.Attachments; -import com.sap.cds.feature.attachments.generated.cds4j.sap.attachments.StatusCode; import com.sap.cds.feature.attachments.service.AttachmentService; import com.sap.cds.feature.attachments.service.malware.client.MalwareScanClient; import com.sap.cds.feature.attachments.service.malware.client.MalwareScanResultStatus; +import com.sap.cds.feature.attachments.service.model.StatusCode; import com.sap.cds.ql.Select; import com.sap.cds.ql.Update; import com.sap.cds.ql.cqn.CqnSelect; @@ -160,7 +160,7 @@ private void updateData( CdsEntity attachmentEntity, String contentId, MalwareScanResultStatus status) { Attachments updateData = Attachments.create(); updateData.setStatus(mapStatus(status)); - updateData.setScannedAt(Instant.now()); + updateData.setLastScan(Instant.now()); CqnUpdate update = Update.entity(attachmentEntity) diff --git a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/model/StatusCode.java b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/model/StatusCode.java new file mode 100644 index 000000000..687a38870 --- /dev/null +++ b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/model/StatusCode.java @@ -0,0 +1,18 @@ +/* + * © 2024-2025 SAP SE or an SAP affiliate company and cds-feature-attachments contributors. + */ +package com.sap.cds.feature.attachments.service.model; + +/** + * Status codes for the malware scan status of attachments. These constants correspond to the {@code + * sap.attachments.ScanStates} code list values defined in the CDS model. + */ +public final class StatusCode { + public static final String UNSCANNED = "Unscanned"; + public static final String SCANNING = "Scanning"; + public static final String CLEAN = "Clean"; + public static final String INFECTED = "Infected"; + public static final String FAILED = "Failed"; + + private StatusCode() {} +} diff --git a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/model/service/CreateAttachmentInput.java b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/model/service/CreateAttachmentInput.java index df4636b3d..4e4d8d79f 100644 --- a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/model/service/CreateAttachmentInput.java +++ b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/model/service/CreateAttachmentInput.java @@ -12,13 +12,13 @@ * * @param attachmentIds The keys for the attachment entity * @param attachmentEntity The {@link CdsEntity entity} in which the attachment will be stored - * @param fileName The file name of the content + * @param filename The file name of the content * @param mimeType The mime type of the content * @param content The input stream of the content */ public record CreateAttachmentInput( Map attachmentIds, CdsEntity attachmentEntity, - String fileName, + String filename, String mimeType, InputStream content) {} diff --git a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/model/servicehandler/AttachmentReadEventContext.java b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/model/servicehandler/AttachmentReadEventContext.java index 9ebf51be6..788fa0eda 100644 --- a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/model/servicehandler/AttachmentReadEventContext.java +++ b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/model/servicehandler/AttachmentReadEventContext.java @@ -29,7 +29,7 @@ static AttachmentReadEventContext create() { *
    *
  • content *
  • mimeType - *
  • fileName + *
  • filename *
*/ MediaData getData(); diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n.properties index 28f8695a4..de4bcbf1a 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=Attachment #XTIT: File name of the attachment -attachment_fileName=Filename +attachment_filename=Filename #XTIT: Malware scan status of the attachment attachment_status=Scan Status #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ar.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ar.properties index 91ad1b52c..92dbb7d4a 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ar.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ar.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=\u0627\u0644\u0645\u0631\u0641\u0642 #XTIT: File name of the attachment -attachment_fileName=\u0627\u0633\u0645 \u0627\u0644\u0645\u0644\u0641 +attachment_filename=\u0627\u0633\u0645 \u0627\u0644\u0645\u0644\u0641 #XTIT: Malware scan status of the attachment attachment_status=\u062D\u0627\u0644\u0629 \u0627\u0644\u0641\u062D\u0635 #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_bg.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_bg.properties index 87412b650..c6ec0d4a4 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_bg.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_bg.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=\u041F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 #XTIT: File name of the attachment -attachment_fileName=\u0418\u043C\u0435 \u043D\u0430 \u0444\u0430\u0439\u043B +attachment_filename=\u0418\u043C\u0435 \u043D\u0430 \u0444\u0430\u0439\u043B #XTIT: Malware scan status of the attachment attachment_status=\u0421\u0442\u0430\u0442\u0443\u0441 \u043D\u0430 \u0441\u043A\u0430\u043D\u0438\u0440\u0430\u043D\u0435 #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_cs.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_cs.properties index 4047a63ec..9eb479f7f 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_cs.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_cs.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=P\u0159\u00EDloha #XTIT: File name of the attachment -attachment_fileName=N\u00E1zev souboru +attachment_filename=N\u00E1zev souboru #XTIT: Malware scan status of the attachment attachment_status=Status skenov\u00E1n\u00ED #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_da.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_da.properties index 89c095603..31ba8e892 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_da.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_da.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=Vedh\u00E6ftet fil #XTIT: File name of the attachment -attachment_fileName=Filnavn +attachment_filename=Filnavn #XTIT: Malware scan status of the attachment attachment_status=Scanningsstatus #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_de.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_de.properties index 7690d8765..394fc5a85 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_de.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_de.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=Anhang #XTIT: File name of the attachment -attachment_fileName=Dateiname +attachment_filename=Dateiname #XTIT: Malware scan status of the attachment attachment_status=Scan-Status #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_el.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_el.properties index 29fcfeda3..767c59f22 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_el.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_el.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=\u03A3\u03C5\u03BD\u03B7\u03BC\u03BC\u03AD\u03BD\u03BF #XTIT: File name of the attachment -attachment_fileName=\u038C\u03BD\u03BF\u03BC\u03B1 \u0391\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 +attachment_filename=\u038C\u03BD\u03BF\u03BC\u03B1 \u0391\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 #XTIT: Malware scan status of the attachment attachment_status=\u039A\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03B7 \u03A3\u03AC\u03C1\u03C9\u03C3\u03B7\u03C2 #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_en.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_en.properties index 28f8695a4..de4bcbf1a 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_en.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_en.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=Attachment #XTIT: File name of the attachment -attachment_fileName=Filename +attachment_filename=Filename #XTIT: Malware scan status of the attachment attachment_status=Scan Status #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_en_US_saptrc.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_en_US_saptrc.properties index a98994431..d614edfd8 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_en_US_saptrc.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_en_US_saptrc.properties @@ -1,6 +1,6 @@ attachment_content=wQr/9eWFnes2IgBQA5Ymhg_Attachment -attachment_fileName=48nzhFP8mYDdsDuZRZrc2Q_Filename +attachment_filename=48nzhFP8mYDdsDuZRZrc2Q_Filename attachment_status=Zbg2G212YCQZ7mHrJgoiWg_Scan Status attachment_mimeType=4bkPrEZMtvN+M0ZRH7hTCw_Media Type attachment_note=65iTWMei6Iz166KSH/TdXg_Note diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_es.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_es.properties index 93e9f65c0..f86e42cb9 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_es.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_es.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=Anexo #XTIT: File name of the attachment -attachment_fileName=Nombre de archivo +attachment_filename=Nombre de archivo #XTIT: Malware scan status of the attachment attachment_status=Estado de escaneo #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_es_MX.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_es_MX.properties index 93e9f65c0..f86e42cb9 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_es_MX.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_es_MX.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=Anexo #XTIT: File name of the attachment -attachment_fileName=Nombre de archivo +attachment_filename=Nombre de archivo #XTIT: Malware scan status of the attachment attachment_status=Estado de escaneo #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_fi.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_fi.properties index f56a212a1..5646fed42 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_fi.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_fi.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=Liite #XTIT: File name of the attachment -attachment_fileName=Tiedostonimi +attachment_filename=Tiedostonimi #XTIT: Malware scan status of the attachment attachment_status=Skannauksen tila #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_fr.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_fr.properties index e443e1b66..f681ff026 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_fr.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_fr.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=Pi\u00E8ce jointe #XTIT: File name of the attachment -attachment_fileName=Nom du fichier +attachment_filename=Nom du fichier #XTIT: Malware scan status of the attachment attachment_status=Statut de l'analyse #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_he.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_he.properties index 6fd57443b..188337798 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_he.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_he.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=\u05E7\u05D5\u05D1\u05E5 \u05DE\u05E6\u05D5\u05E8\u05E3 #XTIT: File name of the attachment -attachment_fileName=\u05E9\u05DD \u05E7\u05D5\u05D1\u05E5 +attachment_filename=\u05E9\u05DD \u05E7\u05D5\u05D1\u05E5 #XTIT: Malware scan status of the attachment attachment_status=\u05E1\u05D8\u05D0\u05D8\u05D5\u05E1 \u05E1\u05E8\u05D9\u05E7\u05D4 #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_hr.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_hr.properties index bb1cddbf2..c586f166a 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_hr.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_hr.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=Prilog #XTIT: File name of the attachment -attachment_fileName=Naziv datoteke +attachment_filename=Naziv datoteke #XTIT: Malware scan status of the attachment attachment_status=Status skeniranja #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_hu.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_hu.properties index 52f252c40..24e719d54 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_hu.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_hu.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=Mell\u00E9klet #XTIT: File name of the attachment -attachment_fileName=F\u00E1jln\u00E9v +attachment_filename=F\u00E1jln\u00E9v #XTIT: Malware scan status of the attachment attachment_status=Beolvas\u00E1si st\u00E1tus #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_it.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_it.properties index 4d877d316..0d980e700 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_it.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_it.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=Allegato #XTIT: File name of the attachment -attachment_fileName=Nome file +attachment_filename=Nome file #XTIT: Malware scan status of the attachment attachment_status=Stato di scansione #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ja.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ja.properties index 0c8446833..f8a8a49ae 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ja.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ja.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=\u6DFB\u4ED8\u6587\u66F8 #XTIT: File name of the attachment -attachment_fileName=\u30D5\u30A1\u30A4\u30EB\u540D +attachment_filename=\u30D5\u30A1\u30A4\u30EB\u540D #XTIT: Malware scan status of the attachment attachment_status=\u30B9\u30AD\u30E3\u30F3\u30B9\u30C6\u30FC\u30BF\u30B9 #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_kk.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_kk.properties index abb9adaad..bb1c518e4 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_kk.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_kk.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=\u0422\u0456\u0440\u043A\u0435\u043C\u0435 #XTIT: File name of the attachment -attachment_fileName=\u0424\u0430\u0439\u043B \u0430\u0442\u044B +attachment_filename=\u0424\u0430\u0439\u043B \u0430\u0442\u044B #XTIT: Malware scan status of the attachment attachment_status=\u0421\u043A\u0430\u043D\u0435\u0440\u043B\u0435\u0443 \u043A\u04AF\u0439\u0456 #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ko.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ko.properties index 516b239d6..8725712e8 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ko.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ko.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=\uCCA8\uBD80\uD30C\uC77C #XTIT: File name of the attachment -attachment_fileName=\uD30C\uC77C \uC774\uB984 +attachment_filename=\uD30C\uC77C \uC774\uB984 #XTIT: Malware scan status of the attachment attachment_status=\uC2A4\uCE94 \uC0C1\uD0DC #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ms.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ms.properties index 84eaa16d9..f1dc45ee1 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ms.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ms.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=Lampiran #XTIT: File name of the attachment -attachment_fileName=Nama Lampiran +attachment_filename=Nama Lampiran #XTIT: Malware scan status of the attachment attachment_status=Status Imbasan #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_nl.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_nl.properties index f735742c1..9c67ec260 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_nl.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_nl.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=Bijlage #XTIT: File name of the attachment -attachment_fileName=Bestandsnaam +attachment_filename=Bestandsnaam #XTIT: Malware scan status of the attachment attachment_status=Scanstatus #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_no.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_no.properties index 07674cb6a..5e39afddb 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_no.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_no.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=Vedlegg #XTIT: File name of the attachment -attachment_fileName=Filnavn +attachment_filename=Filnavn #XTIT: Malware scan status of the attachment attachment_status=Skanningsstatus #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_pl.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_pl.properties index b35ec1753..57c97aedd 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_pl.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_pl.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=Za\u0142\u0105cznik #XTIT: File name of the attachment -attachment_fileName=Nazwa pliku +attachment_filename=Nazwa pliku #XTIT: Malware scan status of the attachment attachment_status=Status skanowania #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_pt.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_pt.properties index 06b97d15e..e4addda0c 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_pt.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_pt.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=Anexo #XTIT: File name of the attachment -attachment_fileName=Nome do arquivo +attachment_filename=Nome do arquivo #XTIT: Malware scan status of the attachment attachment_status=Status da verifica\u00E7\u00E3o #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ro.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ro.properties index 9bb6811a0..59b6e4ac7 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ro.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ro.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=Anex\u0103 #XTIT: File name of the attachment -attachment_fileName=Nume fi\u0219ier +attachment_filename=Nume fi\u0219ier #XTIT: Malware scan status of the attachment attachment_status=Stare scanare #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ru.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ru.properties index 220250ba7..5935cb133 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ru.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_ru.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=\u0412\u043B\u043E\u0436\u0435\u043D\u0438\u0435 #XTIT: File name of the attachment -attachment_fileName=\u0418\u043C\u044F \u0444\u0430\u0439\u043B\u0430 +attachment_filename=\u0418\u043C\u044F \u0444\u0430\u0439\u043B\u0430 #XTIT: Malware scan status of the attachment attachment_status=\u0421\u0442\u0430\u0442\u0443\u0441 \u0441\u043A\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_sh.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_sh.properties index c6216f87c..837420c86 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_sh.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_sh.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=Dodatak #XTIT: File name of the attachment -attachment_fileName=Naziv fajla +attachment_filename=Naziv fajla #XTIT: Malware scan status of the attachment attachment_status=Status skeniranja #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_sk.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_sk.properties index bab26e69d..d070eadad 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_sk.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_sk.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=Pr\u00EDloha #XTIT: File name of the attachment -attachment_fileName=N\u00E1zov s\u00FAboru +attachment_filename=N\u00E1zov s\u00FAboru #XTIT: Malware scan status of the attachment attachment_status=Status skenovania #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_sl.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_sl.properties index bf9927dcc..b9bc155bc 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_sl.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_sl.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=Priloga #XTIT: File name of the attachment -attachment_fileName=Ime datoteke +attachment_filename=Ime datoteke #XTIT: Malware scan status of the attachment attachment_status=Status opti\u010Dnega branja #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_sv.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_sv.properties index 32fb57eb1..32dcab611 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_sv.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_sv.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=Bilaga #XTIT: File name of the attachment -attachment_fileName=Filnamn +attachment_filename=Filnamn #XTIT: Malware scan status of the attachment attachment_status=Skanningsstatus #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_th.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_th.properties index c94e9cd3b..34228ad5e 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_th.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_th.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=\u0E2A\u0E34\u0E48\u0E07\u0E17\u0E35\u0E48\u0E41\u0E19\u0E1A #XTIT: File name of the attachment -attachment_fileName=\u0E0A\u0E37\u0E48\u0E2D\u0E44\u0E1F\u0E25\u0E4C +attachment_filename=\u0E0A\u0E37\u0E48\u0E2D\u0E44\u0E1F\u0E25\u0E4C #XTIT: Malware scan status of the attachment attachment_status=\u0E2A\u0E16\u0E32\u0E19\u0E30\u0E01\u0E32\u0E23\u0E2A\u0E41\u0E01\u0E19 #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_tr.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_tr.properties index 30fe95fc3..675d9a6cf 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_tr.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_tr.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=Ek #XTIT: File name of the attachment -attachment_fileName=Dosya ad\u0131 +attachment_filename=Dosya ad\u0131 #XTIT: Malware scan status of the attachment attachment_status=Tarama durumu #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_uk.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_uk.properties index 7b2bb86ae..08818c55e 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_uk.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_uk.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=\u0412\u043A\u043B\u0430\u0434\u0435\u043D\u043D\u044F #XTIT: File name of the attachment -attachment_fileName=\u0406\u043C\u2019\u044F \u0444\u0430\u0439\u043B\u0443 +attachment_filename=\u0406\u043C\u2019\u044F \u0444\u0430\u0439\u043B\u0443 #XTIT: Malware scan status of the attachment attachment_status=\u0421\u0442\u0430\u0442\u0443\u0441 \u0441\u043A\u0430\u043D\u0443 #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_vi.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_vi.properties index 4fa50058b..57d498ba8 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_vi.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_vi.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=T\u1EC7p \u0111i\u0301nh ke\u0300m #XTIT: File name of the attachment -attachment_fileName=T\u00EAn t\u1EC7p +attachment_filename=T\u00EAn t\u1EC7p #XTIT: Malware scan status of the attachment attachment_status=Tr\u1EA1ng th\u00E1i qu\u00E9t #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_zh_CN.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_zh_CN.properties index 36b0b49c0..1e26d03fc 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_zh_CN.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_zh_CN.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=\u9644\u4EF6 #XTIT: File name of the attachment -attachment_fileName=\u6587\u4EF6\u540D +attachment_filename=\u6587\u4EF6\u540D #XTIT: Malware scan status of the attachment attachment_status=\u626B\u63CF\u72B6\u6001 #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_zh_TW.properties b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_zh_TW.properties index 00a63b27b..3ed062c19 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_zh_TW.properties +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/_i18n/i18n_zh_TW.properties @@ -25,7 +25,7 @@ #XTIT: Content link of the attachment attachment_content=\u9644\u4EF6 #XTIT: File name of the attachment -attachment_fileName=\u6A94\u6848\u540D\u7A31 +attachment_filename=\u6A94\u6848\u540D\u7A31 #XTIT: Malware scan status of the attachment attachment_status=\u6383\u63CF\u72C0\u614B #XTIT: Mime type of the attachment diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/attachments-annotations.cds b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/attachments-annotations.cds index 11074d983..1b4c36347 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/attachments-annotations.cds +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/attachments-annotations.cds @@ -4,40 +4,66 @@ using { } from './attachments'; annotate MediaData with @UI.MediaResource: {Stream: content} { - content @( + content @( title : '{i18n>attachment_content}', Core.MediaType : mimeType, - Core.ContentDisposition.Filename: fileName, + Core.ContentDisposition.Filename: filename, Core.ContentDisposition.Type : 'inline' - ); - mimeType @( + ) @odata.draft.skip; + mimeType @( title: '{i18n>attachment_mimeType}', Core.IsMediaType ); - fileName @( - title: '{i18n>attachment_fileName}', + filename @( + title: '{i18n>attachment_filename}', UI.MultiLineText - ); - status @(title: '{i18n>attachment_status}'); - contentId @(UI.Hidden: true); - scannedAt @(UI.Hidden: true); + ); + url @(UI.Hidden); + hash @(UI.Hidden) @Core.Computed; + status @(title: '{i18n>attachment_status}') @readonly; + contentId @(UI.Hidden) @readonly; + lastScan @(UI.Hidden) @Core.Computed; } -annotate Attachments with @UI: { +annotate Attachments with @UI: { HeaderInfo: { $Type : 'UI.HeaderInfoType', TypeName : '{i18n>attachment}', TypeNamePlural: '{i18n>attachments}', }, LineItem : [ - {Value: content, @HTML5.CssDefaults: {width: '30%'}}, - {Value: status, @HTML5.CssDefaults: {width: '10%'}}, - {Value: createdAt, @HTML5.CssDefaults: {width: '20%'}}, - {Value: createdBy, @HTML5.CssDefaults: {width: '15%'}}, - {Value: note, @HTML5.CssDefaults: {width: '25%'}}, - {Value: up__ID, @UI.Hidden} + { + Value : content, + @HTML5.CssDefaults: {width: '30%'} + }, + { + Value : status, + Criticality : statusNav.criticality, + @HTML5.CssDefaults: {width: '10%'} + }, + { + Value : createdAt, + @HTML5.CssDefaults: {width: '20%'} + }, + { + Value : createdBy, + @HTML5.CssDefaults: {width: '15%'} + }, + { + Value : note, + @HTML5.CssDefaults: {width: '25%'} + }, + { + Value: up__ID, + @UI.Hidden + } ] -} { +} @Capabilities: {SortRestrictions: {NonSortableProperties: [content]}} { + content + @Core.ContentDisposition: { + Filename: filename, + Type : 'inline' + }; note @( title: '{i18n>attachment_note}', UI.MultiLineText diff --git a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/attachments.cds b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/attachments.cds index eda765e0e..5ba1bd2fb 100644 --- a/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/attachments.cds +++ b/cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/attachments.cds @@ -2,26 +2,35 @@ namespace sap.attachments; using { cuid, - managed + managed, + sap.common.CodeList } from '@sap/cds/common'; -type StatusCode : String enum { - Unscanned; - Scanning; - Clean; - Infected; - Failed; +entity ScanStates : CodeList { + key code : String(32) @Common.Text: name @Common.TextArrangement: #TextOnly enum { + Unscanned; + Scanning; + Infected; + Clean; + Failed; + }; + name : localized String(64) @title: '{i18n>ScanStatus}'; + criticality : Integer @UI.Hidden; } -aspect MediaData @(_is_media_data) { +aspect MediaData @(_is_media_data) { + url : String; content : LargeBinary; // stored only for db-based services - mimeType : String; - fileName : String(5000); - contentId : String @readonly; // id of attachment in external storage, if database storage is used, same as id - status : StatusCode @readonly; - scannedAt : Timestamp @readonly; + mimeType : String default 'application/octet-stream'; + filename : String; + hash : String; + contentId : String; // id of attachment in external storage, if database storage is used, same as id + status : String default 'Unscanned'; + statusNav : Association to one ScanStates + on statusNav.code = status; + lastScan : Timestamp; } aspect Attachments : cuid, managed, MediaData { - note : String(5000); + note : String; } diff --git a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/CreateAttachmentsHandlerTest.java b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/CreateAttachmentsHandlerTest.java index 4eabcf239..2836bdadf 100644 --- a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/CreateAttachmentsHandlerTest.java +++ b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/CreateAttachmentsHandlerTest.java @@ -102,7 +102,7 @@ void idsAreSetInDataForCreate() { getEntityAndMockContext(RootTable_.CDS_NAME); var roots = RootTable.create(); var attachment = Attachments.create(); - attachment.setFileName("test.txt"); + attachment.setFilename("test.txt"); attachment.setContent(null); attachment.put("up__ID", "test"); roots.setAttachments(List.of(attachment)); @@ -140,7 +140,7 @@ void readonlyDataFilledForDraftActivate() { var attachment = Attachments.create(); attachment.setContentId("Document Id"); attachment.setStatus("Status Code"); - attachment.setScannedAt(Instant.now()); + attachment.setLastScan(Instant.now()); attachment.setContent(null); when(storageReader.get()).thenReturn(true); @@ -152,7 +152,7 @@ void readonlyDataFilledForDraftActivate() { assertThat(readOnlyData) .containsEntry(Attachment.CONTENT_ID, attachment.getContentId()) .containsEntry(Attachment.STATUS, attachment.getStatus()) - .containsEntry(Attachment.SCANNED_AT, attachment.getScannedAt()); + .containsEntry(Attachment.LAST_SCAN, attachment.getLastScan()); } @Test @@ -166,7 +166,7 @@ void readonlyDataClearedIfNotDraftActivate() { var readonlyData = CdsData.create(); readonlyData.put(Attachment.STATUS, "some wrong status code"); readonlyData.put(Attachment.CONTENT_ID, "some other document id"); - readonlyData.put(Attachment.SCANNED_AT, Instant.EPOCH); + readonlyData.put(Attachment.LAST_SCAN, Instant.EPOCH); createAttachment.put(DRAFT_READONLY_CONTEXT, readonlyData); when(storageReader.get()).thenReturn(false); @@ -177,7 +177,7 @@ void readonlyDataClearedIfNotDraftActivate() { assertThat(createAttachment) .containsEntry(Attachment.CONTENT_ID, contentId) .doesNotContainKey(Attachment.STATUS) - .doesNotContainKey(Attachment.SCANNED_AT); + .doesNotContainKey(Attachment.LAST_SCAN); } @Test @@ -187,7 +187,7 @@ void readonlyDataNotFilledForNonDraftActivate() { var attachment = Attachments.create(); attachment.setContentId("Document Id"); attachment.setStatus("Status Code"); - attachment.setScannedAt(Instant.now()); + attachment.setLastScan(Instant.now()); when(storageReader.get()).thenReturn(false); cut.processBeforeForDraft(createContext, List.of(attachment)); @@ -216,7 +216,7 @@ void eventProcessorNotCalledForCreateForDraft() throws IOException { void attachmentAccessExceptionCorrectHandledForCreate() { getEntityAndMockContext(Attachment_.CDS_NAME); var attachment = Attachments.create(); - attachment.setFileName("test.txt"); + attachment.setFilename("test.txt"); attachment.setContent(null); when(eventFactory.getEvent(any(), any(), any())).thenReturn(event); when(event.processEvent(any(), any(), any(), any())).thenThrow(new ServiceException("")); @@ -255,7 +255,7 @@ void readonlyFieldsAreUsedFromOwnContext() { var readonlyFields = CdsData.create(); readonlyFields.put(Attachment.CONTENT_ID, "Document Id"); readonlyFields.put(Attachment.STATUS, "Status Code"); - readonlyFields.put(Attachment.SCANNED_AT, Instant.now()); + readonlyFields.put(Attachment.LAST_SCAN, Instant.now()); var testStream = mock(InputStream.class); var attachment = Attachments.create(); attachment.setContent(testStream); @@ -277,7 +277,7 @@ void readonlyFieldsAreUsedFromOwnContext() { assertThat(attachment.get(DRAFT_READONLY_CONTEXT)).isNull(); assertThat(attachment.getContentId()).isEqualTo(readonlyFields.get(Attachment.CONTENT_ID)); assertThat(attachment.getStatus()).isEqualTo(readonlyFields.get(Attachment.STATUS)); - assertThat(attachment.getScannedAt()).isEqualTo(readonlyFields.get(Attachment.SCANNED_AT)); + assertThat(attachment.getLastScan()).isEqualTo(readonlyFields.get(Attachment.LAST_SCAN)); } @Test diff --git a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/ReadAttachmentsHandlerTest.java b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/ReadAttachmentsHandlerTest.java index 588236b4f..783953d81 100644 --- a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/ReadAttachmentsHandlerTest.java +++ b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/ReadAttachmentsHandlerTest.java @@ -14,7 +14,6 @@ import static org.mockito.Mockito.when; import com.sap.cds.CdsData; -import com.sap.cds.feature.attachments.generated.cds4j.sap.attachments.StatusCode; import com.sap.cds.feature.attachments.generated.test.cds4j.sap.attachments.Attachments; import com.sap.cds.feature.attachments.generated.test.cds4j.unit.test.EventItems; import com.sap.cds.feature.attachments.generated.test.cds4j.unit.test.EventItems_; @@ -28,6 +27,7 @@ import com.sap.cds.feature.attachments.handler.helper.RuntimeHelper; import com.sap.cds.feature.attachments.service.AttachmentService; import com.sap.cds.feature.attachments.service.malware.AsyncMalwareScanExecutor; +import com.sap.cds.feature.attachments.service.model.StatusCode; import com.sap.cds.ql.Select; import com.sap.cds.ql.cqn.CqnSelect; import com.sap.cds.services.cds.ApplicationService; diff --git a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/UpdateAttachmentsHandlerTest.java b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/UpdateAttachmentsHandlerTest.java index 1865c4237..0318addca 100644 --- a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/UpdateAttachmentsHandlerTest.java +++ b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/UpdateAttachmentsHandlerTest.java @@ -139,7 +139,7 @@ void readonlyFieldsAreUsedFromOwnContext() { var readonlyUpdateFields = CdsData.create(); readonlyUpdateFields.put(Attachment.CONTENT_ID, "Document Id"); readonlyUpdateFields.put(Attachment.STATUS, "Status Code"); - readonlyUpdateFields.put(Attachment.SCANNED_AT, Instant.now()); + readonlyUpdateFields.put(Attachment.LAST_SCAN, Instant.now()); var testStream = mock(InputStream.class); var attachment = Attachments.create(); attachment.setContent(testStream); @@ -162,8 +162,7 @@ void readonlyFieldsAreUsedFromOwnContext() { assertThat(attachment.getContentId()) .isEqualTo(readonlyUpdateFields.get(Attachment.CONTENT_ID)); assertThat(attachment.getStatus()).isEqualTo(readonlyUpdateFields.get(Attachment.STATUS)); - assertThat(attachment.getScannedAt()) - .isEqualTo(readonlyUpdateFields.get(Attachment.SCANNED_AT)); + assertThat(attachment.getLastScan()).isEqualTo(readonlyUpdateFields.get(Attachment.LAST_SCAN)); } @Test @@ -173,7 +172,7 @@ void readonlyDataFilledForDraftActivate() { var updateAttachment = Attachments.create(); updateAttachment.setContentId("Document Id"); updateAttachment.setStatus("Status Code"); - updateAttachment.setScannedAt(Instant.now()); + updateAttachment.setLastScan(Instant.now()); updateAttachment.setContent(null); when(storageReader.get()).thenReturn(true); @@ -185,7 +184,7 @@ void readonlyDataFilledForDraftActivate() { assertThat(readOnlyUpdateData) .containsEntry(Attachment.CONTENT_ID, updateAttachment.getContentId()) .containsEntry(Attachment.STATUS, updateAttachment.getStatus()) - .containsEntry(Attachment.SCANNED_AT, updateAttachment.getScannedAt()); + .containsEntry(Attachment.LAST_SCAN, updateAttachment.getLastScan()); } @Test @@ -199,7 +198,7 @@ void readonlyDataClearedIfNotDraftActivate() { var readonlyData = CdsData.create(); readonlyData.put(Attachment.STATUS, "some wrong status code"); readonlyData.put(Attachment.CONTENT_ID, "some other document id"); - readonlyData.put(Attachment.SCANNED_AT, Instant.EPOCH); + readonlyData.put(Attachment.LAST_SCAN, Instant.EPOCH); updateAttachment.put("DRAFT_READONLY_CONTEXT", readonlyData); when(storageReader.get()).thenReturn(false); @@ -210,7 +209,7 @@ void readonlyDataClearedIfNotDraftActivate() { assertThat(updateAttachment) .containsEntry(Attachment.CONTENT_ID, contentId) .doesNotContainKey(Attachment.STATUS) - .doesNotContainKey(Attachment.SCANNED_AT); + .doesNotContainKey(Attachment.LAST_SCAN); } @Test @@ -220,7 +219,7 @@ void readonlyDataNotFilledForNonDraftActivate() { var updateAttachment = Attachments.create(); updateAttachment.setContentId("Document Id"); updateAttachment.setStatus("Status Code"); - updateAttachment.setScannedAt(Instant.now()); + updateAttachment.setLastScan(Instant.now()); when(storageReader.get()).thenReturn(false); cut.processBeforeForDraft(updateContext, List.of(updateAttachment)); @@ -247,7 +246,7 @@ void eventProcessorNotCalledForUpdateForDraft() { void attachmentAccessExceptionCorrectHandledForUpdate() { var id = getEntityAndMockContext(Attachment_.CDS_NAME); var attachment = Attachments.create(); - attachment.setFileName("test.txt"); + attachment.setFilename("test.txt"); attachment.setContent(null); attachment.setId(id); when(event.processEvent(any(), any(), any(), any())).thenThrow(new ServiceException("")); diff --git a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/modifyevents/CreateAttachmentEventTest.java b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/modifyevents/CreateAttachmentEventTest.java index 05f913939..3d16e65c2 100644 --- a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/modifyevents/CreateAttachmentEventTest.java +++ b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/modifyevents/CreateAttachmentEventTest.java @@ -76,7 +76,7 @@ void storageCalledWithAllFieldsFilledFromPath() { assertThat(resultValue.attachmentIds()).containsEntry("ID", attachment.getId()); assertThat(resultValue.attachmentEntity()).isEqualTo(entity); assertThat(resultValue.mimeType()).isEqualTo(attachment.getMimeType()); - assertThat(resultValue.fileName()).isEqualTo(attachment.getFileName()); + assertThat(resultValue.filename()).isEqualTo(attachment.getFilename()); assertThat(resultValue.content()).isEqualTo(attachment.getContent()); } @@ -94,7 +94,7 @@ void storageCalledWithAllFieldsFilledFromExistingData() { when(attachmentService.createAttachment(any())) .thenReturn(new AttachmentModificationResult(false, "id", "test")); var existingData = Attachments.create(); - existingData.setFileName("some file name"); + existingData.setFilename("some file name"); existingData.setMimeType("some mime type"); cut.processEvent(path, attachment.getContent(), existingData, eventContext); @@ -107,7 +107,7 @@ void storageCalledWithAllFieldsFilledFromExistingData() { .containsEntry("up__ID", "test"); assertThat(createInput.attachmentEntity()).isEqualTo(entity); assertThat(createInput.mimeType()).isEqualTo(existingData.get(MediaData.MIME_TYPE)); - assertThat(createInput.fileName()).isEqualTo(existingData.get(MediaData.FILE_NAME)); + assertThat(createInput.filename()).isEqualTo(existingData.get(MediaData.FILENAME)); assertThat(createInput.content()).isEqualTo(attachment.getContent()); } @@ -168,7 +168,7 @@ private Attachments prepareAndExecuteEventWithData() { attachment.setContent(mock(InputStream.class)); attachment.setMimeType("mimeType"); - attachment.setFileName("file name"); + attachment.setFilename("file name"); attachment.setId(UUID.randomUUID().toString()); when(target.values()).thenReturn(attachment); diff --git a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/modifyevents/MarkAsDeletedAttachmentEventTest.java b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/modifyevents/MarkAsDeletedAttachmentEventTest.java index 18e95854c..a1ab060f5 100644 --- a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/modifyevents/MarkAsDeletedAttachmentEventTest.java +++ b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/modifyevents/MarkAsDeletedAttachmentEventTest.java @@ -71,7 +71,7 @@ void documentIsExternallyDeleted() { assertThat(currentData) .containsEntry(Attachments.CONTENT_ID, null) .containsEntry(Attachments.STATUS, null) - .containsEntry(Attachments.SCANNED_AT, null); + .containsEntry(Attachments.LAST_SCAN, null); } @Test diff --git a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/readhelper/AttachmentStatusValidatorTest.java b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/readhelper/AttachmentStatusValidatorTest.java index ecd55f162..3f3dfa370 100644 --- a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/readhelper/AttachmentStatusValidatorTest.java +++ b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/readhelper/AttachmentStatusValidatorTest.java @@ -7,8 +7,8 @@ import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertThrows; -import com.sap.cds.feature.attachments.generated.cds4j.sap.attachments.StatusCode; import com.sap.cds.feature.attachments.helper.LogObserver; +import com.sap.cds.feature.attachments.service.model.StatusCode; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/readhelper/LazyProxyInputStreamTest.java b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/readhelper/LazyProxyInputStreamTest.java index 0413e96ac..84ae674fc 100644 --- a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/readhelper/LazyProxyInputStreamTest.java +++ b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/handler/applicationservice/readhelper/LazyProxyInputStreamTest.java @@ -14,8 +14,8 @@ import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.when; -import com.sap.cds.feature.attachments.generated.cds4j.sap.attachments.StatusCode; import com.sap.cds.feature.attachments.service.AttachmentService; +import com.sap.cds.feature.attachments.service.model.StatusCode; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.IOException; import java.io.InputStream; diff --git a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/AttachmentsServiceImplTest.java b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/AttachmentsServiceImplTest.java index dff314a63..02b6a9cf4 100644 --- a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/AttachmentsServiceImplTest.java +++ b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/AttachmentsServiceImplTest.java @@ -97,7 +97,7 @@ void createAttachmentInsertsData(Boolean isExternalCreated) { var stream = mock(InputStream.class); Map ids = Map.of("ID1", "value1", "id2", "Value2"); var input = - new CreateAttachmentInput(ids, mock(CdsEntity.class), "fileName", "mimeType", stream); + new CreateAttachmentInput(ids, mock(CdsEntity.class), "filename", "mimeType", stream); var result = cut.createAttachment(input); @@ -106,7 +106,7 @@ void createAttachmentInsertsData(Boolean isExternalCreated) { var createContext = contextReference.get(); assertThat(createContext.getAttachmentIds()).isEqualTo(input.attachmentIds()); assertThat(createContext.getAttachmentEntity()).isEqualTo(input.attachmentEntity()); - assertThat(createContext.getData().getFileName()).isEqualTo(input.fileName()); + assertThat(createContext.getData().getFilename()).isEqualTo(input.filename()); assertThat(createContext.getData().getMimeType()).isEqualTo(input.mimeType()); assertThat(createContext.getData().getContent()).isEqualTo(stream); } @@ -125,7 +125,7 @@ void createAttachmentExternalCreateNotFilledReturnedFalse() { Map ids = Map.of("ID1", "value1", "id2", "Value2"); var input = new CreateAttachmentInput( - ids, mock(CdsEntity.class), "fileName", "mimeType", mock(InputStream.class)); + ids, mock(CdsEntity.class), "filename", "mimeType", mock(InputStream.class)); var result = cut.createAttachment(input); diff --git a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/handler/AttachmentsServiceImplHandlerTest.java b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/handler/AttachmentsServiceImplHandlerTest.java index cbfd67a5d..7770c9a09 100644 --- a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/handler/AttachmentsServiceImplHandlerTest.java +++ b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/handler/AttachmentsServiceImplHandlerTest.java @@ -9,10 +9,10 @@ import static org.mockito.Mockito.when; import com.sap.cds.feature.attachments.generated.cds4j.sap.attachments.MediaData; -import com.sap.cds.feature.attachments.generated.cds4j.sap.attachments.StatusCode; import com.sap.cds.feature.attachments.generated.test.cds4j.sap.attachments.Attachments; import com.sap.cds.feature.attachments.service.AttachmentService; import com.sap.cds.feature.attachments.service.handler.transaction.EndTransactionMalwareScanProvider; +import com.sap.cds.feature.attachments.service.model.StatusCode; import com.sap.cds.feature.attachments.service.model.servicehandler.AttachmentCreateEventContext; import com.sap.cds.feature.attachments.service.model.servicehandler.AttachmentMarkAsDeletedEventContext; import com.sap.cds.feature.attachments.service.model.servicehandler.AttachmentReadEventContext; diff --git a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/malware/DefaultAttachmentMalwareScannerTest.java b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/malware/DefaultAttachmentMalwareScannerTest.java index 41c68ce0f..b58895cca 100644 --- a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/malware/DefaultAttachmentMalwareScannerTest.java +++ b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/malware/DefaultAttachmentMalwareScannerTest.java @@ -15,12 +15,12 @@ import com.sap.cds.Result; import com.sap.cds.feature.attachments.generated.cds4j.sap.attachments.Attachments; -import com.sap.cds.feature.attachments.generated.cds4j.sap.attachments.StatusCode; import com.sap.cds.feature.attachments.generated.test.cds4j.unit.test.Attachment_; import com.sap.cds.feature.attachments.handler.helper.RuntimeHelper; import com.sap.cds.feature.attachments.service.AttachmentService; import com.sap.cds.feature.attachments.service.malware.client.MalwareScanClient; import com.sap.cds.feature.attachments.service.malware.client.MalwareScanResultStatus; +import com.sap.cds.feature.attachments.service.model.StatusCode; import com.sap.cds.ql.cqn.CqnSelect; import com.sap.cds.ql.cqn.CqnUpdate; import com.sap.cds.services.ServiceException; @@ -294,7 +294,7 @@ private void verifyPersistenceServiceCalledCorrectlyForReadAndUpdate( .containsEntry( Attachments.STATUS, DefaultAttachmentMalwareScanner.mapStatus(expectedStatus)); assertThat(update.entries()) - .anyMatch(entry -> entry.get(Attachments.SCANNED_AT) instanceof java.time.Instant); + .anyMatch(entry -> entry.get(Attachments.LAST_SCAN) instanceof java.time.Instant); }); } diff --git a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/model/servicehandler/AttachmentCreateEventContextTest.java b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/model/servicehandler/AttachmentCreateEventContextTest.java index 14760fe27..016f864aa 100644 --- a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/model/servicehandler/AttachmentCreateEventContextTest.java +++ b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/model/servicehandler/AttachmentCreateEventContextTest.java @@ -34,7 +34,7 @@ void fieldsCanBeStoredAndRead() throws IOException { cut.setAttachmentEntity(entity); var mediaData = MediaData.create(); mediaData.setMimeType("mime type"); - mediaData.setFileName("file name"); + mediaData.setFilename("file name"); mediaData.setContent(testStream); cut.setData(mediaData); @@ -43,7 +43,7 @@ void fieldsCanBeStoredAndRead() throws IOException { assertThat(cut.getAttachmentIds()).isEqualTo(keys); assertThat(cut.getAttachmentEntity()).isEqualTo(entity); var responseMediaData = cut.getData(); - assertThat(responseMediaData.getFileName()).isEqualTo("file name"); + assertThat(responseMediaData.getFilename()).isEqualTo("file name"); assertThat(responseMediaData.getMimeType()).isEqualTo("mime type"); assertThat(responseMediaData.getContent()).isEqualTo(testStream); } diff --git a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/model/servicehandler/AttachmentReadEventContextTest.java b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/model/servicehandler/AttachmentReadEventContextTest.java index 7e5699495..9f8fa7da2 100644 --- a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/model/servicehandler/AttachmentReadEventContextTest.java +++ b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/model/servicehandler/AttachmentReadEventContextTest.java @@ -26,14 +26,14 @@ void fieldsCanBeSetAndRead() throws IOException { cut.setContentId("some read contentID"); var mediaData = MediaData.create(); mediaData.setMimeType("mime type"); - mediaData.setFileName("file name"); + mediaData.setFilename("file name"); mediaData.setContent(testStream); cut.setData(mediaData); assertThat(cut.getContentId()).isEqualTo("some read contentID"); var responseMediaData = cut.getData(); - assertThat(responseMediaData.getFileName()).isEqualTo("file name"); + assertThat(responseMediaData.getFilename()).isEqualTo("file name"); assertThat(responseMediaData.getMimeType()).isEqualTo("mime type"); assertThat(responseMediaData.getContent()).isEqualTo(testStream); } diff --git a/doc/Design.md b/doc/Design.md index b542224de..5cf8ec9b2 100644 --- a/doc/Design.md +++ b/doc/Design.md @@ -434,10 +434,10 @@ The following fields are readonly fields: - `contentId` - `status` -- `scannedAt` +- `lastScan` Other fields which are readonly like `createdAt` can be set once a draft entity is activated. -But the fields `contentId`, `status` and `scannedAt` are readonly fields which are not allowed to be updated during the +But the fields `contentId`, `status` and `lastScan` are readonly fields which are not allowed to be updated during the activation of a draft entity. Because readonly fields are deleted from the event context during the draft activate, the fields need to be stored and diff --git a/doc/Processes.md b/doc/Processes.md index 1073fe9d9..60e5be4a9 100644 --- a/doc/Processes.md +++ b/doc/Processes.md @@ -119,7 +119,7 @@ The process for deletion of a content is the same as for the deletion, but handl The following fields are readonly: - `status` -- `scannedAt` +- `lastScan` - `contentId` As in the current implementation of the draft activate in the CAP Java stack all readonly fields are not copied to the diff --git a/integration-tests/srv/src/main/java/com/sap/cds/feature/attachments/integrationtests/testhandler/TestPluginAttachmentsServiceHandler.java b/integration-tests/srv/src/main/java/com/sap/cds/feature/attachments/integrationtests/testhandler/TestPluginAttachmentsServiceHandler.java index a8c25829c..85484315b 100644 --- a/integration-tests/srv/src/main/java/com/sap/cds/feature/attachments/integrationtests/testhandler/TestPluginAttachmentsServiceHandler.java +++ b/integration-tests/srv/src/main/java/com/sap/cds/feature/attachments/integrationtests/testhandler/TestPluginAttachmentsServiceHandler.java @@ -3,9 +3,9 @@ */ package com.sap.cds.feature.attachments.integrationtests.testhandler; -import com.sap.cds.feature.attachments.generated.cds4j.sap.attachments.StatusCode; import com.sap.cds.feature.attachments.integrationtests.constants.Profiles; import com.sap.cds.feature.attachments.service.AttachmentService; +import com.sap.cds.feature.attachments.service.model.StatusCode; import com.sap.cds.feature.attachments.service.model.servicehandler.AttachmentCreateEventContext; import com.sap.cds.feature.attachments.service.model.servicehandler.AttachmentMarkAsDeletedEventContext; import com.sap.cds.feature.attachments.service.model.servicehandler.AttachmentReadEventContext; diff --git a/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/draftservice/DraftOdataRequestValidationBase.java b/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/draftservice/DraftOdataRequestValidationBase.java index 843fa2bbc..7d7a07adf 100644 --- a/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/draftservice/DraftOdataRequestValidationBase.java +++ b/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/draftservice/DraftOdataRequestValidationBase.java @@ -77,11 +77,11 @@ void deepCreateWorks() throws Exception { var selectedAttachmentEntity = selectedRoot.getItems().get(0).getAttachmentEntities().get(0); verifyContentId(selectedAttachment.getContentId(), selectedAttachment.getId()); - assertThat(selectedAttachment.getFileName()).isEqualTo("itemAttachment.txt"); + assertThat(selectedAttachment.getFilename()).isEqualTo("itemAttachment.txt"); assertThat(selectedAttachment.getMimeType()).contains("text/plain"); verifyContent(selectedAttachment.getContent(), testContentAttachment); verifyContentId(selectedAttachmentEntity.getContentId(), selectedAttachmentEntity.getId()); - assertThat(selectedAttachmentEntity.getFileName()).isEqualTo("itemAttachmentEntity.txt"); + assertThat(selectedAttachmentEntity.getFilename()).isEqualTo("itemAttachmentEntity.txt"); assertThat(selectedAttachmentEntity.getMimeType()).contains("image/jpeg"); verifyContent(selectedAttachmentEntity.getContent(), testContentAttachmentEntity); verifyOnlyTwoCreateEvents(testContentAttachment, testContentAttachmentEntity); @@ -200,10 +200,10 @@ void updateAttachmentAndActivateDraft() throws Exception { prepareAndActiveDraft(getRootUrl(selectedRoot.getId(), false)); var selectedRootAfterUpdate = selectStoredRootData(selectedRoot); - assertThat(selectedRootAfterUpdate.getItems().get(0).getAttachments().get(0).getFileName()) + assertThat(selectedRootAfterUpdate.getItems().get(0).getAttachments().get(0).getFilename()) .isEqualTo(changedAttachmentFileName); assertThat( - selectedRootAfterUpdate.getItems().get(0).getAttachmentEntities().get(0).getFileName()) + selectedRootAfterUpdate.getItems().get(0).getAttachmentEntities().get(0).getFilename()) .isEqualTo(changedAttachmentEntityFileName); verifyNoAttachmentEventsCalled(); } @@ -218,8 +218,8 @@ void updateAttachmentAndCancelDraft() throws Exception { var itemAttachment = selectedRoot.getItems().get(0).getAttachments().get(0); var itemAttachmentEntity = selectedRoot.getItems().get(0).getAttachmentEntities().get(0); - var originAttachmentFileName = itemAttachment.getFileName(); - var originAttachmentEntityFileName = itemAttachmentEntity.getFileName(); + var originAttachmentFileName = itemAttachment.getFilename(); + var originAttachmentEntityFileName = itemAttachmentEntity.getFilename(); updateFileName( selectedRoot, @@ -230,10 +230,10 @@ void updateAttachmentAndCancelDraft() throws Exception { cancelDraft(getRootUrl(selectedRoot.getId(), false)); var selectedRootAfterUpdate = selectStoredRootData(selectedRoot); - assertThat(selectedRootAfterUpdate.getItems().get(0).getAttachments().get(0).getFileName()) + assertThat(selectedRootAfterUpdate.getItems().get(0).getAttachments().get(0).getFilename()) .isEqualTo(originAttachmentFileName); assertThat( - selectedRootAfterUpdate.getItems().get(0).getAttachmentEntities().get(0).getFileName()) + selectedRootAfterUpdate.getItems().get(0).getAttachmentEntities().get(0).getFilename()) .isEqualTo(originAttachmentEntityFileName); verifyNoAttachmentEventsCalled(); } @@ -658,7 +658,7 @@ private void putNewContentForAttachment( private Attachments createAttachment(String itemId) throws Exception { var itemAttachment = Attachments.create(); - itemAttachment.setFileName("itemAttachment.txt"); + itemAttachment.setFilename("itemAttachment.txt"); var attachmentPostUrl = BASE_URL + "Items(ID=" + itemId + ",IsActiveEntity=false)/attachments"; var responseAttachmentCdsData = @@ -708,7 +708,7 @@ private void putNewContentForAttachmentEntity( private AttachmentEntity createAttachmentEntity(Items responseItem) throws Exception { var itemAttachmentEntity = AttachmentEntity.create(); - itemAttachmentEntity.setFileName("itemAttachmentEntity.txt"); + itemAttachmentEntity.setFilename("itemAttachmentEntity.txt"); var attachmentEntityPostUrl = getItemUrl(responseItem, false) + "/attachmentEntities"; var responseAttachmentEntityCdsData = @@ -871,10 +871,10 @@ private void updateFileName( var attachmentEntityUrl = getAttachmentEntityBaseUrl(itemAttachmentEntity.getId(), false); requestHelper.executePatchWithODataResponseAndAssertStatus( - attachmentUrl, "{\"fileName\":\"" + changedAttachmentFileName + "\"}", httpStatus); + attachmentUrl, "{\"filename\":\"" + changedAttachmentFileName + "\"}", httpStatus); requestHelper.executePatchWithODataResponseAndAssertStatus( attachmentEntityUrl, - "{\"fileName\":\"" + changedAttachmentEntityFileName + "\"}", + "{\"filename\":\"" + changedAttachmentEntityFileName + "\"}", httpStatus); } diff --git a/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/draftservice/SizeLimitedAttachmentsSizeValidationDraftTest.java b/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/draftservice/SizeLimitedAttachmentsSizeValidationDraftTest.java index bd332021a..62f31e2d2 100644 --- a/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/draftservice/SizeLimitedAttachmentsSizeValidationDraftTest.java +++ b/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/draftservice/SizeLimitedAttachmentsSizeValidationDraftTest.java @@ -65,7 +65,7 @@ private DraftRoots createNewDraftWithSizeLimitedAttachments() throws Exception { // Create sizeLimitedAttachment var attachment = Attachments.create(); - attachment.setFileName("testFile.txt"); + attachment.setFilename("testFile.txt"); attachment.setMimeType("text/plain"); var attachmentUrl = rootUrl + "/sizeLimitedAttachments"; var responseAttachmentCdsData = diff --git a/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/nondraftservice/OdataRequestValidationBase.java b/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/nondraftservice/OdataRequestValidationBase.java index a4774951f..0564bd08b 100644 --- a/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/nondraftservice/OdataRequestValidationBase.java +++ b/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/nondraftservice/OdataRequestValidationBase.java @@ -156,7 +156,7 @@ void navigationReadOfAttachmentsHasFilledContent() throws Exception { .orElseThrow(); assertThat(attachmentWithExpectedContent) .containsEntry("content@mediaContentType", "application/octet-stream;charset=UTF-8") - .containsEntry(Attachments.FILE_NAME, itemAttachment.getFileName()); + .containsEntry(Attachments.FILENAME, itemAttachment.getFilename()); assertThat(attachmentWithExpectedContent.getStatus()).isNotEmpty(); verifyContentId( attachmentWithExpectedContent, itemAttachment.getId(), itemAttachment.getContentId()); @@ -287,7 +287,7 @@ void directReadOfAttachmentsHasNoContentFilled() throws Exception { assertThat(responseAttachment.get("content@mediaContentType")).isNull(); assertThat(responseAttachment.getContentId()).isNull(); - assertThat(responseAttachment.getFileName()).isEqualTo(itemAttachment.getFileName()); + assertThat(responseAttachment.getFilename()).isEqualTo(itemAttachment.getFilename()); verifyNoAttachmentEventsCalled(); } @@ -309,7 +309,7 @@ void directReadOfAttachmentsHasFilledContent() throws Exception { assertThat(responseAttachment) .containsEntry("content@mediaContentType", "application/octet-stream;charset=UTF-8") - .containsEntry(Attachments.FILE_NAME, itemAttachment.getFileName()); + .containsEntry(Attachments.FILENAME, itemAttachment.getFilename()); verifyContentId(responseAttachment, itemAttachment.getId(), itemAttachment.getContentId()); verifyNoAttachmentEventsCalled(); } @@ -575,14 +575,14 @@ void wrongEtagCouldNotBeUpdated() throws Exception { var url = buildDirectAttachmentEntityUrl(itemAttachment.getId()); requestHelper.executePatchWithODataResponseAndAssertStatus( url, - "{\"fileName\":\"test_for_change.txt\"}", + "{\"filename\":\"test_for_change.txt\"}", "W/\"2024-05-06T15:24:29.657713600Z\"", HttpStatus.PRECONDITION_FAILED); var selectedRootAfterChange = selectStoredRootWithDeepData(); var itemAfterChange = getItemWithAttachmentEntity(selectedRootAfterChange); var itemAttachmentAfterChange = getRandomItemAttachmentEntity(itemAfterChange); - assertThat(itemAttachmentAfterChange.getFileName()).isEqualTo(itemAttachment.getFileName()); + assertThat(itemAttachmentAfterChange.getFilename()).isEqualTo(itemAttachment.getFilename()); } @Test @@ -598,12 +598,12 @@ void correctEtagCanBeUpdated() throws Exception { var url = buildDirectAttachmentEntityUrl(itemAttachment.getId()); requestHelper.executePatchWithODataResponseAndAssertStatus( - url, "{\"fileName\":\"test_for_change.txt\"}", eTag, HttpStatus.OK); + url, "{\"filename\":\"test_for_change.txt\"}", eTag, HttpStatus.OK); var selectedRootAfterChange = selectStoredRootWithDeepData(); var itemAfterChange = getItemWithAttachmentEntity(selectedRootAfterChange); var itemAttachmentAfterChange = getRandomItemAttachmentEntity(itemAfterChange); - assertThat(itemAttachmentAfterChange.getFileName()).isEqualTo("test_for_change.txt"); + assertThat(itemAttachmentAfterChange.getFilename()).isEqualTo("test_for_change.txt"); } protected Items selectItem(Items item) { @@ -618,26 +618,26 @@ protected Roots buildServiceRootWithDeepData() { return RootEntityBuilder.create() .setTitle("some root title") .addAttachments( - AttachmentsEntityBuilder.create().setFileName("fileRoot.txt").setMimeType("text/plain")) + AttachmentsEntityBuilder.create().setFilename("fileRoot.txt").setMimeType("text/plain")) .addItems( ItemEntityBuilder.create() .setTitle("some item 1 title") .addAttachments( AttachmentsBuilder.create() - .setFileName("fileItem1.txt") + .setFilename("fileItem1.txt") .setMimeType("text/plain"), AttachmentsBuilder.create() - .setFileName("fileItem2.txt") + .setFilename("fileItem2.txt") .setMimeType("text/plain")), ItemEntityBuilder.create() .setTitle("some item 2 title") .addAttachmentEntities( AttachmentsEntityBuilder.create() - .setFileName("fileItem3.text") + .setFilename("fileItem3.text") .setMimeType("text/plain")) .addAttachments( AttachmentsBuilder.create() - .setFileName("fileItem3.text") + .setFilename("fileItem3.text") .setMimeType("text/plain"))) .build(); } @@ -672,8 +672,8 @@ private void verifySelectedRoot(Roots selectedRoot, Roots serviceRoot) { .satisfies( attachment -> { assertThat(attachment.getId()).isNotEmpty(); - assertThat(attachment.getFileName()) - .isEqualTo(serviceRoot.getAttachments().get(0).getFileName()); + assertThat(attachment.getFilename()) + .isEqualTo(serviceRoot.getAttachments().get(0).getFilename()); assertThat(attachment.getMimeType()) .isEqualTo(serviceRoot.getAttachments().get(0).getMimeType()); }); diff --git a/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/nondraftservice/SizeLimitedAttachmentValidationNonDraftTest.java b/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/nondraftservice/SizeLimitedAttachmentValidationNonDraftTest.java index 9dcb1fa3b..ece04ee15 100644 --- a/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/nondraftservice/SizeLimitedAttachmentValidationNonDraftTest.java +++ b/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/nondraftservice/SizeLimitedAttachmentValidationNonDraftTest.java @@ -65,7 +65,7 @@ private Roots buildServiceRootWithSizeLimitedAttachments() { return RootEntityBuilder.create() .setTitle("Root with sizeLimitedAttachments") .addSizeLimitedAttachments( - AttachmentsBuilder.create().setFileName("testFile.txt").setMimeType("text/plain")) + AttachmentsBuilder.create().setFilename("testFile.txt").setMimeType("text/plain")) .build(); } diff --git a/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/nondraftservice/helper/AttachmentsBuilder.java b/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/nondraftservice/helper/AttachmentsBuilder.java index 0f5e1bbfe..6b20c077a 100644 --- a/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/nondraftservice/helper/AttachmentsBuilder.java +++ b/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/nondraftservice/helper/AttachmentsBuilder.java @@ -22,8 +22,8 @@ public AttachmentsBuilder setMimeType(String mimeType) { return this; } - public AttachmentsBuilder setFileName(String fileName) { - attachment.setFileName(fileName); + public AttachmentsBuilder setFilename(String filename) { + attachment.setFilename(filename); return this; } diff --git a/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/nondraftservice/helper/AttachmentsEntityBuilder.java b/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/nondraftservice/helper/AttachmentsEntityBuilder.java index 2da95a144..30d181d16 100644 --- a/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/nondraftservice/helper/AttachmentsEntityBuilder.java +++ b/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/nondraftservice/helper/AttachmentsEntityBuilder.java @@ -20,8 +20,8 @@ public AttachmentsEntityBuilder setMimeType(String mimeType) { return this; } - public AttachmentsEntityBuilder setFileName(String fileName) { - attachmentEntity.setFileName(fileName); + public AttachmentsEntityBuilder setFilename(String filename) { + attachmentEntity.setFilename(filename); return this; } diff --git a/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/testhandler/TestPluginAttachmentsServiceHandlerTest.java b/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/testhandler/TestPluginAttachmentsServiceHandlerTest.java index bc391fe9b..38980c077 100644 --- a/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/testhandler/TestPluginAttachmentsServiceHandlerTest.java +++ b/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/testhandler/TestPluginAttachmentsServiceHandlerTest.java @@ -9,8 +9,8 @@ import static org.mockito.Mockito.*; import com.sap.cds.feature.attachments.generated.cds4j.sap.attachments.MediaData; -import com.sap.cds.feature.attachments.generated.cds4j.sap.attachments.StatusCode; import com.sap.cds.feature.attachments.service.AttachmentService; +import com.sap.cds.feature.attachments.service.model.StatusCode; import com.sap.cds.feature.attachments.service.model.servicehandler.AttachmentCreateEventContext; import com.sap.cds.feature.attachments.service.model.servicehandler.AttachmentMarkAsDeletedEventContext; import com.sap.cds.feature.attachments.service.model.servicehandler.AttachmentReadEventContext; diff --git a/samples/bookshop/srv/src/main/java/customer/bookshop/handlers/RestHandler.java b/samples/bookshop/srv/src/main/java/customer/bookshop/handlers/RestHandler.java index d63ea146f..0f7d01f9b 100644 --- a/samples/bookshop/srv/src/main/java/customer/bookshop/handlers/RestHandler.java +++ b/samples/bookshop/srv/src/main/java/customer/bookshop/handlers/RestHandler.java @@ -63,7 +63,7 @@ public ResponseEntity>> getAttachments(@PathVariable St List> response = attachments.stream().map(attachment -> { Map map = new HashMap<>(); map.put("id", attachment.getId()); - map.put("fileName", attachment.getFileName()); + map.put("filename", attachment.getFilename()); map.put("mimeType", attachment.getMimeType()); map.put("status", attachment.getStatus()); map.put("note", attachment.getNote()); @@ -94,7 +94,7 @@ public ResponseEntity> getAttachment( return attachment.map(a -> { Map map = new HashMap<>(); map.put("id", a.getId()); - map.put("fileName", a.getFileName()); + map.put("filename", a.getFilename()); map.put("mimeType", a.getMimeType()); map.put("status", a.getStatus()); map.put("note", a.getNote()); @@ -140,7 +140,7 @@ public ResponseEntity downloadAttachment( HttpHeaders headers = new HttpHeaders(); headers.add(HttpHeaders.CONTENT_DISPOSITION, - "attachment; filename=\"" + attachment.getFileName() + "\""); + "attachment; filename=\"" + attachment.getFilename() + "\""); if (attachment.getMimeType() != null) { headers.add(HttpHeaders.CONTENT_TYPE, attachment.getMimeType()); @@ -180,7 +180,7 @@ public ResponseEntity> uploadAttachment( // Create attachment entity BooksAttachments attachment = BooksAttachments.create(); attachment.setUpId(bookId); - attachment.setFileName(file.getOriginalFilename()); + attachment.setFilename(file.getOriginalFilename()); attachment.setMimeType(file.getContentType()); attachment.setContent(file.getInputStream()); attachment.setStatus("Clean"); // Will be updated by malware scanner @@ -201,7 +201,7 @@ public ResponseEntity> uploadAttachment( Map response = new HashMap<>(); response.put("id", created.getId()); - response.put("fileName", created.getFileName()); + response.put("filename", created.getFilename()); response.put("mimeType", created.getMimeType()); response.put("status", created.getStatus()); response.put("note", created.getNote()); @@ -247,8 +247,8 @@ public ResponseEntity> updateAttachment( updateData.setId(attachmentsId); // Only allow updating certain fields - if (updates.containsKey("fileName")) { - updateData.setFileName((String) updates.get("fileName")); + if (updates.containsKey("filename")) { + updateData.setFilename((String) updates.get("filename")); } if (updates.containsKey("note")) { updateData.setNote((String) updates.get("note")); @@ -267,7 +267,7 @@ public ResponseEntity> updateAttachment( Map response = new HashMap<>(); response.put("id", updated.getId()); - response.put("fileName", updated.getFileName()); + response.put("filename", updated.getFilename()); response.put("mimeType", updated.getMimeType()); response.put("status", updated.getStatus()); response.put("note", updated.getNote()); diff --git a/storage-targets/cds-feature-attachments-fs/src/main/java/com/sap/cds/feature/attachments/fs/handler/FSAttachmentsServiceHandler.java b/storage-targets/cds-feature-attachments-fs/src/main/java/com/sap/cds/feature/attachments/fs/handler/FSAttachmentsServiceHandler.java index 228b5deac..948f156d6 100644 --- a/storage-targets/cds-feature-attachments-fs/src/main/java/com/sap/cds/feature/attachments/fs/handler/FSAttachmentsServiceHandler.java +++ b/storage-targets/cds-feature-attachments-fs/src/main/java/com/sap/cds/feature/attachments/fs/handler/FSAttachmentsServiceHandler.java @@ -5,8 +5,8 @@ import com.sap.cds.feature.attachments.generated.cds4j.sap.attachments.Attachments; import com.sap.cds.feature.attachments.generated.cds4j.sap.attachments.MediaData; -import com.sap.cds.feature.attachments.generated.cds4j.sap.attachments.StatusCode; import com.sap.cds.feature.attachments.service.AttachmentService; +import com.sap.cds.feature.attachments.service.model.StatusCode; import com.sap.cds.feature.attachments.service.model.servicehandler.AttachmentCreateEventContext; import com.sap.cds.feature.attachments.service.model.servicehandler.AttachmentMarkAsDeletedEventContext; import com.sap.cds.feature.attachments.service.model.servicehandler.AttachmentReadEventContext; diff --git a/storage-targets/cds-feature-attachments-fs/src/main/java/com/sap/cds/feature/attachments/fs/handler/FSDraftServiceHandler.java b/storage-targets/cds-feature-attachments-fs/src/main/java/com/sap/cds/feature/attachments/fs/handler/FSDraftServiceHandler.java index 45fe9e909..0cadebef9 100644 --- a/storage-targets/cds-feature-attachments-fs/src/main/java/com/sap/cds/feature/attachments/fs/handler/FSDraftServiceHandler.java +++ b/storage-targets/cds-feature-attachments-fs/src/main/java/com/sap/cds/feature/attachments/fs/handler/FSDraftServiceHandler.java @@ -35,7 +35,7 @@ void createDraftAttachment(DraftCreateEventContext context, CdsData data) { // check if target entity contains aspect Attachments if (ApplicationHandlerHelper.isMediaEntity(target)) { - String fileName = (String) data.get(Attachments.FILE_NAME); + String fileName = (String) data.get(Attachments.FILENAME); // guessing the MIME type of the attachment based on the file name String mimeType = URLConnection.guessContentTypeFromName(fileName); diff --git a/storage-targets/cds-feature-attachments-oss/src/main/java/com/sap/cds/feature/attachments/oss/handler/OSSAttachmentsServiceHandler.java b/storage-targets/cds-feature-attachments-oss/src/main/java/com/sap/cds/feature/attachments/oss/handler/OSSAttachmentsServiceHandler.java index 9a44d9c8a..6a038f6d6 100644 --- a/storage-targets/cds-feature-attachments-oss/src/main/java/com/sap/cds/feature/attachments/oss/handler/OSSAttachmentsServiceHandler.java +++ b/storage-targets/cds-feature-attachments-oss/src/main/java/com/sap/cds/feature/attachments/oss/handler/OSSAttachmentsServiceHandler.java @@ -5,12 +5,12 @@ import com.sap.cds.feature.attachments.generated.cds4j.sap.attachments.Attachments; import com.sap.cds.feature.attachments.generated.cds4j.sap.attachments.MediaData; -import com.sap.cds.feature.attachments.generated.cds4j.sap.attachments.StatusCode; import com.sap.cds.feature.attachments.oss.client.AWSClient; import com.sap.cds.feature.attachments.oss.client.AzureClient; import com.sap.cds.feature.attachments.oss.client.GoogleClient; import com.sap.cds.feature.attachments.oss.client.OSClient; import com.sap.cds.feature.attachments.service.AttachmentService; +import com.sap.cds.feature.attachments.service.model.StatusCode; import com.sap.cds.feature.attachments.service.model.servicehandler.AttachmentCreateEventContext; import com.sap.cds.feature.attachments.service.model.servicehandler.AttachmentMarkAsDeletedEventContext; import com.sap.cds.feature.attachments.service.model.servicehandler.AttachmentReadEventContext; @@ -105,7 +105,7 @@ void createAttachment(AttachmentCreateEventContext context) { String contentId = (String) context.getAttachmentIds().get(Attachments.ID); MediaData data = context.getData(); - String fileName = data.getFileName(); + String fileName = data.getFilename(); try { osClient.uploadContent(data.getContent(), contentId, data.getMimeType()).get(); diff --git a/storage-targets/cds-feature-attachments-oss/src/test/java/com/sap/cds/feature/attachments/oss/handler/OSSAttachmentsServiceHandlerTest.java b/storage-targets/cds-feature-attachments-oss/src/test/java/com/sap/cds/feature/attachments/oss/handler/OSSAttachmentsServiceHandlerTest.java index 2d973221b..5d67c4221 100644 --- a/storage-targets/cds-feature-attachments-oss/src/test/java/com/sap/cds/feature/attachments/oss/handler/OSSAttachmentsServiceHandlerTest.java +++ b/storage-targets/cds-feature-attachments-oss/src/test/java/com/sap/cds/feature/attachments/oss/handler/OSSAttachmentsServiceHandlerTest.java @@ -246,7 +246,7 @@ private AttachmentCreateEventContext setupCreateAttachmentContext( when(context.getData()).thenReturn(mockMediaData); when(context.getAttachmentEntity()).thenReturn(mockEntity); when(mockEntity.getQualifiedName()).thenReturn("TestEntity"); - when(mockMediaData.getFileName()).thenReturn("test.txt"); + when(mockMediaData.getFilename()).thenReturn("test.txt"); when(mockMediaData.getContent()).thenReturn(new ByteArrayInputStream("test".getBytes())); when(mockMediaData.getMimeType()).thenReturn("text/plain");