Author: robbinspg
Date: Tue Mar 21 03:55:37 2006
New Revision: 387505

URL: http://svn.apache.org/viewcvs?rev=387505&view=rev
Log:
TUSCANY-72 throw better exceptions for Axis errors

Added:
    
incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/AxisServiceException.cpp
   (with props)
    
incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/AxisServiceException.h
   (with props)
Modified:
    incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/Makefile.am
    incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/SCAWSWrapper.cpp

Added: 
incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/AxisServiceException.cpp
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/AxisServiceException.cpp?rev=387505&view=auto
==============================================================================
--- 
incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/AxisServiceException.cpp
 (added)
+++ 
incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/AxisServiceException.cpp
 Tue Mar 21 03:55:37 2006
@@ -0,0 +1,105 @@
+/*
+ * This file was auto-generated by the Axis C++ Web Service Generator (WSDL2Ws)
+ * This file contains implementations of the Exception class of the web 
service.
+ */
+
+#include "AxisServiceException.h"
+
+#include <axis/AxisWrapperAPI.hpp>
+
+AxisServiceException::AxisServiceException()
+{
+/* This only serves the purpose of indicating that the 
+ * service has thrown an excpetion 
+ */ 
+       m_iExceptionCode = AXISC_SERVICE_THROWN_EXCEPTION; 
+       processException(m_iExceptionCode); 
+}
+
+AxisServiceException::AxisServiceException(ISoapFault* pFault)
+{
+       m_iExceptionCode = AXISC_SERVICE_THROWN_EXCEPTION;
+       m_pISoapFault = pFault;
+       processException(pFault);}
+
+AxisServiceException::AxisServiceException(int iExceptionCode)
+{
+
+       m_iExceptionCode = iExceptionCode;
+       processException (iExceptionCode);
+}
+
+AxisServiceException::AxisServiceException(exception* e)
+{
+       processException (e);
+}
+
+AxisServiceException::AxisServiceException(exception* e,int iExceptionCode)
+{
+
+       processException (e, iExceptionCode);
+}
+
+AxisServiceException::AxisServiceException(string sMessage)
+{
+        m_sMessage =sMessage;
+}
+
+AxisServiceException::~AxisServiceException() throw () 
+{
+       m_sMessage ="";
+}
+
+void AxisServiceException:: processException(exception* e, int iExceptionCode)
+{
+       m_sMessage = getMessage (e) + getMessage (iExceptionCode);
+}
+
+void AxisServiceException::processException (ISoapFault* pFault)
+{
+       /*User can do something like deserializing the struct into a string*/
+}
+
+void AxisServiceException::processException(exception* e)
+{
+       m_sMessage = getMessage (e);
+}
+
+void AxisServiceException::processException(int iExceptionCode)
+{
+       m_sMessage = getMessage (iExceptionCode);
+}
+
+const string AxisServiceException::getMessage (exception* objException)
+{
+       string sMessage = objException->what();
+       return sMessage;
+}
+
+const string AxisServiceException::getMessage (int iExceptionCode)
+{
+       string sMessage;
+       switch(iExceptionCode)
+       {
+               case AXISC_SERVICE_THROWN_EXCEPTION:
+               sMessage = "The service has thrown an exception. see details";
+               break;
+               default:
+               sMessage = "Unknown Exception has occured in the service";
+       }
+return sMessage;
+}
+
+const char* AxisServiceException::what() throw ()
+{
+       return m_sMessage.c_str ();
+}
+
+const int AxisServiceException::getExceptionCode(){
+       return m_iExceptionCode;
+}
+
+const ISoapFault* AxisServiceException::getFault(){
+       return m_pISoapFault;
+}
+

Propchange: 
incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/AxisServiceException.cpp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/AxisServiceException.cpp
------------------------------------------------------------------------------
    svn:executable = *

Propchange: 
incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/AxisServiceException.cpp
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: 
incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/AxisServiceException.h
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/AxisServiceException.h?rev=387505&view=auto
==============================================================================
--- 
incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/AxisServiceException.h
 (added)
+++ 
incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/AxisServiceException.h
 Tue Mar 21 03:55:37 2006
@@ -0,0 +1,44 @@
+/*
+ * This file was auto-generated by the Axis C++ Web Service Generator (WSDL2Ws)
+ * This file contains an Exception class of the web service.
+ */
+
+#if !defined(__AXISSERVICEEXCEPTION_EXCEPTION_H__INCLUDED_)
+#define __AXISSERVICEEXCEPTION_EXCEPTION_H__INCLUDED_
+
+#include <string>
+#include <exception>
+#include <axis/AxisException.hpp>
+#include <axis/ISoapFault.hpp>
+
+using namespace std;
+AXIS_CPP_NAMESPACE_USE 
+
+class AxisServiceException: public AxisException
+{
+public:
+       STORAGE_CLASS_INFO AxisServiceException();
+       STORAGE_CLASS_INFO AxisServiceException(ISoapFault* pFault);
+       STORAGE_CLASS_INFO AxisServiceException(int iExceptionCode);
+       STORAGE_CLASS_INFO AxisServiceException(exception* e);
+       STORAGE_CLASS_INFO AxisServiceException(exception* e, int 
iExceptionCode);
+       STORAGE_CLASS_INFO AxisServiceException(string sMessage);
+       STORAGE_CLASS_INFO virtual ~AxisServiceException() throw();
+       STORAGE_CLASS_INFO const char* what() throw();
+       STORAGE_CLASS_INFO const int getExceptionCode();
+       STORAGE_CLASS_INFO const string getMessage(exception* e);
+       STORAGE_CLASS_INFO const string getMessage(int iExceptionCode);
+       STORAGE_CLASS_INFO const ISoapFault* getFault();
+
+private:
+        void processException(exception* e);
+        void processException(ISoapFault* pFault);
+        void processException(exception* e, int iExceptionCode);
+        void processException(int iExceptionCode);
+        string m_sMessage;
+        int m_iExceptionCode;
+        ISoapFault* m_pISoapFault;
+
+};
+
+#endif /* !defined(__AXISSERVICEEXCEPTION_EXCEPTION_H__INCLUDED_)*/

Propchange: 
incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/AxisServiceException.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/AxisServiceException.h
------------------------------------------------------------------------------
    svn:executable = *

Propchange: 
incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/AxisServiceException.h
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/Makefile.am
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/Makefile.am?rev=387505&r1=387504&r2=387505&view=diff
==============================================================================
--- incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/Makefile.am 
(original)
+++ incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/Makefile.am Tue 
Mar 21 03:55:37 2006
@@ -1,10 +1,10 @@
 lib_LTLIBRARIES = libtuscany_sca_axis_wrapper.la
 
-libtuscany_sca_axis_wrapper_la_SOURCES = SCAWSWrapper.cpp
+libtuscany_sca_axis_wrapper_la_SOURCES = SCAWSWrapper.cpp 
AxisServiceException.cpp
 
 libtuscany_sca_axis_wrapper_la_LIBADD = -L$(top_builddir)/runtime/core/src 
-ltuscany_sca \
        -L${TUSCANY_SDOCPP}/lib -ltuscany_sdo -lxml2 -lstdc++ \
-       -L${AXISCPP_DEPLOY}/lib -laxis_client -laxis_clientC
+       -L${AXISCPP_DEPLOY}/lib -laxis_client
        
 INCLUDES = -I$(top_builddir)/runtime/core/src \
            -I${TUSCANY_SDOCPP}/include \

Modified: 
incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/SCAWSWrapper.cpp
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/SCAWSWrapper.cpp?rev=387505&r1=387504&r2=387505&view=diff
==============================================================================
--- incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/SCAWSWrapper.cpp 
(original)
+++ incubator/tuscany/cpp/sca/runtime/axis_binding/wrapper/src/SCAWSWrapper.cpp 
Tue Mar 21 03:55:37 2006
@@ -23,6 +23,9 @@
 #include "tuscany/sca/util/Exceptions.h"
 #include "tuscany/sca/core/SCAEntryPoint.h"
 
+#include "axis/GDefine.h"
+#include "AxisServiceException.h"
+
 
 using namespace std;
 using namespace commonj::sdo;
@@ -205,11 +208,22 @@
     }
     catch(ServiceRuntimeException e)
     {
-        axisReturn = AXIS_FAIL;
+       
+        // Throw a useful fault
+        string faultCode = string("Server.TuscanySCA.") + 
string(e.getEClassName());
+        string faultString = string(e.getEClassName()) + string(":") + string 
(e.getMessageText());
+        
+        pIWSSZ->createSoapFault("ServiceRuntimeException","tempURI", 
faultCode.c_str(), faultString.c_str());
+        throw AxisServiceException();
     }
     catch(SDORuntimeException e)
     {
-        axisReturn = AXIS_FAIL;
+       // Throw a useful fault
+        string faultCode = string("Server.TuscanySDO.") + 
string(e.getEClassName());
+        string faultString = string(e.getEClassName()) + string(":") + string 
(e.getMessageText());
+        
+        pIWSSZ->createSoapFault("SDORuntimeException","tempURI", 
faultCode.c_str(), faultString.c_str());
+        throw AxisServiceException();
     }
 
 


Reply via email to