/* * 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.activemq.artemis.api.core; import java.util.Collections; import java.util.EnumSet; import java.util.HashMap; import java.util.Map; /** * Defines all {@link ActiveMQException} types and their codes. */ public enum ActiveMQExceptionType { // Error codes ------------------------------------------------- INTERNAL_ERROR(000) { @Override public ActiveMQException createException(String msg) { return new ActiveMQInternalErrorException(msg); } }, UNSUPPORTED_PACKET(001) { @Override public ActiveMQException createException(String msg) { return new ActiveMQUnsupportedPacketException(msg); } }, NOT_CONNECTED(002) { @Override public ActiveMQException createException(String msg) { return new ActiveMQNotConnectedException(msg); } }, CONNECTION_TIMEDOUT(003) { @Override public ActiveMQException createException(String msg) { return new ActiveMQConnectionTimedOutException(msg); } }, DISCONNECTED(004) { @Override public ActiveMQException createException(String msg) { return new ActiveMQDisconnectedException(msg); } }, UNBLOCKED(005) { @Override public ActiveMQException createException(String msg) { return new ActiveMQUnBlockedException(msg); } }, IO_ERROR(006) { @Override public ActiveMQException createException(String msg) { return new ActiveMQIOErrorException(msg); } }, QUEUE_DOES_NOT_EXIST(100) { @Override public ActiveMQException createException(String msg) { return new ActiveMQNonExistentQueueException(msg); } }, QUEUE_EXISTS(101) { @Override public ActiveMQException createException(String msg) { return new ActiveMQQueueExistsException(msg); } }, OBJECT_CLOSED(102) { @Override public ActiveMQException createException(String msg) { return new ActiveMQObjectClosedException(msg); } }, INVALID_FILTER_EXPRESSION(103) { @Override public ActiveMQException createException(String msg) { return new ActiveMQInvalidFilterExpressionException(msg); } }, ILLEGAL_STATE(104) { @Override public ActiveMQException createException(String msg) { return new ActiveMQIllegalStateException(msg); } }, SECURITY_EXCEPTION(105) { @Override public ActiveMQException createException(String msg) { return new ActiveMQSecurityException(msg); } }, ADDRESS_DOES_NOT_EXIST(106) { @Override public ActiveMQException createException(String msg) { return new ActiveMQAddressDoesNotExistException(msg); } }, ADDRESS_EXISTS(107) { @Override public ActiveMQException createException(String msg) { return new ActiveMQAddressExistsException(msg); } }, INCOMPATIBLE_CLIENT_SERVER_VERSIONS(108) { @Override public ActiveMQException createException(String msg) { return new ActiveMQIncompatibleClientServerException(msg); } }, LARGE_MESSAGE_ERROR_BODY(110) { @Override public ActiveMQException createException(String msg) { return new ActiveMQLargeMessageException(msg); } }, TRANSACTION_ROLLED_BACK(111) { @Override public ActiveMQException createException(String msg) { return new ActiveMQTransactionRolledBackException(msg); } }, SESSION_CREATION_REJECTED(112) { @Override public ActiveMQException createException(String msg) { return new ActiveMQSessionCreationException(msg); } }, DUPLICATE_ID_REJECTED(113) { @Override public ActiveMQException createException(String msg) { return new ActiveMQDuplicateIdException(msg); } }, DUPLICATE_METADATA(114) { @Override public ActiveMQException createException(String msg) { return new ActiveMQDuplicateMetaDataException(msg); } }, TRANSACTION_OUTCOME_UNKNOWN(115) { @Override public ActiveMQException createException(String msg) { return new ActiveMQTransactionOutcomeUnknownException(msg); } }, ALREADY_REPLICATING(116) { @Override public ActiveMQException createException(String msg) { return new ActiveMQAlreadyReplicatingException(msg); } }, INTERCEPTOR_REJECTED_PACKET(117) { @Override public ActiveMQException createException(String msg) { return new ActiveMQInterceptorRejectedPacketException(msg); } }, INVALID_TRANSIENT_QUEUE_USE(118) { @Override public ActiveMQException createException(String msg) { return new ActiveMQInvalidTransientQueueUseException(msg); } }, REMOTE_DISCONNECT(119) { @Override public ActiveMQException createException(String msg) { return new ActiveMQRemoteDisconnectException(msg); } }, TRANSACTION_TIMEOUT(120) { @Override public ActiveMQException createException(String msg) { return new ActiveMQTransactionTimeoutException(msg); } }, GENERIC_EXCEPTION(999), NATIVE_ERROR_INTERNAL(200), NATIVE_ERROR_INVALID_BUFFER(201), NATIVE_ERROR_NOT_ALIGNED(202), NATIVE_ERROR_CANT_INITIALIZE_AIO(203), NATIVE_ERROR_CANT_RELEASE_AIO(204), NATIVE_ERROR_CANT_OPEN_CLOSE_FILE(205), NATIVE_ERROR_CANT_ALLOCATE_QUEUE(206), NATIVE_ERROR_PREALLOCATE_FILE(208), NATIVE_ERROR_ALLOCATE_MEMORY(209), ADDRESS_FULL(210) { @Override public ActiveMQException createException(String msg) { return new ActiveMQAddressFullException(msg); } }, LARGE_MESSAGE_INTERRUPTED(211) { @Override public ActiveMQException createException(String msg) { return new ActiveMQLargeMessageInterruptedException(msg); } }, CLUSTER_SECURITY_EXCEPTION(212) { @Override public ActiveMQException createException(String msg) { return new ActiveMQClusterSecurityException(msg); } }, NOT_IMPLEMTNED_EXCEPTION(213), MAX_CONSUMER_LIMIT_EXCEEDED(214) { @Override public ActiveMQException createException(String msg) { return new ActiveMQQueueMaxConsumerLimitReached(msg); } }, UNEXPECTED_ROUTING_TYPE_FOR_ADDRESS(215) { @Override public ActiveMQException createException(String msg) { return new ActiveMQUnexpectedRoutingTypeForAddress(msg); } }, INVALID_QUEUE_CONFIGURATION(216) { @Override public ActiveMQException createException(String msg) { return new ActiveMQInvalidQueueConfiguration(msg); } }, DELETE_ADDRESS_ERROR(217) { @Override public ActiveMQException createException(String msg) { return new ActiveMQDeleteAddressException(msg); } }; private static final Map<Integer, ActiveMQExceptionType> TYPE_MAP; static { HashMap<Integer, ActiveMQExceptionType> map = new HashMap<>(); for (ActiveMQExceptionType type : EnumSet.allOf(ActiveMQExceptionType.class)) { map.put(type.getCode(), type); } TYPE_MAP = Collections.unmodifiableMap(map); } private final int code; ActiveMQExceptionType(int code) { this.code = code; } public int getCode() { return code; } public ActiveMQException createException(String msg) { return new ActiveMQException(msg + ", code:" + this); } public static ActiveMQException createException(int code, String msg) { return getType(code).createException(msg); } public static ActiveMQExceptionType getType(int code) { ActiveMQExceptionType type = TYPE_MAP.get(code); if (type != null) return type; return ActiveMQExceptionType.GENERIC_EXCEPTION; } }