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.