Hi devs, Currently there are no error codes defined specific to codegen or adb-codegen. Most of the adb error codes will be related to validation of xml with xml schemas.
So my questions are, Should we specify codegen or adb-codegen specific error codes? where adb codegen specific error codes should be defined? That is, should they place inside axis2/c range or in a separate range? Thanks Dimuthu On Oct 5, 2007 12:24 PM, Samisa Abeysinghe <[EMAIL PROTECTED]> wrote: > This discussion took place over the user list. > Please send in your feedback on how to improve user defined error spaces. > > Samisa... > > Samisa Abeysinghe wrote: > > Subra A Narayanan wrote: > >> Hi Dimuthu, > >> > >> I am using the solution you suggested in your last mail. That > >> solution is perfect for my application. But I have some concerns. I > >> saw this line in your code > >> > >> #define MYSERVICE_ERROR_CODES_START (AXIS2_ERROR_LAST + 2000) > >> > >> > >> Will this cause any problems in the future? What if the value of > >> AXIS2_ERROR_LAST changes? Or what if some other axis2 component (like > >> sandesha or neethi or something else) uses error codes in the same > >> range? Will I be forced to change my code because of the above > >> scenarios? > > Yes there is a problem that one would take over this value. > > The solution for this is to define the "register" the error block > > sizes with Axis2/C axutil_error.h so that there is no room to take > > over the range. > > > > e.g. > > #define AXUTIL_ERROR_MESSAGE_BLOCK_SIZE 2000 > > #define NEETHI_ERROR_CODES_START (AXIS2_ERROR_LAST + > > AXUTIL_ERROR_MESSAGE_BLOCK_SIZE) > > #define RAMPART_ERROR_CODES_START (NEETHI_ERROR_CODES_START + > > AXUTIL_ERROR_MESSAGE_BLOCK_SIZE) > > #define SANDESHA2_ERROR_CODES_START (RAMPART_ERROR_CODES_START + > > AXUTIL_ERROR_MESSAGE_BLOCK_SIZE) > > #define SAVAN_ERROR_CODES_START (SANDESHA2_ERROR_CODES_START + > > AXUTIL_ERROR_MESSAGE_BLOCK_SIZE) > > #define USER_ERROR_CODES_START (SAVAN_ERROR_CODES_START + > > AXUTIL_ERROR_MESSAGE_BLOCK_SIZE) > > > > In the future, if we need to add another XYZ error block, we can > > #define XYZ_ERROR_CODES_START (USER_ERROR_CODES_START + > > AXUTIL_ERROR_MESSAGE_BLOCK_SIZE) > > > > BTW, what I am proposing is a future design to solve the situation. > With the current release, 1.1.0, you can use the following for a custom > error: > > axutil_error_set_error_message(env->error, error_message); > AXIS2_ERROR_SET(env->error, AXIS2_ERROR_LAST + 1, AXIS2_FAILURE); > > We need to improve our error model based on my earlier discussion. > > Thanks, > Samisa... > > Samisa... > >> > >> Any help is greatly appreciated. > >> > >> Subra > >> > >> > >> > >> On 10/1/07, *Dimuthu Gamage* <[EMAIL PROTECTED] > >> <mailto: [EMAIL PROTECTED]> > wrote: > >> > >> 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] > >> <mailto: [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] > >> <mailto:[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] > >> <mailto:[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] > >> <mailto:[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] > >> <mailto:[EMAIL PROTECTED]> > >> For additional commands, e-mail: > >> [EMAIL PROTECTED] > >> <mailto:[EMAIL PROTECTED]> > >> > >> > >> > >> > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [EMAIL PROTECTED] > >> <mailto:[EMAIL PROTECTED]> > >> For additional commands, e-mail: [EMAIL PROTECTED] > >> <mailto:[EMAIL PROTECTED]> > >> > >> > > > > > > > -- > Samisa Abeysinghe : WSO2 WSF/PHP > "http://wso2.org/projects/wsf/php?WSO2 Web Services Framework%2FPHP - Open source PHP extention for providing and consuming Web services in PHP > > <http://wso2.org/projects/wsf/php?WSO2%C2%A0Web%C2%A0Services%C2%A0Framework%2FPHP%C2%A0-%C2%A0Open%C2%A0source%C2%A0PHP%C2%A0extention%C2%A0for%C2%A0providing%C2%A0and%C2%A0consuming%C2%A0Web%C2%A0services%C2%A0in%C2%A0PHP> > " > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > -- > Samisa Abeysinghe : WSO2 WSF/PHP > "http://wso2.org/projects/wsf/php?WSO2 Web Services Framework%2FPHP - Open source PHP extention for providing and consuming Web services in PHP > > <http://wso2.org/projects/wsf/php?WSO2%C2%A0Web%C2%A0Services%C2%A0Framework%2FPHP%C2%A0-%C2%A0Open%C2%A0source%C2%A0PHP%C2%A0extention%C2%A0for%C2%A0providing%C2%A0and%C2%A0consuming%C2%A0Web%C2%A0services%C2%A0in%C2%A0PHP> > " > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > >
