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

org.xlcloud.rest.exception.ValidationException Maven / Gradle / Ivy

Go to download

This module is provides the common REST utils, mostly for server side of an application, like exceptions and interceptors.

The newest version!
/*
 * Copyright 2012 AMG.lab, a Bull Group Company
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *    http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.xlcloud.rest.exception;

import javax.xml.bind.annotation.XmlAttribute;

import com.fasterxml.jackson.annotation.JsonIgnore;

/**
 * Thrown to indicate that request does not contain required data, or data
 * passed is invalid.
 * 
 * @author Andrzej Stasiak, AMG.net
 * @author Maciej Osyda, AMG.net
 * @author Piotr Kulasek-Szwed, AMG.net
 */
public class ValidationException extends BaseException {

    private static final long serialVersionUID = -2487294178600385367L;

    private static final Integer STATUS = 400;
    
    @Deprecated // For JAXB only.
    public ValidationException() {}

    public ValidationException(String message, ValidationFailureType validationFailure, String invalidField) {
        super(STATUS, new ExceptionDetails(message, validationFailure, invalidField));
    }

    public ValidationException(String message, ValidationFailureType validationFailure) {
        super(STATUS, new ExceptionDetails(message, validationFailure));
    }

    public ValidationException(String message) {
        super(STATUS, new ExceptionDetails(message));
    }

    public enum ValidationFailureType {
        AUTH_HEADER_FORMAT,
        MISSING_HEADER,
        REPOSITORY_NULL,
        REPOSITORY_PROCESSING,
        TEMPLATE_NAME_BLANK,
        PORTS_OPEN_IN_SUBNET,
        DELETE_DEFAULT_SUBNET,
        PORT_NUMBER_FORMAT,
        NO_REPOSITORY_SPECIFIED,
        WRONG_PROJECT_STATUS,
        PROJECT_CONTAINS_STACK,
        NOT_MEMBER_OF_PROJECT,
        LEASE_NOT_IN_PROJECT,
        LEASE_DURATION,
        INVALID_TEMPLATE,
        INVALID_TEMPLATE_NO_RESOURCE_FOR_LAYER,
        INVALID_TEMPLATE_UNMATCHED_PARAMETERS,
        NO_PARAMETER_IN_TEMPLATE,
        
        STACK_PARAMETER_NULL,
        STACK_PARAMETER_INSTANCE_NULL,
        STACK_PARAMETER_IMAGE_NULL,
        STACK_PARAMETER_KEY_NULL,
        
        LAYER_PARAMETER_NULL,
        LAYER_PARAMETER_SUBNET_NULL,
        LAYER_PARAMETER_INSTANCE_NULL,
        LAYER_PARAMETER_IMAGE_NULL,
        LAYER_PARAMETER_KEY_NULL,
        
        WRONG_STACK_STATUS,
        USER_NOT_IN_ACCOUNT,
        GROUP_NAME_EMPTY,
        GROUP_ID_NOT_EMPTY,
        GROUP_NULL,
        GROUP_NOT_IN_ACCOUNT,
        USER_GROUP_DIFFERENT_ACCOUNT,
        INVALID_JSON,
        PROPERTY_NOT_RECOGNIZED,
        CIDR_FORMAT,
        CHEFFILE_FORMAT,
        WRONG_APPLICATION_STATE,
        PASSWORD_EMPTY,
        PASSWORD_TOO_SHORT,
        
        USER_NULL,
        USER_NAME_EMPTY,
        USER_PASSWORD_EMPTY,
        USER_HAS_ID,
        USER_WRONG_ACCOUNT_ID,
        
        ACCOUNT_NULL,
        ACCOUNT_NAME_EMPTY,
        ACCOUNT_NAME_FORMAT,
        ACCOUNT_HAS_ID,
        
        LAYER_TEMPLATE_URL_EMPTY,
        LAYER_TEMPLATE_URL_INVALID,
        
        ACCOUNT_HAS_USERS,
        ACCOUNT_HAS_PROJECTS,
        NOT_MEMBER_OF_ACCOUNT,
        CANNOT_BE_PLATFORM_ADMIN,
        
        WRONG_XML_FIELD_NAME,
        NOT_NUMERICAL_FIELD_VALUE,
        
        PAGING_LIMIT_NOT_POSITIVE,
        PAGING_OFFSET_NEGATIVE,
        
        LEASE_NO_END_DATE,
        LEASE_DURATION_AND_END_DATE,
        
        CANNOT_REVOKE_USED_TOKEN,
        ACCESS_TOKEN_NULL,
        ACCESS_TOKEN_FORMAT,
        
        IMAGE_DISK_CONTAINER_MISMATCH,
        
        LAYER_BLUEPRINT_NOT_SEPARATE,
        
        QUOTA_WRONG_TYPE,
        QUOTA_NEGATIVE_LIMIT,
        
        ID_EMPTY,
        ID_NEGATIVE,
        ID_BAD_FORMAT,
        
        ENTITLEMENT_EMPTY_ACTIONS,
        ENTITLEMENT_RESOURCE_FORMAT,

        RESTRICTION_EMPTY_RESOURCES,
        RESTRICTION_RESOURCE_EMPTY_ACTIONS,
        
        EXPORT_AUTONOMOUS_LAYER_BLUEPRINT,
        DELETE_DEPENDENT_LAYER_BLUEPRINT,
        
        STACK_LAYERS_MODIFICATION_WITH_TEMPLATE,
        
        STACK_NAME_FORMAT,
        INSTANCE_NAME_FORMAT,
        LAYER_NAME_FORMAT,
        USER_NAME_FORMAT,
        STACK_BLUEPRINT_NAME_FORMAT,
        LAYER_BLUEPRINT_NAME_FORMAT,
        PROJECT_NAME_FORMAT,
        REPOSITORY_NAME_FORMAT,
        COOKBOOK_NAME_EMPTY,
        KEYPAIR_NAME_FORMAT,
        SUBNET_NAME_FORMAT,
        FIELD_VALUE_NOT_UNIQUE,
        
        LEASE_REQUIREMENTS_MALFORMED,
        LEASE_NOT_ACTIVE,
        LEASE_DOES_NOT_EXIST,
        
        // to be removed maybe?
        GENERIC_IS_NULL,
        GENERIC_IS_NOT_INSTANCE,
        GENERIC_IS_BLANK,
        GENERIC_IS_NOT_NULL,
        GENERIC_NOT_EXPECTED_VALUE,
        GENERIC_IS_EMPTY,
        GENERIC_LIST_NOT_EMPTY
    }
    
    public static class ExceptionDetails extends ExceptionDetailsBase {

        private static final long serialVersionUID = 1L;
        
        @XmlAttribute
        private ValidationFailureType validationFailure;
        
        @XmlAttribute
        private String invalidField;
        
        @Deprecated // For JAXB only.
        public ExceptionDetails() {}

        public ExceptionDetails(String message, ValidationFailureType validationFailure, String invalidField) {
            super(message);
            this.validationFailure = validationFailure;
            this.invalidField = invalidField;
        }
        
        public ExceptionDetails(String message, ValidationFailureType validationFailure) {
            this(message, validationFailure, null);
        }
        
        public ExceptionDetails(String message) {
            this(message, null, null);
        }

        public ValidationFailureType getValidationFailure() {
            return validationFailure;
        }
        
        public void setValidationFailure(ValidationFailureType validationFailure) {
            this.validationFailure = validationFailure;
        }

        public String getInvalidField() {
            return invalidField;
        }
        
        public void setInvalidField(String invalidField) {
            this.invalidField = invalidField;
        }

        @JsonIgnore
        public String getDetails() {
            return "type="+validationFailure+",field="+invalidField;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy