summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDamien Laniel <dlaniel@entrouvert.com>2007-08-08 16:03:29 +0000
committerDamien Laniel <dlaniel@entrouvert.com>2007-08-08 16:03:29 +0000
commit73db5fc58f10aa5629cc963174827e1cfe740eb5 (patch)
treeb402de384dc8c8b86535c9eac582a839cde88018
parent73350739440c6d5511f851f6dc3eba008ea4a879 (diff)
processModifyResponseMsg
-rw-r--r--lasso/errors.c2
-rw-r--r--lasso/errors.h3
-rw-r--r--lasso/id-wsf-2.0/data_service.c35
-rw-r--r--lasso/id-wsf-2.0/data_service.h3
-rw-r--r--swig/Lasso-wsf2.i6
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
%}