Author: supun
Date: Mon Oct 15 23:57:16 2007
New Revision: 585061

URL: http://svn.apache.org/viewvc?rev=585061&view=rev
Log:
Prasad's 5th patch applied.

Modified:
    webservices/rampart/scratch/c/saml/SAML.sln
    webservices/rampart/scratch/c/saml/include/saml_req.h
    webservices/rampart/scratch/c/saml/saml_test.vcproj
    webservices/rampart/scratch/c/saml/src/query.c
    webservices/rampart/scratch/c/saml/src/request.c
    webservices/rampart/scratch/c/saml/src/response.c

Modified: webservices/rampart/scratch/c/saml/SAML.sln
URL: 
http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/SAML.sln?rev=585061&r1=585060&r2=585061&view=diff
==============================================================================
--- webservices/rampart/scratch/c/saml/SAML.sln (original)
+++ webservices/rampart/scratch/c/saml/SAML.sln Mon Oct 15 23:57:16 2007
@@ -3,6 +3,11 @@
 # Visual Studio 2005
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SAML", "SAML.vcproj", 
"{1A433831-8D6F-4A45-8792-8BAE219B44A3}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "saml_test", 
"saml_test.vcproj", "{10D44647-66E0-4DCF-A465-4CD1923D9A47}"
+       ProjectSection(ProjectDependencies) = postProject
+               {1A433831-8D6F-4A45-8792-8BAE219B44A3} = 
{1A433831-8D6F-4A45-8792-8BAE219B44A3}
+       EndProjectSection
+EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
                Debug|Win32 = Debug|Win32
@@ -13,6 +18,10 @@
                {1A433831-8D6F-4A45-8792-8BAE219B44A3}.Debug|Win32.Build.0 = 
Debug|Win32
                {1A433831-8D6F-4A45-8792-8BAE219B44A3}.Release|Win32.ActiveCfg 
= Release|Win32
                {1A433831-8D6F-4A45-8792-8BAE219B44A3}.Release|Win32.Build.0 = 
Release|Win32
+               {10D44647-66E0-4DCF-A465-4CD1923D9A47}.Debug|Win32.ActiveCfg = 
Debug|Win32
+               {10D44647-66E0-4DCF-A465-4CD1923D9A47}.Debug|Win32.Build.0 = 
Debug|Win32
+               {10D44647-66E0-4DCF-A465-4CD1923D9A47}.Release|Win32.ActiveCfg 
= Release|Win32
+               {10D44647-66E0-4DCF-A465-4CD1923D9A47}.Release|Win32.Build.0 = 
Release|Win32
        EndGlobalSection
        GlobalSection(SolutionProperties) = preSolution
                HideSolutionNode = FALSE

Modified: webservices/rampart/scratch/c/saml/include/saml_req.h
URL: 
http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/include/saml_req.h?rev=585061&r1=585060&r2=585061&view=diff
==============================================================================
--- webservices/rampart/scratch/c/saml/include/saml_req.h (original)
+++ webservices/rampart/scratch/c/saml/include/saml_req.h Mon Oct 15 23:57:16 
2007
@@ -55,7 +55,7 @@
     axutil_qname_t *status_value;
     axis2_char_t *status_code;
     axis2_char_t *status_msg;
-    axutil_array_list_t *status_detail;
+    axiom_node_t *status_detail;
 
 }saml_status_t;
 
@@ -109,7 +109,7 @@
     /* time instant of the issue */
     axutil_date_time_t *issue_instant;
     /*optional*/
-    saml_signature_t *signature;
+    axiom_node_t *signature;
 
     /* An array for QNames     
         * specifies the type of statement the SAML relying party wants from the
@@ -139,7 +139,7 @@
 
     axutil_date_time_t *issue_instant;
 
-    saml_signature_t *signature;
+    axiom_node_t *signature;
 
     saml_status_t *status;
 
@@ -149,7 +149,9 @@
 AXIS2_EXTERN int AXIS2_CALL saml_request_init(saml_request_t *request, 
axutil_env_t *env);
 AXIS2_EXTERN int AXIS2_CALL saml_request_uninit(saml_request_t *request, 
axutil_env_t *env);
 AXIS2_EXTERN int AXIS2_CALL saml_request_build(saml_request_t *request, 
axiom_node_t *node, axutil_env_t *env);
-
+AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_request_to_om(saml_request_t 
*request, 
+                                                                               
                                 axiom_node_t *parent, 
+                                                                               
                                 axutil_env_t *env);
 //To do
 AXIS2_EXTERN void AXIS2_CALL saml_request_insert_signature();
 //
@@ -181,6 +183,9 @@
 AXIS2_EXTERN int AXIS2_CALL saml_response_init(saml_response_t *response, 
axutil_env_t *env);
 AXIS2_EXTERN int AXIS2_CALL saml_response_uninit(saml_response_t *response, 
axutil_env_t *env);
 AXIS2_EXTERN int AXIS2_CALL saml_response_build(saml_response_t *response, 
axiom_node_t *node, axutil_env_t *env);
+AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_response_to_om(saml_response_t 
*response, 
+                                                                               
                                  axiom_node_t *parent, 
+                                                                               
                                  axutil_env_t *env);
 //To do
 AXIS2_EXTERN void AXIS2_CALL saml_response_insert_signature();
 //
@@ -292,10 +297,22 @@
 AXIS2_EXTERN int AXIS2_CALL saml_status_init(saml_status_t *status, 
axutil_env_t *env);
 AXIS2_EXTERN int AXIS2_CALL saml_status_uninit(saml_status_t *status, 
axutil_env_t *env);
 AXIS2_EXTERN int AXIS2_CALL saml_status_build(saml_status_t *status, 
axiom_node_t *node, axutil_env_t *env);
-AXIS2_EXTERN saml_status_t* saml_status_create(axutil_env_t *env);
+AXIS2_EXTERN saml_status_t* AXIS2_CALL saml_status_create(axutil_env_t *env);
 AXIS2_EXTERN void saml_status_free(saml_status_t *status, axutil_env_t *env);
+AXIS2_EXTERN int AXIS2_CALL saml_status_set_status_value(saml_status_t 
*status, axutil_qname_t *qname, axutil_env_t *env);
+AXIS2_EXTERN axutil_qname_t* AXIS2_CALL 
saml_status_get_status_value(saml_status_t *status, axutil_env_t *env);
+AXIS2_EXTERN int AXIS2_CALL saml_status_set_status_msg(saml_status_t *status, 
axis2_char_t *msg, axutil_env_t *env);
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_status_get_status_msg(saml_status_t 
*status, axutil_env_t *env);
+AXIS2_EXTERN int AXIS2_CALL saml_status_set_status_detail(saml_status_t 
*status, axiom_node_t *det, axutil_env_t *env);
+AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
saml_status_get_status_detail(saml_status_t *status, axutil_env_t *env);
+
+
+
+
 AXIS2_EXTERN saml_artifact_t* AXIS2_CALL saml_artifact_create(axutil_env_t 
*env);
 AXIS2_EXTERN int AXIS2_CALL saml_artifact_init(saml_artifact_t *artifact, 
axutil_env_t *env);
 AXIS2_EXTERN int AXIS2_CALL saml_artifact_uninit(saml_artifact_t *artifact, 
axutil_env_t *env);
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_artifact_get_data(saml_artifact_t 
*artifact, axutil_env_t *env);
+AXIS2_EXTERN int AXIS2_CALL saml_artifact_set_data(saml_artifact_t *artifact, 
axutil_env_t *env, axis2_char_t *data);
 
 #endif 

Modified: webservices/rampart/scratch/c/saml/saml_test.vcproj
URL: 
http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/saml_test.vcproj?rev=585061&r1=585060&r2=585061&view=diff
==============================================================================
--- webservices/rampart/scratch/c/saml/saml_test.vcproj (original)
+++ webservices/rampart/scratch/c/saml/saml_test.vcproj Mon Oct 15 23:57:16 2007
@@ -40,6 +40,7 @@
                        <Tool
                                Name="VCCLCompilerTool"
                                Optimization="0"
+                               
AdditionalIncludeDirectories="./include;E:\axis2c\util\include;E:\axis2c\axiom\include;"
                                PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
                                MinimalRebuild="true"
                                BasicRuntimeChecks="3"
@@ -60,7 +61,9 @@
                        />
                        <Tool
                                Name="VCLinkerTool"
+                               AdditionalDependencies="saml.lib axutil.lib 
axiom.lib"
                                LinkIncremental="2"
+                               
AdditionalLibraryDirectories="./debug;E:\axis2c\build\deploy\lib"
                                GenerateDebugInformation="true"
                                SubSystem="1"
                                TargetMachine="1"
@@ -175,7 +178,7 @@
                        
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
                        >
                        <File
-                               RelativePath=".\test_main.c"
+                               RelativePath=".\src\test.c"
                                >
                        </File>
                </Filter>

Modified: webservices/rampart/scratch/c/saml/src/query.c
URL: 
http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/src/query.c?rev=585061&r1=585060&r2=585061&view=diff
==============================================================================
--- webservices/rampart/scratch/c/saml/src/query.c (original)
+++ webservices/rampart/scratch/c/saml/src/query.c Mon Oct 15 23:57:16 2007
@@ -107,12 +107,25 @@
                                                                                
                                axutil_env_t *env)
 {
        int i = 0, size = 0;
+       saml_attr_desig_t *attr_desig = NULL;
+
        if(attribute_query->resource)
        {
                AXIS2_FREE(env->allocator, attribute_query->resource);
        }
        if(attribute_query->attr_desigs)
        {
+               size = axutil_array_list_size(attribute_query->attr_desigs, 
env);
+               for(i = 0; i< size ; i++)
+               {
+                       attr_desig = 
(saml_attr_desig_t*)axutil_array_list_get(attribute_query->attr_desigs, env, i);
+
+                       if(attr_desig)
+                       {
+                               saml_attr_desig_uninit(attr_desig, env);
+                               AXIS2_FREE(env->allocator,attribute_query);
+                       }
+               }
                axutil_array_list_free(attribute_query->attr_desigs, env);
        }
        if (attribute_query->subject)
@@ -139,7 +152,7 @@
                
                autho_decision_query->resource = NULL;
                autho_decision_query->saml_actions = 
axutil_array_list_create(env, 
-                                                                               
                AXIS2_ARRAY_LIST_DEFAULT_CAPACITY);
+                                                                               
                SAML_ARRAY_LIST_DEF);
                autho_decision_query->evidence = saml_evidence_create(env);
        }
        return autho_decision_query;
@@ -774,6 +787,17 @@
        return AXIS2_SUCCESS;
 }
 
+AXIS2_EXTERN int AXIS2_CALL saml_attr_query_set_resource(saml_attr_query_t 
*attr_query, axutil_env_t *env, axis2_char_t *resource)
+{
+       if(attr_query->resource)
+       {
+               AXIS2_FREE(env->allocator, attr_query->resource);
+       }
+       attr_query->resource = resource;
+
+       return AXIS2_SUCCESS;
+}
+
 AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
saml_auth_query_get_authentication_method(saml_authentication_query_t 
*authentication_query,
                                                                                
                                        axutil_env_t *env)
 {
@@ -818,7 +842,7 @@
 {
        if(!attr_query->attr_desigs)
        {
-               axutil_array_list_create(env, 
AXIS2_ARRAY_LIST_DEFAULT_CAPACITY);
+               axutil_array_list_create(env, SAML_ARRAY_LIST_DEF);
        }
        axutil_array_list_add(attr_query->attr_desigs, env, desig);
        return AXIS2_SUCCESS;
@@ -889,7 +913,7 @@
 {
        if(!autho_dec_query->saml_actions)
        {
-               axutil_array_list_create(env, 
AXIS2_ARRAY_LIST_DEFAULT_CAPACITY);
+               axutil_array_list_create(env, SAML_ARRAY_LIST_DEF);
        }
        if(autho_dec_query->saml_actions)
        {

Modified: webservices/rampart/scratch/c/saml/src/request.c
URL: 
http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/src/request.c?rev=585061&r1=585060&r2=585061&view=diff
==============================================================================
--- webservices/rampart/scratch/c/saml/src/request.c (original)
+++ webservices/rampart/scratch/c/saml/src/request.c Mon Oct 15 23:57:16 2007
@@ -43,6 +43,24 @@
        return AXIS2_SUCCESS;
 }
 
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_artifact_get_data(saml_artifact_t 
*artifact, axutil_env_t *env)
+{
+       if(artifact)
+               return artifact->artifact;
+       else
+               return NULL;
+}
+AXIS2_EXTERN int AXIS2_CALL saml_artifact_set_data(saml_artifact_t *artifact, 
axutil_env_t *env, axis2_char_t *data)
+{
+       if(artifact->artifact)
+       {
+               AXIS2_FREE(env->allocator, artifact->artifact);
+       }
+       artifact->artifact = data;
+
+       return AXIS2_SUCCESS;
+}
+
 
 AXIS2_EXTERN int AXIS2_CALL saml_request_init(saml_request_t *request, 
axutil_env_t *env)
 {
@@ -51,9 +69,9 @@
        request->issue_instant = NULL;
        request->major_version = NULL;
        request->minor_version = NULL;
-       request->saml_artifacts = NULL;
-       request->saml_asserion_id_ref = NULL;
-       request->saml_responds = NULL;
+       request->saml_artifacts =axutil_array_list_create(env, 
SAML_ARRAY_LIST_DEF);
+       request->saml_asserion_id_ref = axutil_array_list_create(env, 
SAML_ARRAY_LIST_DEF);
+       request->saml_responds = axutil_array_list_create(env, 
SAML_ARRAY_LIST_DEF);
        request->signature = NULL;
 
        return AXIS2_SUCCESS;
@@ -61,6 +79,9 @@
 
 AXIS2_EXTERN int AXIS2_CALL saml_request_uninit(saml_request_t *request, 
axutil_env_t *env)
 {
+       int size = 0, i = 0;
+       saml_artifact_t *artifact = NULL;
+       axis2_char_t *id_ref = NULL;
        if(request->request_id.id)
        {
                AXIS2_FREE(env->allocator, request->request_id.id);
@@ -83,6 +104,16 @@
        }
        if(request->saml_artifacts)
        {
+               size = axutil_array_list_size(request->saml_artifacts, env);
+               for(i = 0; i < size; i++)
+               {
+                       artifact = 
(saml_artifact_t*)axutil_array_list_get(request->saml_artifacts, env ,i);
+                       if(artifact)
+                       {
+                               saml_artifact_uninit(artifact, env);
+                               AXIS2_FREE(env->allocator, artifact);
+                       }
+               }
                axutil_array_list_free(request->saml_artifacts, env);
        }
        if(request->signature)
@@ -91,7 +122,29 @@
        }
        if(request->saml_asserion_id_ref)
        {
-               axutil_array_list_free(request->saml_asserion_id_ref, env);
+               size = axutil_array_list_size(request->saml_artifacts, env);
+               for(i = 0; i < size; i++)
+               {
+                       id_ref = 
(axis2_char_t*)axutil_array_list_get(request->saml_asserion_id_ref, env ,i);
+                       if(id_ref)
+                       {
+                               AXIS2_FREE(env->allocator, id_ref);
+                       }
+               }
+               axutil_array_list_free(request->saml_artifacts, env);
+       }
+       if(request->saml_responds)
+       {
+               size = axutil_array_list_size(request->saml_responds, env);
+               for(i = 0; i < size; i++)
+               {
+                       id_ref = 
(axis2_char_t*)axutil_array_list_get(request->saml_responds, env ,i);
+                       if(id_ref)
+                       {
+                               AXIS2_FREE(env->allocator, id_ref);
+                       }
+               }
+               axutil_array_list_free(request->saml_responds, env);
        }
        return AXIS2_SUCCESS;
 }
@@ -174,7 +227,7 @@
                        }
                        else if(element != NULL && 
!(axutil_strcmp(element_local_name,SAML_SIGNATURE)))
                        {
-                               //To do
+                               request->signature = child_node;
                        }
                        else if(element != NULL && 
!(axutil_strcmp(element_local_name, SAML_SUBJECT_QUERY)))
                        {
@@ -245,14 +298,16 @@
        int size = 0, i = 0;
        axiom_element_t *e = NULL, *ce = NULL;
        axiom_node_t *n = NULL, *cn = NULL;     
-       axiom_namespace_t *ns = NULL;
+       axiom_namespace_t *ns1 = NULL, *ns2 = NULL;
        axiom_attribute_t *attr = NULL;
        saml_assertion_t *assertion = NULL;
        axutil_qname_t *qname;
        saml_artifact_t *artifact;
        axis2_char_t *id_reference;
-               ns = axiom_namespace_create(env, SAML_PROTOCOL_NMSP, 
SAML_PROTOCOL_PREFIX);
-               e = axiom_element_create(env, parent, SAML_REQUEST, ns, &n);
+       ns1 = axiom_namespace_create(env, SAML_PROTOCOL_NMSP, 
SAML_PROTOCOL_PREFIX);
+       ns2 = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX);
+       e = axiom_element_create(env, parent, SAML_REQUEST, ns1, &n);
+       axiom_element_declare_namespace(e, env, n, ns2);
 
                if(e)
                {
@@ -283,17 +338,18 @@
                                for (i = 0 ; i < size ; i++)
                                {
                                        qname = (axutil_qname_t*) 
axutil_array_list_get(request->saml_responds, env, i);
-                                       /////////
-                                       ce = axiom_element_create(env, n, 
SAML_RESPOND_WITH, NULL, &cn);
+                               
+                                       ce = axiom_element_create(env, n, 
SAML_RESPOND_WITH, ns1, &cn);
                                        if(ce)
                                        {
                                                axiom_element_set_text(ce, env, 
axutil_qname_to_string(qname, env), cn);
                                        }
+                               /*      axiom_element_create_with_qname(env, n, 
qname, &cn);*/
                                }
                        }
                        if(request->signature)
                        {
-                               //To do
+                               axiom_node_add_child(n, env, 
request->signature);
                        }
                        if(request->query || request->saml_artifacts || 
request->saml_asserion_id_ref)
                        {
@@ -310,7 +366,7 @@
                                                artifact = (saml_artifact_t*) 
axutil_array_list_get(request->saml_artifacts, env, i);
                                                if(artifact)
                                                {
-                                                       ce = 
axiom_element_create(env, n, SAML_ASSERTION_ARTIFACT, NULL, &cn);
+                                                       ce = 
axiom_element_create(env, n, SAML_ASSERTION_ARTIFACT, ns1, &cn);
                                                        if(ce)
                                                        {
                                                                
axiom_element_set_text(ce, env, artifact->artifact, cn);
@@ -327,7 +383,7 @@
                                        {
                                                id_reference = (axis2_char_t*) 
axutil_array_list_get(request->saml_asserion_id_ref, env, i);
 
-                                               ce = axiom_element_create(env, 
n, SAML_ASSERTION_ID_REFERENCE, NULL, &cn);
+                                               ce = axiom_element_create(env, 
n, SAML_ASSERTION_ID_REFERENCE, ns1, &cn);
                                                if(ce)
                                                {
                                                        
axiom_element_set_text(ce, env, id_reference, cn);
@@ -346,13 +402,15 @@
 
 }
 
-AXIS2_EXTERN void AXIS2_CALL saml_request_set_version(saml_request_t *request, 
int version, axutil_env_t *env)
+AXIS2_EXTERN int AXIS2_CALL saml_request_set_minor_version(saml_request_t 
*request, int version, axutil_env_t *env)
 {
        if(request->major_version)
        {
                AXIS2_FREE(env->allocator, request->minor_version);
        }
+       request->minor_version = AXIS2_MALLOC(env->allocator, sizeof(char));
        sprintf(request->minor_version, "%d", version);
+       return AXIS2_SUCCESS;
 }
 AXIS2_EXTERN int AXIS2_CALL saml_request_set_issue_instant(saml_request_t 
*request, axutil_date_time_t *date_time, axutil_env_t *env)
 {
@@ -393,7 +451,7 @@
 {
        if(!request->saml_responds)
        {
-               request->saml_responds = 
axutil_array_list_create(env,AXIS2_ARRAY_LIST_DEFAULT_CAPACITY);
+               request->saml_responds = axutil_array_list_create(env, 
SAML_ARRAY_LIST_DEF);
        }
        if(request->saml_responds)
        {
@@ -455,7 +513,7 @@
 {
        if(!request->saml_asserion_id_ref)
        {
-               axutil_array_list_create(env,AXIS2_ARRAY_LIST_DEFAULT_CAPACITY);
+               axutil_array_list_create(env, SAML_ARRAY_LIST_DEF);
        }
        if(request->saml_asserion_id_ref)
        {
@@ -499,7 +557,7 @@
 {
        if(!request->saml_artifacts)
        {
-               request->saml_artifacts = axutil_array_list_create(env, 
AXIS2_ARRAY_LIST_DEFAULT_CAPACITY);
+               request->saml_artifacts = axutil_array_list_create(env, 
SAML_ARRAY_LIST_DEF);
        }
        if(request->saml_artifacts)
        {

Modified: webservices/rampart/scratch/c/saml/src/response.c
URL: 
http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/src/response.c?rev=585061&r1=585060&r2=585061&view=diff
==============================================================================
--- webservices/rampart/scratch/c/saml/src/response.c (original)
+++ webservices/rampart/scratch/c/saml/src/response.c Mon Oct 15 23:57:16 2007
@@ -42,7 +42,7 @@
        }
        if(status->status_detail)
        {
-               axutil_array_list_free(status->status_detail, env);
+               axiom_node_free_tree(status->status_detail, env);
        }
        if(status->status_msg)
        {
@@ -51,7 +51,7 @@
        return AXIS2_SUCCESS;
 }
 
-AXIS2_EXTERN saml_status_t* saml_status_create(axutil_env_t *env)
+AXIS2_EXTERN saml_status_t* AXIS2_CALL saml_status_create(axutil_env_t *env)
 {
        saml_status_t *status = NULL;
        status = (saml_status_t*)AXIS2_MALLOC(env->allocator, 
sizeof(saml_status_t));
@@ -62,7 +62,7 @@
                status->status_msg = NULL;
                status->status_code = NULL;
 
-               status->status_detail = axutil_array_list_create(env, 
AXIS2_ARRAY_LIST_DEFAULT_CAPACITY);
+               status->status_detail = NULL;
        }
        return status;
 }
@@ -78,7 +78,7 @@
        }
        if(status->status_detail)
        {
-               axutil_array_list_free(status->status_detail, env);
+               axiom_node_free_tree(status->status_detail, env);
        }
        if(status->status_msg)
        {
@@ -120,7 +120,6 @@
                        if(element != NULL && 
!(axutil_strcmp(axiom_element_get_localname(element, env), 
                                                                                
                                                                
SAML_STATUS_CODE)))
                        {
-                               ///
                                qname = 
axiom_element_get_attribute_value_by_name(element, env, SAML_STATUS_VALUE);
                                if(qname)
                                        status->status_value = 
axutil_qname_create_from_string(env, qname); 
@@ -134,7 +133,7 @@
                        else if(element != NULL && 
!(axutil_strcmp(axiom_element_get_localname(element, env), 
                                                                                
                                                                
SAML_STATUS_DETAIL)))
                        {
-                               axutil_array_list_add(status->status_detail, 
env, axiom_element_get_text(element, env, child_node));
+                               status->status_detail = child_node;
                        }
                }
                return AXIS2_SUCCESS;
@@ -160,15 +159,7 @@
        {
                if(status->status_detail)
                {
-                       size = axutil_array_list_size(status->status_detail, 
env);
-                       for(i = 0 ; i < size ; i++)
-                       {
-                               ce = axiom_element_create(env, n, 
SAML_STATUS_DETAIL, ns, &cn);
-                               if(ce)
-                               {
-                                       axiom_element_set_text(ce, env, 
(axis2_char_t*)axutil_array_list_get(status->status_detail, env, i), cn);
-                               }
-                       }
+                       axiom_node_add_child(n, env, status->status_detail);
                }
                if(status->status_msg)
                {
@@ -193,6 +184,127 @@
        
 }
 
+AXIS2_EXTERN int AXIS2_CALL saml_status_set_status_value(saml_status_t 
*status, axutil_qname_t *qname, axutil_env_t *env)
+{
+       if(status->status_value)
+       {
+               axutil_qname_free(status->status_value, env);
+       }
+       status->status_value = qname;
+       return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN axutil_qname_t* AXIS2_CALL 
saml_status_get_status_value(saml_status_t *status, axutil_env_t *env)
+{
+       if(status)
+               return status->status_value;
+       else
+               return NULL;
+}
+AXIS2_EXTERN int AXIS2_CALL saml_status_set_status_msg(saml_status_t *status, 
axis2_char_t *msg, axutil_env_t *env)
+{
+       if(status)
+       {
+               AXIS2_FREE(env->allocator, status->status_msg);
+       }
+       status->status_msg = msg;
+       return AXIS2_SUCCESS;
+}
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_status_get_status_msg(saml_status_t 
*status, axutil_env_t *env)
+{
+       if(status)
+               return status->status_msg;
+       else
+               return NULL;
+}
+AXIS2_EXTERN int AXIS2_CALL saml_status_set_status_detail(saml_status_t 
*status, axiom_node_t *det, axutil_env_t *env)
+{
+       if(status)
+       {
+               axiom_node_free_tree(det, env);
+       }
+       status->status_detail = det;
+       return AXIS2_SUCCESS;
+}
+AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
saml_status_get_status_detail(saml_status_t *status, axutil_env_t *env)
+{
+       if(status)
+               return status->status_detail;
+       else
+               return NULL;
+}
+
+AXIS2_EXTERN int AXIS2_CALL saml_response_init(saml_response_t *response, 
axutil_env_t *env)
+{
+       if(response)
+       {
+               response->response_id.id = NULL;
+               response->issue_instant = NULL;
+               response->major_version = NULL;
+               response->minor_version = NULL;
+               response->recepient = NULL;
+               response->request_response_id = NULL;
+               response->signature = NULL;
+               response->status = NULL;
+               response->saml_assertions = axutil_array_list_create(env, 
SAML_ARRAY_LIST_DEF);
+       }
+       return AXIS2_SUCCESS;
+}
+AXIS2_EXTERN int AXIS2_CALL saml_response_uninit(saml_response_t *response, 
axutil_env_t *env)
+{
+       int size =0, i = 0;
+       saml_assertion_t *assertion = NULL;
+       if(response->major_version)
+       {
+               AXIS2_FREE(env->allocator, response->major_version);
+       }
+       if(response->minor_version)
+       {
+               AXIS2_FREE(env->allocator, response->minor_version);
+       }
+       if(response->issue_instant)
+       {
+               axutil_date_time_free(response->issue_instant, env);
+       }
+       if(response->recepient)
+       {
+               AXIS2_FREE(env->allocator, response->recepient);
+       }
+       if(response->response_id.id)
+       {
+               AXIS2_FREE(env->allocator, response->response_id.id);
+       }
+       if(response->signature)
+       {
+               axiom_node_free_tree(response->signature, env);
+       }
+       if(response->status)
+       {
+               saml_status_uninit(response->status, env);
+               AXIS2_FREE(env->allocator, response->status);
+       }
+       if(response->request_response_id)
+       {
+               AXIS2_FREE(env->allocator, response->request_response_id);
+       }
+       if(response->saml_assertions)
+       {
+               size = axutil_array_list_size(response->saml_assertions, env);
+               for(i = 0; i < size ; i++)
+               {
+                       assertion = 
(saml_assertion_t*)axutil_array_list_get(response->saml_assertions, env, i);
+                       if(assertion)
+                       {
+                               saml_assertion_uninit(assertion, env);
+                               AXIS2_FREE(env->allocator, assertion);
+                       }
+               }
+               axutil_array_list_free(response->saml_assertions, env);
+       }
+
+       return AXIS2_SUCCESS;
+}
+
 AXIS2_EXTERN int AXIS2_CALL saml_response_build(saml_response_t *response,
                                                                                
                axiom_node_t *node, 
                                                                                
                axutil_env_t *env)
@@ -229,12 +341,10 @@
 
                        if(!axutil_strcmp(axiom_attribute_get_localname(attr, 
env), SAML_RESPONCE_ID))
                        {
-                               //to do
                                response->response_id.id =  attr_val;
                        }
                        if(!axutil_strcmp(axiom_attribute_get_localname(attr, 
env), SAML_IN_RESPONSE_TO))
                        {
-                               //to do
                                response->request_response_id =  attr_val;
                        }
                        else 
if(!axutil_strcmp(axiom_attribute_get_localname(attr, env), SAML_MAJORVERSION))
@@ -274,7 +384,7 @@
                        if(element != NULL && 
!(axutil_strcmp(axiom_element_get_localname(element, env), 
                                                                                
                                                                
SAML_SIGNATURE)))
                        {
-                               //To do
+                               response->signature = child_node;
                        }
                        else if(element != NULL && 
!(axutil_strcmp(axiom_element_get_localname(element, env), 
                                                                                
                                                                SAML_STATUS)))
@@ -325,7 +435,7 @@
        
        if(e)
        {
-               if(response->request_response_id && response->major_version && 
response->minor_version && response->issue_instant)
+               if(response->response_id.id && response->major_version && 
response->minor_version && response->issue_instant)
                {
                        attr = axiom_attribute_create(env, SAML_RESPONCE_ID, 
response->request_response_id, NULL);
                        axiom_element_add_attribute(e, env, attr, n);
@@ -338,11 +448,9 @@
 
                        attr = axiom_attribute_create(env, SAML_ISSUE_INSTANT, 
axutil_date_time_serialize_date_time(response->issue_instant, env), NULL);
                        axiom_element_add_attribute(e, env, attr, n);
-
                }
                else
                {
-                       axiom_element_free(e, env);
                        return NULL;
                }
                if(response->request_response_id && response->recepient)
@@ -384,6 +492,8 @@
        {
                AXIS2_FREE(env->allocator,response->minor_version);
        }
+       response->minor_version = AXIS2_MALLOC(env->allocator, sizeof(char));
+       sprintf(response->minor_version, "%d", version);        
        return AXIS2_SUCCESS;
 }
 AXIS2_EXTERN int AXIS2_CALL saml_response_set_issue_instant(saml_response_t 
*response, axutil_date_time_t *date_time, axutil_env_t *env)
@@ -458,7 +568,7 @@
 {
        if(!response->saml_assertions)
        {
-               axutil_array_list_create(env, 
AXIS2_ARRAY_LIST_DEFAULT_CAPACITY);
+               axutil_array_list_create(env, SAML_ARRAY_LIST_DEF);
        }
        axutil_array_list_add(response->saml_assertions, env, assertion);
        return AXIS2_SUCCESS;


Reply via email to