diff options
| author | Nicolas Clapies <nclapies@entrouvert.com> | 2005-04-25 17:00:03 +0000 |
|---|---|---|
| committer | Nicolas Clapies <nclapies@entrouvert.com> | 2005-04-25 17:00:03 +0000 |
| commit | 1c4f12d1d3d0b1bc662f0867ea72f4ec00c6d9eb (patch) | |
| tree | a5f7e970ecf184b8e9f40590290ba6c377494eb3 | |
| parent | ec81badb6c000850eb833fbc53440cadbef0eafc (diff) | |
| download | lasso-1c4f12d1d3d0b1bc662f0867ea72f4ec00c6d9eb.tar.gz lasso-1c4f12d1d3d0b1bc662f0867ea72f4ec00c6d9eb.tar.xz lasso-1c4f12d1d3d0b1bc662f0867ea72f4ec00c6d9eb.zip | |
Added copy constructor to duplicate LassoDiscoDescription and LassoDiscoServiceInstance objects.
| -rw-r--r-- | lasso/xml/disco_description.c | 39 | ||||
| -rw-r--r-- | lasso/xml/disco_description.h | 3 | ||||
| -rw-r--r-- | lasso/xml/disco_service_instance.c | 26 | ||||
| -rw-r--r-- | lasso/xml/disco_service_instance.h | 3 |
4 files changed, 71 insertions, 0 deletions
diff --git a/lasso/xml/disco_description.c b/lasso/xml/disco_description.c index f19ab21a..012763fa 100644 --- a/lasso/xml/disco_description.c +++ b/lasso/xml/disco_description.c @@ -178,3 +178,42 @@ lasso_disco_description_new_with_BriefSoapHttpDescription(const gchar *securityM return description; } + +LassoDiscoDescription* +lasso_disco_description_copy(LassoDiscoDescription *description) +{ + LassoDiscoDescription *newDescription; + GList *securityMechIds, *credentialRefs; + + newDescription = g_object_new(LASSO_TYPE_DISCO_DESCRIPTION, NULL); + + securityMechIds = description->SecurityMechID; + while (securityMechIds) { + newDescription->SecurityMechID = g_list_append(newDescription->SecurityMechID, + g_strdup(securityMechIds->data)); + securityMechIds = securityMechIds->next; + } + + credentialRefs = description->CredentialRef; + while (credentialRefs) { + newDescription->CredentialRef = g_list_append(newDescription->CredentialRef, + g_strdup(credentialRefs->data)); + credentialRefs = credentialRefs->next; + } + + newDescription->WsdlURI = g_strdup(description->WsdlURI); + newDescription->ServiceNameRef = g_strdup(description->ServiceNameRef); + + if (description->Endpoint) { + newDescription->Endpoint = g_strdup(description->Endpoint); + } + if (description->SoapAction) { + newDescription->SoapAction = g_strdup(description->SoapAction); + } + + if (description->id) { + newDescription->id = g_strdup(description->id); + } + + return newDescription; +} diff --git a/lasso/xml/disco_description.h b/lasso/xml/disco_description.h index f1966fc4..94c1cdba 100644 --- a/lasso/xml/disco_description.h +++ b/lasso/xml/disco_description.h @@ -79,6 +79,9 @@ struct _LassoDiscoDescriptionClass { LASSO_EXPORT GType lasso_disco_description_get_type (void); +LASSO_EXPORT LassoDiscoDescription *lasso_disco_description_copy( + LassoDiscoDescription *description); + LASSO_EXPORT LassoDiscoDescription* lasso_disco_description_new(); LASSO_EXPORT LassoDiscoDescription* lasso_disco_description_new_with_WsdlRef( diff --git a/lasso/xml/disco_service_instance.c b/lasso/xml/disco_service_instance.c index 87efd635..ef23af53 100644 --- a/lasso/xml/disco_service_instance.c +++ b/lasso/xml/disco_service_instance.c @@ -122,3 +122,29 @@ lasso_disco_service_instance_new(const gchar *serviceType, return service_instance; } + +LassoDiscoServiceInstance* +lasso_disco_service_instance_copy(LassoDiscoServiceInstance *serviceInstance) +{ + LassoDiscoServiceInstance *newServiceInstance; + LassoDiscoDescription *newDescription; + GList *description; + + g_return_val_if_fail(LASSO_IS_DISCO_SERVICE_INSTANCE(serviceInstance) == TRUE, NULL); + + newServiceInstance = g_object_new(LASSO_TYPE_DISCO_SERVICE_INSTANCE, NULL); + + newServiceInstance->ServiceType = g_strdup(serviceInstance->ServiceType); + newServiceInstance->ProviderID = g_strdup(serviceInstance->ProviderID); + + description = serviceInstance->Description; + while (description) { + newDescription = lasso_disco_description_copy( + LASSO_DISCO_DESCRIPTION(description->data)); + newServiceInstance->Description = g_list_append(newServiceInstance->Description, + newDescription); + description = description->next; + } + + return newServiceInstance; +} diff --git a/lasso/xml/disco_service_instance.h b/lasso/xml/disco_service_instance.h index b188f8a5..3c0df3f8 100644 --- a/lasso/xml/disco_service_instance.h +++ b/lasso/xml/disco_service_instance.h @@ -64,6 +64,9 @@ struct _LassoDiscoServiceInstanceClass { LASSO_EXPORT GType lasso_disco_service_instance_get_type(void); +LASSO_EXPORT LassoDiscoServiceInstance *lasso_disco_service_instance_copy( + LassoDiscoServiceInstance *serviceInstance); + LASSO_EXPORT LassoDiscoServiceInstance* lasso_disco_service_instance_new( const gchar *serviceType, const gchar *providerID, LassoDiscoDescription *description); |
