Hi Sathya, Please check the attachment. This tries to use custom error codes. (mostly follow the way Sandhesha/C is using their custom error messages) Anyway still functions like "axutil_error_get_message" are too inflexible to work with custom error codes. So we need to define our version of the same function.
Thanks
Dimuthu
On 10/1/07, Sathya Raghunathan <[EMAIL PROTECTED]> wrote:
>
> 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 <[EMAIL PROTECTED]> 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 < [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
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
example_custom_error_code.tar.gz
Description: GNU Zip compressed data
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
