All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.dellroad.stuff.pobj.PersistentObjectValidationException Maven / Gradle / Ivy


/*
 * Copyright (C) 2012 Archie L. Cobbs. All rights reserved.
 */

package org.dellroad.stuff.pobj;

import java.util.Set;

import javax.validation.ConstraintViolation;

/**
 * Runtime exception thrown during {@link PersistentObject} operations.
 */
@SuppressWarnings("serial")
public class PersistentObjectValidationException extends PersistentObjectException {

    private final Set> violations;

    /**
     * Constructor.
     *
     * @param  root object type
     * @param violations set of violations
     * @throws IllegalArgumentException if {@code violations} is null
     */
    @SuppressWarnings("unchecked")
    public  PersistentObjectValidationException(Set> violations) {
        super(PersistentObjectValidationException.generateMessage(violations));
        this.violations = (Set>)(Object)violations;
    }

    /**
     * Get the set of constraint violations.
     *
     * @return the constraint violations that triggered this exception
     */
    public Set> getViolations() {
        return this.violations;
    }

    private static  String generateMessage(Set> violations) {
        if (violations == null)
            throw new IllegalArgumentException("null violations");
        StringBuilder buf = new StringBuilder("object failed to validate with " + violations.size() + " violation(s):\n");
        for (ConstraintViolation violation : violations) {
            buf.append("    [")
              .append(violation.getPropertyPath())
              .append("]: ")
              .append(violation.getMessage())
              .append('\n');
        }
        return buf.toString();
    }
}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy