summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Clapies <nclapies@entrouvert.com>2005-04-25 17:00:03 +0000
committerNicolas Clapies <nclapies@entrouvert.com>2005-04-25 17:00:03 +0000
commit1c4f12d1d3d0b1bc662f0867ea72f4ec00c6d9eb (patch)
treea5f7e970ecf184b8e9f40590290ba6c377494eb3
parentec81badb6c000850eb833fbc53440cadbef0eafc (diff)
downloadlasso-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.c39
-rw-r--r--lasso/xml/disco_description.h3
-rw-r--r--lasso/xml/disco_service_instance.c26
-rw-r--r--lasso/xml/disco_service_instance.h3
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);