diff options
author | Marek Gradzki <mgradzki@cisco.com> | 2018-04-13 13:38:16 +0200 |
---|---|---|
committer | Marek Gradzki <mgradzki@cisco.com> | 2018-08-17 10:17:58 +0000 |
commit | d1b102f6fafced3c7badb09ecc78fec590704c8a (patch) | |
tree | fb9c7041b25cdd36b46cf25e789c850db38f2349 /infra/translate-api/src/main/java/io/fd/honeycomb/translate/write/DataValidationFailedException.java | |
parent | fa641a3e06a905cb3222ebd15a2b4ab90b599efc (diff) |
HONEYCOMB-431: add validation support to Writers
This patch introduces FlatWriterRegistry.validateModifications.
Implementation iterates over writersOrder following bulkUpdate logic
to properly support subtree writers case.
Writers are now cabable of validating modifications.
Commonly used implementations (GenericWriter and GenericListWriter)
delegate validation capbility to Validators.
Change-Id: If7a0bb0838c0b8f2c0393c989f3b03853a2ea679
Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
Diffstat (limited to 'infra/translate-api/src/main/java/io/fd/honeycomb/translate/write/DataValidationFailedException.java')
-rw-r--r-- | infra/translate-api/src/main/java/io/fd/honeycomb/translate/write/DataValidationFailedException.java | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/infra/translate-api/src/main/java/io/fd/honeycomb/translate/write/DataValidationFailedException.java b/infra/translate-api/src/main/java/io/fd/honeycomb/translate/write/DataValidationFailedException.java index 3c0392efa..d728beee4 100644 --- a/infra/translate-api/src/main/java/io/fd/honeycomb/translate/write/DataValidationFailedException.java +++ b/infra/translate-api/src/main/java/io/fd/honeycomb/translate/write/DataValidationFailedException.java @@ -20,6 +20,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import io.fd.honeycomb.translate.ValidationFailedException; import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; /** @@ -76,4 +77,77 @@ public class DataValidationFailedException extends ValidationFailedException { public InstanceIdentifier<?> getFailedId() { return failedId; } + + /** + * Create specific validated failed exception. + */ + public static class CreateValidationFailedException extends DataValidationFailedException { + private static final long serialVersionUID = 1; + + private final transient DataObject data; + + public CreateValidationFailedException(@Nonnull final InstanceIdentifier<?> failedId, + @Nonnull final DataObject data, + @Nonnull final Throwable cause) { + super(failedId, getMsg(failedId, data), cause); + this.data = checkNotNull(data, "data"); + } + + private static String getMsg(final @Nonnull InstanceIdentifier<?> failedId, + final @Nonnull DataObject data) { + return String.format("Failed to validate create request for: %s at: %s.", data, failedId); + } + + public DataObject getData() { + return data; + } + } + + /** + * Update specific validated failed exception. + */ + public static class UpdateValidationFailedException extends DataValidationFailedException { + private static final long serialVersionUID = 1; + + private final transient DataObject dataBefore; + private final transient DataObject dataAfter; + + public UpdateValidationFailedException(@Nonnull final InstanceIdentifier<?> failedId, + @Nonnull final DataObject dataBefore, + @Nonnull final DataObject dataAfter, + @Nonnull final Throwable cause) { + super(failedId, getMsg(failedId, dataBefore, dataAfter), cause); + this.dataBefore = checkNotNull(dataBefore, "dataBefore"); + this.dataAfter = checkNotNull(dataAfter, "dataAfter"); + } + + private static String getMsg(final @Nonnull InstanceIdentifier<?> failedId, final DataObject dataBefore, + final @Nonnull DataObject dataAfter) { + return String + .format("Failed to validate update request from: %s to: %s, at: %s.", dataBefore, dataAfter, failedId); + } + + public DataObject getDataBefore() { + return dataBefore; + } + + public DataObject getDataAfter() { + return dataAfter; + } + } + + /** + * Delete specific validated failed exception. + */ + public static class DeleteValidationFailedException extends DataValidationFailedException { + private static final long serialVersionUID = 1; + + public DeleteValidationFailedException(@Nonnull final InstanceIdentifier<?> failedId, @Nonnull final Throwable cause) { + super(failedId, getMsg(failedId), cause); + } + + private static String getMsg(@Nonnull final InstanceIdentifier<?> failedId) { + return String.format("Failed to validate delete request: %s.", failedId); + } + } } |