New fileready message format added.
Changes made to support existing format by default and new format when the class name is given in the configuration
Change-Id: Ica697fec36ba1a94a722ba062b0b67791532b20a
Signed-off-by: aravind.est <aravindhan.a@est.tech>
https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric-plt-ranpm/en/latest/datafilecollector/index.html
-The comonent is part of the RAM PM use case, which is described here:
+The component is part of the RAM PM use case, which is described here:
https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric-plt-ranpm/en/latest/overview.html#overview
## License
-Copyright (C) 2018-2019 NOKIA Intellectual Property, 2018-2023 Nordix Foundation. All rights reserved.
+Copyright (C) 2023-2025 OpenInfra Foundation Europe. All rights reserved, Copyright (C) 2018-2019 NOKIA Intellectual Property, 2018-2023 Nordix Foundation. All rights reserved.
[License](http://www.apache.org/licenses/LICENSE-2.0)
# If specified, and authorization token will be loaded from file and inserted in each HTTP header when using HTTP/HTTPS.
# If the file name is empty, no authorization token is used
auth-token-file:
+ # If specified, this value will be used as a class to map the fileready event from kafka
+ # If this is empty, default filereadymessage class will be used
+ file-ready-message-class:
kafka:
# KAFKA boostrap servers.
# several redundant boostrap servers can be specified, separated by a comma ','.
* ============LICENSE_START======================================================================
* Copyright (C) 2018, 2020-2022 Nokia. All rights reserved.
* Copyright (C) 2018-2023 Nordix Foundation. All rights reserved.
+ * Copyright (C) 2023-2025 OpenInfra Foundation Europe. All rights reserved.
* ===============================================================================================
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
@Getter
private int noOfWorkerThreads;
+ @Value("${app.file-ready-message-class:}")
+ @Getter
+ private String fileReadyMessageClass;
+
@Value("${app.kafka.ssl.key-store-location}")
private String kafkaKeyStoreLocation;
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019-2023 Nordix Foundation.
+ * Copyright (C) 2023-2025 OpenInfra Foundation Europe. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.oran.datafile.model;
+
+import java.util.List;
+
+import lombok.Builder;
+
+@Builder
+public class DefaultFileReadyMessage implements FileReadyMessage {
+
+ /**
+ * Meta data about a fileReady message.
+ */
+ @Builder
+ public static class MessageMetaData {
+
+ @SuppressWarnings("java:S1104")
+ public String eventId;
+
+ @SuppressWarnings("java:S1104")
+ public String priority;
+
+ @SuppressWarnings("java:S1104")
+ public String version;
+
+ @SuppressWarnings("java:S1104")
+ public String reportingEntityName;
+
+ @SuppressWarnings("java:S1104")
+ public int sequence;
+
+ @SuppressWarnings("java:S1104")
+ public String domain;
+
+ @SuppressWarnings("java:S1104")
+ public String eventName;
+
+ @SuppressWarnings("java:S1104")
+ public String vesEventListenerVersion;
+
+ @SuppressWarnings("java:S1104")
+ public String sourceName;
+
+ @SuppressWarnings("java:S1104")
+ public long lastEpochMicrosec;
+
+ @SuppressWarnings("java:S1104")
+ public long startEpochMicrosec;
+
+ @SuppressWarnings("java:S1104")
+ public String timeZoneOffset;
+
+ @SuppressWarnings("java:S1104")
+ public String changeIdentifier;
+
+ /**
+ * Gets data from the event name. Defined as:
+ * {DomainAbbreviation}_{productName}-{vendorName}_{Description},
+ * example: Noti_RnNode-Ericsson_FileReady
+ *
+ */
+ @SuppressWarnings("java:S6035")
+ public String productName() {
+ String[] eventArray = eventName.split("_|-");
+ if (eventArray.length >= 2) {
+ return eventArray[1];
+ } else {
+ return eventName;
+ }
+ }
+
+ @SuppressWarnings("java:S6035")
+ public String vendorName() {
+ String[] eventArray = eventName.split("_|-");
+ if (eventArray.length >= 3) {
+ return eventArray[2];
+ } else {
+ return eventName;
+ }
+ }
+ }
+
+ @Builder
+ public static class FileInfo {
+ @SuppressWarnings("java:S1104")
+ public String fileFormatType;
+
+ @SuppressWarnings("java:S1104")
+ public String location;
+
+ @SuppressWarnings("java:S1104")
+ public String fileFormatVersion;
+
+ @SuppressWarnings("java:S1104")
+ public String compression;
+ }
+
+ @Builder
+ public static class ArrayOfNamedHashMap {
+ @SuppressWarnings("java:S1104")
+ public String name;
+
+ @SuppressWarnings("java:S1104")
+ public FileInfo hashMap;
+ }
+
+ @Builder
+ public static class NotificationFields {
+ @SuppressWarnings("java:S1104")
+ public String notificationFieldsVersion;
+
+ @SuppressWarnings("java:S1104")
+ public String changeType;
+
+ @SuppressWarnings("java:S1104")
+ public String changeIdentifier;
+
+ @SuppressWarnings("java:S1104")
+ public List<ArrayOfNamedHashMap> arrayOfNamedHashMap;
+ }
+
+ @Builder
+ public static class Event {
+ @SuppressWarnings("java:S1104")
+ public MessageMetaData commonEventHeader;
+
+ @SuppressWarnings("java:S1104")
+ public NotificationFields notificationFields;
+ }
+
+ @SuppressWarnings("java:S1104")
+ public Event event;
+
+}
* ============LICENSE_START=======================================================
* Copyright (C) 2019-2023 Nordix Foundation.
* Copyright (C) 2021 Nokia. All rights reserved.
+ * Copyright (C) 2023-2025 OpenInfra Foundation Europe. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
private static final Logger logger = LoggerFactory.getLogger(FileData.class);
@SuppressWarnings("java:S1104")
- public FileReadyMessage.ArrayOfNamedHashMap fileInfo;
+ public DefaultFileReadyMessage.ArrayOfNamedHashMap defaultFileInfo;
@SuppressWarnings("java:S1104")
- public FileReadyMessage.MessageMetaData messageMetaData;
+ public TS28532FileReadyMessage.FileInfo ts28532FileInfo;
- public static Iterable<FileData> createFileData(FileReadyMessage msg) {
+ @SuppressWarnings("java:S1104")
+ public DefaultFileReadyMessage.MessageMetaData messageMetaData;
+
+ @SuppressWarnings("java:S1104")
+ public TS28532FileReadyMessage.MessageMetaData ts28532MessageMetaData;
+
+ private String fileReadyMessageClass;
+
+ public static Iterable<FileData> createFileData(FileReadyMessage msg, String fileReadyMessageClass) {
Collection<FileData> res = new ArrayList<>();
- for (FileReadyMessage.ArrayOfNamedHashMap arr : msg.event.notificationFields.arrayOfNamedHashMap) {
- FileData data = FileData.builder().fileInfo(arr).messageMetaData(msg.event.commonEventHeader).build();
- res.add(data);
+
+ if(fileReadyMessageClass == null || fileReadyMessageClass.isEmpty()) {
+ DefaultFileReadyMessage defaultMsg = (DefaultFileReadyMessage) msg;
+ for (DefaultFileReadyMessage.ArrayOfNamedHashMap arr : defaultMsg.event.notificationFields.arrayOfNamedHashMap) {
+ FileData data = FileData.builder().defaultFileInfo(arr).fileReadyMessageClass(fileReadyMessageClass).messageMetaData(defaultMsg.event.commonEventHeader).build();
+ res.add(data);
+ }
+ } else {
+ TS28532FileReadyMessage ts28532DefaultMsg = (TS28532FileReadyMessage) msg;
+ for (TS28532FileReadyMessage.FileInfo arr : ts28532DefaultMsg.event.stndDefinedFields.data.fileInfoList) {
+ FileData data = FileData.builder().ts28532FileInfo(arr).fileReadyMessageClass(fileReadyMessageClass).ts28532MessageMetaData(ts28532DefaultMsg.event.commonEventHeader).build();
+ res.add(data);
+ }
}
return res;
}
* @return the name of the PNF, must be unique in the network
*/
public String sourceName() {
- return messageMetaData.sourceName;
+ if(fileReadyMessageClass == null || fileReadyMessageClass.isEmpty()) {
+ return this.messageMetaData.sourceName;
+ } else {
+ return this.ts28532MessageMetaData.sourceName;
+ }
}
public String name() {
- return this.messageMetaData.sourceName + "/" + fileInfo.name;
+ if(fileReadyMessageClass == null || fileReadyMessageClass.isEmpty()) {
+ return this.messageMetaData.sourceName + "/" + defaultFileInfo.name;
+ } else {
+ return this.ts28532MessageMetaData.sourceName + "/" + ts28532FileInfo.fileName();
+ }
}
/**
* @return the path to the file on the PNF.
*/
public String remoteFilePath() {
- return URI.create(fileInfo.hashMap.location).getPath();
+ return getLocationURI().getPath();
}
public Scheme scheme() {
- URI uri = URI.create(fileInfo.hashMap.location);
+ URI uri = getLocationURI();
try {
return Scheme.getSchemeFromString(uri.getScheme());
} catch (Exception e) {
}
}
+ private URI getLocationURI() {
+ if(fileReadyMessageClass == null || fileReadyMessageClass.isEmpty()) {
+ return URI.create(defaultFileInfo.hashMap.location);
+ } else {
+ return URI.create(ts28532FileInfo.fileLocation);
+ }
+ }
+
/**
* Get the path to the locally stored file.
*
* @return the path to the locally stored file.
*/
public Path getLocalFilePath(AppConfig config) {
- return Paths.get(config.getCollectedFilesPath(), this.messageMetaData.sourceName, fileInfo.name);
+ if(fileReadyMessageClass == null || fileReadyMessageClass.isEmpty()) {
+ return Paths.get(config.getCollectedFilesPath(), this.messageMetaData.sourceName, defaultFileInfo.name);
+ } else {
+ return Paths.get(config.getCollectedFilesPath(), this.ts28532MessageMetaData.sourceName, ts28532FileInfo.fileName());
+ }
}
/**
* from.
*/
public FileServerData fileServerData() {
- URI uri = URI.create(fileInfo.hashMap.location);
+ URI uri = getLocationURI();
Optional<String[]> userInfo = getUserNameAndPasswordIfGiven(uri.getUserInfo());
FileServerDataBuilder builder = FileServerData.builder() //
/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019-2023 Nordix Foundation.
+ * Copyright (C) 2025 OpenInfra Foundation Europe. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
package org.oran.datafile.model;
-import java.util.List;
-
-import lombok.Builder;
-
-@Builder
-public class FileReadyMessage {
-
- /**
- * Meta data about a fileReady message.
- */
- @Builder
- public static class MessageMetaData {
-
- @SuppressWarnings("java:S1104")
- public String eventId;
-
- @SuppressWarnings("java:S1104")
- public String priority;
-
- @SuppressWarnings("java:S1104")
- public String version;
-
- @SuppressWarnings("java:S1104")
- public String reportingEntityName;
-
- @SuppressWarnings("java:S1104")
- public int sequence;
-
- @SuppressWarnings("java:S1104")
- public String domain;
-
- @SuppressWarnings("java:S1104")
- public String eventName;
-
- @SuppressWarnings("java:S1104")
- public String vesEventListenerVersion;
-
- @SuppressWarnings("java:S1104")
- public String sourceName;
-
- @SuppressWarnings("java:S1104")
- public long lastEpochMicrosec;
-
- @SuppressWarnings("java:S1104")
- public long startEpochMicrosec;
-
- @SuppressWarnings("java:S1104")
- public String timeZoneOffset;
-
- @SuppressWarnings("java:S1104")
- public String changeIdentifier;
-
- /**
- * Gets data from the event name. Defined as:
- * {DomainAbbreviation}_{productName}-{vendorName}_{Description},
- * example: Noti_RnNode-Ericsson_FileReady
- *
- */
- @SuppressWarnings("java:S6035")
- public String productName() {
- String[] eventArray = eventName.split("_|-");
- if (eventArray.length >= 2) {
- return eventArray[1];
- } else {
- return eventName;
- }
- }
-
- @SuppressWarnings("java:S6035")
- public String vendorName() {
- String[] eventArray = eventName.split("_|-");
- if (eventArray.length >= 3) {
- return eventArray[2];
- } else {
- return eventName;
- }
- }
- }
-
- @Builder
- public static class FileInfo {
- @SuppressWarnings("java:S1104")
- public String fileFormatType;
-
- @SuppressWarnings("java:S1104")
- public String location;
-
- @SuppressWarnings("java:S1104")
- public String fileFormatVersion;
-
- @SuppressWarnings("java:S1104")
- public String compression;
- }
-
- @Builder
- public static class ArrayOfNamedHashMap {
- @SuppressWarnings("java:S1104")
- public String name;
-
- @SuppressWarnings("java:S1104")
- public FileInfo hashMap;
- }
-
- @Builder
- public static class NotificationFields {
- @SuppressWarnings("java:S1104")
- public String notificationFieldsVersion;
-
- @SuppressWarnings("java:S1104")
- public String changeType;
-
- @SuppressWarnings("java:S1104")
- public String changeIdentifier;
-
- @SuppressWarnings("java:S1104")
- public List<ArrayOfNamedHashMap> arrayOfNamedHashMap;
- }
-
- @Builder
- public static class Event {
- @SuppressWarnings("java:S1104")
- public MessageMetaData commonEventHeader;
-
- @SuppressWarnings("java:S1104")
- public NotificationFields notificationFields;
- }
-
- @SuppressWarnings("java:S1104")
- public Event event;
-
+public interface FileReadyMessage {
}
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2025 OpenInfra Foundation Europe. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.oran.datafile.model;
+
+import java.util.List;
+
+import lombok.Builder;
+
+@Builder
+public class TS28532FileReadyMessage implements FileReadyMessage {
+
+ @Builder
+ public static class InternalHeaderFields {
+ @SuppressWarnings("java:S1104")
+ public String collectorTimeStamp;
+ }
+
+ /**
+ * Meta data about a fileReady message.
+ */
+ @Builder
+ public static class MessageMetaData {
+
+ @SuppressWarnings("java:S1104")
+ public String sourceId;
+
+ @SuppressWarnings("java:S1104")
+ public String eventId;
+
+ @SuppressWarnings("java:S1104")
+ public String priority;
+
+ @SuppressWarnings("java:S1104")
+ public String version;
+
+ @SuppressWarnings("java:S1104")
+ public String reportingEntityName;
+
+ @SuppressWarnings("java:S1104")
+ public int sequence;
+
+ @SuppressWarnings("java:S1104")
+ public String domain;
+
+ @SuppressWarnings("java:S1104")
+ public String eventName;
+
+ @SuppressWarnings("java:S1104")
+ public String eventType;
+
+ @SuppressWarnings("java:S1104")
+ public String stndDefinedNamespace;
+
+ @SuppressWarnings("java:S1104")
+ public String nfVendorName;
+
+ @SuppressWarnings("java:S1104")
+ public String nfNamingCode;
+
+ @SuppressWarnings("java:S1104")
+ public String vesEventListenerVersion;
+
+ @SuppressWarnings("java:S1104")
+ public String sourceName;
+
+ @SuppressWarnings("java:S1104")
+ public long lastEpochMicrosec;
+
+ @SuppressWarnings("java:S1104")
+ public long startEpochMicrosec;
+
+ @SuppressWarnings("java:S1104")
+ public String timeZoneOffset;
+
+ @SuppressWarnings("java:S1104")
+ public String reportingEntityId;
+
+ @SuppressWarnings("java:S1104")
+ public InternalHeaderFields internalHeaderFields;
+
+ /**
+ * Gets data from the event name. Defined as:
+ * {DomainAbbreviation}_{productName}-{vendorName}_{Description},
+ * example: Noti_RnNode-Ericsson_FileReady
+ */
+ @SuppressWarnings("java:S6035")
+ public String productName() {
+ String[] eventArray = eventName.split("_|-");
+ if (eventArray.length >= 2) {
+ return eventArray[1];
+ } else {
+ return eventName;
+ }
+ }
+
+ @SuppressWarnings("java:S6035")
+ public String vendorName() {
+ String[] eventArray = eventName.split("_|-");
+ if (eventArray.length >= 3) {
+ return eventArray[2];
+ } else {
+ return eventName;
+ }
+ }
+ }
+
+ @Builder
+ public static class FileInfo {
+ @SuppressWarnings("java:S1104")
+ public int fileSize;
+
+ @SuppressWarnings("java:S1104")
+ public String fileLocation;
+
+ @SuppressWarnings("java:S1104")
+ public String fileReadyTime;
+
+ @SuppressWarnings("java:S1104")
+ public String fileFormat;
+
+ @SuppressWarnings("java:S1104")
+ public String fileDataType;
+
+ @SuppressWarnings("java:S1104")
+ public String fileExpirationTime;
+
+ @SuppressWarnings("java:S1104")
+ public String fileCompression;
+
+ @SuppressWarnings("java:S6035")
+ public String fileName() {
+ String[] fileArray = fileLocation.split("/");
+ if (fileArray.length >= 5) {
+ return fileArray[4];
+ } else {
+ return fileLocation;
+ }
+ }
+
+ @SuppressWarnings("java:S6035")
+ public String filePath() {
+ String fileP = fileLocation.substring(0, fileLocation.lastIndexOf('/')) + "/";
+ return fileP;
+ }
+ }
+
+ @Builder
+ public static class DataFields {
+ @SuppressWarnings("java:S1104")
+ public String systemDN;
+
+ @SuppressWarnings("java:S1104")
+ public String additionalText;
+
+ @SuppressWarnings("java:S1104")
+ public String eventTime;
+
+ @SuppressWarnings("java:S1104")
+ public int notificationId;
+
+ @SuppressWarnings("java:S1104")
+ public String href;
+
+ @SuppressWarnings("java:S1104")
+ public String notificationType;
+
+ @SuppressWarnings("java:S1104")
+ public List<FileInfo> fileInfoList;
+ }
+
+ @Builder
+ public static class StandardDefinedFields {
+ @SuppressWarnings("java:S1104")
+ public String stndDefinedFieldsVersion;
+
+ @SuppressWarnings("java:S1104")
+ public String schemaReference;
+
+ @SuppressWarnings("java:S1104")
+ public DataFields data;
+ }
+
+ @Builder
+ public static class Event {
+ @SuppressWarnings("java:S1104")
+ public MessageMetaData commonEventHeader;
+
+ @SuppressWarnings("java:S1104")
+ public StandardDefinedFields stndDefinedFields;
+ }
+
+ @SuppressWarnings("java:S1104")
+ public Event event;
+
+}
/*-
* ============LICENSE_START======================================================================
+ * Copyright (C) 2023-2025 OpenInfra Foundation Europe. All rights reserved.
* Copyright (C) 2018, 2020 NOKIA Intellectual Property, 2018-2023 Nordix Foundation. All rights reserved.
* ===============================================================================================
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
import org.oran.datafile.exceptions.DatafileTaskException;
import org.oran.datafile.http.HttpsClientConnectionManagerUtil;
import org.oran.datafile.model.Counters;
+import org.oran.datafile.model.DefaultFileReadyMessage;
import org.oran.datafile.model.FileData;
import org.oran.datafile.model.FilePublishInformation;
import org.oran.datafile.model.FileReadyMessage;
+import org.oran.datafile.model.TS28532FileReadyMessage;
import org.oran.datafile.oauth2.SecurityContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
.parallel(noOfWorkerThreads) // Each FileReadyMessage in a separate thread
.runOn(scheduler) //
.doOnNext(fileReadyMessage -> counters.threadPoolQueueSize.decrementAndGet()) //
- .flatMap(fileReadyMessage -> Flux.fromIterable(FileData.createFileData(fileReadyMessage)), true, 1) //
+ .flatMap(fileReadyMessage -> Flux.fromIterable(FileData.createFileData(fileReadyMessage, appConfig.getFileReadyMessageClass())), true, 1) //
.flatMap(this::filterNotFetched, false, 1, 1) //
.flatMap(this::fetchFile, false, 1, 1) //
.flatMap(data -> reportFetchedFile(data, appConfig.getCollectedFileTopic()), false, 1) //
Mono<FileReadyMessage> parseReceivedFileReadyMessage(KafkaTopicListener.DataFromTopic data) {
try {
- FileReadyMessage msg = gson.fromJson(data.value, FileReadyMessage.class);
- logger.debug("Received: {}", msg);
- return Mono.just(msg);
+ if(appConfig.getFileReadyMessageClass() == null || appConfig.getFileReadyMessageClass().isEmpty()) {
+ DefaultFileReadyMessage msg = gson.fromJson(data.value, DefaultFileReadyMessage.class);
+ logger.debug("Received: {}", msg);
+ return Mono.just(msg);
+ } else {
+ TS28532FileReadyMessage msg = gson.fromJson(data.value, TS28532FileReadyMessage.class);
+ logger.debug("Received: {}", msg);
+ return Mono.just(msg);
+ }
} catch (Exception e) {
logger.warn("Could not parse received: {}, reason: {}", data.value, e.getMessage());
return Mono.empty();
/*-
* ============LICENSE_START======================================================================
+ * Copyright (C) 2023-2025 OpenInfra Foundation Europe. All rights reserved.
* Copyright (C) 2018-2023 Nordix Foundation. All rights reserved.
* Copyright (C) 2020-2022 Nokia. All rights reserved.
* ===============================================================================================
import org.oran.datafile.http.DfcHttpsClient;
import org.oran.datafile.http.HttpsClientConnectionManagerUtil;
import org.oran.datafile.model.Counters;
+import org.oran.datafile.model.DefaultFileReadyMessage;
import org.oran.datafile.model.FileData;
import org.oran.datafile.model.FilePublishInformation;
-import org.oran.datafile.model.FileReadyMessage;
+import org.oran.datafile.model.TS28532FileReadyMessage;
import org.oran.datafile.oauth2.SecurityContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
* @param fileData data about the file to collect.
* @param numRetries the number of retries if the publishing fails
* @param firstBackoff the time to delay the first retry
- * @param contextMap context for logging.
* @return the data needed to publish the file.
*/
public Mono<FilePublishInformation> collectFile(FileData fileData, long numRetries, Duration firstBackoff) {
}
private Mono<Optional<FilePublishInformation>> tryCollectFile(FileData fileData) {
- logger.trace("starting to collectFile {}", fileData.fileInfo.name);
+ String fileName;
+ if(appConfig.getFileReadyMessageClass() == null || appConfig.getFileReadyMessageClass().isEmpty()) {
+ fileName = fileData.defaultFileInfo.name;
+ } else {
+ fileName = fileData.ts28532FileInfo.fileName();
+ }
+ logger.trace("starting to collectFile {}", fileName);
final String remoteFile = fileData.remoteFilePath();
final Path localFile = fileData.getLocalFilePath(this.appConfig);
return Mono.just(Optional.of(createFilePublishInformation(fileData)));
} catch (NonRetryableDatafileTaskException nre) {
logger.warn("Failed to download file, not retryable: {} {}, reason: {}", fileData.sourceName(),
- fileData.fileInfo.name, nre.getMessage());
+ fileName, nre.getMessage());
incFailedAttemptsCounter(fileData);
return Mono.just(Optional.empty()); // Give up
} catch (DatafileTaskException e) {
- logger.warn("Failed to download file: {} {}, reason: {}", fileData.sourceName(), fileData.fileInfo.name,
+ logger.warn("Failed to download file: {} {}, reason: {}", fileData.sourceName(), fileName,
e.getMessage());
incFailedAttemptsCounter(fileData);
return Mono.error(e);
} catch (Exception throwable) {
- logger.warn("Failed to close client: {} {}, reason: {}", fileData.sourceName(), fileData.fileInfo.name,
+ logger.warn("Failed to close client: {} {}, reason: {}", fileData.sourceName(), fileName,
throwable.getMessage(), throwable);
return Mono.just(Optional.of(createFilePublishInformation(fileData)));
}
}
public FilePublishInformation createFilePublishInformation(FileData fileData) {
- FileReadyMessage.MessageMetaData metaData = fileData.messageMetaData;
- return FilePublishInformation.builder() //
- .productName(metaData.productName()) //
- .vendorName(metaData.vendorName()) //
- .lastEpochMicrosec(metaData.lastEpochMicrosec) //
- .sourceName(metaData.sourceName) //
- .startEpochMicrosec(metaData.startEpochMicrosec) //
- .timeZoneOffset(metaData.timeZoneOffset) //
- .name(metaData.sourceName + "/" + fileData.fileInfo.name) //
- .compression(fileData.fileInfo.hashMap.compression) //
- .fileFormatType(fileData.fileInfo.hashMap.fileFormatType) //
- .fileFormatVersion(fileData.fileInfo.hashMap.fileFormatVersion) //
- .changeIdentifier(fileData.messageMetaData.changeIdentifier) //
- .objectStoreBucket(this.appConfig.isS3Enabled() ? this.appConfig.getS3Bucket() : null) //
- .build();
+ if(appConfig.getFileReadyMessageClass() == null || appConfig.getFileReadyMessageClass().isEmpty()) {
+ DefaultFileReadyMessage.MessageMetaData metaData = fileData.messageMetaData;
+ return FilePublishInformation.builder() //
+ .productName(metaData.productName()) //
+ .vendorName(metaData.vendorName()) //
+ .lastEpochMicrosec(metaData.lastEpochMicrosec) //
+ .sourceName(metaData.sourceName) //
+ .startEpochMicrosec(metaData.startEpochMicrosec) //
+ .timeZoneOffset(metaData.timeZoneOffset) //
+ .name(metaData.sourceName + "/" + fileData.defaultFileInfo.name) //
+ .compression(fileData.defaultFileInfo.hashMap.compression) //
+ .fileFormatType(fileData.defaultFileInfo.hashMap.fileFormatType) //
+ .fileFormatVersion(fileData.defaultFileInfo.hashMap.fileFormatVersion) //
+ .changeIdentifier(fileData.messageMetaData.changeIdentifier) //
+ .objectStoreBucket(this.appConfig.isS3Enabled() ? this.appConfig.getS3Bucket() : null) //
+ .build();
+ } else {
+ TS28532FileReadyMessage.MessageMetaData metaData = fileData.ts28532MessageMetaData;
+ return FilePublishInformation.builder() //
+ .productName(metaData.productName()) //
+ .vendorName(metaData.vendorName()) //
+ .lastEpochMicrosec(metaData.lastEpochMicrosec) //
+ .sourceName(metaData.sourceName) //
+ .startEpochMicrosec(metaData.startEpochMicrosec) //
+ .timeZoneOffset(metaData.timeZoneOffset) //
+ .name(metaData.sourceName + "/" + fileData.ts28532FileInfo.fileName()) //
+ .compression(fileData.ts28532FileInfo.fileCompression) //
+ .fileFormatType(fileData.ts28532FileInfo.fileFormat) //
+ .fileFormatVersion(fileData.ts28532FileInfo.fileDataType) //
+ .changeIdentifier(fileData.ts28532MessageMetaData.reportingEntityName) //
+ .objectStoreBucket(this.appConfig.isS3Enabled() ? this.appConfig.getS3Bucket() : null) //
+ .build();
+ }
}
protected SftpClient createSftpClient(FileData fileData) {
* ========================LICENSE_START=================================
* O-RAN-SC
* %%
- * Copyright (C) 2020-2023 NordixFoundation
+ * Copyright (C) 2020-2023 Nordix Foundation
+ * Copyright (C) 2025 OpenInfra Foundation Europe. All rights reserved.
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
import org.oran.datafile.datastore.DataStore;
import org.oran.datafile.datastore.DataStore.Bucket;
import org.oran.datafile.model.Counters;
+import org.oran.datafile.model.DefaultFileReadyMessage;
import org.oran.datafile.model.FileData;
import org.oran.datafile.model.FilePublishInformation;
-import org.oran.datafile.model.FileReadyMessage;
-import org.oran.datafile.model.FileReadyMessage.MessageMetaData;
+import org.oran.datafile.model.DefaultFileReadyMessage.MessageMetaData;
import org.oran.datafile.oauth2.SecurityContext;
import org.oran.datafile.tasks.CollectAndReportFiles;
import org.oran.datafile.tasks.FileCollector;
}
}
- FileReadyMessage.Event event(String fileName) {
+ DefaultFileReadyMessage.Event event(String fileName) {
MessageMetaData messageMetaData = MessageMetaData.builder() //
.lastEpochMicrosec(LAST_EPOCH_MICROSEC) //
.sourceName(SOURCE_NAME) //
.changeIdentifier(CHANGE_IDENTIFIER) //
.eventName("Noti_RnNode-Ericsson_FileReady").build();
- FileReadyMessage.FileInfo fileInfo = FileReadyMessage.FileInfo //
+ DefaultFileReadyMessage.FileInfo fileInfo = DefaultFileReadyMessage.FileInfo //
.builder() //
.fileFormatType(FILE_FORMAT_TYPE) //
.location(LOCATION) //
.compression(GZIP_COMPRESSION) //
.build();
- FileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = FileReadyMessage.ArrayOfNamedHashMap //
+ DefaultFileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = DefaultFileReadyMessage.ArrayOfNamedHashMap //
.builder() //
.name(fileName) //
.hashMap(fileInfo) //
.build();
- List<FileReadyMessage.ArrayOfNamedHashMap> arrayOfNamedHashMapList = new ArrayList<>();
+ List<DefaultFileReadyMessage.ArrayOfNamedHashMap> arrayOfNamedHashMapList = new ArrayList<>();
arrayOfNamedHashMapList.add(arrayOfNamedHashMap);
- FileReadyMessage.NotificationFields notificationFields = FileReadyMessage.NotificationFields //
+ DefaultFileReadyMessage.NotificationFields notificationFields = DefaultFileReadyMessage.NotificationFields //
.builder().notificationFieldsVersion("notificationFieldsVersion") //
.changeType(CHANGE_TYPE).changeIdentifier(CHANGE_IDENTIFIER) //
.arrayOfNamedHashMap(arrayOfNamedHashMapList) //
.build();
- return FileReadyMessage.Event.builder() //
+ return DefaultFileReadyMessage.Event.builder() //
.commonEventHeader(messageMetaData) //
.notificationFields(notificationFields).build();
}
- private FileReadyMessage fileReadyMessage(String fileName) {
- FileReadyMessage message = FileReadyMessage.builder() //
+ private DefaultFileReadyMessage fileReadyMessage(String fileName) {
+ DefaultFileReadyMessage message = DefaultFileReadyMessage.builder() //
.event(event(fileName)) //
.build();
return message;
}
- private FileReadyMessage fileReadyMessage() {
+ private DefaultFileReadyMessage fileReadyMessage() {
return fileReadyMessage(PM_FILE_NAME);
}
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2019-2023 Nordix Foundation.
+ * Copyright (C) 2023-2025 OpenInfra Foundation Europe. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
import org.junit.jupiter.api.Test;
-class FileReadyMessageTest {
+class DefaultFileReadyMessageTest {
@Test
void testMessageMetaDataProductName() {
assertEquals("Event Name",
- (new FileReadyMessage.MessageMetaData("42", "Priority", "1.0.2", "Reporting Entity Name",
- 1, "Domain", "Event Name", "1.0.2", "Source Name", 1L, 1L, "UTC", "42")).productName());
- assertEquals("|", (new FileReadyMessage.MessageMetaData("42", "Priority", "1.0.2", "Reporting Entity Name", 1,
- "Domain", "_|-", "1.0.2", "Source Name", 1L, 1L, "UTC", "42")).productName());
+ (new DefaultFileReadyMessage.MessageMetaData("42", "Priority", "1.0.2", "Reporting Entity Name", 1,
+ "Domain", "Event Name", "1.0.2", "Source Name", 1L, 1L, "UTC", "42")).productName());
+ assertEquals("|",
+ (new DefaultFileReadyMessage.MessageMetaData("42", "Priority", "1.0.2", "Reporting Entity Name", 1,
+ "Domain", "_|-", "1.0.2", "Source Name", 1L, 1L, "UTC", "42")).productName());
}
+
@Test
void testMessageMetaDataVendorName() {
assertEquals("Event Name",
- (new FileReadyMessage.MessageMetaData("42", "Priority", "1.0.2", "Reporting Entity Name", 1, "Domain",
- "Event Name", "1.0.2", "Source Name", 1L, 1L, "UTC", "42")).vendorName());
+ (new DefaultFileReadyMessage.MessageMetaData("42", "Priority", "1.0.2", "Reporting Entity Name", 1,
+ "Domain", "Event Name", "1.0.2", "Source Name", 1L, 1L, "UTC", "42")).vendorName());
}
}
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2019-2023 Nordix Foundation.
+ * Copyright (C) 2023-2025 OpenInfra Foundation Europe. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@Test
void testSourceName() {
- FileReadyMessage.MessageMetaData metaData = new FileReadyMessage.MessageMetaData(
- "sourceName", "otherField1", "otherField2", "otherField3", 42, "field5", "field6",
- "field7", "field8", 123456789L, 987654321L, "field11", "field12"
- );
+ DefaultFileReadyMessage.MessageMetaData metaData = new DefaultFileReadyMessage.MessageMetaData("sourceName",
+ "otherField1", "otherField2", "otherField3", 42, "field5", "field6", "field7", "field8", 123456789L,
+ 987654321L, "field11", "field12");
FileData fileData = FileData.builder().messageMetaData(metaData).build();
assertEquals("field8", fileData.sourceName());
@Test
void testName() {
- FileReadyMessage.MessageMetaData metaData = new FileReadyMessage.MessageMetaData(
- "sourceName", "otherField1", "otherField2", "otherField3", 42, "field5", "field6",
- "field7", "field8", 123456789L, 987654321L, "field11", "field12"
- );
+ DefaultFileReadyMessage.MessageMetaData metaData = new DefaultFileReadyMessage.MessageMetaData("sourceName",
+ "otherField1", "otherField2", "otherField3", 42, "field5", "field6", "field7", "field8", 123456789L,
+ 987654321L, "field11", "field12");
FileData fileData = FileData.builder().messageMetaData(metaData).build();
- FileReadyMessage.FileInfo fileInfo = new FileReadyMessage.FileInfo("name", "location", "hashMapField", "");
- FileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new FileReadyMessage.ArrayOfNamedHashMap("someString", fileInfo);
- fileData.fileInfo = arrayOfNamedHashMap;
+ DefaultFileReadyMessage.FileInfo fileInfo = new DefaultFileReadyMessage.FileInfo("name", "location", "hashMapField",
+ "");
+ DefaultFileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new DefaultFileReadyMessage.ArrayOfNamedHashMap(
+ "someString", fileInfo);
+ fileData.defaultFileInfo = arrayOfNamedHashMap;
assertEquals("field8/someString", fileData.name());
}
@Test
void testRemoteFilePath() {
- FileReadyMessage.MessageMetaData metaData = new FileReadyMessage.MessageMetaData(
- "sourceName", "otherField1", "otherField2", "otherField3", 42, "field5", "field6",
- "field7", "field8", 123456789L, 987654321L, "field11", "field12"
- );
+ DefaultFileReadyMessage.MessageMetaData metaData = new DefaultFileReadyMessage.MessageMetaData("sourceName",
+ "otherField1", "otherField2", "otherField3", 42, "field5", "field6", "field7", "field8", 123456789L,
+ 987654321L, "field11", "field12");
FileData fileData = FileData.builder().messageMetaData(metaData).build();
- FileReadyMessage.FileInfo fileInfo = new FileReadyMessage.FileInfo("name", "ftp://example.com/remote/file.txt", "hashMapField", "");
- FileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new FileReadyMessage.ArrayOfNamedHashMap("someString", fileInfo);
- fileData.fileInfo = arrayOfNamedHashMap;
+ DefaultFileReadyMessage.FileInfo fileInfo = new DefaultFileReadyMessage.FileInfo("name",
+ "ftp://example.com/remote/file.txt", "hashMapField", "");
+ DefaultFileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new DefaultFileReadyMessage.ArrayOfNamedHashMap(
+ "someString", fileInfo);
+ fileData.defaultFileInfo = arrayOfNamedHashMap;
assertEquals("/remote/file.txt", fileData.remoteFilePath());
}
@Test
void testScheme() {
- FileReadyMessage.MessageMetaData metaData = new FileReadyMessage.MessageMetaData(
- "sourceName", "otherField1", "otherField2", "otherField3", 42, "field5", "field6",
- "field7", "field8", 123456789L, 987654321L, "field11", "field12"
- );
+ DefaultFileReadyMessage.MessageMetaData metaData = new DefaultFileReadyMessage.MessageMetaData("sourceName",
+ "otherField1", "otherField2", "otherField3", 42, "field5", "field6", "field7", "field8", 123456789L,
+ 987654321L, "field11", "field12");
FileData fileData = FileData.builder().messageMetaData(metaData).build();
- FileReadyMessage.FileInfo fileInfo = new FileReadyMessage.FileInfo("name", "http://example.com/file.txt", "hashMapField", "");
- FileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new FileReadyMessage.ArrayOfNamedHashMap("someString", fileInfo);
- fileData.fileInfo = arrayOfNamedHashMap;
+ DefaultFileReadyMessage.FileInfo fileInfo = new DefaultFileReadyMessage.FileInfo("name",
+ "http://example.com/file.txt", "hashMapField", "");
+ DefaultFileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new DefaultFileReadyMessage.ArrayOfNamedHashMap(
+ "someString", fileInfo);
+ fileData.defaultFileInfo = arrayOfNamedHashMap;
assertEquals(FileData.Scheme.HTTP, fileData.scheme());
}
void testGetLocalFilePath() {
AppConfig config = new AppConfig();
config.setCollectedFilesPath("/local/path");
- FileReadyMessage.MessageMetaData metaData = new FileReadyMessage.MessageMetaData(
- "sourceName", "otherField1", "otherField2", "otherField3", 42, "field5", "field6",
- "field7", "field8", 123456789L, 987654321L, "field11", "field12"
- );
+ DefaultFileReadyMessage.MessageMetaData metaData = new DefaultFileReadyMessage.MessageMetaData("sourceName",
+ "otherField1", "otherField2", "otherField3", 42, "field5", "field6", "field7", "field8", 123456789L,
+ 987654321L, "field11", "field12");
FileData fileData = FileData.builder().messageMetaData(metaData).build();
- FileReadyMessage.FileInfo fileInfo = new FileReadyMessage.FileInfo("name", "http://example.com/file.txt", "hashMapField", "");
- FileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new FileReadyMessage.ArrayOfNamedHashMap("someString", fileInfo);
- fileData.fileInfo = arrayOfNamedHashMap;
+ DefaultFileReadyMessage.FileInfo fileInfo = new DefaultFileReadyMessage.FileInfo("name",
+ "http://example.com/file.txt", "hashMapField", "");
+ DefaultFileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new DefaultFileReadyMessage.ArrayOfNamedHashMap(
+ "someString", fileInfo);
+ fileData.defaultFileInfo = arrayOfNamedHashMap;
Path expectedPath = Paths.get("/local/path/field8/someString");
Path actualPath = fileData.getLocalFilePath(config);
// Arrange
AppConfig config = new AppConfig();
config.setCollectedFilesPath("/local/path");
- FileReadyMessage.MessageMetaData metaData = new FileReadyMessage.MessageMetaData(
- "sourceName", "otherField1", "otherField2", "otherField3", 42, "field5", "field6",
- "field7", "field8", 123456789L, 987654321L, "field11", "field12"
- );
+ DefaultFileReadyMessage.MessageMetaData metaData = new DefaultFileReadyMessage.MessageMetaData("sourceName",
+ "otherField1", "otherField2", "otherField3", 42, "field5", "field6", "field7", "field8", 123456789L,
+ 987654321L, "field11", "field12");
FileData fileData = FileData.builder().messageMetaData(metaData).build();
- FileReadyMessage.FileInfo fileInfo = new FileReadyMessage.FileInfo("name", "http://username:password@example.com:8080/path?query1=value1&query2=value2", "hashMapField", "");
- FileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new FileReadyMessage.ArrayOfNamedHashMap("someString", fileInfo);
- fileData.fileInfo = arrayOfNamedHashMap;
+ DefaultFileReadyMessage.FileInfo fileInfo = new DefaultFileReadyMessage.FileInfo("name",
+ "http://username:password@example.com:8080/path?query1=value1&query2=value2", "hashMapField", "");
+ DefaultFileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new DefaultFileReadyMessage.ArrayOfNamedHashMap(
+ "someString", fileInfo);
+ fileData.defaultFileInfo = arrayOfNamedHashMap;
// Act
FileServerData result = fileData.fileServerData();
// Arrange
AppConfig config = new AppConfig();
config.setCollectedFilesPath("/local/path");
- FileReadyMessage.MessageMetaData metaData = new FileReadyMessage.MessageMetaData(
- "sourceName", "otherField1", "otherField2", "otherField3", 42, "field5", "field6",
- "field7", "field8", 123456789L, 987654321L, "field11", "field12"
- );
+ DefaultFileReadyMessage.MessageMetaData metaData = new DefaultFileReadyMessage.MessageMetaData("sourceName",
+ "otherField1", "otherField2", "otherField3", 42, "field5", "field6", "field7", "field8", 123456789L,
+ 987654321L, "field11", "field12");
FileData fileData = FileData.builder().messageMetaData(metaData).build();
- FileReadyMessage.FileInfo fileInfo = new FileReadyMessage.FileInfo("name", "http://username@example.com:8080/path?query1=value1&query2=value2#rawFragment", "hashMapField", "");
- FileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new FileReadyMessage.ArrayOfNamedHashMap("someString", fileInfo);
- fileData.fileInfo = arrayOfNamedHashMap;
+ DefaultFileReadyMessage.FileInfo fileInfo = new DefaultFileReadyMessage.FileInfo("name",
+ "http://username@example.com:8080/path?query1=value1&query2=value2#rawFragment", "hashMapField", "");
+ DefaultFileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new DefaultFileReadyMessage.ArrayOfNamedHashMap(
+ "someString", fileInfo);
+ fileData.defaultFileInfo = arrayOfNamedHashMap;
// Act
FileServerData result = fileData.fileServerData();
// Arrange
AppConfig config = new AppConfig();
config.setCollectedFilesPath("/local/path");
- FileReadyMessage.MessageMetaData metaData = new FileReadyMessage.MessageMetaData(
- "sourceName", "otherField1", "otherField2", "otherField3", 42, "field5", "field6",
- "field7", "field8", 123456789L, 987654321L, "field11", "field12"
- );
+ DefaultFileReadyMessage.MessageMetaData metaData = new DefaultFileReadyMessage.MessageMetaData("sourceName",
+ "otherField1", "otherField2", "otherField3", 42, "field5", "field6", "field7", "field8", 123456789L,
+ 987654321L, "field11", "field12");
FileData fileData = FileData.builder().messageMetaData(metaData).build();
- FileReadyMessage.FileInfo fileInfo = new FileReadyMessage.FileInfo("name", "http://example.com:8080/path?query1=value1&query2=value2", "hashMapField", "");
- FileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new FileReadyMessage.ArrayOfNamedHashMap("someString", fileInfo);
- fileData.fileInfo = arrayOfNamedHashMap;
+ DefaultFileReadyMessage.FileInfo fileInfo = new DefaultFileReadyMessage.FileInfo("name",
+ "http://example.com:8080/path?query1=value1&query2=value2", "hashMapField", "");
+ DefaultFileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new DefaultFileReadyMessage.ArrayOfNamedHashMap(
+ "someString", fileInfo);
+ fileData.defaultFileInfo = arrayOfNamedHashMap;
FileServerData result = fileData.fileServerData();
assertEquals("example.com", result.getServerAddress());
// Arrange
AppConfig config = new AppConfig();
config.setCollectedFilesPath("/local/path");
- FileReadyMessage.MessageMetaData metaData = new FileReadyMessage.MessageMetaData(
- "sourceName", "otherField1", "otherField2", "otherField3", 42, "field5", "field6",
- "field7", "field8", 123456789L, 987654321L, "field11", "field12"
- );
+ DefaultFileReadyMessage.MessageMetaData metaData = new DefaultFileReadyMessage.MessageMetaData("sourceName",
+ "otherField1", "otherField2", "otherField3", 42, "field5", "field6", "field7", "field8", 123456789L,
+ 987654321L, "field11", "field12");
FileData fileData = FileData.builder().messageMetaData(metaData).build();
- FileReadyMessage.FileInfo fileInfo = new FileReadyMessage.FileInfo("name", "abcxyz://example.com:8080/path?query1=value1&query2=value2", "hashMapField", "");
- FileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new FileReadyMessage.ArrayOfNamedHashMap("someString", fileInfo);
- fileData.fileInfo = arrayOfNamedHashMap;
+ DefaultFileReadyMessage.FileInfo fileInfo = new DefaultFileReadyMessage.FileInfo("name",
+ "abcxyz://example.com:8080/path?query1=value1&query2=value2", "hashMapField", "");
+ DefaultFileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new DefaultFileReadyMessage.ArrayOfNamedHashMap(
+ "someString", fileInfo);
+ fileData.defaultFileInfo = arrayOfNamedHashMap;
// Act
FileData.Scheme result = fileData.scheme();
}
@Test
- void testCreateFileData(){
-
- FileReadyMessage.MessageMetaData metaData = new FileReadyMessage.MessageMetaData(
- "sourceName", "otherField1", "otherField2", "otherField3", 42, "field5", "field6",
- "field7", "field8", 123456789L, 987654321L, "field11", "field12"
- );
-
- FileReadyMessage fileReadyMessage = FileReadyMessage.builder()
- .event(
- FileReadyMessage.Event.builder()
- .commonEventHeader(metaData)
- .notificationFields(
- FileReadyMessage.NotificationFields.builder()
- .notificationFieldsVersion("1.0")
- .changeType("Add")
- .changeIdentifier("Change123")
- .arrayOfNamedHashMap(
- Collections.singletonList(
- FileReadyMessage.ArrayOfNamedHashMap.builder()
- .name("File1")
- .hashMap(
- FileReadyMessage.FileInfo.builder()
- .fileFormatType("Text")
- .location("ftp://example.com/files/file.txt")
- .fileFormatVersion("1.0")
- .compression("None")
- .build()
- )
- .build()
- )
- )
- .build()
- )
- .build()
- )
- .build();
-
- Iterable<FileData> fileDataIterable = FileData.createFileData(fileReadyMessage);
- FileReadyMessage.MessageMetaData messageMetaData = fileDataIterable.iterator().next().messageMetaData;
+ void testCreateFileData() {
+
+ DefaultFileReadyMessage.MessageMetaData metaData = new DefaultFileReadyMessage.MessageMetaData("sourceName",
+ "otherField1", "otherField2", "otherField3", 42, "field5", "field6", "field7", "field8", 123456789L,
+ 987654321L, "field11", "field12");
+
+ DefaultFileReadyMessage defaultFileReadyMessage = DefaultFileReadyMessage.builder()
+ .event(DefaultFileReadyMessage.Event.builder().commonEventHeader(metaData).notificationFields(
+ DefaultFileReadyMessage.NotificationFields.builder().notificationFieldsVersion("1.0")
+ .changeType("Add").changeIdentifier("Change123").arrayOfNamedHashMap(
+ Collections.singletonList(
+ DefaultFileReadyMessage.ArrayOfNamedHashMap.builder().name("File1").hashMap(
+ DefaultFileReadyMessage.FileInfo.builder().fileFormatType("Text")
+ .location("ftp://example.com/files/file.txt")
+ .fileFormatVersion("1.0").compression("None").build()).build()))
+ .build()).build()).build();
+
+ Iterable<FileData> fileDataIterable = FileData.createFileData(defaultFileReadyMessage, null);
+ DefaultFileReadyMessage.MessageMetaData messageMetaData = fileDataIterable.iterator().next().messageMetaData;
assertEquals("field8", messageMetaData.sourceName);
}
/*-
* ============LICENSE_START======================================================================
+ * Copyright (C) 2023-2025 OpenInfra Foundation Europe. All rights reserved.
* Copyright (C) 2018-2023 Nordix Foundation. All rights reserved.
* Copyright (C) 2020-2022 Nokia. All rights reserved.
* ===============================================================================================
import org.oran.datafile.http.DfcHttpClient;
import org.oran.datafile.http.DfcHttpsClient;
import org.oran.datafile.model.Counters;
+import org.oran.datafile.model.DefaultFileReadyMessage;
import org.oran.datafile.model.FileData;
import org.oran.datafile.model.FilePublishInformation;
-import org.oran.datafile.model.FileReadyMessage;
import org.oran.datafile.oauth2.SecurityContext;
import reactor.test.StepVerifier;
static final SecurityContext securityContext = new SecurityContext("");
- FileReadyMessage.Event event(String location) {
- FileReadyMessage.MessageMetaData messageMetaData = FileReadyMessage.MessageMetaData.builder() //
+ DefaultFileReadyMessage.Event event(String location) {
+ DefaultFileReadyMessage.MessageMetaData messageMetaData = DefaultFileReadyMessage.MessageMetaData.builder() //
.lastEpochMicrosec(LAST_EPOCH_MICROSEC) //
.sourceName(SOURCE_NAME) //
.startEpochMicrosec(START_EPOCH_MICROSEC) //
.changeIdentifier(CHANGE_IDENTIFIER) //
.eventName("Noti_NrRadio-Ericsson_FileReady").build();
- FileReadyMessage.FileInfo fileInfo = FileReadyMessage.FileInfo //
+ DefaultFileReadyMessage.FileInfo fileInfo = DefaultFileReadyMessage.FileInfo //
.builder() //
.fileFormatType(FILE_FORMAT_TYPE) //
.location(location) //
.compression(GZIP_COMPRESSION) //
.build();
- FileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = FileReadyMessage.ArrayOfNamedHashMap //
+ DefaultFileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = DefaultFileReadyMessage.ArrayOfNamedHashMap //
.builder().name(PM_FILE_NAME) //
.hashMap(fileInfo).build();
- List<FileReadyMessage.ArrayOfNamedHashMap> arrayOfNamedHashMapList = new ArrayList<>();
+ List<DefaultFileReadyMessage.ArrayOfNamedHashMap> arrayOfNamedHashMapList = new ArrayList<>();
arrayOfNamedHashMapList.add(arrayOfNamedHashMap);
- FileReadyMessage.NotificationFields notificationFields = FileReadyMessage.NotificationFields //
+ DefaultFileReadyMessage.NotificationFields notificationFields = DefaultFileReadyMessage.NotificationFields //
.builder().notificationFieldsVersion("notificationFieldsVersion") //
.changeType(CHANGE_TYPE).changeIdentifier(CHANGE_IDENTIFIER) //
.arrayOfNamedHashMap(arrayOfNamedHashMapList) //
.build();
- return FileReadyMessage.Event.builder() //
+ return DefaultFileReadyMessage.Event.builder() //
.commonEventHeader(messageMetaData) //
.notificationFields(notificationFields).build();
}
- private FileReadyMessage fileReadyMessage(String location) {
- FileReadyMessage message = FileReadyMessage.builder() //
+ private DefaultFileReadyMessage fileReadyMessage(String location) {
+ DefaultFileReadyMessage message = DefaultFileReadyMessage.builder() //
.event(event(location)) //
.build();
return message;
}
private FileData createFileData(String location) {
- return FileData.createFileData(fileReadyMessage(location)).iterator().next();
+ return FileData.createFileData(fileReadyMessage(location), null).iterator().next();
}
private FilePublishInformation createExpectedFilePublishInformation(String location) {