Date: Tuesday, February 28, 2006 @ 19:50:41
  Author: marc
    Path: /cvsroot/carob/carob

Modified: include/CarobException.hpp (1.36 -> 1.37) src/CarobException.cpp
          (1.19 -> 1.20)

Modified constructors to ease setting the SQLState. Now only one constructor 
with default arguments available.


----------------------------+
 include/CarobException.hpp |   54 +++++++++++++++++++++++++++++++------------
 src/CarobException.cpp     |   13 ++--------
 2 files changed, 43 insertions(+), 24 deletions(-)


Index: carob/include/CarobException.hpp
diff -u carob/include/CarobException.hpp:1.36 
carob/include/CarobException.hpp:1.37
--- carob/include/CarobException.hpp:1.36       Tue Feb 28 17:58:14 2006
+++ carob/include/CarobException.hpp    Tue Feb 28 19:50:41 2006
@@ -25,6 +25,10 @@
 #include <string>
 #include <vector>
 
+namespace {
+  const int            DEFAULTVENDORCODE(-1);
+  const std::wstring   DEFAULTSQLSTATE(L"HY000");
+}
 
 namespace CarobNS {
 
@@ -53,10 +57,6 @@
    */
   CarobException(const CarobException& ce);
   /**
-   * Constructs a simple Exception with a message string
-   */
-  CarobException(std::wstring s) : message(s), causePtr(NULL) {};
-  /**
    * Constructs/reads a new Exception chain from the stream
    * @param sock socket from which to deserialize exception
    * @throw SocketIOException. Not specified in method signature because of
@@ -70,10 +70,20 @@
    * <code>cause</code> is <i>not</i> automatically incorporated in
    * this exception's detail message.
    *
-   * @param  message the detail message
-   * @param  cause the exception that generated this one
-   */
-  CarobException(const std::wstring& message, CarobException* cause);
+   * @param  messagePrm the detailed user-friendly message
+   * @param  SQLStatePrm the SQL2 standard error code.
+   * @param  causePrm the exception that generated this one, if any.
+   * @param  vendorPrm the (deprecated) SQL1 error code
+   */
+  CarobException(const std::wstring& messagePrm,
+                 const std::wstring& SQLStatePrm = DEFAULTSQLSTATE,
+                 CarobException* causePrm = 0,
+                 int vendorPrm = DEFAULTVENDORCODE) :
+    message(messagePrm),
+    causePtr(causePrm),
+    SQLState(SQLStatePrm),
+    errorCode(vendorPrm)
+  { }
   /**
    * Destructor to clean up stack trace and cause exception
    */
@@ -103,9 +113,9 @@
   StackTrace                  stackTrace;
   /** pointer to the exception that generated this one */
   CarobException*             causePtr;
-  /** SQL error message */
+  /** SQL2 standard error code */
   std::wstring                SQLState;
-  /** Vendor-specific error code */
+  /** Deprecated SQL1 "standard" error code. Negative for errors, positive for 
warnings. */
   int                         errorCode;
   /** Local stack trace when available */
   const BackTrace             backTrace;
@@ -144,9 +154,18 @@
 public:
   /**
    * Constructs a DriverException with the given message
-   * @param s error message of the exception
-   */
-  DriverException(std::wstring s) : CarobException(s) {};
+   *
+   * @param  messagePrm the detailed user-friendly message
+   * @param  SQLStatePrm the SQL2 standard error code.
+   * @param  causePrm the exception that generated this one, if any.
+   * @param  vendorPrm the (deprecated) SQL1 error code
+   */
+  DriverException(const std::wstring& messagePrm,
+                  const std::wstring& SQLStatePrm = DEFAULTSQLSTATE,
+                  CarobException* causePrm = 0,
+                  int vendorPrm = DEFAULTVENDORCODE) :
+    CarobException(messagePrm, SQLStatePrm, causePrm, vendorPrm)
+  { }
 };
 
 /**
@@ -198,7 +217,7 @@
    * Constructs a AuthenticationException with the given message
    * @param s error message of the exception
    */
-  AuthenticationException(std::wstring s) : DriverException(s) {};
+  AuthenticationException(std::wstring s) : DriverException(s, L"28000") {}
 };
 
 /**
@@ -339,3 +358,10 @@
 #endif //_CAROBEXCEPTION_H_
 
 
+/*
+ * Local Variables:
+ * c-file-style: "bsd"
+ * c-basic-offset: 2
+ * indent-tabs-mode: nil
+ * End:
+ */
Index: carob/src/CarobException.cpp
diff -u carob/src/CarobException.cpp:1.19 carob/src/CarobException.cpp:1.20
--- carob/src/CarobException.cpp:1.19   Mon Jan 30 12:09:30 2006
+++ carob/src/CarobException.cpp        Tue Feb 28 19:50:41 2006
@@ -16,7 +16,7 @@
  * limitations under the License.
  *
  * Initial developer(s): Gilles Rayrat
- * Contributor(s): 
+ * Contributor(s): Marc Herbert
  */
 
 #include "CarobException.hpp"
@@ -59,6 +59,7 @@
   }
 }
 
+/** Copy constructor */
 CarobException::CarobException(const CarobException& ce) :
   message(ce.message),
   stackTrace(ce.stackTrace),
@@ -67,7 +68,7 @@
   backTrace(ce.backTrace)
 {
   if (ce.causePtr != NULL)
-  {
+  { // copy chain by recursively calling copy constructor
     causePtr = new CarobException(*(ce.causePtr));
   }
   else
@@ -97,14 +98,6 @@
   sock>>SQLState;
   sock>>errorCode;
 }
-
-CarobException::CarobException(const wstring &messagePrm,
-                              CarobException* causePrm)
-{
-  message = messagePrm;
-  causePtr = causePrm;
-}
-
 void UnexpectedException::convertUnexpected()
 {
   if (isErrorEnabled())

_______________________________________________
Carob-commits mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/carob-commits

Reply via email to