View Javadoc
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 }