import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString;
+import org.onap.cps.event.model.CpsDataUpdatedEvent;
/**
* Class representing an invalid event envelop exception.
+ * It refers to the invalid event and details the invalid fields it has.
*/
@Getter
public class InvalidEventEnvelopException extends EventListenerException {
+ private final CpsDataUpdatedEvent cpsDataUpdatedEvent;
private final List<InvalidField> invalidFields = new ArrayList<>();
- public InvalidEventEnvelopException(final String message) {
+ public InvalidEventEnvelopException(final String message, final CpsDataUpdatedEvent cpsDataUpdatedEvent) {
super(message);
+ this.cpsDataUpdatedEvent = cpsDataUpdatedEvent;
}
public void addInvalidField(final InvalidField invalidField) {
@Override
public String getMessage() {
- return String.format("%s. invalidFields: %s", super.getMessage(), this.invalidFields.toString());
+ return
+ String.format("%s. Event: %s. Invalid fields: %s",
+ super.getMessage(), this.cpsDataUpdatedEvent, this.invalidFields.toString());
}
@AllArgsConstructor
private void validateEventEnvelop(final CpsDataUpdatedEvent cpsDataUpdatedEvent) {
- final var invalidEventEnvelopException = new InvalidEventEnvelopException("Validation failure");
+ final var invalidEventEnvelopException =
+ new InvalidEventEnvelopException("Validation failure", cpsDataUpdatedEvent);
- // Schema
+ // Validate schema
if (cpsDataUpdatedEvent.getSchema() == null) {
invalidEventEnvelopException.addInvalidField(
new InvalidEventEnvelopException.InvalidField(
CpsDataUpdatedEvent.Schema.URN_CPS_ORG_ONAP_CPS_DATA_UPDATED_EVENT_SCHEMA_1_1_0_SNAPSHOT
.value()));
}
- // Id
+ // Validate id
if (!StringUtils.hasText(cpsDataUpdatedEvent.getId())) {
invalidEventEnvelopException.addInvalidField(
new InvalidEventEnvelopException.InvalidField(
MISSING, "id", null, null));
}
- // Source
- if (cpsDataUpdatedEvent.getSource() == null || !cpsDataUpdatedEvent.getSource().equals(EVENT_SOURCE)) {
+ // Validate source
+ if (!EVENT_SOURCE.equals(cpsDataUpdatedEvent.getSource())) {
invalidEventEnvelopException.addInvalidField(
new InvalidEventEnvelopException.InvalidField(
UNEXPECTED, "source",
cpsDataUpdatedEvent.getSource() != null
? cpsDataUpdatedEvent.getSource().toString() : null, EVENT_SOURCE.toString()));
}
- // Type
- if (cpsDataUpdatedEvent.getType() == null || !cpsDataUpdatedEvent.getType().equals(EVENT_TYPE)) {
+ // Validate type
+ if (!EVENT_TYPE.equals(cpsDataUpdatedEvent.getType())) {
invalidEventEnvelopException.addInvalidField(
new InvalidEventEnvelopException.InvalidField(
UNEXPECTED, "type", cpsDataUpdatedEvent.getType(), EVENT_TYPE));
objectUnderTest.consume(invalidEvent)
then: 'an exception is thrown with 4 invalid fields'
def e = thrown(InvalidEventEnvelopException)
+ e.getCpsDataUpdatedEvent() == invalidEvent
e.getInvalidFields().size() == 4
e.getInvalidFields().contains(
new InvalidEventEnvelopException.InvalidField(
objectUnderTest.consume(invalidEvent)
then: 'an exception is thrown with 2 invalid fields'
def e = thrown(InvalidEventEnvelopException)
+ e.getCpsDataUpdatedEvent() == invalidEvent
e.getInvalidFields().size() == 2
e.getInvalidFields().contains(
new InvalidEventEnvelopException.InvalidField(