summaryrefslogtreecommitdiffstats
path: root/lasso
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2008-09-04 11:41:39 +0000
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2008-09-04 11:41:39 +0000
commit6edfa7935f68fb10282eb878ab1caa6147efc88f (patch)
tree7d5c68fdf9f4898b616b2a3dea4f91e8064bb268 /lasso
parent24430806e6761766e6cd8a309a0c087dd90f178e (diff)
downloadlasso-6edfa7935f68fb10282eb878ab1caa6147efc88f.tar.gz
lasso-6edfa7935f68fb10282eb878ab1caa6147efc88f.tar.xz
lasso-6edfa7935f68fb10282eb878ab1caa6147efc88f.zip
Add a new error code, with the REGISTRY prefix and use it in registry function
returning an error code. Fix a typo when retrieving a quark string in the registry modulke. Improve tests for functional mapping.
Diffstat (limited to 'lasso')
-rw-r--r--lasso/errors.c2
-rw-r--r--lasso/errors.h2
-rw-r--r--lasso/registry.c28
3 files changed, 21 insertions, 11 deletions
diff --git a/lasso/errors.c b/lasso/errors.c
index ec64168e..671fc1c2 100644
--- a/lasso/errors.c
+++ b/lasso/errors.c
@@ -109,6 +109,8 @@ lasso_strerror(int error_code)
return "Missing SAML artifact";
case LASSO_DS_ERROR_INVALID_SIGALG:
return "Invalid signature algorithm.";
+ case LASSO_REGISTRY_ERROR_KEY_EXISTS:
+ return "Key alreadys exists in the registry";
case LASSO_LOGOUT_ERROR_UNSUPPORTED_PROFILE:
return "Unsupported protocol profile";
case LASSO_LOGIN_ERROR_NO_DEFAULT_ENDPOINT:
diff --git a/lasso/errors.h b/lasso/errors.h
index b725c4f0..b357b937 100644
--- a/lasso/errors.h
+++ b/lasso/errors.h
@@ -167,3 +167,5 @@
#define LASSO_DST_ERROR_MODIFY_PARTIALLY_FAILED -1304 /* Modify partially failed : some items were correctly processed */
#define LASSO_DST_ERROR_NEW_DATA_MISSING -1305 /* Missing new data */
+/* Lasso registry */
+#define LASSO_REGISTRY_ERROR_KEY_EXISTS -1400 /* Key alreadys exists in the registry */
diff --git a/lasso/registry.c b/lasso/registry.c
index 8d7e6489..7fdc3bde 100644
--- a/lasso/registry.c
+++ b/lasso/registry.c
@@ -214,9 +214,12 @@ const char* lasso_registry_get_mapping(LassoRegistry *registry, const char *from
const char *ret = NULL;
from_ns_quark = g_quark_try_string(from_namespace);
- to_ns_quark = g_quark_try_string(from_name);
+ to_ns_quark = g_quark_try_string(to_namespace);
+
+ if (from_ns_quark == 0 || to_ns_quark == 0) {
+ return NULL;
+ }
- g_return_val_if_fail(from_ns_quark != 0 && to_ns_quark != 0, NULL);
ret = lasso_registry_get_functional_mapping(registry->functional_mapping, from_ns_quark, from_name, to_ns_quark);
if (ret == NULL) {
ret = lasso_registry_get_direct_mapping(registry->direct_mapping, from_ns_quark, from_name, to_ns_quark);
@@ -230,7 +233,8 @@ const char* lasso_registry_get_mapping(LassoRegistry *registry, const char *from
*
* Add a new mapping from a QName to a QName.
*
- * Return value: 0 if successfull, -1 if it already exists, -2 if arguments
+ * Return value: 0 if successfull, LASSO_REGISTRY_ERROR_KEY_EXISTS if it already exists,
+ * LASSO_PARAM_ERROR_INVALID_VALUE if arguments
* are invalid.
*/
gint lasso_registry_add_direct_mapping(LassoRegistry *registry, const char *from_namespace,
@@ -238,10 +242,10 @@ gint lasso_registry_add_direct_mapping(LassoRegistry *registry, const char *from
{
LassoRegistryDirectMappingRecord *a_record;
- g_return_val_if_fail(registry && from_namespace && from_name && to_namespace && to_name, -2);
+ g_return_val_if_fail(registry && from_namespace && from_name && to_namespace && to_name, LASSO_PARAM_ERROR_INVALID_VALUE);
if (lasso_registry_get_mapping(registry, from_namespace, from_name, to_namespace)) {
- return -1;
+ return LASSO_REGISTRY_ERROR_KEY_EXISTS;
}
a_record = g_new0(LassoRegistryDirectMappingRecord, 1);
a_record->from_namespace = g_quark_from_string(from_namespace);
@@ -263,7 +267,8 @@ gint lasso_registry_add_direct_mapping(LassoRegistry *registry, const char *from
* translation_function. This functions is not forced to return a value for
* any string, it can return NULL.
*
- * Return value: 0 if successfull, -1 otherwise.
+ * Return value: 0 if successfull, LASSO_REGISTRY_ERROR_KEY_EXISTS if this mapping is already registered,
+ * LASSO_PARAM_ERROR_INVALID_VALUE if one the argument is invalid.
*/
gint lasso_registry_add_functional_mapping(LassoRegistry *registry, const char *from_namespace,
const char *to_namespace, LassoRegistryTranslationFunction translation_function)
@@ -271,11 +276,11 @@ gint lasso_registry_add_functional_mapping(LassoRegistry *registry, const char *
LassoRegistryFunctionalMappingRecord *a_record;
GQuark to_ns_quark, from_ns_quark;
- g_return_val_if_fail(registry != NULL && from_namespace != NULL && to_namespace != NULL, -2);
+ g_return_val_if_fail(registry != NULL && from_namespace != NULL && to_namespace != NULL, LASSO_PARAM_ERROR_INVALID_VALUE);
from_ns_quark = g_quark_from_string(from_namespace);
to_ns_quark = g_quark_from_string(to_namespace);
if (lasso_registry_get_translation_function(registry->functional_mapping, from_ns_quark, to_ns_quark)) {
- return -1;
+ return LASSO_REGISTRY_ERROR_KEY_EXISTS;
}
a_record = g_new0(LassoRegistryFunctionalMappingRecord, 1);
a_record->from_namespace = from_ns_quark;
@@ -296,8 +301,8 @@ gint lasso_registry_add_functional_mapping(LassoRegistry *registry, const char *
*
* Add a new mapping from a QName to a QName.
*
- * Return value: 0 if successfull, -1 if it already exists, -2 if arguments
- * are invalid.
+ * Return value: 0 if successfull, LASSO_REGISTRY_ERROR_KEY_EXISTS if this mapping is already registered,
+ * LASSO_PARAM_ERROR_INVALID_VALUE if one the argument is invalid.
*/
gint lasso_registry_default_add_direct_mapping(const char *from_namespace,
const char *from_name, const char *to_namespace, const char *to_name)
@@ -318,7 +323,8 @@ gint lasso_registry_default_add_direct_mapping(const char *from_namespace,
* the default mapping. This functions is not forced to return a value for any string, it can return
* NULL.
*
- * Return value: 0 if successfull, -1 otherwise.
+ * Return value: 0 if successfull, LASSO_REGISTRY_ERROR_KEY_EXISTS if this mapping is already registered,
+ * LASSO_PARAM_ERROR_INVALID_VALUE if one the argument is invalid.
*/
gint lasso_registry_default_add_functional_mapping(const char *from_namespace,
const char *to_namespace, LassoRegistryTranslationFunction translation_function)