AXIS2_EXTERN int AXIS2_CALL saml_query_set_subject()

in src/omxmlsec/saml/query.c [898:953]


AXIS2_EXTERN int AXIS2_CALL saml_query_set_subject(saml_query_t* query, const axutil_env_t *env,
												   saml_subject_t *subject)
{
	saml_subject_query_t *sub_q = NULL;
	saml_authentication_query_t *authent_q;
	saml_autho_decision_query_t *autho_de_q;
	saml_attr_query_t *attr_q;
	if(query)
	{
		if(query->type)
		{
			if(!axutil_strcmp(query->type,SAML_SUBJECT_QUERY))
			{
				sub_q = (saml_subject_query_t*)query->query;
				if(sub_q)
				{
					if(sub_q->subject)
					{
						saml_subject_free(sub_q->subject, env);
					}
					sub_q->subject = subject;
				}
			}
			if(!axutil_strcmp(query->type, SAML_AUTHENTICATION_QUERY))
			{
				authent_q = (saml_authentication_query_t*)query->query;
				if(authent_q->subject)
				{
					saml_subject_free(authent_q->subject, env);
				}
				authent_q->subject = subject;
			}
			if(!axutil_strcmp(query->type, SAML_ATTRIBUTE_QUERY))
			{
				attr_q = (saml_attr_query_t*)query->query;
				if(attr_q)
				{
					saml_subject_free(attr_q->subject, env);
				}
				attr_q->subject = subject;
			}
			if(!axutil_strcmp(query->type, SAML_AUTHORIZATION_DECISION_QUERY))
			{
				autho_de_q = (saml_autho_decision_query_t*)query->query;
				if(autho_de_q)
				{
					saml_subject_free(autho_de_q->subject, env);
				}
				autho_de_q->subject = subject;
			}
			
		}
		
	}
	return AXIS2_SUCCESS;
}