/*
* Copyright (c) 2015, Jurriaan Mous and contributors as indicated by the @author tags.
*
* 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 mousio.etcd4j.responses;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
* Exception on etcd failures
*/
@JsonIgnoreProperties( ignoreUnknown = true )
public class EtcdException extends Exception {
private static final long serialVersionUID = -3921194095313052325L;
// The json
public static final EtcdResponseDecoder<EtcdException> DECODER =
EtcdResponseDecoders.json(EtcdException.class);
public final String etcdCause;
public final int errorCode;
public final Long index;
public final String etcdMessage;
/**
* Constructor
*
* @param errorCode the etcd error code
* @param cause the exception cause
* @param message the exception message
* @param index the data index
*/
protected EtcdException(
@JsonProperty("errorCode") Integer errorCode,
@JsonProperty("cause") String cause,
@JsonProperty("message") String message,
@JsonProperty("index") Long index) {
this.errorCode = errorCode;
this.etcdCause = cause;
this.etcdMessage = message;
this.index = index;
}
@Override
public String getMessage() {
return String.format("[%s]: %s%s%s",
errorCode,
etcdMessage,
((etcdCause != null) ? ", cause: " + etcdCause : ""),
((index != null) ? ", at index: " + index : "")
);
}
@Override
public String toString() {
return getMessage();
}
public String getETCDCause() {
return etcdCause;
}
public int getErrorCode() {
return errorCode;
}
public boolean isErrorCode(int code) {
return errorCode == code;
}
public Long getIndex() {
return index;
}
public String ETCDMessage() {
return etcdMessage;
}
}