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
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) }
-
+ })
}