You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Ralf Hauser (JIRA)" <ji...@apache.org> on 2009/06/30 10:16:47 UTC

[jira] Created: (AXIS2-4414) When instantiating the ExceptionException class, add AxisFault to it (as proper reason chaining)

When instantiating the ExceptionException class, add AxisFault to it (as proper reason chaining)
------------------------------------------------------------------------------------------------

                 Key: AXIS2-4414
                 URL: https://issues.apache.org/jira/browse/AXIS2-4414
             Project: Axis 2.0 (Axis2)
          Issue Type: New Feature
          Components: codegen
    Affects Versions: 1.5
         Environment: vista sun-jdk1.5
            Reporter: Ralf Hauser


codegen produces the below piece of code. Unfortunately, valuable information such as server-side stack-trace is lost with this.

Suggestion:
1) add AxisFault to the generated ExceptionException class
2) if an AxisFault is available add it to the ExceptionException

<<}catch(org.apache.axis2.AxisFault f){

            org.apache.axiom.om.OMElement faultElt = f.getDetail();
            if (faultElt!=null){
                if (faultExceptionNameMap.containsKey(faultElt.getQName())){
                    //make the fault by reflection
                    try{
                        java.lang.String exceptionClassName = (java.lang.String)faultExceptionClassNameMap.get(faultElt.getQName());
                        java.lang.Class exceptionClass = java.lang.Class.forName(exceptionClassName);
                        java.lang.Exception ex=
                                (java.lang.Exception) exceptionClass.newInstance();
                        //message class
                        java.lang.String messageClassName = (java.lang.String)faultMessageMap.get(faultElt.getQName());
                        java.lang.Class messageClass = java.lang.Class.forName(messageClassName);
                        java.lang.Object messageObject = fromOM(faultElt,messageClass,null);
                        java.lang.reflect.Method m = exceptionClass.getMethod("setFaultMessage",
                                   new java.lang.Class[]{messageClass});
                        m.invoke(ex,new java.lang.Object[]{messageObject});
                        
                        if (ex instanceof com.privasphere.qualsig.quovadis.ExceptionException){
                          throw (com.privasphere.qualsig.quovadis.ExceptionException)ex;
                        }
                        ...>>
So the new piece of code would look like

}catch(org.apache.axis2.AxisFault f){

            org.apache.axiom.om.OMElement faultElt = f.getDetail();
            if (faultElt!=null){
                if (faultExceptionNameMap.containsKey(faultElt.getQName())){
                    //make the fault by reflection
                    try{
                        java.lang.String exceptionClassName = (java.lang.String)faultExceptionClassNameMap.get(faultElt.getQName());
                        java.lang.Class exceptionClass = java.lang.Class.forName(exceptionClassName);
                        java.lang.Exception ex=
                                (java.lang.Exception) exceptionClass.newInstance();
                        //message class
                        java.lang.String messageClassName = (java.lang.String)faultMessageMap.get(faultElt.getQName());
                        java.lang.Class messageClass = java.lang.Class.forName(messageClassName);
                        java.lang.Object messageObject = fromOM(faultElt,messageClass,null);
                        java.lang.reflect.Method m = exceptionClass.getMethod("setFaultMessage",
                                   new java.lang.Class[]{messageClass});
                        m.invoke(ex,new java.lang.Object[]{messageObject});
                        
                        if (ex instanceof com.privasphere.qualsig.quovadis.ExceptionException){
                        	ExceptionException ee = (com.privasphere.qualsig.quovadis.ExceptionException)ex; 
                        	ee.setAxisFault(f);
                          throw ee;
                        }
                        ...

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.