diff options
| author | Damien Laniel <dlaniel@entrouvert.com> | 2007-08-08 16:03:29 +0000 |
|---|---|---|
| committer | Damien Laniel <dlaniel@entrouvert.com> | 2007-08-08 16:03:29 +0000 |
| commit | 73db5fc58f10aa5629cc963174827e1cfe740eb5 (patch) | |
| tree | b402de384dc8c8b86535c9eac582a839cde88018 | |
| parent | 73350739440c6d5511f851f6dc3eba008ea4a879 (diff) | |
processModifyResponseMsg
| -rw-r--r-- | lasso/errors.c | 2 | ||||
| -rw-r--r-- | lasso/errors.h | 3 | ||||
| -rw-r--r-- | lasso/id-wsf-2.0/data_service.c | 35 | ||||
| -rw-r--r-- | lasso/id-wsf-2.0/data_service.h | 3 | ||||
| -rw-r--r-- | swig/Lasso-wsf2.i | 6 |
5 files changed, 48 insertions, 1 deletions
diff --git a/lasso/errors.c b/lasso/errors.c index 60d69954..ef146558 100644 --- a/lasso/errors.c +++ b/lasso/errors.c @@ -218,6 +218,8 @@ lasso_strerror(int error_code) return "Query partially failed : some items were correctly processed"; case LASSO_DST_ERROR_MODIFY_FAILED: return "Modify failed"; + case LASSO_DST_ERROR_MODIFY_PARTIALLY_FAILED: + return "Modify partially failed : some items were correctly processed"; case LASSO_DST_ERROR_NEW_DATA_MISSING: return "Missing new data"; diff --git a/lasso/errors.h b/lasso/errors.h index 20b805e8..21b972fb 100644 --- a/lasso/errors.h +++ b/lasso/errors.h @@ -156,5 +156,6 @@ #define LASSO_DST_ERROR_QUERY_FAILED -1301 #define LASSO_DST_ERROR_QUERY_PARTIALLY_FAILED -1302 #define LASSO_DST_ERROR_MODIFY_FAILED -1303 -#define LASSO_DST_ERROR_NEW_DATA_MISSING -1304 +#define LASSO_DST_ERROR_MODIFY_PARTIALLY_FAILED -1304 +#define LASSO_DST_ERROR_NEW_DATA_MISSING -1305 diff --git a/lasso/id-wsf-2.0/data_service.c b/lasso/id-wsf-2.0/data_service.c index 928f50ce..d8a67f86 100644 --- a/lasso/id-wsf-2.0/data_service.c +++ b/lasso/id-wsf-2.0/data_service.c @@ -732,6 +732,41 @@ lasso_idwsf2_data_service_parse_modify_items(LassoIdWsf2DataService *service) return res; } +gint +lasso_idwsf2_data_service_process_modify_response_msg(LassoIdWsf2DataService *service, + const gchar *message) +{ + LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(service); + LassoIdWsf2UtilResponse *response; + int res; + + g_return_val_if_fail(LASSO_IS_IDWSF2_DATA_SERVICE(service), + LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); + g_return_val_if_fail(message != NULL, LASSO_PARAM_ERROR_INVALID_VALUE); + + res = lasso_idwsf2_profile_process_soap_response_msg(profile, message); + if (res != 0) { + return res; + } + + if (! LASSO_IS_IDWSF2_DSTREF_MODIFY_RESPONSE(LASSO_PROFILE(profile)->response)) { + return LASSO_PROFILE_ERROR_INVALID_SOAP_MSG; + } + + /* Check response status code */ + response = LASSO_IDWSF2_UTIL_RESPONSE(LASSO_PROFILE(profile)->response); + if (response->Status == NULL || response->Status->code == NULL) { + return LASSO_PROFILE_ERROR_MISSING_STATUS_CODE; + } + if (strcmp(response->Status->code, LASSO_DST_STATUS_CODE_PARTIAL) == 0) { + return LASSO_DST_ERROR_MODIFY_PARTIALLY_FAILED; + } else if (strcmp(response->Status->code, LASSO_DST_STATUS_CODE_OK) != 0) { + return LASSO_DST_ERROR_MODIFY_FAILED; + } + + return 0; +} + /*****************************************************************************/ /* private methods */ /*****************************************************************************/ diff --git a/lasso/id-wsf-2.0/data_service.h b/lasso/id-wsf-2.0/data_service.h index db37198e..3fd941dd 100644 --- a/lasso/id-wsf-2.0/data_service.h +++ b/lasso/id-wsf-2.0/data_service.h @@ -109,6 +109,9 @@ LASSO_EXPORT gint lasso_idwsf2_data_service_process_modify_msg(LassoIdWsf2DataSe LASSO_EXPORT gint lasso_idwsf2_data_service_parse_modify_items(LassoIdWsf2DataService *service); +LASSO_EXPORT gint lasso_idwsf2_data_service_process_modify_response_msg( + LassoIdWsf2DataService *service, const gchar *message); + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/swig/Lasso-wsf2.i b/swig/Lasso-wsf2.i index 83ee0717..5b37bd05 100644 --- a/swig/Lasso-wsf2.i +++ b/swig/Lasso-wsf2.i @@ -398,6 +398,10 @@ typedef struct { THROW_ERROR() int parseModifyItems(); END_THROW_ERROR() + + THROW_ERROR() + int processModifyResponseMsg(const char *message); + END_THROW_ERROR() } %{ @@ -484,6 +488,8 @@ typedef struct { #define LassoIdWsf2DataService_addModifyItem lasso_idwsf2_data_service_add_modify_item #define LassoIdWsf2DataService_processModifyMsg lasso_idwsf2_data_service_process_modify_msg #define LassoIdWsf2DataService_parseModifyItems lasso_idwsf2_data_service_parse_modify_items +#define LassoIdWsf2DataService_processModifyResponseMsg \ + lasso_idwsf2_data_service_process_modify_response_msg %} |
