    001    /*
    002     * Copyright 2009 Red Hat, Inc.
    003     * Red Hat licenses this file to you under the Apache License, version
    004     * 2.0 (the "License"); you may not use this file except in compliance
    005     * with the License.  You may obtain a copy of the License at
    006     *    http://www.apache.org/licenses/LICENSE-2.0
    007     * Unless required by applicable law or agreed to in writing, software
    008     * distributed under the License is distributed on an "AS IS" BASIS,
    009     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
    010     * implied.  See the License for the specific language governing
    011     * permissions and limitations under the License.
    012     */
    013
    014    package org.hornetq.api.core;
    015
    016    /**
    017     *
    018     * HornetQException is the root exception for HornetQ API.
    019     *
    020     * @author <a href="mailto:tim.fox@jboss.com">Tim Fox</a>
    021     *
    022     */
    023    public class HornetQException extends Exception
    024    {
    025       private static final long serialVersionUID = -4802014152804997417L;
    026
    027       // Error codes -------------------------------------------------
    028
    029       /**
    030        * Internal error which prevented HornetQ to perform.
    031        */
    032       public static final int INTERNAL_ERROR = 000;
    033
    034       /**
    035        * A packet of unsupported type was received by HornetQ PacketHandler.
    036        */
    037       public static final int UNSUPPORTED_PACKET = 001;
    038
    039       /**
    040        * A client is not able to connect to HornetQ server.
    041        */
    042       public static final int NOT_CONNECTED = 002;
    043
    044       /**
    045        * A client timed out will connecting to HornetQ server.
    046        */
    047       public static final int CONNECTION_TIMEDOUT = 003;
    048
    049       /**
    050        * A client was disconnected from HornetQ server when the server has shut down.
    051        */
    052       public static final int DISCONNECTED = 004;
    053
    054       /**
    055        * A blocking call from a client was unblocked during failover.
    056        */
    057       public static final int UNBLOCKED = 005;
    058
    059       /**
    060        * Unexpected I/O error occured on the server.
    061        */
    062       public static final int IO_ERROR = 006;
    063
    064       /**
    065        * An operation failed because a queue does not exist on the server.
    066        */
    067       public static final int QUEUE_DOES_NOT_EXIST = 100;
    068
    069       /**
    070        * An operation failed because a queue exists on the server.
    071        */
    072       public static final int QUEUE_EXISTS = 101;
    073
    074       /**
    075        * A client operation failed because the calling resource
    076        * (ClientSession, ClientProducer, etc.) is closed.
    077        */
    078       public static final int OBJECT_CLOSED = 102;
    079
    080       /**
    081        * An filter expression has not been validated
    082        */
    083       public static final int INVALID_FILTER_EXPRESSION = 103;
    084
    085       /**
    086        * A HornetQ resource is not in a legal state (e.g. calling
    087        * ClientConsumer.receive() if a MessageHandler is set)
    088        */
    089       public static final int ILLEGAL_STATE = 104;
    090
    091       /**
    092        * A security problem occured (authentication issues, permission issues,...)
    093        */
    094       public static final int SECURITY_EXCEPTION = 105;
    095
    096       /**
    097        * An operation failed because an address does not exist on the server.
    098        */
    099       public static final int ADDRESS_DOES_NOT_EXIST = 106;
    100
    101       /**
    102        * An operation failed because an address exists on the server.
    103        */
    104       public static final int ADDRESS_EXISTS = 107;
    105
    106       /**
    107        * A incompatibility between HornetQ versions on the client and the server has been detected
    108        */
    109       public static final int INCOMPATIBLE_CLIENT_SERVER_VERSIONS = 108;
    110
    111       /**
    112        * An operation failed because a session exists on the server.
    113        */
    114       public static final int SESSION_EXISTS = 109;
    115
    116       /**
    117        * An problem occurred while manipulating the body of a large message.
    118        */
    119       public static final int LARGE_MESSAGE_ERROR_BODY = 110;
    120
    121       /**
    122        * A transaction was rolled back.
    123        */
    124       public static final int TRANSACTION_ROLLED_BACK = 111;
    125
    126       /**
    127        * The creation of a session was rejected by the server (e.g. if the
    128        * server is starting and has not finish to be initialized)
    129        */
    130       public static final int SESSION_CREATION_REJECTED = 112;
    131
    132       /**
    133        * A DuplicateID was rejected.
    134        */
    135       public static final int DUPLICATE_ID_REJECTED = 113;
    136
    137
    138       /**
    139        * A Session Metadata was set in duplication
    140        */
    141       public static final int DUPLICATE_METADATA = 114;
    142
    143
    144       // Native Error codes ----------------------------------------------
    145
    146       /**
    147        * A internal error occured in the AIO native code
    148        */
    149       public static final int NATIVE_ERROR_INTERNAL = 200;
    150
    151       /**
    152        * A buffer is invalid in the AIO native code
    153        */
    154       public static final int NATIVE_ERROR_INVALID_BUFFER = 201;
    155
    156       /**
    157        * Alignment error in the AIO native code
    158        */
    159       public static final int NATIVE_ERROR_NOT_ALIGNED = 202;
    160
    161       /**
    162        * AIO has not been properly initialized
    163        */
    164       public static final int NATIVE_ERROR_CANT_INITIALIZE_AIO = 203;
    165
    166       /**
    167        * AIO has not been properly released
    168        */
    169       public static final int NATIVE_ERROR_CANT_RELEASE_AIO = 204;
    170
    171       /**
    172        * A closed file has not be properly reopened
    173        */
    174       public static final int NATIVE_ERROR_CANT_OPEN_CLOSE_FILE = 205;
    175
    176       /**
    177        * An error occured while allocating a queue in AIO native code
    178        */
    179       public static final int NATIVE_ERROR_CANT_ALLOCATE_QUEUE = 206;
    180
    181       /**
    182        * An error occured while pre-allocating a file in AIO native code
    183        */
    184       public static final int NATIVE_ERROR_PREALLOCATE_FILE = 208;
    185
    186       /**
    187        * An error occurred while allocating memory in the AIO native code
    188        */
    189       public static final int NATIVE_ERROR_ALLOCATE_MEMORY = 209;
    190
    191       /**
    192        * The outcome of a tx is unknown
    193        */
    194       public static final int TRANSACTION_OUTCOME_UNKNOWN = 210;
    195
    196       /**
    197        * AIO is full
    198        */
    199       public static final int NATIVE_ERROR_AIO_FULL = 211;
    200
    201       private int code;
    202
    203       public HornetQException()
    204       {
    205       }
    206
    207       public HornetQException(final int code)
    208       {
    209          this.code = code;
    210       }
    211
    212       public HornetQException(final int code, final String msg)
    213       {
    214          super(msg);
    215
    216          this.code = code;
    217       }
    218
    219       public HornetQException(final int code, final String msg, final Throwable cause)
    220       {
    221          super(msg, cause);
    222
    223          this.code = code;
    224       }
    225
    226       public int getCode()
    227       {
    228          return code;
    229       }
    230
    231       @Override
    232       public String toString()
    233       {
    234          return "HornetQException[errorCode=" + code + " message=" + getMessage() + "]";
    235       }
    236
    237    }