diff options
| author | Emmanuel Raviart <eraviart@entrouvert.com> | 2005-01-09 15:28:19 +0000 |
|---|---|---|
| committer | Emmanuel Raviart <eraviart@entrouvert.com> | 2005-01-09 15:28:19 +0000 |
| commit | f2d24dffda0d03036b3b2f5d5fb1812deef3c334 (patch) | |
| tree | 2e31a6cd53b0267572ab8823c114455a8a790125 | |
| parent | 5947af84b10542e8c1d24413d105b071c5b663b2 (diff) | |
| download | lasso-f2d24dffda0d03036b3b2f5d5fb1812deef3c334.tar.gz lasso-f2d24dffda0d03036b3b2f5d5fb1812deef3c334.tar.xz lasso-f2d24dffda0d03036b3b2f5d5fb1812deef3c334.zip | |
Swig: Removed login & lecp authnRequest & authnResponse attribute. Now uses
attributes request & response, like C. Added dynamic casting to
AuthnRequestAbstract & AuthnResponseAbstract.
| -rwxr-xr-x | python/tests/profiles_tests.py | 5 | ||||
| -rw-r--r-- | swig/Lasso.i | 159 |
2 files changed, 55 insertions, 109 deletions
diff --git a/python/tests/profiles_tests.py b/python/tests/profiles_tests.py index 1816fe4f..6dcc4af6 100755 --- a/python/tests/profiles_tests.py +++ b/python/tests/profiles_tests.py @@ -89,8 +89,9 @@ class LoginTestCase(unittest.TestCase): os.path.join(dataDir, 'idp1-la/certificate.pem')) login = lasso.Login(lassoServer) login.initAuthnRequest() - login.authnRequest - login.authnRequest.protocolProfile = lasso.libProtocolProfileBrwsArt + login.request + login.request.protocolProfile = lasso.libProtocolProfileBrwsArt + self.failUnlessEqual(login.request.protocolProfile, lasso.libProtocolProfileBrwsArt) class LogoutTestCase(unittest.TestCase): diff --git a/swig/Lasso.i b/swig/Lasso.i index ef26c551..122a545e 100644 --- a/swig/Lasso.i +++ b/swig/Lasso.i @@ -200,7 +200,20 @@ typedef struct node_info { swig_type_info *swig; } node_info; -static node_info node_infos[100]; /* FIXME: Size should be computed */ +static node_info node_infos[100]; /* FIXME: Size should be computed * + +/* Cast a LassoNode into the appropriate derivated class. */ +static swig_type_info *dynamic_cast_node(void **nodePointer) { + node_info *info; + char *name; + + name = (char *) G_OBJECT_TYPE_NAME(*nodePointer); + for (info = node_infos; info->swig; info++) { + if (strcmp(info->name, name) == 0) + return info->swig; + } + return NULL; +} static void set_node_info(node_info *info, char *name, char *superName, swig_type_info *swig) { node_info *super; @@ -317,26 +330,38 @@ static void set_node_info(node_info *info, char *name, char *superName, swig_typ %} /* Accept any GObject class derivated from LassoNode as a LassoNode */ -%typemap(in) LassoNode * { - node_info *info; +%typemap(in) LassoNode *, LassoSamlpRequestAbstract *, LassoSamlpResponseAbstract * { + node_info *info, *super; #ifdef SWIGPERL5 - for (info = node_infos; info->swig; info++) - if (SWIG_ConvertPtr($input, (void **) &$1, info->swig, 0) < 0) + for (info = node_infos; info->swig; info++) { + for (super = info; super; super = super->super) + if (super->swig == $1_descriptor) + break; + if (super && SWIG_ConvertPtr($input, (void **) &$1, info->swig, 0) < 0) break; + } if (! info->swig) SWIG_croak("Type error in argument $argnum of $symname. Expected $1_mangle"); #else #ifdef SWIGPHP4 - for (info = node_infos; info->swig; info++) - if (SWIG_ConvertPtr(*$input, (void **) &$1, info->swig) < 0) + for (info = node_infos; info->swig; info++) { + for (super = info; super; super = super->super) + if (super->swig == $1_descriptor) + break; + if (super && SWIG_ConvertPtr($input, (void **) &$1, info->swig) < 0) break; + } if (! info->swig) zend_error(E_ERROR, "Type error in argument %d of $symname. Expected %s", $argnum-argbase, $1_descriptor->name); #else /* SWIGPYTHON */ - for (info = node_infos; info->swig; info++) - if (SWIG_ConvertPtr($input, (void **) &$1, info->swig, $disown) != -1) + for (info = node_infos; info->swig; info++) { + for (super = info; super; super = super->super) + if (super->swig == $1_descriptor) + break; + if (super && SWIG_ConvertPtr($input, (void **) &$1, info->swig, $disown) != -1) break; + } if (! info->swig) { /* Display error message. */ SWIG_ConvertPtr($input, (void **) &$1, $1_descriptor, @@ -347,25 +372,13 @@ static void set_node_info(node_info *info, char *name, char *superName, swig_typ #endif } -%apply SWIGTYPE *DYNAMIC { LassoNode * }; - -/* Cast a LassoNode into the appropriate derivated class. */ -%{ -static swig_type_info *LassoNode_dynamic(void **nodePointer) { - node_info *info; - char *name; - - name = (char *) G_OBJECT_TYPE_NAME(*nodePointer); - for (info = node_infos; info->swig; info++) { - if (strcmp(info->name, name) == 0) - return info->swig; - } - return NULL; -} -%} +%apply SWIGTYPE *DYNAMIC { LassoNode *, LassoSamlpRequestAbstract *, + LassoSamlpResponseAbstract * }; -/* Register the above casting function. */ -DYNAMIC_CAST(SWIGTYPE_p_LassoNode, LassoNode_dynamic); +/* Register dynamic casting for abstract nodes. */ +DYNAMIC_CAST(SWIGTYPE_p_LassoNode, dynamic_cast_node); +DYNAMIC_CAST(SWIGTYPE_p_LassoSamlpRequestAbstract, dynamic_cast_node); +DYNAMIC_CAST(SWIGTYPE_p_LassoSamlpResponseAbstract, dynamic_cast_node); #endif /* if !defined(SWIGCSHARP) && !defined(SWIGJAVA) */ @@ -4918,12 +4931,6 @@ typedef struct { %extend LassoLogin { /* Attributes inherited from Profile */ - %immutable authnRequest; - LassoLibAuthnRequest *authnRequest; - - %immutable authnResponse; - LassoLibAuthnResponse *authnResponse; - %newobject identity_get; LassoIdentity *identity; @@ -4948,10 +4955,10 @@ typedef struct { char *remoteProviderId; %immutable request; - LassoSamlpRequest *request; + LassoSamlpRequestAbstract *request; %immutable response; - LassoSamlpResponse *response; + LassoSamlpResponseAbstract *response; char *responseStatus; @@ -5055,24 +5062,6 @@ typedef struct { /* Attributes inherited from Profile implementations */ -/* authnRequest */ -#define LassoLogin_get_authnRequest LassoLogin_authnRequest_get -LassoLibAuthnRequest *LassoLogin_authnRequest_get(LassoLogin *self) { - LassoProfile *profile = LASSO_PROFILE(self); - if (LASSO_IS_LIB_AUTHN_REQUEST(profile->request)) - return LASSO_LIB_AUTHN_REQUEST(g_object_ref(profile->request)); - return NULL; -} - -/* authnResponse */ -#define LassoLogin_get_authnResponse LassoLogin_authnResponse_get -LassoLibAuthnResponse *LassoLogin_authnResponse_get(LassoLogin *self) { - LassoProfile *profile = LASSO_PROFILE(self); - if (LASSO_IS_LIB_AUTHN_RESPONSE(profile->response)) - return LASSO_LIB_AUTHN_RESPONSE(g_object_ref(profile->response)); - return NULL; -} - /* identity */ #define LassoLogin_get_identity(self) lasso_profile_get_identity(LASSO_PROFILE(self)) #define LassoLogin_identity_get(self) lasso_profile_get_identity(LASSO_PROFILE(self)) @@ -5112,22 +5101,12 @@ LassoLibAuthnResponse *LassoLogin_authnResponse_get(LassoLogin *self) { #define LassoLogin_remoteProviderId_set(self, value) set_string(&LASSO_PROFILE(self)->remote_providerID, (value)) /* request */ -#define LassoLogin_get_request LassoLogin_request_get -LassoSamlpRequest *LassoLogin_request_get(LassoLogin *self) { - LassoProfile *profile = LASSO_PROFILE(self); - if (LASSO_IS_SAMLP_REQUEST(profile->request)) - return LASSO_SAMLP_REQUEST(g_object_ref(profile->request)); - return NULL; -} +#define LassoLogin_get_request(self) get_node(LASSO_PROFILE(self)->request) +#define LassoLogin_request_get(self) get_node(LASSO_PROFILE(self)->request) /* response */ -#define LassoLogin_get_response LassoLogin_response_get -LassoSamlpResponse *LassoLogin_response_get(LassoLogin *self) { - LassoProfile *profile = LASSO_PROFILE(self); - if (LASSO_IS_SAMLP_RESPONSE(profile->response)) - return LASSO_SAMLP_RESPONSE(g_object_ref(profile->response)); - return NULL; -} +#define LassoLogin_get_response(self) get_node(LASSO_PROFILE(self)->response) +#define LassoLogin_response_get(self) get_node(LASSO_PROFILE(self)->response) /* responseStatus */ #define LassoLogin_get_responseStatus(self) NULL /* FIXME: no set */ @@ -5402,12 +5381,6 @@ typedef struct { %extend LassoLecp { /* Attributes inherited from Profile */ - %immutable authnRequest; - LassoLibAuthnRequest *authnRequest; - - %immutable authnResponse; - LassoLibAuthnResponse *authnResponse; - %newobject identity_get; LassoIdentity *identity; @@ -5432,10 +5405,10 @@ typedef struct { char *remoteProviderId; %immutable request; - LassoSamlpRequest *request; + LassoSamlpRequestAbstract *request; %immutable response; - LassoSamlpResponse *response; + LassoSamlpResponseAbstract *response; char *responseStatus; @@ -5509,24 +5482,6 @@ typedef struct { /* Attributes inherited from Profile implementations */ -/* authnRequest */ -#define LassoLecp_get_authnRequest LassoLecp_authnRequest_get -LassoLibAuthnRequest *LassoLecp_authnRequest_get(LassoLecp *self) { - LassoProfile *profile = LASSO_PROFILE(self); - if (LASSO_IS_LIB_AUTHN_REQUEST(profile->request)) - return LASSO_LIB_AUTHN_REQUEST(g_object_ref(profile->request)); - return NULL; -} - -/* authnResponse */ -#define LassoLecp_get_authnResponse LassoLecp_authnResponse_get -LassoLibAuthnResponse *LassoLecp_authnResponse_get(LassoLecp *self) { - LassoProfile *profile = LASSO_PROFILE(self); - if (LASSO_IS_LIB_AUTHN_RESPONSE(profile->response)) - return LASSO_LIB_AUTHN_RESPONSE(g_object_ref(profile->response)); - return NULL; -} - /* identity */ #define LassoLecp_get_identity(self) lasso_profile_get_identity(LASSO_PROFILE(self)) #define LassoLecp_identity_get(self) lasso_profile_get_identity(LASSO_PROFILE(self)) @@ -5566,22 +5521,12 @@ LassoLibAuthnResponse *LassoLecp_authnResponse_get(LassoLecp *self) { #define LassoLecp_remoteProviderId_set(self, value) set_string(&LASSO_PROFILE(self)->remote_providerID, (value)) /* request */ -#define LassoLecp_get_request LassoLecp_request_get -LassoSamlpRequest *LassoLecp_request_get(LassoLecp *self) { - LassoProfile *profile = LASSO_PROFILE(self); - if (LASSO_IS_SAMLP_REQUEST(profile->request)) - return LASSO_SAMLP_REQUEST(g_object_ref(profile->request)); - return NULL; -} +#define LassoLecp_get_request(self) get_node(LASSO_PROFILE(self)->request) +#define LassoLecp_request_get(self) get_node(LASSO_PROFILE(self)->request) /* response */ -#define LassoLecp_get_response LassoLecp_response_get -LassoSamlpResponse *LassoLecp_response_get(LassoLecp *self) { - LassoProfile *profile = LASSO_PROFILE(self); - if (LASSO_IS_SAMLP_RESPONSE(profile->response)) - return LASSO_SAMLP_RESPONSE(g_object_ref(profile->response)); - return NULL; -} +#define LassoLecp_get_response(self) get_node(LASSO_PROFILE(self)->response) +#define LassoLecp_response_get(self) get_node(LASSO_PROFILE(self)->response) /* responseStatus */ #define LassoLecp_get_responseStatus(self) NULL /* FIXME: no set */ |
