HI Sathya, you can follow the attachments. I didnt test it, but it may give some hints to do your work. If you want to build a soap fault base on an error code, you need to keep a global variable to keep the error code and build the soap exception based on that.
So It is clear we should have a better mechanism than this to do that, I
think there was a discussion earlier in the same topic in the list sometime
ago. We should quickly figure out a good way to do this and fix the code
generation templates.
Thanks
Dimuthu
/*axiom_element_set_text(error_ele, env,
adb_MyFirstException_get_text(_MyFirstException,env),
error_node); */
/** instead use following */
another_node = adb_MyFirstException_serialize(_MyFirstException,
env, NULL, AXIS2_FALSE);
axiom_node_add_child(error_node, env, another_node);
IN the client side axis2_stub_MyService.c should be changed like following.
ret_node = axis2_svc_client_send_receive_with_op_qname( svc_client, env,
op_qname, payload);
/** Just before this line, add following */
if(ret_node && axiom_node_get_data_element( ret_node, env) &&
axutil_strcmp("fault",
axiom_element_get_localname((axiom_element_t
*)axiom_node_get_data_element( ret_node, env), env)))
{
/** adb_MyFirstException_t* _MyFirstException should be
declared */
_MyFirstException = adb_MyFirstException_create(env);
adb_MyFirstException_deserialize(_MyFirstException, env,
axiom_node_get_first_child( ret_node));
/** so you have the same _MyFirstException you created at
* onfault is here, just do the processing at here manually
*/
}
On 9/29/07, Sathya Raghunathan <[EMAIL PROTECTED]> wrote:
>
> If you just check the axis2_svc_skel_MyService_on_fault() in the attached
> file, please let me know if i have modified it correctly or not. Is this the
> way to do? If i test that out, the server crashes. If i comment out the
> object myfirstexception from it, i can see that a fault element is set in
> the output with some message that i hardcoded there.
>
> Please guide me with the proper step of building the custom fault in that
> function.
>
> Thanks
> Sathya
>
>
> On 9/29/07, Sathya Raghunathan <[EMAIL PROTECTED]> wrote:
> >
> > Hi Dimuthu,
> >
> > Do you have any example custom soap fault wsdl? I am not clear with this
> > concept I tried a new example, since you found some problems with my last
> > wsdl file. I have attached the wsdl file. In that, there is one
> > myOperationRequest which is a string, and a myOperationResponse which is
> > also a string. There are two custom faults here, MyFirstException and
> > MySecondException. With this wsdl, the service function that was generated
> > was as below:
> >
> > adb_myOperationResponse_t* axis2_skel_MyService_myOperation (const
> > axutil_env_t *env ,
> > adb_myOperation_t*
> > myOperation )
> > {
> > adb_myOperationResponse_t *myResponse;
> > /* TODO fill this with the necessary business logic */
> >
> > axis2_char_t *myInpMsg =
> > adb_myOperation_get_myInput(myOperation,env);
> > printf("My input message = %s\n",myInpMsg);
> > if (strcmp(myInpMsg,"Bad server")==0)
> > {
> > //What is the way to throw the exception here?
> > return NULL;
> > }
> > // Assuming the myResponse object is created
> > return myResponse;
> > }
> >
> >
> > You have told me to modify the axis2_svc_skel_MyService_on_fault()
> > function to build custom faults. Does that mean that i have to create an
> > object of myFirstException inside that? Should the service function just
> > return NULL? Suppose i call a function that has some business logic that
> > return error code inside axis2_skel_MyService_myOperation, and i want to
> > throw an exception (with an error message) based on that error code, how
> > exactly should i do it?
> >
> > Can you help me out?
> >
> > Thanks
> > Sathya
> >
> >
> >
> >
> >
> >
> >
>
axis2_stub_MyService.c
Description: Binary data
axis2_svc_skel_MyService.c
Description: Binary data
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
