org.apache.accumulo.core.client.AccumuloSecurityException.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.accumulo.core.client.AccumuloSecurityException.java

Source

/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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.apache.accumulo.core.client;

import org.apache.accumulo.core.client.impl.thrift.SecurityErrorCode;
import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
import org.apache.commons.lang.StringUtils;

/**
 * An Accumulo Exception for security violations, authentication failures, authorization failures, etc.
 *
 */
public class AccumuloSecurityException extends Exception {
    private static final long serialVersionUID = 1L;

    private static String getDefaultErrorMessage(final SecurityErrorCode errorcode) {
        switch (errorcode == null ? SecurityErrorCode.DEFAULT_SECURITY_ERROR : errorcode) {
        case BAD_CREDENTIALS:
            return "Username or Password is Invalid";
        case CONNECTION_ERROR:
            return "Connection Error Occurred";
        case PERMISSION_DENIED:
            return "User does not have permission to perform this action";
        case USER_DOESNT_EXIST:
            return "The user does not exist";
        case USER_EXISTS:
            return "The user exists";
        case GRANT_INVALID:
            return "The GRANT permission cannot be granted or revoked";
        case BAD_AUTHORIZATIONS:
            return "The user does not have the specified authorizations assigned";
        case UNSUPPORTED_OPERATION:
            return "The configured security handler does not support this operation";
        case INVALID_TOKEN:
            return "The configured authenticator does not accept this type of token";
        case AUTHENTICATOR_FAILED:
            return "The configured authenticator failed for some reason";
        case AUTHORIZOR_FAILED:
            return "The configured authorizor failed for some reason";
        case PERMISSIONHANDLER_FAILED:
            return "The configured permission handler failed for some reason";
        case TOKEN_EXPIRED:
            return "The supplied token expired, please update and try again";
        case INSUFFICIENT_PROPERTIES:
            return "The login properties supplied are not sufficient for authentication. Please check the requested properties and try again";
        case DEFAULT_SECURITY_ERROR:
        default:
            return "Unknown security exception";
        }
    }

    private String user;
    private String tableInfo;
    private SecurityErrorCode errorCode;

    /**
     * @return this exception as a thrift exception
     */
    public ThriftSecurityException asThriftException() {
        return new ThriftSecurityException(user, errorCode);
    }

    /**
     * Construct a user-facing exception from a serialized version.
     *
     * @param thrift
     *          a serialized version
     */
    public AccumuloSecurityException(final ThriftSecurityException thrift) {
        this(thrift.getUser(), thrift.getCode(), thrift);
    }

    /**
     * @param user
     *          the relevant user for the security violation
     * @param errorcode
     *          the specific reason for this exception
     * @param cause
     *          the exception that caused this violation
     */
    public AccumuloSecurityException(final String user, final SecurityErrorCode errorcode, final Throwable cause) {
        super(getDefaultErrorMessage(errorcode), cause);
        this.user = user;
        this.errorCode = errorcode == null ? SecurityErrorCode.DEFAULT_SECURITY_ERROR : errorcode;
    }

    /**
     * @param user
     *          the relevant user for the security violation
     * @param errorcode
     *          the specific reason for this exception
     * @param tableInfo
     *          the relevant tableInfo for the security violation
     * @param cause
     *          the exception that caused this violation
     */
    public AccumuloSecurityException(final String user, final SecurityErrorCode errorcode, final String tableInfo,
            final Throwable cause) {
        super(getDefaultErrorMessage(errorcode), cause);
        this.user = user;
        this.errorCode = errorcode == null ? SecurityErrorCode.DEFAULT_SECURITY_ERROR : errorcode;
        this.tableInfo = tableInfo;
    }

    /**
     * @param user
     *          the relevant user for the security violation
     * @param errorcode
     *          the specific reason for this exception
     */
    public AccumuloSecurityException(final String user, final SecurityErrorCode errorcode) {
        super(getDefaultErrorMessage(errorcode));
        this.user = user;
        this.errorCode = errorcode == null ? SecurityErrorCode.DEFAULT_SECURITY_ERROR : errorcode;
    }

    /**
     * @param user
     *          the relevant user for the security violation
     * @param errorcode
     *          the specific reason for this exception
     * @param tableInfo
     *          the relevant tableInfo for the security violation
     */
    public AccumuloSecurityException(final String user, final SecurityErrorCode errorcode, final String tableInfo) {
        super(getDefaultErrorMessage(errorcode));
        this.user = user;
        this.errorCode = errorcode == null ? SecurityErrorCode.DEFAULT_SECURITY_ERROR : errorcode;
        this.tableInfo = tableInfo;
    }

    /**
     * @return the relevant user for the security violation
     */
    public String getUser() {
        return user;
    }

    public void setUser(String s) {
        this.user = s;
    }

    /**
     * @return the relevant tableInfo for the security violation
     */
    public String getTableInfo() {
        return tableInfo;
    }

    public void setTableInfo(String tableInfo) {
        this.tableInfo = tableInfo;
    }

    /**
     * @return the specific reason for this exception
     * @since 1.5.0
     */

    public org.apache.accumulo.core.client.security.SecurityErrorCode getSecurityErrorCode() {
        return org.apache.accumulo.core.client.security.SecurityErrorCode.valueOf(errorCode.name());
    }

    @Override
    public String getMessage() {
        StringBuilder message = new StringBuilder();
        message.append("Error ").append(errorCode);
        message.append(" for user ").append(user);
        if (!StringUtils.isEmpty(tableInfo)) {
            message.append(" on table ").append(tableInfo);
        }
        message.append(" - ").append(super.getMessage());
        return message.toString();
    }
}