diff options
Diffstat (limited to 'sources/hv-collector-core/src/main/kotlin/org/onap/dcae/collectors/veshv/impl/MessageValidator.kt')
-rw-r--r-- | sources/hv-collector-core/src/main/kotlin/org/onap/dcae/collectors/veshv/impl/MessageValidator.kt | 35 |
1 files changed, 15 insertions, 20 deletions
diff --git a/sources/hv-collector-core/src/main/kotlin/org/onap/dcae/collectors/veshv/impl/MessageValidator.kt b/sources/hv-collector-core/src/main/kotlin/org/onap/dcae/collectors/veshv/impl/MessageValidator.kt index 93940752..66d2ea0c 100644 --- a/sources/hv-collector-core/src/main/kotlin/org/onap/dcae/collectors/veshv/impl/MessageValidator.kt +++ b/sources/hv-collector-core/src/main/kotlin/org/onap/dcae/collectors/veshv/impl/MessageValidator.kt @@ -20,11 +20,9 @@ package org.onap.dcae.collectors.veshv.impl import arrow.core.Either +import arrow.data.Nel import org.onap.dcae.collectors.veshv.domain.WireFrameMessage -import org.onap.dcae.collectors.veshv.domain.headerRequiredFieldDescriptors -import org.onap.dcae.collectors.veshv.domain.vesEventListenerVersionRegex import org.onap.dcae.collectors.veshv.model.VesMessage -import org.onap.ves.VesEventOuterClass.CommonEventHeader typealias ValidationFailMessage = () -> String typealias ValidationSuccessMessage = () -> String @@ -33,24 +31,21 @@ typealias ValidationResult = Either<ValidationFailMessage, ValidationSuccessMess internal object MessageValidator { fun validateFrameMessage(message: WireFrameMessage): ValidationResult = - message.validate().fold({ - Either.left { "Invalid wire frame header, reason: ${it.message}" } - }, { - Either.right { "Wire frame header is valid" } - }) + message.validate().fold({ + Either.left { "Invalid wire frame header, reason: ${it.message}" } + }, { + Either.right { "Wire frame header is valid" } + }) fun validateProtobufMessage(message: VesMessage): ValidationResult = - if (message.isValid()) { + HeaderValidator.validate(message.header).fold( + { validationErrors: Nel<ValidationError> -> + Either.left { + "Protocol buffer message is invalid, reasons:" + validationErrors.all + .joinToString(prefix = "\n-") { it.errorMessage } + } + }, + { Either.right { "Protocol buffers message is valid" } - } else { - Either.left { "Unsupported protocol buffers message." } - } - - fun VesMessage.isValid() = allMandatoryFieldsArePresent(this.header) - .and(vesEventListenerVersionRegex.matches(header.vesEventListenerVersion)) - - private fun allMandatoryFieldsArePresent(header: CommonEventHeader) = - headerRequiredFieldDescriptors - .all { fieldDescriptor -> header.hasField(fieldDescriptor) } - + }) } |