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

org.openstack4j.model.common.ActionResponse Maven / Gradle / Ivy

package org.openstack4j.model.common;

import java.io.Serializable;

import com.google.common.base.MoreObjects;

/**
 * A response that is returned when an Action is performed against the server.
 * If {@link #isSuccess()} is true then the fault will always be null.
 * The fault will indicate why the action has failed.  Any other transport/communication
 * errors will be thrown as with any other API calls.
 *
 * @author Jeremy Unruh
 */
public class ActionResponse implements Serializable {

    private static final long serialVersionUID = 1L;

    private String message;
    private int code;

    private ActionResponse(int code) {
        this.code = code;
    }

    private ActionResponse(String message, int code) {
        this(code);
        this.message = message;
    }

    public static ActionResponse actionSuccess(int code) {
        return new ActionResponse(code);
    }

    public static ActionResponse actionSuccess() {
        return new ActionResponse(200);
    }

    public static ActionResponse actionFailed(String message, int code) {
        return new ActionResponse(message, code);
    }

    /**
     * Returns the underlying error code (status code)
     *
     * @return the error code
     */
    public int getCode() {
        return code;
    }

    /**
     * @return true if the action was successful
     */
    public boolean isSuccess() {
        return message == null;
    }

    /**
     * @return the fault if the action was unsuccessful otherwise null
     */
    public String getFault() {
        return message;
    }

    @Override
    public String toString() {
        return MoreObjects.toStringHelper(this).
                omitNullValues().
                add("success", message == null).
                add("fault", message).
                add("code", code).
                toString();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy