axis-c-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sathya Raghunathan" <pappu.raghunat...@gmail.com>
Subject Re: Help needed on building custom soap fault in axis2c
Date Mon, 01 Oct 2007 05:03:59 GMT
If i have build a soap fault based on an error code, should i create a
global variable in axutil_error_init() function? Can i make use of the
axutil_error_messages array?

Thanks
Sathya


On 9/29/07, Dimuthu Gamage <dimuthuc@gmail.com> wrote:
>
> 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 < pappu.raghunathan@gmail.com> 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 <pappu.raghunathan@gmail.com > 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
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>
>

Mime
View raw message