You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rampart-dev@ws.apache.org by mi...@apache.org on 2008/05/15 11:02:25 UTC

svn commit: r656559 - in /webservices/rampart/trunk/c: include/trust_claims.h src/trust/claims.c src/util/rampart_context.c

Author: milinda
Date: Thu May 15 02:02:25 2008
New Revision: 656559

URL: http://svn.apache.org/viewvc?rev=656559&view=rev
Log:
Issue https://issues.apache.org/jira/browse/RAMPARTC-9 fixed. Thanks Kasun for the patch.

Modified:
    webservices/rampart/trunk/c/include/trust_claims.h
    webservices/rampart/trunk/c/src/trust/claims.c
    webservices/rampart/trunk/c/src/util/rampart_context.c

Modified: webservices/rampart/trunk/c/include/trust_claims.h
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/include/trust_claims.h?rev=656559&r1=656558&r2=656559&view=diff
==============================================================================
--- webservices/rampart/trunk/c/include/trust_claims.h (original)
+++ webservices/rampart/trunk/c/include/trust_claims.h Thu May 15 02:02:25 2008
@@ -19,6 +19,7 @@
 #define TRUST_CLAIMS_H
 
 #include <axutil_utils.h>
+#include <axutil_array_list.h>
 #include <axiom.h>
 
 #include <trust_constants.h>
@@ -51,19 +52,7 @@
         trust_claims_t *claims,
         const axutil_env_t *env,
         axiom_node_t *parent);
-    
-    AXIS2_EXTERN axis2_status_t AXIS2_CALL
-    trust_claims_set_children(
-        trust_claims_t *claims,
-        const axutil_env_t *env,
-        axiom_children_iterator_t *children);
-    
-    AXIS2_EXTERN axiom_children_iterator_t * AXIS2_CALL
-    trust_claims_get_children(
-        trust_claims_t *claims,
-        const axutil_env_t *env);
-    
-    
+        
     AXIS2_EXTERN axis2_status_t AXIS2_CALL
     trust_claims_set_attr_dialect(
         trust_claims_t *claims,
@@ -75,6 +64,11 @@
         trust_claims_t *claims,
         const axutil_env_t *env);
 
+    AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL
+    trust_claims_get_claim_list(
+        trust_claims_t *claims,
+        const axutil_env_t *env);
+
     AXIS2_EXTERN axis2_status_t AXIS2_CALL
     trust_claims_set_wst_ns_uri(
         trust_claims_t *claims,

Modified: webservices/rampart/trunk/c/src/trust/claims.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/trust/claims.c?rev=656559&r1=656558&r2=656559&view=diff
==============================================================================
--- webservices/rampart/trunk/c/src/trust/claims.c (original)
+++ webservices/rampart/trunk/c/src/trust/claims.c Thu May 15 02:02:25 2008
@@ -19,9 +19,9 @@
 
 struct trust_claims
 {
-    axiom_children_iterator_t *children;
     axis2_char_t *attr_dialect;
     axis2_char_t *wst_ns_uri;
+    axutil_array_list_t * claim_list;
     
 };
 
@@ -34,6 +34,7 @@
     claims = (trust_claims_t*)AXIS2_MALLOC(env->allocator, sizeof(trust_claims_t));
     claims->attr_dialect = NULL;
     claims->wst_ns_uri = NULL;
+    claims->claim_list = axutil_array_list_create(env, 10);
     
     return claims;
 }
@@ -43,6 +44,10 @@
         trust_claims_t *claims,
         const axutil_env_t *env)
 {
+    if(NULL != claims->claim_list)
+    {
+        axutil_array_list_free(claims->claim_list, env);
+    }
     return AXIS2_SUCCESS;
 }
 
@@ -53,28 +58,31 @@
         axiom_node_t *claims_node)
 {
     axiom_element_t *claims_ele = NULL;
-    axiom_children_iterator_t *children = NULL;
-    axis2_status_t status = AXIS2_FAILURE;
+    axiom_children_iterator_t *children_iter = NULL;
     axis2_char_t *dialect_attr = NULL;
+    axiom_node_t * temp_node = NULL;
     
     claims_ele = axiom_node_get_data_element(claims_node, env);
-    
     if(claims_ele)
     {
-        children = axiom_element_get_children(claims_ele, env, claims_node);
-        if(children)
+        children_iter = axiom_element_get_children(claims_ele, env, claims_node);
+        if(children_iter)
         {
-            if(trust_claims_set_children(claims, env, children))
-                status = AXIS2_SUCCESS;
+            while (axiom_children_iterator_has_next(children_iter, env))
+            {
+                temp_node = axiom_children_iterator_next( children_iter, env);
+                if(axiom_node_get_node_type(temp_node, env) == AXIOM_ELEMENT)
+                {
+                    axutil_array_list_add(claims->claim_list, env, temp_node);
+                }
+            }
         }
         
         dialect_attr = axiom_element_get_attribute_value_by_name(claims_ele, env, TRUST_CLAIMS_DIALECT);
+        claims->wst_ns_uri = TRUST_WST_XMLNS;
         if(dialect_attr)
         {
-            if(status && trust_claims_set_attr_dialect(claims, env, dialect_attr))
-            {
-                return AXIS2_SUCCESS;
-            }           
+            claims->attr_dialect = dialect_attr;
         }       
     }
     
@@ -88,54 +96,27 @@
         axiom_node_t *parent)
 {
     axiom_node_t *claims_node = NULL;
-    axiom_node_t *child = NULL;
+    int index = 0;
     
-    claims_node = (axiom_node_t*)trust_util_create_claims_element(env, claims->wst_ns_uri, parent, claims->attr_dialect);
+    claims_node = (axiom_node_t*)trust_util_create_claims_element(env, TRUST_WST_XMLNS, parent, claims->attr_dialect);
     if(!claims_node)
     {
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Claims Element creation failed!");
         return NULL;
     }
+      
     
-    while(axiom_children_iterator_has_next(claims->children, env))
+    for(index = 0; index <axutil_array_list_size(claims->claim_list, env); index++)
     {
-        child = axiom_children_iterator_next(claims->children, env);
-        if(child)
-        {
-            if(!axiom_node_add_child(claims_node, env, child))
-            {
-                AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Claims node adding child failed!");                
-                return NULL;
-            }
-        }
-        
+        axiom_node_add_child(claims_node, env, 
+                (axiom_node_t*) axutil_array_list_get(claims->claim_list, env, index));
     }
     
-    return claims_node;
-}
-
-AXIS2_EXTERN axis2_status_t AXIS2_CALL
-trust_claims_set_children(
-        trust_claims_t *claims,
-        const axutil_env_t *env,
-        axiom_children_iterator_t *children)
-{
-    if(children)
-    {
-        claims->children = children;
-        return AXIS2_SUCCESS;
-    }
     
-    return AXIS2_FAILURE;
+    
+    return claims_node;
 }
 
-AXIS2_EXTERN axiom_children_iterator_t * AXIS2_CALL
-trust_claims_get_children(
-        trust_claims_t *claims,
-        const axutil_env_t *env)
-{
-    return claims->children;
-}
 
 AXIS2_EXTERN axis2_status_t AXIS2_CALL
 trust_claims_set_attr_dialect(
@@ -161,6 +142,14 @@
     return claims->attr_dialect;
 }
 
+AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL
+trust_claims_get_claim_list(
+    trust_claims_t *claims,
+    const axutil_env_t *env)
+{
+    return claims->claim_list;
+}
+
 AXIS2_EXTERN axis2_status_t AXIS2_CALL
 trust_claims_set_wst_ns_uri(
         trust_claims_t *claims,

Modified: webservices/rampart/trunk/c/src/util/rampart_context.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/util/rampart_context.c?rev=656559&r1=656558&r2=656559&view=diff
==============================================================================
--- webservices/rampart/trunk/c/src/util/rampart_context.c (original)
+++ webservices/rampart/trunk/c/src/util/rampart_context.c Thu May 15 02:02:25 2008
@@ -63,7 +63,7 @@
     rp_secpolicy_t *secpolicy;
     rampart_callback_t *password_callback_module;
     rampart_authn_provider_t *authn_provider;
-	rampart_replay_detector_t *replay_detector;
+    rampart_replay_detector_t *replay_detector;
     rampart_sct_provider_t *sct_provider;
     auth_password_func authenticate_with_password;
     auth_digest_func authenticate_with_digest;