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

org.glassfish.jersey.server.validation.ValidationErrorData Maven / Gradle / Ivy

/*
 * Copyright (c) 2020 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

package org.glassfish.jersey.server.validation;


import org.glassfish.jersey.internal.util.ReflectionHelper;

/**
 * Validation error entity to be included in {@code Response} if JAX-B API is not available
 */
@SuppressWarnings("UnusedDeclaration")
public class ValidationErrorData {

    protected String message;

    protected String messageTemplate;

    protected String path;

    protected String invalidValue;

    /* package */ ValidationErrorData() {
    }

    /**
     * Create a {@code ValidationError} instance.
     *
     * @param message interpolated error message.
     * @param messageTemplate non-interpolated error message.
     * @param path property path.
     * @param invalidValue value that failed to pass constraints.
     */
    /* package */
    ValidationErrorData(final String message, final String messageTemplate, final String path, final String invalidValue) {
        this.message = message;
        this.messageTemplate = messageTemplate;
        this.path = path;
        this.invalidValue = invalidValue;
    }

    /**
     * Return the interpolated error message for this validation error.
     *
     * @return the interpolated error message for this validation error.
     */
    public String getMessage() {
        return message;
    }

    /**
     * Return the interpolated error message for this validation error.
     *
     * @param message the interpolated error message for this validation error.
     */
    public void setMessage(final String message) {
        this.message = message;
    }

    /**
     * Return the string representation of the property path to the value.
     *
     * @return the string representation of the property path to the value.
     */
    public String getPath() {
        return path;
    }

    /**
     * Set the string representation of the property path to the value.
     *
     * @param path the string representation of the property path to the value.
     */
    public void setPath(final String path) {
        this.path = path;
    }

    /**
     * Returns the string representation of the value failing to pass the constraint.
     *
     * @return the value failing to pass the constraint.
     */
    public String getInvalidValue() {
        return invalidValue;
    }

    /**
     * Set the value failing to pass the constraint.
     *
     * @param invalidValue the value failing to pass the constraint.
     */
    public void setInvalidValue(final String invalidValue) {
        this.invalidValue = invalidValue;
    }

    /**
     * Return the non-interpolated error message for this validation error.
     *
     * @return the non-interpolated error message for this validation error.
     */
    public String getMessageTemplate() {
        return messageTemplate;
    }

    /**
     * Set the non-interpolated error message for this validation error.
     *
     * @param messageTemplate the non-interpolated error message for this validation error.
     */
    public void setMessageTemplate(final String messageTemplate) {
        this.messageTemplate = messageTemplate;
    }

    /*
     * Cache the information
     */
    private static Boolean isJaxbAvailable = null;

    private static boolean isJaxbAvailable() {
        if (isJaxbAvailable == null) {
            isJaxbAvailable = ReflectionHelper.isJaxbAvailable();
        }
        return isJaxbAvailable;
    }

    /**
     * A factory method that creates either JAX-B annotated data if JAX-B is available or POJO data otherwise.
     * @param message interpolated error message.
     * @param messageTemplate non-interpolated error message.
     * @param path property path.
     * @param invalidValue value that failed to pass constraints.
     * @return ValidationErrorData subclass or itself
     */
    public static ValidationErrorData createValidationError(
            final String message, final String messageTemplate, final String path, final String invalidValue) {
        if (isJaxbAvailable()) {
            return new ValidationError(message, messageTemplate, path, invalidValue);
        } else {
            return new ValidationErrorData(message, messageTemplate, path, invalidValue);
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy