package org.sdnplatform.sync.error; /** * Generic exception type for sync service exceptions * @author readams */ public class SyncException extends Exception { private static final long serialVersionUID = -6150348258087759055L; public enum ErrorType { SUCCESS(0), GENERIC(1), INCONSISTENT_DATA(2), OBSOLETE_VERSION(3), UNKNOWN_STORE(4), SERIALIZATION(5), PERSIST(6), HANDSHAKE_TIMEOUT(7), REMOTE_STORE(8), AUTH(9); private final int value; ErrorType(int value) { this.value = value; } public int getValue() { return value; } } public SyncException() { super(); } public SyncException(String message, Throwable cause) { super(message, cause); } public SyncException(String message) { super(message); } public SyncException(Throwable cause) { super(cause); } public ErrorType getErrorType() { return ErrorType.GENERIC; } public static SyncException newInstance(ErrorType type, String message, Throwable cause) { switch (type) { case INCONSISTENT_DATA: return new InconsistentDataException(message, null); case OBSOLETE_VERSION: return new ObsoleteVersionException(message, cause); case UNKNOWN_STORE: return new UnknownStoreException(message, cause); case SERIALIZATION: return new SerializationException(message, cause); case PERSIST: return new PersistException(message, cause); case HANDSHAKE_TIMEOUT: return new HandshakeTimeoutException(); case REMOTE_STORE: return new RemoteStoreException(message, cause); case AUTH: return new AuthException(message, cause); case GENERIC: default: return new SyncException(message, cause); } } }