- public enum ErrorType {
- /**
- * Errors relating to the transport layer.
- */
- TRANSPORT,
- /**
- * Errors relating to the RPC or notification layer.
- */
- RPC,
- /**
- * Errors relating to the protocol operation layer.
- */
- PROTOCOL,
- /**
- * Errors relating to the server application layer.
- */
- APPLICATION;
-
- public String getErrorTypeTag() {
- return name().toLowerCase(Locale.ROOT);
- }
-
- public static ErrorType valueOfCaseInsensitive(final String value) {
- try {
- return ErrorType.valueOf(ErrorType.class, value.toUpperCase(Locale.ROOT));
- } catch (IllegalArgumentException e) {
- return APPLICATION;
- }
- }
- }
-
- public enum ErrorTag {
- IN_USE("in-use", 409 /* Conflict */),
- INVALID_VALUE("invalid-value", 400 /* Bad Request */),
- TOO_BIG("too-big", 413 /* Request Entity Too Large */),
- MISSING_ATTRIBUTE("missing-attribute", 400 /* Bad Request */),
- BAD_ATTRIBUTE("bad-attribute", 400 /* Bad Request */),
- UNKNOWN_ATTRIBUTE("unknown-attribute", 400 /* Bad Request */),
- MISSING_ELEMENT("missing-element", 400 /* Bad Request */),
- BAD_ELEMENT("bad-element", 400 /* Bad Request */),
- UNKNOWN_ELEMENT("unknown-element", 400 /* Bad Request */),
- UNKNOWN_NAMESPACE("unknown-namespace", 400 /* Bad Request */),
- ACCESS_DENIED("access-denied", 403 /* Forbidden */),
- LOCK_DENIED("lock-denied", 409 /* Conflict */),
- RESOURCE_DENIED("resource-denied", 409 /* Conflict */),
- ROLLBACK_FAILED("rollback-failed", 500 /* INTERNAL_SERVER_ERROR */),
- DATA_EXISTS("data-exists", 409 /* Conflict */),
- DATA_MISSING("data-missing", 404 /* Resource Not Found */),
- OPERATION_NOT_SUPPORTED("operation-not-supported", 501 /* Not Implemented */),
- OPERATION_FAILED("operation-failed", 500 /* INTERNAL_SERVER_ERROR */),
- PARTIAL_OPERATION("partial-operation", 500 /* INTERNAL_SERVER_ERROR */),
- MALFORMED_MESSAGE("malformed-message", 400 /* Bad Request */),
- RESOURCE_DENIED_TRANSPORT("resource-denied-transport", 503 /* Service Unavailable */);
-
- private final String tagValue;
- private final int statusCode;
-
- ErrorTag(final String tagValue, final int statusCode) {
- this.tagValue = tagValue;
- this.statusCode = statusCode;
- }
-
- public String getTagValue() {
- return this.tagValue.toLowerCase(Locale.ROOT);
- }
-
- public static ErrorTag valueOfCaseInsensitive(final String value) {
- try {
- return ErrorTag.valueOf(ErrorTag.class, value.toUpperCase(Locale.ROOT).replaceAll("-", "_"));
- } catch (IllegalArgumentException e) {
- return OPERATION_FAILED;
- }
- }
-
- public int getStatusCode() {
- return statusCode;
- }
- }
-
- private final ErrorType errorType;
- private final ErrorTag errorTag;