1 /* 2 * #%L 3 * ReplyException.java - mongodb-async-driver - Allanbank Consulting, Inc. 4 * %% 5 * Copyright (C) 2011 - 2014 Allanbank Consulting, Inc. 6 * %% 7 * Licensed under the Apache License, Version 2.0 (the "License"); 8 * you may not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 * #L% 19 */ 20 package com.allanbank.mongodb.error; 21 22 import com.allanbank.mongodb.MongoDbException; 23 import com.allanbank.mongodb.client.Message; 24 import com.allanbank.mongodb.client.message.Reply; 25 26 /** 27 * Base class exception for all reply errors. 28 * 29 * @api.yes This class is part of the driver's API. Public and protected members 30 * will be deprecated for at least 1 non-bugfix release (version 31 * numbers are <major>.<minor>.<bugfix>) before being 32 * removed or modified. 33 * @copyright 2011-2013, Allanbank Consulting, Inc., All Rights Reserved 34 */ 35 public class ReplyException extends MongoDbException { 36 37 /** The serialization version of the class. */ 38 private static final long serialVersionUID = -2597835377434607342L; 39 40 /** The value of the "errNo" field in the reply document. */ 41 private final int myErrorNumber; 42 43 /** The value of the "ok" field in the reply document. */ 44 private final int myOkValue; 45 46 /** The reply. */ 47 private transient final Reply myReply; 48 49 /** The original request message, if known. */ 50 private transient final Message myRequest; 51 52 /** 53 * Create a new ReplyException. 54 * 55 * @param okValue 56 * The value of the "ok" field in the reply document. 57 * @param errorNumber 58 * The value of the "errNo" field in the reply document. 59 * @param errorMessage 60 * The value of the 'errormsg" field in the reply document. 61 * @param request 62 * The request that caused the error. 63 * @param reply 64 * The reply with the error. 65 */ 66 public ReplyException(final int okValue, final int errorNumber, 67 final String errorMessage, final Message request, final Reply reply) { 68 super(errorMessage); 69 myOkValue = okValue; 70 myErrorNumber = errorNumber; 71 myRequest = request; 72 myReply = reply; 73 } 74 75 /** 76 * Create a new ReplyException. 77 * 78 * @param okValue 79 * The value of the "ok" field in the reply document. 80 * @param errorNumber 81 * The value of the "errNo" field in the reply document. 82 * @param errorMessage 83 * The value of the 'errmsg" field in the reply document. 84 * @param reply 85 * The reply with the error. 86 */ 87 public ReplyException(final int okValue, final int errorNumber, 88 final String errorMessage, final Reply reply) { 89 this(okValue, errorNumber, errorMessage, null, reply); 90 } 91 92 /** 93 * Create a new ReplyException. 94 * 95 * @param reply 96 * The reply that raised the exception. 97 */ 98 public ReplyException(final Reply reply) { 99 super(); 100 101 myOkValue = -1; 102 myErrorNumber = -1; 103 myRequest = null; 104 myReply = reply; 105 } 106 107 /** 108 * Create a new ReplyException. 109 * 110 * @param reply 111 * The reply that raised the exception. 112 * @param message 113 * Reason for the error. 114 */ 115 public ReplyException(final Reply reply, final String message) { 116 super(message); 117 myOkValue = -1; 118 myErrorNumber = -1; 119 myRequest = null; 120 myReply = reply; 121 } 122 123 /** 124 * Create a new ReplyException. 125 * 126 * @param reply 127 * The reply that raised the exception. 128 * @param cause 129 * If known the cause of the exception. 130 */ 131 public ReplyException(final Reply reply, final Throwable cause) { 132 super(cause); 133 134 myOkValue = -1; 135 myErrorNumber = -1; 136 myRequest = null; 137 myReply = reply; 138 } 139 140 /** 141 * Returns the value of the "errNo" field in the reply document or -1. 142 * 143 * @return The value of the "errNo" field in the reply document. 144 */ 145 public int getErrorNumber() { 146 return myErrorNumber; 147 } 148 149 /** 150 * Returns the value of the "ok" field in the reply document or -1. 151 * 152 * @return The value of the "ok" field in the reply document. 153 */ 154 public int getOkValue() { 155 return myOkValue; 156 } 157 158 /** 159 * Returns the reply. 160 * 161 * @return The reply. 162 */ 163 public Reply getReply() { 164 return myReply; 165 } 166 167 /** 168 * Returns the original request message, if known. 169 * 170 * @return The original request message, if known. 171 */ 172 public Message getRequest() { 173 return myRequest; 174 } 175 }