summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederic Peters <fpeters@entrouvert.com>2007-06-19 11:16:17 +0000
committerFrederic Peters <fpeters@entrouvert.com>2007-06-19 11:16:17 +0000
commitd816d74c1ab629abbf733577b4e53fafb9c9d5f0 (patch)
tree1f57558debe214b69a1feaa0462735ffc37b36de
parenteefdf3b58697539f0113eb3e76b5e8d83fd1da56 (diff)
downloadlasso-d816d74c1ab629abbf733577b4e53fafb9c9d5f0.tar.gz
lasso-d816d74c1ab629abbf733577b4e53fafb9c9d5f0.tar.xz
lasso-d816d74c1ab629abbf733577b4e53fafb9c9d5f0.zip
fixed class hierarchy, with ID-WSF 2 specific stuffs going into
LassoIdWsf2Profile (which now inherits from LassoProfile).
-rw-r--r--lasso/id-ff/profile.c11
-rw-r--r--lasso/id-ff/profileprivate.h2
-rw-r--r--lasso/id-wsf-2.0/data_service.c49
-rw-r--r--lasso/id-wsf-2.0/data_service.h7
-rw-r--r--lasso/id-wsf-2.0/discovery.c133
-rw-r--r--lasso/id-wsf-2.0/discovery.h17
-rw-r--r--lasso/id-wsf-2.0/profile.c134
-rw-r--r--lasso/id-wsf-2.0/profile.h49
-rw-r--r--swig/Lasso-wsf2.i8
9 files changed, 248 insertions, 162 deletions
diff --git a/lasso/id-ff/profile.c b/lasso/id-ff/profile.c
index 82952472..bab56e1c 100644
--- a/lasso/id-ff/profile.c
+++ b/lasso/id-ff/profile.c
@@ -508,15 +508,6 @@ dispose(GObject *object)
g_free(profile->private_data->artifact_message);
profile->private_data->artifact_message = NULL;
- if (profile->private_data->soap_envelope_request != NULL) {
- lasso_node_destroy(LASSO_NODE(profile->private_data->soap_envelope_request));
- profile->private_data->soap_envelope_request = NULL;
- }
- if (profile->private_data->soap_envelope_response != NULL) {
- lasso_node_destroy(LASSO_NODE(profile->private_data->soap_envelope_response));
- profile->private_data->soap_envelope_response = NULL;
- }
-
G_OBJECT_CLASS(parent_class)->dispose(G_OBJECT(profile));
}
@@ -539,8 +530,6 @@ instance_init(LassoProfile *profile)
profile->private_data->dispose_has_run = FALSE;
profile->private_data->artifact = NULL;
profile->private_data->artifact_message = NULL;
- profile->private_data->soap_envelope_request = NULL;
- profile->private_data->soap_envelope_response = NULL;
profile->server = NULL;
profile->request = NULL;
diff --git a/lasso/id-ff/profileprivate.h b/lasso/id-ff/profileprivate.h
index e96ffbb1..7f484fb4 100644
--- a/lasso/id-ff/profileprivate.h
+++ b/lasso/id-ff/profileprivate.h
@@ -38,8 +38,6 @@ struct _LassoProfilePrivate
{
char *artifact;
char *artifact_message;
- LassoSoapEnvelope *soap_envelope_request;
- LassoSoapEnvelope *soap_envelope_response;
gboolean dispose_has_run;
};
diff --git a/lasso/id-wsf-2.0/data_service.c b/lasso/id-wsf-2.0/data_service.c
index 9300d7a3..510bd2ae 100644
--- a/lasso/id-wsf-2.0/data_service.c
+++ b/lasso/id-wsf-2.0/data_service.c
@@ -48,7 +48,7 @@ struct _LassoIdWsf2DataServicePrivate
gint
lasso_idwsf2_data_service_init_query(LassoIdWsf2DataService *service)
{
- LassoProfile *profile = LASSO_PROFILE(service);
+ LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(service);
LassoIdWsf2DstRefQuery *query;
LassoWsAddrEndpointReference *epr;
GList *metadata_item;
@@ -60,10 +60,10 @@ lasso_idwsf2_data_service_init_query(LassoIdWsf2DataService *service)
query = lasso_idwsf2_dstref_query_new();
- if (profile->request) {
- lasso_node_destroy(LASSO_NODE(profile->request));
+ if (LASSO_PROFILE(profile)->request) {
+ lasso_node_destroy(LASSO_NODE(LASSO_PROFILE(profile)->request));
}
- profile->request = LASSO_NODE(query);
+ LASSO_PROFILE(profile)->request = LASSO_NODE(query);
if (service == NULL || service->private_data == NULL
|| service->private_data->epr == NULL
@@ -97,7 +97,7 @@ lasso_idwsf2_data_service_init_query(LassoIdWsf2DataService *service)
/* Set msg_url as epr address, which is the SoapEndpoint */
if (epr->Address != NULL) {
- profile->msg_url = g_strdup(epr->Address->content);
+ LASSO_PROFILE(profile)->msg_url = g_strdup(epr->Address->content);
} else {
return LASSO_PROFILE_ERROR_MISSING_ENDPOINT_REFERENCE_ADDRESS;
}
@@ -109,7 +109,7 @@ gint
lasso_idwsf2_data_service_add_query_item(LassoIdWsf2DataService *service, const gchar *item_xpath,
const gchar *item_id)
{
- LassoProfile *profile = LASSO_PROFILE(service);
+ LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(service);
LassoIdWsf2DstRefQuery *query;
LassoIdWsf2DstRefQueryItem *item;
@@ -118,11 +118,11 @@ lasso_idwsf2_data_service_add_query_item(LassoIdWsf2DataService *service, const
g_return_val_if_fail(item_xpath != NULL, LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
g_return_val_if_fail(item_id != NULL, LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
- if (! LASSO_IS_IDWSF2_DSTREF_QUERY(profile->request)) {
+ if (! LASSO_IS_IDWSF2_DSTREF_QUERY(LASSO_PROFILE(profile)->request)) {
return LASSO_PROFILE_ERROR_MISSING_REQUEST;
}
- query = LASSO_IDWSF2_DSTREF_QUERY(profile->request);
+ query = LASSO_IDWSF2_DSTREF_QUERY(LASSO_PROFILE(profile)->request);
item = lasso_idwsf2_dstref_query_item_new_full(item_xpath, item_id);
query->QueryItem = g_list_append(query->QueryItem, item);
@@ -133,7 +133,7 @@ lasso_idwsf2_data_service_add_query_item(LassoIdWsf2DataService *service, const
gint
lasso_idwsf2_data_service_process_query_msg(LassoIdWsf2DataService *service, const gchar *message)
{
- LassoProfile *profile = LASSO_PROFILE(service);
+ LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(service);
int res = 0;
g_return_val_if_fail(LASSO_IS_IDWSF2_DATA_SERVICE(service),
@@ -142,11 +142,11 @@ lasso_idwsf2_data_service_process_query_msg(LassoIdWsf2DataService *service, con
res = lasso_idwsf2_profile_process_soap_request_msg(profile, message);
- if (! LASSO_IS_IDWSF2_DSTREF_QUERY(profile->request)) {
+ if (! LASSO_IS_IDWSF2_DSTREF_QUERY(LASSO_PROFILE(profile)->request)) {
res = LASSO_PROFILE_ERROR_INVALID_SOAP_MSG;
} else {
- service->type = g_strdup(
- LASSO_IDWSF2_DSTREF_QUERY(profile->request)->hrefServiceType);
+ service->type = g_strdup(LASSO_IDWSF2_DSTREF_QUERY(
+ LASSO_PROFILE(profile)->request)->hrefServiceType);
}
return res;
@@ -155,7 +155,7 @@ lasso_idwsf2_data_service_process_query_msg(LassoIdWsf2DataService *service, con
gint
lasso_idwsf2_data_service_parse_query_items(LassoIdWsf2DataService *service)
{
- LassoProfile *profile = LASSO_PROFILE(service);
+ LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(service);
LassoIdWsf2DstRefQuery *request;
LassoIdWsf2DstRefQueryResponse *response;
LassoIdWsf2UtilResponse *response2;
@@ -175,17 +175,17 @@ lasso_idwsf2_data_service_parse_query_items(LassoIdWsf2DataService *service)
g_return_val_if_fail(LASSO_IS_IDWSF2_DATA_SERVICE(service),
LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
- if (! LASSO_IS_IDWSF2_DSTREF_QUERY(profile->request)) {
+ if (! LASSO_IS_IDWSF2_DSTREF_QUERY(LASSO_PROFILE(profile)->request)) {
return LASSO_PROFILE_ERROR_MISSING_REQUEST;
}
- request = LASSO_IDWSF2_DSTREF_QUERY(profile->request);
+ request = LASSO_IDWSF2_DSTREF_QUERY(LASSO_PROFILE(profile)->request);
/* Response envelope and body */
- envelope = profile->private_data->soap_envelope_response;
+ envelope = profile->soap_envelope_response;
response = lasso_idwsf2_dstref_query_response_new();
response->prefixServiceType = g_strdup(request->prefixServiceType);
response->hrefServiceType = g_strdup(request->hrefServiceType);
- profile->response = LASSO_NODE(response);
+ LASSO_PROFILE(profile)->response = LASSO_NODE(response);
envelope->Body->any = g_list_append(envelope->Body->any, response);
response2 = LASSO_IDWSF2_UTIL_RESPONSE(response);
@@ -256,7 +256,7 @@ gint
lasso_idwsf2_data_service_process_query_response_msg(LassoIdWsf2DataService *service,
const gchar *message)
{
- LassoProfile *profile = LASSO_PROFILE(service);
+ LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(service);
LassoIdWsf2UtilResponse *response;
int res;
@@ -269,12 +269,12 @@ lasso_idwsf2_data_service_process_query_response_msg(LassoIdWsf2DataService *ser
return res;
}
- if (! LASSO_IS_IDWSF2_DSTREF_QUERY_RESPONSE(profile->response)) {
+ if (! LASSO_IS_IDWSF2_DSTREF_QUERY_RESPONSE(LASSO_PROFILE(profile)->response)) {
return LASSO_PROFILE_ERROR_INVALID_SOAP_MSG;
}
/* Check response status code */
- response = LASSO_IDWSF2_UTIL_RESPONSE(profile->response);
+ response = LASSO_IDWSF2_UTIL_RESPONSE(LASSO_PROFILE(profile)->response);
if (response->Status == NULL || response->Status->code == NULL) {
return LASSO_PROFILE_ERROR_MISSING_STATUS_CODE;
}
@@ -290,16 +290,17 @@ lasso_idwsf2_data_service_process_query_response_msg(LassoIdWsf2DataService *ser
xmlNode*
lasso_idwsf2_data_service_get_attribute_node(LassoIdWsf2DataService *service, const gchar *item_id)
{
- LassoProfile *profile = LASSO_PROFILE(service);
+ LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(service);
LassoIdWsf2DstRefQueryResponse *response;
LassoIdWsf2DstRefItemData *data = NULL;
GList *iter;
g_return_val_if_fail(LASSO_IS_IDWSF2_DATA_SERVICE(service), NULL);
- g_return_val_if_fail(LASSO_IS_IDWSF2_DSTREF_QUERY_RESPONSE(profile->response), NULL);
+ g_return_val_if_fail(LASSO_IS_IDWSF2_DSTREF_QUERY_RESPONSE(
+ LASSO_PROFILE(profile)->response), NULL);
- response = LASSO_IDWSF2_DSTREF_QUERY_RESPONSE(profile->response);
+ response = LASSO_IDWSF2_DSTREF_QUERY_RESPONSE(LASSO_PROFILE(profile)->response);
/* If no item_id is given, return the first item */
if (item_id == NULL && response->Data != NULL && response->Data->data != NULL) {
@@ -429,7 +430,7 @@ lasso_idwsf2_data_service_get_type()
(GInstanceInitFunc) instance_init,
};
- this_type = g_type_register_static(LASSO_TYPE_PROFILE,
+ this_type = g_type_register_static(LASSO_TYPE_IDWSF2_PROFILE,
"LassoIdWsf2DataService", &this_info, 0);
}
return this_type;
diff --git a/lasso/id-wsf-2.0/data_service.h b/lasso/id-wsf-2.0/data_service.h
index 46f0e4f1..d3a3f669 100644
--- a/lasso/id-wsf-2.0/data_service.h
+++ b/lasso/id-wsf-2.0/data_service.h
@@ -31,11 +31,8 @@ extern "C" {
#endif /* __cplusplus */
#include <lasso/id-wsf-2.0/profile.h>
-
#include <lasso/xml/xml.h>
-
#include <lasso/xml/id-wsf-2.0/dstref_query_item.h>
-
#include <lasso/xml/ws/wsa_endpoint_reference.h>
@@ -56,7 +53,7 @@ typedef struct _LassoIdWsf2DataServiceClass LassoIdWsf2DataServiceClass;
typedef struct _LassoIdWsf2DataServicePrivate LassoIdWsf2DataServicePrivate;
struct _LassoIdWsf2DataService {
- LassoProfile parent;
+ LassoIdWsf2Profile parent;
/*< public >*/
xmlNode *data;
@@ -67,7 +64,7 @@ struct _LassoIdWsf2DataService {
};
struct _LassoIdWsf2DataServiceClass {
- LassoProfileClass parent;
+ LassoIdWsf2ProfileClass parent;
};
LASSO_EXPORT GType lasso_idwsf2_data_service_get_type(void);
diff --git a/lasso/id-wsf-2.0/discovery.c b/lasso/id-wsf-2.0/discovery.c
index eddb2643..a367a744 100644
--- a/lasso/id-wsf-2.0/discovery.c
+++ b/lasso/id-wsf-2.0/discovery.c
@@ -88,7 +88,7 @@ lasso_idwsf2_discovery_metadata_register_self(LassoIdWsf2Discovery *discovery,
const gchar *service_type, const gchar *abstract,
const gchar *soap_endpoint, const gchar *svcMDID)
{
- LassoProfile *profile = LASSO_PROFILE(discovery);
+ LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery);
LassoProvider *provider;
gchar *provider_id;
LassoIdWsf2DiscoSvcMetadata *metadata;
@@ -99,7 +99,7 @@ lasso_idwsf2_discovery_metadata_register_self(LassoIdWsf2Discovery *discovery,
g_return_val_if_fail(abstract != NULL, NULL);
g_return_val_if_fail(soap_endpoint != NULL, NULL);
- provider = LASSO_PROVIDER(profile->server);
+ provider = LASSO_PROVIDER(LASSO_PROFILE(profile)->server);
provider_id = provider->ProviderID;
metadata = lasso_idwsf2_disco_svc_metadata_new_full(
@@ -115,7 +115,7 @@ lasso_idwsf2_discovery_metadata_register_self(LassoIdWsf2Discovery *discovery,
}
/* Add the metadata into the server object */
- lasso_server_add_svc_metadata(profile->server, metadata);
+ lasso_server_add_svc_metadata(LASSO_PROFILE(profile)->server, metadata);
return g_strdup(metadata->svcMDID);
}
@@ -125,7 +125,7 @@ lasso_idwsf2_discovery_init_metadata_register(LassoIdWsf2Discovery *discovery,
const gchar *service_type, const gchar *abstract,
const gchar *disco_provider_id, const gchar *soap_endpoint)
{
- LassoProfile *profile = LASSO_PROFILE(discovery);
+ LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery);
LassoIdWsf2DiscoSvcMDRegister *metadata_register;
LassoProvider *provider;
gchar *sp_provider_id;
@@ -138,7 +138,7 @@ lasso_idwsf2_discovery_init_metadata_register(LassoIdWsf2Discovery *discovery,
g_return_val_if_fail(soap_endpoint != NULL, LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
/* Get the providerId of this SP */
- provider = LASSO_PROVIDER(profile->server);
+ provider = LASSO_PROVIDER(LASSO_PROFILE(profile)->server);
sp_provider_id = provider->ProviderID;
/* Get a MetadataRegister node */
@@ -159,7 +159,7 @@ gint
lasso_idwsf2_discovery_process_metadata_register_msg(LassoIdWsf2Discovery *discovery,
const gchar *message)
{
- LassoProfile *profile = LASSO_PROFILE(discovery);
+ LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery);
LassoIdWsf2DiscoSvcMDRegister *request;
LassoIdWsf2DiscoSvcMDRegisterResponse *response;
LassoSoapEnvelope *envelope;
@@ -173,14 +173,14 @@ lasso_idwsf2_discovery_process_metadata_register_msg(LassoIdWsf2Discovery *disco
/* Process request */
res = lasso_idwsf2_profile_process_soap_request_msg(profile, message);
- if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_REGISTER(profile->request)) {
+ if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_REGISTER(LASSO_PROFILE(profile)->request)) {
res = LASSO_PROFILE_ERROR_INVALID_SOAP_MSG;
}
/* If the request has been correctly processed, */
/* put interesting data into the discovery object */
if (res == 0) {
- request = LASSO_IDWSF2_DISCO_SVC_MD_REGISTER(profile->request);
+ request = LASSO_IDWSF2_DISCO_SVC_MD_REGISTER(LASSO_PROFILE(profile)->request);
/* FIXME : foreach on the list instead */
if (request != NULL && request->metadata_list != NULL) {
discovery->metadata =
@@ -190,7 +190,8 @@ lasso_idwsf2_discovery_process_metadata_register_msg(LassoIdWsf2Discovery *disco
unique_id[32] = 0;
discovery->metadata->svcMDID = g_strdup(unique_id);
/* Add the metadata into the server object */
- lasso_server_add_svc_metadata(profile->server, discovery->metadata);
+ lasso_server_add_svc_metadata(LASSO_PROFILE(profile)->server,
+ discovery->metadata);
}
}
@@ -207,7 +208,7 @@ lasso_idwsf2_discovery_process_metadata_register_msg(LassoIdWsf2Discovery *disco
/* XXX : May add secondary status codes here */
}
- envelope = profile->private_data->soap_envelope_response;
+ envelope = profile->soap_envelope_response;
envelope->Body->any = g_list_append(envelope->Body->any, response);
return res;
@@ -217,7 +218,7 @@ gint
lasso_idwsf2_discovery_process_metadata_register_response_msg(LassoIdWsf2Discovery *discovery,
const gchar *message)
{
- LassoProfile *profile = LASSO_PROFILE(discovery);
+ LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery);
LassoIdWsf2DiscoSvcMDRegisterResponse *response;
int res = 0;
@@ -228,14 +229,15 @@ lasso_idwsf2_discovery_process_metadata_register_response_msg(LassoIdWsf2Discove
/* Process request */
res = lasso_idwsf2_profile_process_soap_response_msg(profile, message);
- if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_REGISTER_RESPONSE(profile->response)) {
+ if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_REGISTER_RESPONSE(LASSO_PROFILE(profile)->response)) {
res = LASSO_PROFILE_ERROR_INVALID_SOAP_MSG;
}
/* If the response has been correctly processed, */
/* put interesting data into the discovery object */
if (res == 0) {
- response = LASSO_IDWSF2_DISCO_SVC_MD_REGISTER_RESPONSE(profile->response);
+ response = LASSO_IDWSF2_DISCO_SVC_MD_REGISTER_RESPONSE(
+ LASSO_PROFILE(profile)->response);
/* FIXME : foreach on the list instead */
if (response->SvcMDID != NULL) {
discovery->svcMDID = g_strdup(response->SvcMDID->data);
@@ -252,8 +254,8 @@ gint
lasso_idwsf2_discovery_init_metadata_association_add(LassoIdWsf2Discovery *discovery,
const gchar *svcMDID)
{
- LassoProfile *profile = LASSO_PROFILE(discovery);
- LassoSession *session = profile->session;
+ LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery);
+ LassoSession *session = LASSO_PROFILE(profile)->session;
LassoIdWsf2DiscoSvcMDAssociationAdd *md_association_add;
LassoWsAddrEndpointReference *epr;
@@ -273,7 +275,7 @@ lasso_idwsf2_discovery_init_metadata_association_add(LassoIdWsf2Discovery *disco
epr = lasso_session_get_endpoint_reference(session, LASSO_IDWSF2_DISCO_HREF);
if (epr != NULL) {
- profile->msg_url = g_strdup(epr->Address->content);
+ LASSO_PROFILE(profile)->msg_url = g_strdup(epr->Address->content);
}
return 0;
@@ -283,7 +285,7 @@ gint
lasso_idwsf2_discovery_process_metadata_association_add_msg(LassoIdWsf2Discovery *discovery,
const gchar *message)
{
- LassoProfile *profile = LASSO_PROFILE(discovery);
+ LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery);
LassoIdWsf2DiscoSvcMDAssociationAddResponse *response;
LassoSoapEnvelope *envelope;
int res = 0;
@@ -295,17 +297,17 @@ lasso_idwsf2_discovery_process_metadata_association_add_msg(LassoIdWsf2Discovery
/* Process request */
res = lasso_idwsf2_profile_process_soap_request_msg(profile, message);
- if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD(profile->request)) {
+ if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD(LASSO_PROFILE(profile)->request)) {
res = LASSO_PROFILE_ERROR_INVALID_SOAP_MSG;
}
/* Build response */
response = lasso_idwsf2_disco_svc_md_association_add_response_new();
- envelope = profile->private_data->soap_envelope_response;
+ envelope = profile->soap_envelope_response;
envelope->Body->any = g_list_append(envelope->Body->any, response);
- profile->response = LASSO_NODE(response);
+ LASSO_PROFILE(profile)->response = LASSO_NODE(response);
return res;
}
@@ -313,7 +315,7 @@ lasso_idwsf2_discovery_process_metadata_association_add_msg(LassoIdWsf2Discovery
gint
lasso_idwsf2_discovery_register_metadata(LassoIdWsf2Discovery *discovery)
{
- LassoProfile *profile = LASSO_PROFILE(discovery);
+ LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery);
LassoIdWsf2DiscoSvcMDAssociationAdd *request;
LassoIdWsf2DiscoSvcMDAssociationAddResponse *response;
LassoIdentity *identity;
@@ -324,27 +326,29 @@ lasso_idwsf2_discovery_register_metadata(LassoIdWsf2Discovery *discovery)
LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
/* verify if identity already exists else create it */
- if (profile->identity == NULL) {
- profile->identity = lasso_identity_new();
+ if (LASSO_PROFILE(profile)->identity == NULL) {
+ LASSO_PROFILE(profile)->identity = lasso_identity_new();
}
- identity = profile->identity;
+ identity = LASSO_PROFILE(profile)->identity;
- if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD(profile->request)) {
+ if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD(LASSO_PROFILE(profile)->request)) {
res = LASSO_PROFILE_ERROR_INVALID_SOAP_MSG;
- } else if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_RESPONSE(profile->response)) {
+ } else if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_RESPONSE(
+ LASSO_PROFILE(profile)->response)) {
res = LASSO_PROFILE_ERROR_MISSING_RESPONSE;
}
/* If the request has been correctly processed, */
/* put interesting data into the discovery object */
- request = LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD(profile->request);
+ request = LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD(LASSO_PROFILE(profile)->request);
/* Copy the service metadatas with given svcMDIDs into the identity object */
for (i = g_list_first(request->SvcMDID); i != NULL; i = g_list_next(i)) {
lasso_identity_add_svc_md_id(identity, (gchar *)(i->data));
}
/* Set response status code */
- response = LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_RESPONSE(profile->response);
+ response = LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_RESPONSE(
+ LASSO_PROFILE(profile)->response);
if (res == 0) {
response->Status = lasso_util_status_new(LASSO_DISCO_STATUS_CODE_OK);
} else {
@@ -358,7 +362,7 @@ gint
lasso_idwsf2_discovery_process_metadata_association_add_response_msg(
LassoIdWsf2Discovery *discovery, const gchar *message)
{
- LassoProfile *profile = LASSO_PROFILE(discovery);
+ LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery);
LassoIdWsf2DiscoSvcMDAssociationAddResponse *response;
int res = 0;
@@ -372,12 +376,14 @@ lasso_idwsf2_discovery_process_metadata_association_add_response_msg(
return res;
}
- if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_RESPONSE(profile->response)) {
+ if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_RESPONSE(
+ LASSO_PROFILE(profile)->response)) {
return LASSO_PROFILE_ERROR_INVALID_SOAP_MSG;
}
/* Check response status code */
- response = LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_RESPONSE(profile->response);
+ response = LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_RESPONSE(
+ LASSO_PROFILE(profile)->response);
if (response->Status == NULL || response->Status->code == NULL) {
return LASSO_PROFILE_ERROR_MISSING_STATUS_CODE;
}
@@ -399,8 +405,8 @@ lasso_idwsf2_discovery_process_metadata_association_add_response_msg(
gint
lasso_idwsf2_discovery_init_query(LassoIdWsf2Discovery *discovery, const gchar *security_mech_id)
{
- LassoProfile *profile = LASSO_PROFILE(discovery);
- LassoSession *session = profile->session;
+ LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery);
+ LassoSession *session = LASSO_PROFILE(profile)->session;
LassoWsAddrEndpointReference *epr;
g_return_val_if_fail(LASSO_IS_IDWSF2_DISCOVERY(discovery),
@@ -408,16 +414,17 @@ lasso_idwsf2_discovery_init_query(LassoIdWsf2Discovery *discovery, const gchar *
g_return_val_if_fail(LASSO_IS_SESSION(session), LASSO_PROFILE_ERROR_SESSION_NOT_FOUND);
- if (profile->request) {
- lasso_node_destroy(LASSO_NODE(profile->request));
+ if (LASSO_PROFILE(profile)->request) {
+ lasso_node_destroy(LASSO_NODE(LASSO_PROFILE(profile)->request));
}
- profile->request = LASSO_NODE(lasso_idwsf2_disco_query_new());
+ LASSO_PROFILE(profile)->request = LASSO_NODE(lasso_idwsf2_disco_query_new());
- lasso_idwsf2_profile_init_soap_request(profile, profile->request, LASSO_IDWSF2_DISCO_HREF);
+ lasso_idwsf2_profile_init_soap_request(profile,
+ LASSO_PROFILE(profile)->request, LASSO_IDWSF2_DISCO_HREF);
epr = lasso_session_get_endpoint_reference(session, LASSO_IDWSF2_DISCO_HREF);
if (epr != NULL) {
- profile->msg_url = g_strdup(epr->Address->content);
+ LASSO_PROFILE(profile)->msg_url = g_strdup(epr->Address->content);
}
return 0;
@@ -427,17 +434,17 @@ gint
lasso_idwsf2_discovery_add_requested_service_type(LassoIdWsf2Discovery *discovery,
const gchar *service_type)
{
- LassoProfile *profile = LASSO_PROFILE(discovery);
+ LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery);
LassoIdWsf2DiscoQuery *query;
LassoIdWsf2DiscoRequestedService *service;
g_return_val_if_fail(LASSO_IS_IDWSF2_DISCOVERY(discovery),
LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
- g_return_val_if_fail(LASSO_IS_IDWSF2_DISCO_QUERY(profile->request),
+ g_return_val_if_fail(LASSO_IS_IDWSF2_DISCO_QUERY(LASSO_PROFILE(profile)->request),
LASSO_PROFILE_ERROR_MISSING_REQUEST);
- query = LASSO_IDWSF2_DISCO_QUERY(profile->request);
+ query = LASSO_IDWSF2_DISCO_QUERY(LASSO_PROFILE(profile)->request);
service = lasso_idwsf2_disco_requested_service_new();
service->ServiceType = g_list_append(service->ServiceType, g_strdup(service_type));
query->RequestedService = g_list_append(query->RequestedService, service);
@@ -448,7 +455,7 @@ lasso_idwsf2_discovery_add_requested_service_type(LassoIdWsf2Discovery *discover
gint
lasso_idwsf2_discovery_process_query_msg(LassoIdWsf2Discovery *discovery, const gchar *message)
{
- LassoProfile *profile = LASSO_PROFILE(discovery);
+ LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery);
int res = 0;
@@ -459,7 +466,7 @@ lasso_idwsf2_discovery_process_query_msg(LassoIdWsf2Discovery *discovery, const
/* Process request */
res = lasso_idwsf2_profile_process_soap_request_msg(profile, message);
- if (! LASSO_IS_IDWSF2_DISCO_QUERY(profile->request)) {
+ if (! LASSO_IS_IDWSF2_DISCO_QUERY(LASSO_PROFILE(profile)->request)) {
res = LASSO_PROFILE_ERROR_INVALID_SOAP_MSG;
}
@@ -580,9 +587,9 @@ lasso_idwsf2_discovery_build_epr(LassoIdWsf2DiscoRequestedService *service,
gint
lasso_idwsf2_discovery_build_query_response_eprs(LassoIdWsf2Discovery *discovery)
{
- LassoProfile *profile = LASSO_PROFILE(discovery);
- LassoIdentity *identity = profile->identity;
- LassoServer *server = profile->server;
+ LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery);
+ LassoIdentity *identity = LASSO_PROFILE(profile)->identity;
+ LassoServer *server = LASSO_PROFILE(profile)->server;
LassoIdWsf2DiscoQuery* request;
LassoIdWsf2DiscoRequestedService *service = NULL;
LassoIdWsf2DiscoQueryResponse *response;
@@ -590,14 +597,14 @@ lasso_idwsf2_discovery_build_query_response_eprs(LassoIdWsf2Discovery *discovery
LassoSoapEnvelope *envelope;
int res = 0;
- if (! LASSO_IS_IDWSF2_DISCO_QUERY(profile->request)) {
+ if (! LASSO_IS_IDWSF2_DISCO_QUERY(LASSO_PROFILE(profile)->request)) {
res = LASSO_PROFILE_ERROR_MISSING_REQUEST;
} else if (! LASSO_IS_IDENTITY(identity)) {
res = LASSO_PROFILE_ERROR_IDENTITY_NOT_FOUND;
}
if (res == 0) {
- request = LASSO_IDWSF2_DISCO_QUERY(profile->request);
+ request = LASSO_IDWSF2_DISCO_QUERY(LASSO_PROFILE(profile)->request);
/* FIXME : foreach on the list instead */
if (request->RequestedService != NULL) {
service = LASSO_IDWSF2_DISCO_REQUESTED_SERVICE(
@@ -632,7 +639,7 @@ lasso_idwsf2_discovery_build_query_response_eprs(LassoIdWsf2Discovery *discovery
/* XXX : May add secondary status codes here */
}
- envelope = profile->private_data->soap_envelope_response;
+ envelope = profile->soap_envelope_response;
envelope->Body->any = g_list_append(envelope->Body->any, response);
return res;
@@ -642,8 +649,8 @@ gint
lasso_idwsf2_discovery_process_query_response_msg(LassoIdWsf2Discovery *discovery,
const gchar *message)
{
- LassoProfile *profile = LASSO_PROFILE(discovery);
- LassoSession *session = profile->session;
+ LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery);
+ LassoSession *session = LASSO_PROFILE(profile)->session;
LassoIdWsf2DiscoQueryResponse *response;
int res = 0;
@@ -659,12 +666,12 @@ lasso_idwsf2_discovery_process_query_response_msg(LassoIdWsf2Discovery *discover
return res;
}
- if (! LASSO_IS_IDWSF2_DISCO_QUERY_RESPONSE(profile->response)) {
+ if (! LASSO_IS_IDWSF2_DISCO_QUERY_RESPONSE(LASSO_PROFILE(profile)->response)) {
return LASSO_PROFILE_ERROR_INVALID_SOAP_MSG;
}
/* Check response status code */
- response = LASSO_IDWSF2_DISCO_QUERY_RESPONSE(profile->response);
+ response = LASSO_IDWSF2_DISCO_QUERY_RESPONSE(LASSO_PROFILE(profile)->response);
if (response->Status == NULL || response->Status->code == NULL) {
return LASSO_PROFILE_ERROR_MISSING_STATUS_CODE;
}
@@ -674,7 +681,7 @@ lasso_idwsf2_discovery_process_query_response_msg(LassoIdWsf2Discovery *discover
/* If the response has been correctly processed, */
/* put interesting data into the discovery object */
- response = LASSO_IDWSF2_DISCO_QUERY_RESPONSE(profile->response);
+ response = LASSO_IDWSF2_DISCO_QUERY_RESPONSE(LASSO_PROFILE(profile)->response);
/* FIXME : foreach on the list instead */
if (response->EndpointReference != NULL
&& response->EndpointReference->data != NULL) {
@@ -699,19 +706,17 @@ lasso_idwsf2_discovery_process_query_response_msg(LassoIdWsf2Discovery *discover
LassoIdWsf2DataService*
lasso_idwsf2_discovery_get_service(LassoIdWsf2Discovery *discovery, const gchar *service_type)
{
- LassoProfile *profile = LASSO_PROFILE(discovery);
- LassoSession *session = profile->session;
+ LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery);
LassoIdWsf2DiscoQueryResponse *response;
LassoWsAddrEndpointReference *epr = NULL;
LassoIdWsf2DataService *service;
g_return_val_if_fail(LASSO_IS_IDWSF2_DISCOVERY(discovery), NULL);
- g_return_val_if_fail(LASSO_IS_SESSION(session), NULL);
+ g_return_val_if_fail(LASSO_IS_IDWSF2_DISCO_QUERY_RESPONSE(
+ LASSO_PROFILE(profile)->response), NULL);
- g_return_val_if_fail(LASSO_IS_IDWSF2_DISCO_QUERY_RESPONSE(profile->response), NULL);
-
- response = LASSO_IDWSF2_DISCO_QUERY_RESPONSE(profile->response);
+ response = LASSO_IDWSF2_DISCO_QUERY_RESPONSE(LASSO_PROFILE(profile)->response);
/* FIXME : foreach on the list instead */
if (response->EndpointReference != NULL && response->EndpointReference->data != NULL) {
@@ -720,10 +725,8 @@ lasso_idwsf2_discovery_get_service(LassoIdWsf2Discovery *discovery, const gchar
return NULL;
}
- service = lasso_idwsf2_data_service_new_full(profile->server, epr);
-
- /* Copy session to service object (used to get assertion identity token from the session) */
- LASSO_PROFILE(service)->session = g_object_ref(session);
+ service = lasso_idwsf2_data_service_new_full(LASSO_PROFILE(profile)->server, epr);
+ LASSO_PROFILE(service)->session = g_object_ref(LASSO_PROFILE(profile)->session);
return service;
}
@@ -825,7 +828,7 @@ lasso_idwsf2_discovery_get_type()
(GInstanceInitFunc) instance_init,
};
- this_type = g_type_register_static(LASSO_TYPE_PROFILE,
+ this_type = g_type_register_static(LASSO_TYPE_IDWSF2_PROFILE,
"LassoIdWsf2Discovery", &this_info, 0);
}
return this_type;
diff --git a/lasso/id-wsf-2.0/discovery.h b/lasso/id-wsf-2.0/discovery.h
index 07c94fae..211db289 100644
--- a/lasso/id-wsf-2.0/discovery.h
+++ b/lasso/id-wsf-2.0/discovery.h
@@ -42,8 +42,10 @@ extern "C" {
(G_TYPE_CHECK_INSTANCE_CAST((obj), LASSO_TYPE_IDWSF2_DISCOVERY, LassoIdWsf2Discovery))
#define LASSO_IDWSF2_DISCOVERY_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST((klass), LASSO_TYPE_IDWSF2_DISCOVERY, LassoIdWsf2DiscoveryClass))
-#define LASSO_IS_IDWSF2_DISCOVERY(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), LASSO_TYPE_IDWSF2_DISCOVERY))
-#define LASSO_IS_IDWSF2_DISCOVERY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LASSO_TYPE_IDWSF2_DISCOVERY))
+#define LASSO_IS_IDWSF2_DISCOVERY(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj), LASSO_TYPE_IDWSF2_DISCOVERY))
+#define LASSO_IS_IDWSF2_DISCOVERY_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE ((klass), LASSO_TYPE_IDWSF2_DISCOVERY))
#define LASSO_IDWSF2_DISCOVERY_GET_CLASS(o) \
(G_TYPE_INSTANCE_GET_CLASS ((o), LASSO_TYPE_IDWSF2_DISCOVERY, LassoIdWsf2DiscoveryClass))
@@ -52,7 +54,7 @@ typedef struct _LassoIdWsf2DiscoveryClass LassoIdWsf2DiscoveryClass;
typedef struct _LassoIdWsf2DiscoveryPrivate LassoIdWsf2DiscoveryPrivate;
struct _LassoIdWsf2Discovery {
- LassoProfile parent;
+ LassoIdWsf2Profile parent;
/* FIXME : Both should be lists */
LassoIdWsf2DiscoSvcMetadata *metadata;
@@ -63,7 +65,7 @@ struct _LassoIdWsf2Discovery {
};
struct _LassoIdWsf2DiscoveryClass {
- LassoProfileClass parent;
+ LassoIdWsf2ProfileClass parent;
};
LASSO_EXPORT GType lasso_idwsf2_discovery_get_type(void);
@@ -106,10 +108,11 @@ LASSO_EXPORT gint lasso_idwsf2_discovery_add_requested_service_type(LassoIdWsf2D
LASSO_EXPORT gint lasso_idwsf2_discovery_process_query_msg(LassoIdWsf2Discovery *discovery,
const gchar *message);
-LASSO_EXPORT gint lasso_idwsf2_discovery_build_query_response_eprs(LassoIdWsf2Discovery *discovery);
+LASSO_EXPORT gint lasso_idwsf2_discovery_build_query_response_eprs(
+ LassoIdWsf2Discovery *discovery);
-LASSO_EXPORT gint lasso_idwsf2_discovery_process_query_response_msg(LassoIdWsf2Discovery *discovery,
- const gchar *message);
+LASSO_EXPORT gint lasso_idwsf2_discovery_process_query_response_msg(
+ LassoIdWsf2Discovery *discovery, const gchar *message);
LASSO_EXPORT LassoIdWsf2DataService* lasso_idwsf2_discovery_get_service(
LassoIdWsf2Discovery *discovery, const gchar *service_type);
diff --git a/lasso/id-wsf-2.0/profile.c b/lasso/id-wsf-2.0/profile.c
index 0de5b193..8c06df7d 100644
--- a/lasso/id-wsf-2.0/profile.c
+++ b/lasso/id-wsf-2.0/profile.c
@@ -51,7 +51,7 @@
/* private methods */
/*****************************************************************************/
-LassoSoapEnvelope*
+static LassoSoapEnvelope*
lasso_idwsf2_profile_build_soap_envelope(const char *refToMessageId, const char *providerId)
{
LassoSoapEnvelope *envelope;
@@ -83,18 +83,18 @@ lasso_idwsf2_profile_build_soap_envelope(const char *refToMessageId, const char
/*****************************************************************************/
gint
-lasso_idwsf2_profile_init_soap_request(LassoProfile *profile, LassoNode *request,
+lasso_idwsf2_profile_init_soap_request(LassoIdWsf2Profile *profile, LassoNode *request,
gchar *service_type)
{
LassoSoapEnvelope *envelope;
- LassoSession *session = profile->session;
+ LassoSession *session = LASSO_PROFILE(profile)->session;
LassoSaml2Assertion *assertion;
LassoWsse200401Security *wsse_security;
/* Initialise soap envelope */
envelope = lasso_idwsf2_profile_build_soap_envelope(NULL,
- LASSO_PROVIDER(profile->server)->ProviderID);
- profile->private_data->soap_envelope_request = envelope;
+ LASSO_PROVIDER(LASSO_PROFILE(profile)->server)->ProviderID);
+ profile->soap_envelope_request = envelope;
/* Add identity token (if it exists in the session) in soap header */
assertion = lasso_session_get_assertion_identity_token(session, service_type);
@@ -103,7 +103,6 @@ lasso_idwsf2_profile_init_soap_request(LassoProfile *profile, LassoNode *request
wsse_security = lasso_wsse_200401_security_new();
wsse_security->any = g_list_append(wsse_security->any, assertion);
- envelope = profile->private_data->soap_envelope_request;
envelope->Header->Other = g_list_append(envelope->Header->Other, wsse_security);
}
@@ -114,19 +113,19 @@ lasso_idwsf2_profile_init_soap_request(LassoProfile *profile, LassoNode *request
}
gint
-lasso_idwsf2_profile_build_request_msg(LassoProfile *profile)
+lasso_idwsf2_profile_build_request_msg(LassoIdWsf2Profile *profile)
{
- g_return_val_if_fail(LASSO_IS_PROFILE(profile),
+ g_return_val_if_fail(LASSO_IS_IDWSF2_PROFILE(profile),
LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
- profile->msg_body = lasso_node_export_to_xml(LASSO_NODE(
- profile->private_data->soap_envelope_request));
+ LASSO_PROFILE(profile)->msg_body = lasso_node_export_to_xml(
+ LASSO_NODE(profile->soap_envelope_request));
return 0;
}
gint
-lasso_idwsf2_profile_process_soap_request_msg(LassoProfile *profile, const gchar *message)
+lasso_idwsf2_profile_process_soap_request_msg(LassoIdWsf2Profile *profile, const gchar *message)
{
LassoSoapEnvelope *envelope = NULL;
LassoSaml2Assertion *assertion;
@@ -138,18 +137,18 @@ lasso_idwsf2_profile_process_soap_request_msg(LassoProfile *profile, const gchar
GList *j;
int res = 0;
- g_return_val_if_fail(LASSO_IS_PROFILE(profile),
- LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
+ g_return_val_if_fail(LASSO_IS_IDWSF2_PROFILE(profile),
+ LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
g_return_val_if_fail(message != NULL, LASSO_PARAM_ERROR_INVALID_VALUE);
/* Get soap request */
envelope = lasso_soap_envelope_new_from_message(message);
- profile->private_data->soap_envelope_request = envelope;
+ profile->soap_envelope_request = envelope;
- if (profile->nameIdentifier != NULL) {
- lasso_node_destroy(profile->nameIdentifier);
- profile->nameIdentifier = NULL;
+ if (LASSO_PROFILE(profile)->nameIdentifier != NULL) {
+ lasso_node_destroy(LASSO_PROFILE(profile)->nameIdentifier);
+ LASSO_PROFILE(profile)->nameIdentifier = NULL;
}
/* Get NameIdentifier (if exists) from the soap header */
@@ -167,7 +166,8 @@ lasso_idwsf2_profile_process_soap_request_msg(LassoProfile *profile, const gchar
continue;
}
if (LASSO_IS_SAML2_NAME_ID(assertion->Subject->NameID)) {
- profile->nameIdentifier = g_object_ref(assertion->Subject->NameID);
+ LASSO_PROFILE(profile)->nameIdentifier = g_object_ref(
+ assertion->Subject->NameID);
} else if (LASSO_IS_SAML2_ENCRYPTED_ELEMENT(
assertion->Subject->EncryptedID)) {
encrypted_id = assertion->Subject->EncryptedID;
@@ -180,71 +180,137 @@ lasso_idwsf2_profile_process_soap_request_msg(LassoProfile *profile, const gchar
}
/* Decrypt NameID */
- encryption_private_key = profile->server->private_data->encryption_private_key;
- if (profile->nameIdentifier == NULL && encrypted_id != NULL
+ encryption_private_key = LASSO_PROFILE(
+ profile)->server->private_data->encryption_private_key;
+ if (LASSO_PROFILE(profile)->nameIdentifier == NULL && encrypted_id != NULL
&& encryption_private_key != NULL) {
decrypted_name_id = lasso_node_decrypt(encrypted_id, encryption_private_key);
if (LASSO_IS_SAML2_NAME_ID(decrypted_name_id)) {
- profile->nameIdentifier = decrypted_name_id;
+ LASSO_PROFILE(profile)->nameIdentifier = decrypted_name_id;
}
assertion->Subject->EncryptedID = NULL;
}
if (envelope != NULL && envelope->Body != NULL && envelope->Body->any != NULL) {
- profile->request = LASSO_NODE(envelope->Body->any->data);
+ LASSO_PROFILE(profile)->request = LASSO_NODE(envelope->Body->any->data);
} else {
res = LASSO_SOAP_ERROR_MISSING_BODY;
}
- if (profile->request == NULL) {
+ if (LASSO_PROFILE(profile)->request == NULL) {
res = LASSO_PROFILE_ERROR_MISSING_REQUEST;
}
/* Set soap response */
envelope = lasso_idwsf2_profile_build_soap_envelope(NULL,
- LASSO_PROVIDER(profile->server)->ProviderID);
- profile->private_data->soap_envelope_response = envelope;
+ LASSO_PROVIDER(LASSO_PROFILE(profile)->server)->ProviderID);
+ profile->soap_envelope_response = envelope;
return res;
}
gint
-lasso_idwsf2_profile_build_response_msg(LassoProfile *profile)
+lasso_idwsf2_profile_build_response_msg(LassoIdWsf2Profile *profile)
{
- g_return_val_if_fail(LASSO_IS_PROFILE(profile),
+ g_return_val_if_fail(LASSO_IS_IDWSF2_PROFILE(profile),
LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
- profile->msg_body = lasso_node_export_to_xml(LASSO_NODE(
- profile->private_data->soap_envelope_response));
+ LASSO_PROFILE(profile)->msg_body = lasso_node_export_to_xml(LASSO_NODE(
+ profile->soap_envelope_response));
return 0;
}
gint
-lasso_idwsf2_profile_process_soap_response_msg(LassoProfile *profile, const gchar *message)
+lasso_idwsf2_profile_process_soap_response_msg(LassoIdWsf2Profile *profile, const gchar *message)
{
LassoSoapEnvelope *envelope = NULL;
int res = 0;
- g_return_val_if_fail(LASSO_IS_PROFILE(profile),
+ g_return_val_if_fail(LASSO_IS_IDWSF2_PROFILE(profile),
LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
g_return_val_if_fail(message != NULL, LASSO_PARAM_ERROR_INVALID_VALUE);
/* Get soap response */
envelope = lasso_soap_envelope_new_from_message(message);
- profile->private_data->soap_envelope_response = envelope;
+ profile->soap_envelope_response = envelope;
if (envelope != NULL && envelope->Body != NULL && envelope->Body->any != NULL) {
- profile->response = LASSO_NODE(envelope->Body->any->data);
+ LASSO_PROFILE(profile)->response = LASSO_NODE(envelope->Body->any->data);
} else {
res = LASSO_SOAP_ERROR_MISSING_BODY;
}
- if (profile->response == NULL) {
+ if (LASSO_PROFILE(profile)->response == NULL) {
res = LASSO_PROFILE_ERROR_MISSING_RESPONSE;
}
return res;
}
+/*****************************************************************************/
+/* overridden parent class methods */
+/*****************************************************************************/
+
+static LassoNodeClass *parent_class = NULL;
+
+static void
+dispose(GObject *object)
+{
+ LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(object);
+
+ if (profile->soap_envelope_request) {
+ lasso_node_destroy(LASSO_NODE(profile->soap_envelope_request));
+ profile->soap_envelope_request = NULL;
+ }
+
+ if (profile->soap_envelope_response) {
+ lasso_node_destroy(LASSO_NODE(profile->soap_envelope_response));
+ profile->soap_envelope_response = NULL;
+ }
+ G_OBJECT_CLASS(parent_class)->dispose(object);
+}
+
+/*****************************************************************************/
+/* instance and class init functions */
+/*****************************************************************************/
+
+static void
+instance_init(LassoIdWsf2Profile *profile)
+{
+ profile->soap_envelope_request = NULL;
+ profile->soap_envelope_response = NULL;
+}
+
+static void
+class_init(LassoIdWsf2ProfileClass *klass)
+{
+ parent_class = g_type_class_peek_parent(klass);
+
+ G_OBJECT_CLASS(klass)->dispose = dispose;
+}
+
+GType
+lasso_idwsf2_profile_get_type()
+{
+ static GType this_type = 0;
+
+ if (!this_type) {
+ static const GTypeInfo this_info = {
+ sizeof(LassoIdWsf2ProfileClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) class_init,
+ NULL,
+ NULL,
+ sizeof(LassoIdWsf2Profile),
+ 0,
+ (GInstanceInitFunc) instance_init,
+ };
+
+ this_type = g_type_register_static(LASSO_TYPE_PROFILE,
+ "LassoIdWsf2Profile", &this_info, 0);
+ }
+ return this_type;
+}
diff --git a/lasso/id-wsf-2.0/profile.h b/lasso/id-wsf-2.0/profile.h
index 53865de0..26b29ba8 100644
--- a/lasso/id-wsf-2.0/profile.h
+++ b/lasso/id-wsf-2.0/profile.h
@@ -30,25 +30,54 @@ extern "C" {
#endif /* __cplusplus */
#include <lasso/id-ff/profile.h>
-#include <lasso/id-ff/profileprivate.h>
+#include <lasso/xml/soap_envelope.h>
-LASSO_EXPORT gint lasso_idwsf2_profile_init_soap_request(LassoProfile *profile,
+#define LASSO_TYPE_IDWSF2_PROFILE (lasso_idwsf2_profile_get_type())
+#define LASSO_IDWSF2_PROFILE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), \
+ LASSO_TYPE_IDWSF2_PROFILE, LassoIdWsf2Profile))
+#define LASSO_IDWSF2_PROFILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), \
+ LASSO_TYPE_IDWSF2_PROFILE, LassoIdWsf2ProfileClass))
+#define LASSO_IS_IDWSF2_PROFILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
+ LASSO_TYPE_IDWSF2_PROFILE))
+#define LASSO_IS_IDWSF2_PROFILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \
+ LASSO_TYPE_IDWSF2_PROFILE))
+#define LASSO_IDWSF2_PROFILE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), \
+ LASSO_TYPE_IDWSF2_PROFILE, LassoIdWsf2ProfileClass))
+
+
+typedef struct _LassoIdWsf2Profile LassoIdWsf2Profile;
+typedef struct _LassoIdWsf2ProfileClass LassoIdWsf2ProfileClass;
+typedef struct _LassoIdWsf2ProfilePrivate LassoIdWsf2ProfilePrivate;
+
+struct _LassoIdWsf2Profile {
+ LassoProfile parent;
+
+ /*< private >*/
+ LassoSoapEnvelope *soap_envelope_request;
+ LassoSoapEnvelope *soap_envelope_response;
+
+ LassoIdWsf2ProfilePrivate *private_data;
+};
+
+struct _LassoIdWsf2ProfileClass {
+ LassoProfileClass parent;
+};
+
+LASSO_EXPORT GType lasso_idwsf2_profile_get_type(void);
+
+LASSO_EXPORT gint lasso_idwsf2_profile_init_soap_request(LassoIdWsf2Profile *profile,
LassoNode *request, gchar *service_type);
-LASSO_EXPORT gint lasso_idwsf2_profile_build_request_msg(LassoProfile *profile);
+LASSO_EXPORT gint lasso_idwsf2_profile_build_request_msg(LassoIdWsf2Profile *profile);
-LASSO_EXPORT gint lasso_idwsf2_profile_process_soap_request_msg(LassoProfile *profile,
+LASSO_EXPORT gint lasso_idwsf2_profile_process_soap_request_msg(LassoIdWsf2Profile *profile,
const gchar *message);
-LASSO_EXPORT gint lasso_idwsf2_profile_build_response_msg(LassoProfile *profile);
+LASSO_EXPORT gint lasso_idwsf2_profile_build_response_msg(LassoIdWsf2Profile *profile);
-LASSO_EXPORT gint lasso_idwsf2_profile_process_soap_response_msg(LassoProfile *profile,
+LASSO_EXPORT gint lasso_idwsf2_profile_process_soap_response_msg(LassoIdWsf2Profile *profile,
const gchar *message);
-/* Private method */
-LassoSoapEnvelope* lasso_idwsf2_profile_build_soap_envelope(const char *refToMessageId,
- const char *providerId);
-
#ifdef __cplusplus
}
#endif /* __cplusplus */
diff --git a/swig/Lasso-wsf2.i b/swig/Lasso-wsf2.i
index d73a7192..0b2be019 100644
--- a/swig/Lasso-wsf2.i
+++ b/swig/Lasso-wsf2.i
@@ -260,8 +260,8 @@ typedef struct {
#define LassoIdWsf2Discovery_setIdentityFromDump(self, dump) lasso_profile_set_identity_from_dump(LASSO_PROFILE(self), dump)
#define LassoIdWsf2Discovery_setSessionFromDump(self, dump) lasso_profile_set_session_from_dump(LASSO_PROFILE(self), dump)
-#define LassoIdWsf2Discovery_buildRequestMsg(self) lasso_idwsf2_profile_build_request_msg(LASSO_PROFILE(self))
-#define LassoIdWsf2Discovery_buildResponseMsg(self) lasso_idwsf2_profile_build_response_msg(LASSO_PROFILE(self))
+#define LassoIdWsf2Discovery_buildRequestMsg(self) lasso_idwsf2_profile_build_request_msg(LASSO_IDWSF2_PROFILE(self))
+#define LassoIdWsf2Discovery_buildResponseMsg(self) lasso_idwsf2_profile_build_response_msg(LASSO_IDWSF2_PROFILE(self))
/* Methods implementations */
@@ -432,8 +432,8 @@ typedef struct {
/* Implementations of methods inherited from LassoIdWsf2Profile */
-#define LassoIdWsf2DataService_buildRequestMsg(self) lasso_idwsf2_profile_build_request_msg(LASSO_PROFILE(self))
-#define LassoIdWsf2DataService_buildResponseMsg(self) lasso_idwsf2_profile_build_response_msg(LASSO_PROFILE(self))
+#define LassoIdWsf2DataService_buildRequestMsg(self) lasso_idwsf2_profile_build_request_msg(LASSO_IDWSF2_PROFILE(self))
+#define LassoIdWsf2DataService_buildResponseMsg(self) lasso_idwsf2_profile_build_response_msg(LASSO_IDWSF2_PROFILE(self))
/* Methods implementations */
#define LassoIdWsf2DataService_initQuery lasso_idwsf2_data_service_init_query