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 di...@apache.org on 2007/07/30 22:53:18 UTC
svn commit: r561115 -
/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl
Author: dims
Date: Mon Jul 30 13:53:17 2007
New Revision: 561115
URL: http://svn.apache.org/viewvc?view=rev&rev=561115
Log:
Fix for (AXIS2-2113) Async. invocation error not using exception class from databinding
Modified:
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl
Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl?view=diff&rev=561115&r1=561114&r2=561115
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl Mon Jul 30 13:53:17 2007
@@ -787,7 +787,60 @@
}
public void onError(java.lang.Exception e) {
- callback.receiveError<xsl:value-of select="@name"/>(e);
+ if (error instanceof org.apache.axis2.AxisFault) {
+ org.apache.axis2.AxisFault f = (org.apache.axis2.AxisFault) error;
+ 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});
+ <xsl:for-each select="fault/param">
+ if (ex instanceof <xsl:value-of select="@name"/>){
+ callback.receiveError<xsl:value-of select="$method-name"/>((<xsl:value-of select="@name"/>)ex);
+ return;
+ }
+ </xsl:for-each>
+
+ callback.receiveError<xsl:value-of select="@name"/>(new java.rmi.RemoteException(ex.getMessage(), ex));
+ } catch(java.lang.ClassCastException e){
+ // we cannot intantiate the class - throw the original Axis fault
+ callback.receiveError<xsl:value-of select="@name"/>(f);
+ } catch (java.lang.ClassNotFoundException e) {
+ // we cannot intantiate the class - throw the original Axis fault
+ callback.receiveError<xsl:value-of select="@name"/>(f);
+ } catch (java.lang.NoSuchMethodException e) {
+ // we cannot intantiate the class - throw the original Axis fault
+ callback.receiveError<xsl:value-of select="@name"/>(f);
+ } catch (java.lang.reflect.InvocationTargetException e) {
+ // we cannot intantiate the class - throw the original Axis fault
+ callback.receiveError<xsl:value-of select="@name"/>(f);
+ } catch (java.lang.IllegalAccessException e) {
+ // we cannot intantiate the class - throw the original Axis fault
+ callback.receiveError<xsl:value-of select="@name"/>(f);
+ } catch (java.lang.InstantiationException e) {
+ // we cannot intantiate the class - throw the original Axis fault
+ callback.receiveError<xsl:value-of select="@name"/>(f);
+ }
+ } else {
+ callback.receiveError<xsl:value-of select="@name"/>(f);
+ }
+ } else {
+ callback.receiveError<xsl:value-of select="@name"/>(f);
+ }
+ } else {
+ callback.receiveError<xsl:value-of select="@name"/>(error);
+ }
}
public void onFault(org.apache.axis2.context.MessageContext faultContext) {
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org