/*
* 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;
}
}