You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ma...@apache.org on 2007/05/28 07:25:40 UTC

svn commit: r542115 [2/2] - in /webservices/axis2/trunk/c: ./ build/win32/ include/ neethi/ neethi/include/ neethi/src/ neethi/src/samples/ neethi/src/secpolicy/ neethi/src/secpolicy/builder/ neethi/src/secpolicy/model/ neethi/src/test-resources/ neeth...

Copied: webservices/axis2/trunk/c/neethi/src/assertion_builder.c (from r532293, webservices/axis2/scratch/c/neethi/axis2c/neethi/src/assertion_builder.c)
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/assertion_builder.c?view=diff&rev=542115&p1=webservices/axis2/scratch/c/neethi/axis2c/neethi/src/assertion_builder.c&r1=532293&p2=webservices/axis2/trunk/c/neethi/src/assertion_builder.c&r2=542115
==============================================================================
--- webservices/axis2/scratch/c/neethi/axis2c/neethi/src/assertion_builder.c (original)
+++ webservices/axis2/trunk/c/neethi/src/assertion_builder.c Sun May 27 22:25:27 2007
@@ -42,7 +42,17 @@
             return rp_transport_binding_builder_build(env, node, element);
         }
         else return NULL;
-    }                
+    }
+   
+    if(axutil_strcmp(localname, RP_ASYMMETRIC_BINDING) ==0 )
+    {
+        if(rp_match_secpolicy_qname(env, RP_ASYMMETRIC_BINDING, node, element))
+        {
+            return rp_asymmetric_binding_builder_build(env, node, element);
+        }
+        else return NULL;
+    }        
+
     else if(axutil_strcmp(localname, RP_TRANSPORT_TOKEN)==0)
     {
         if(rp_match_secpolicy_qname(env, RP_TRANSPORT_TOKEN, node, element))
@@ -51,6 +61,152 @@
         }            
         else return NULL;
     }
+    
+    else if(axutil_strcmp(localname,RP_RECIPIENT_TOKEN )==0)
+    {
+        if(rp_match_secpolicy_qname(env, RP_RECIPIENT_TOKEN, node, element))
+        {
+            return rp_recipient_token_builder_build(env, node, element);
+        }
+        else return NULL;
+    }
+    else if(axutil_strcmp(localname, RP_INITIATOR_TOKEN)==0)
+    {
+        if(rp_match_secpolicy_qname(env, RP_INITIATOR_TOKEN, node, element))
+        {
+            return rp_initiator_token_builder_build(env, node, element);
+        }
+        else return NULL;
+    }
+    else if(axutil_strcmp(localname, RP_X509_TOKEN)==0)
+    {
+        if(rp_match_secpolicy_qname(env, RP_X509_TOKEN, node, element))
+        {
+            return rp_x509_token_builder_build(env, node, element);
+        }
+        else return NULL;
+    }
+    else if(axutil_strcmp(localname, RP_ENCRYPT_BEFORE_SIGNING)==0)
+    {
+        if(rp_match_secpolicy_qname(env, RP_ENCRYPT_BEFORE_SIGNING, node, element))
+        {
+            neethi_assertion_t *assertion = NULL;
+            assertion = neethi_assertion_create(env);
+            neethi_assertion_set_value(assertion, env, NULL, ASSERTION_TYPE_ENCRYPT_BEFORE_SIGNING);
+            return assertion;
+        }
+        else return NULL;
+    }
+    else if(axutil_strcmp(localname, RP_SIGN_BEFORE_ENCRYPTING)==0)
+    {
+        if(rp_match_secpolicy_qname(env, RP_SIGN_BEFORE_ENCRYPTING, node, element))
+        {
+            neethi_assertion_t *assertion = NULL;
+            assertion = neethi_assertion_create(env);
+            neethi_assertion_set_value(assertion, env, NULL,ASSERTION_TYPE_SIGN_BEFORE_ENCRYPTING);
+            return assertion;
+        }
+        else return NULL;
+    }
+    else if(axutil_strcmp(localname, RP_ENCRYPT_SIGNATURE)==0)
+    {
+        if(rp_match_secpolicy_qname(env, RP_ENCRYPT_SIGNATURE, node, element))
+        {
+            neethi_assertion_t *assertion = NULL;
+            assertion = neethi_assertion_create(env);
+            neethi_assertion_set_value(assertion, env, NULL, ASSERTION_TYPE_ENCRYPT_SIGNATURE);
+            return assertion;
+        }
+        else return NULL;
+    }
+    else if(axutil_strcmp(localname, RP_PROTECT_TOKENS)==0)
+    {
+        if(rp_match_secpolicy_qname(env, RP_PROTECT_TOKENS, node, element))
+        {
+            neethi_assertion_t *assertion = NULL;
+            assertion = neethi_assertion_create(env);
+            neethi_assertion_set_value(assertion, env, NULL, ASSERTION_TYPE_PROTECT_TOKENS);
+            return assertion;
+        }
+        else return NULL;
+    }    
+    else if(axutil_strcmp(localname, RP_ONLY_SIGN_ENTIRE_HEADERS_AND_BODY)==0)
+    {
+        if(rp_match_secpolicy_qname(env, RP_ONLY_SIGN_ENTIRE_HEADERS_AND_BODY, node, element))
+        {
+            neethi_assertion_t *assertion = NULL;
+            assertion = neethi_assertion_create(env);
+            neethi_assertion_set_value(assertion, env, NULL, ASSERTION_TYPE_ONLY_SIGN_ENTIRE_HEADERS_AND_BODY);
+            return assertion;
+        }
+        else return NULL;
+    } 
+    else if(axutil_strcmp(localname, RP_REQUIRE_KEY_IDENTIFIRE_REFERENCE)==0)
+    {
+        if(rp_match_secpolicy_qname(env, RP_REQUIRE_KEY_IDENTIFIRE_REFERENCE, node, element))
+        {
+            neethi_assertion_t *assertion = NULL;
+            assertion = neethi_assertion_create(env);
+            neethi_assertion_set_value(assertion, env, NULL, ASSERTION_TYPE_REQUIRE_KEY_IDENTIFIRE_REFERENCE);
+            return assertion;
+        }
+        else return NULL;
+    }
+    else if(axutil_strcmp(localname, RP_REQUIRE_ISSUER_SERIAL_REFERENCE)==0)
+    {
+        if(rp_match_secpolicy_qname(env, RP_REQUIRE_ISSUER_SERIAL_REFERENCE, node, element))
+        {
+            neethi_assertion_t *assertion = NULL;
+            assertion = neethi_assertion_create(env);
+            neethi_assertion_set_value(assertion, env, NULL, ASSERTION_TYPE_REQUIRE_ISSUER_SERIAL_REFERENCE);
+            return assertion;
+        }
+        else return NULL;
+    }
+    else if(axutil_strcmp(localname, RP_REQUIRE_EMBEDDED_TOKEN_REFERENCE)==0)
+    {
+        if(rp_match_secpolicy_qname(env, RP_REQUIRE_EMBEDDED_TOKEN_REFERENCE, node, element))
+        {
+            neethi_assertion_t *assertion = NULL;
+            assertion = neethi_assertion_create(env);
+            neethi_assertion_set_value(assertion, env, NULL, ASSERTION_TYPE_REQUIRE_EMBEDDED_TOKEN_REFERENCE);
+            return assertion;
+        }
+        else return NULL;
+    }
+    else if(axutil_strcmp(localname, RP_REQUIRE_THUMBPRINT_REFERENCE)==0)
+    {
+        if(rp_match_secpolicy_qname(env, RP_REQUIRE_THUMBPRINT_REFERENCE, node, element))
+        {
+            neethi_assertion_t *assertion = NULL;
+            assertion = neethi_assertion_create(env);
+            neethi_assertion_set_value(assertion, env, NULL, ASSERTION_TYPE_REQUIRE_THUMBPRINT_REFERENCE);
+            return assertion;
+        }
+        else return NULL;
+    }
+    else if(axutil_strcmp(localname, RP_WSS_X509_V1_TOKEN_10)==0)
+    {
+        if(rp_match_secpolicy_qname(env, RP_WSS_X509_V1_TOKEN_10, node, element))
+        {
+            neethi_assertion_t *assertion = NULL;
+            assertion = neethi_assertion_create(env);
+            neethi_assertion_set_value(assertion, env, NULL, ASSERTION_TYPE_WSS_X509_V1_TOKEN_10);
+            return assertion;
+        }
+        else return NULL;
+    }
+    else if(axutil_strcmp(localname, RP_WSS_X509_V3_TOKEN_10)==0)
+    {
+        if(rp_match_secpolicy_qname(env, RP_WSS_X509_V3_TOKEN_10, node, element))
+        {
+            neethi_assertion_t *assertion = NULL;
+            assertion = neethi_assertion_create(env);
+            neethi_assertion_set_value(assertion, env, NULL, ASSERTION_TYPE_WSS_X509_V3_TOKEN_10);
+            return assertion;
+        }
+        else return NULL;
+    }
     else if(axutil_strcmp(localname, RP_ALGORITHM_SUITE)==0)
     {
         if(rp_match_secpolicy_qname(env, RP_ALGORITHM_SUITE, node, element))
@@ -184,5 +340,37 @@
         }
         else return NULL;
     }
-    else return NULL;
+    else if(axutil_strcmp(localname, RP_SIGNED_PARTS)==0)
+    {
+        if(rp_match_secpolicy_qname(env, RP_SIGNED_PARTS, node, element))
+        {
+            return rp_signed_encrypted_parts_builder_build(env, node, element);
+        }
+        else return NULL;
+    }
+    else if(axutil_strcmp(localname, RP_ENCRYPTED_PARTS)==0)
+    {
+        if(rp_match_secpolicy_qname(env, RP_ENCRYPTED_PARTS, node, element))
+        {
+            return rp_signed_encrypted_parts_builder_build(env, node, element);
+        }
+        else return NULL;
+    }       
+    else if(axutil_strcmp(localname, RP_RAMPART_CONFIG)==0)
+    {
+        if(rp_match_rampart_config_qname(env, RP_RAMPART_CONFIG, node, element))
+        {
+            return rp_rampart_config_builder_build(env, node, element);
+        }
+        else return NULL;
+    }
+    else 
+    {
+        neethi_assertion_t *assertion = NULL;
+        assertion = neethi_assertion_create(env);
+        neethi_assertion_set_value(assertion, env, NULL, ASSERTION_TYPE_UNKNOWN);
+        neethi_assertion_set_element(assertion, env, element);        
+        neethi_assertion_set_node(assertion, env, node);
+        return assertion;
+    }
 }

Copied: webservices/axis2/trunk/c/neethi/src/engine.c (from r532293, webservices/axis2/scratch/c/neethi/axis2c/neethi/src/engine.c)
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/engine.c?view=diff&rev=542115&p1=webservices/axis2/scratch/c/neethi/axis2c/neethi/src/engine.c&r1=532293&p2=webservices/axis2/trunk/c/neethi/src/engine.c&r2=542115
==============================================================================
--- webservices/axis2/scratch/c/neethi/axis2c/neethi/src/engine.c (original)
+++ webservices/axis2/trunk/c/neethi/src/engine.c Sun May 27 22:25:27 2007
@@ -683,30 +683,6 @@
                 axutil_array_list_add(child_component_list, env, exactlyone);
             }                
         }
-        
-        else if(component_type == OPERATOR_TYPE_REFERENCE)
-        {
-            axis2_char_t *uri = NULL;
-            neethi_reference_t *pol_ref = NULL;
-            neethi_policy_t *neethi_policy = NULL;
-
-            pol_ref = (neethi_reference_t *)neethi_operator_get_value(child_component,env);
-            uri = neethi_reference_get_uri(pol_ref,env);
-            if(uri)
-            {
-                neethi_policy = neethi_registry_lookup(registry,env,uri);
-                if(neethi_policy)
-                {
-                    neethi_operator_set_value(child_component,env,neethi_policy,OPERATOR_TYPE_POLICY);
-                    component_type = OPERATOR_TYPE_POLICY;
-                }
-                else
-                {
-                    printf("Cannot Resolve the location\n");
-                    return NULL;
-                }    
-            }    
-        }
         else if(component_type == OPERATOR_TYPE_POLICY)
         {
             neethi_policy_t *neethi_policy = NULL;
@@ -729,6 +705,11 @@
             neethi_reference_t *policy_ref = NULL;
             axis2_char_t *uri = NULL;
             neethi_policy_t *policy = NULL;
+            neethi_all_t *all = NULL;
+            axutil_array_list_t *children = NULL;
+            neethi_operator_t *to_normalize = NULL;
+            neethi_exactlyone_t *exactlyone = NULL;
+
             policy_ref = (neethi_reference_t *)neethi_operator_get_value(child_component, env);
             uri = neethi_reference_get_uri(policy_ref, env);
             if(!uri)
@@ -743,6 +724,15 @@
                 return NULL;
             }  
             neethi_operator_set_value(child_component, env, policy, OPERATOR_TYPE_POLICY);
+
+            all = neethi_all_create(env);
+            policy = (neethi_policy_t *)neethi_operator_get_value(child_component,env);
+            children =  neethi_policy_get_policy_components(policy,env);
+            neethi_all_add_policy_components(all,children,env);
+            to_normalize = neethi_operator_create(env);
+            neethi_operator_set_value(to_normalize,env,all,OPERATOR_TYPE_ALL);
+            exactlyone = normalize_operator(to_normalize,registry,deep,env);
+            axutil_array_list_add(child_component_list,env,exactlyone);
         }            
         else
         {
@@ -854,4 +844,12 @@
     return cross_product;
 }
 
+/*These functions are for serializing a policy object*/
 
+AXIS2_EXTERN axiom_node_t *AXIS2_CALL
+neethi_engine_serialize(neethi_policy_t *policy,
+                   const axutil_env_t *env)
+{
+    
+    return neethi_policy_serialize(policy, NULL, env);
+}

Copied: webservices/axis2/trunk/c/neethi/src/exactlyone.c (from r532293, webservices/axis2/scratch/c/neethi/axis2c/neethi/src/exactlyone.c)
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/exactlyone.c?view=diff&rev=542115&p1=webservices/axis2/scratch/c/neethi/axis2c/neethi/src/exactlyone.c&r1=532293&p2=webservices/axis2/trunk/c/neethi/src/exactlyone.c&r2=542115
==============================================================================
--- webservices/axis2/scratch/c/neethi/axis2c/neethi/src/exactlyone.c (original)
+++ webservices/axis2/trunk/c/neethi/src/exactlyone.c Sun May 27 22:25:27 2007
@@ -138,3 +138,51 @@
     return axutil_array_list_is_empty(exactlyone->policy_components , env);
 }
 
+
+/*This function is for serializing*/
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+neethi_exactlyone_serialize(
+    neethi_exactlyone_t *neethi_exactlyone,
+    axiom_node_t *parent,
+    const axutil_env_t *env)
+{
+
+    axiom_node_t *exactlyone_node = NULL;
+    axiom_element_t *exactlyone_ele = NULL;
+    axiom_namespace_t *policy_ns = NULL;
+    axutil_array_list_t *components = NULL;
+    axis2_status_t status = AXIS2_FAILURE;
+    
+
+    policy_ns = axiom_namespace_create(env, NEETHI_NAMESPACE,
+                                    NEETHI_PREFIX);
+
+    exactlyone_ele = axiom_element_create(env, parent, NEETHI_EXACTLYONE, policy_ns, &exactlyone_node);
+    if (!exactlyone_node)
+    {
+        printf("Exactlyone serialization failed\n");
+        return AXIS2_FAILURE;
+    }
+    components = neethi_exactlyone_get_policy_components(neethi_exactlyone, env);
+
+    if(components)
+    {
+        int i=0;
+        for (i = 0; i < axutil_array_list_size(components ,
+                env); i++)
+        {
+            neethi_operator_t *operator = NULL;
+            operator = (neethi_operator_t *)axutil_array_list_get(components, env, i);
+            if(operator)
+            {
+                status = neethi_operator_serialize(operator, env, exactlyone_node);
+                if(status != AXIS2_SUCCESS)
+                {
+                    printf("Operator Serializing failed\n");
+                    return status;
+                }
+            }
+        }
+    }
+    return status;
+}

Copied: webservices/axis2/trunk/c/neethi/src/operator.c (from r532293, webservices/axis2/scratch/c/neethi/axis2c/neethi/src/operator.c)
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/operator.c?view=diff&rev=542115&p1=webservices/axis2/scratch/c/neethi/axis2c/neethi/src/operator.c&r1=532293&p2=webservices/axis2/trunk/c/neethi/src/operator.c&r2=542115
==============================================================================
--- webservices/axis2/scratch/c/neethi/axis2c/neethi/src/operator.c (original)
+++ webservices/axis2/trunk/c/neethi/src/operator.c Sun May 27 22:25:27 2007
@@ -22,7 +22,7 @@
 #include <neethi_exactlyone.h>
 #include <neethi_all.h>
 #include <neethi_reference.h>
-
+#include <neethi_assertion.h>
 
 struct neethi_operator_t
 {
@@ -135,4 +135,61 @@
     neethi_operator->value =(void *)value;
 
     return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+neethi_operator_serialize(
+    neethi_operator_t *neethi_operator,
+    const axutil_env_t *env,
+    axiom_node_t *parent)
+{
+
+    neethi_policy_t *policy = NULL;
+    neethi_all_t *all = NULL;
+    neethi_exactlyone_t *exactlyone = NULL;
+    neethi_reference_t *reference = NULL;
+    neethi_assertion_t *assertion = NULL;
+
+    if(neethi_operator->value)
+    {
+        switch(neethi_operator->type)
+        {
+            case OPERATOR_TYPE_POLICY:
+                policy = (neethi_policy_t *)neethi_operator_get_value(neethi_operator, env);
+                if(!neethi_policy_serialize(policy, parent, env))
+                {                    
+                    return AXIS2_FAILURE;
+                }    
+                else
+                {    
+                    return AXIS2_SUCCESS;
+                }    
+                break;
+
+            case OPERATOR_TYPE_ALL:
+                all = (neethi_all_t *)neethi_operator_get_value(neethi_operator, env);
+                return neethi_all_serialize(all, parent, env);
+                break;
+
+            case OPERATOR_TYPE_EXACTLYONE:
+                exactlyone = (neethi_exactlyone_t *)neethi_operator_get_value(neethi_operator, env);
+                return neethi_exactlyone_serialize(exactlyone, parent, env);
+                break;
+
+            case OPERATOR_TYPE_REFERENCE:
+                reference = (neethi_reference_t *)neethi_operator_get_value(neethi_operator, env);
+                return neethi_reference_serialize(reference, parent, env);
+                break;
+
+            case OPERATOR_TYPE_ASSERTION:
+                assertion = (neethi_assertion_t *)neethi_operator_get_value(neethi_operator, env);
+                return neethi_assertion_serialize(assertion, parent, env);
+                break;
+
+            case OPERATOR_TYPE_UNKNOWN:
+                break;
+        }
+        return AXIS2_SUCCESS;
+    }
+    else return AXIS2_FAILURE;
 }

Copied: webservices/axis2/trunk/c/neethi/src/policy.c (from r532293, webservices/axis2/scratch/c/neethi/axis2c/neethi/src/policy.c)
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/policy.c?view=diff&rev=542115&p1=webservices/axis2/scratch/c/neethi/axis2c/neethi/src/policy.c&r1=532293&p2=webservices/axis2/trunk/c/neethi/src/policy.c&r2=542115
==============================================================================
--- webservices/axis2/scratch/c/neethi/axis2c/neethi/src/policy.c (original)
+++ webservices/axis2/trunk/c/neethi/src/policy.c Sun May 27 22:25:27 2007
@@ -254,3 +254,52 @@
     neethi_policy->id = id;
     return AXIS2_SUCCESS;
 }
+
+
+/*This function is for serializing*/
+AXIS2_EXTERN axiom_node_t *AXIS2_CALL
+neethi_policy_serialize(
+    neethi_policy_t *neethi_policy,
+    axiom_node_t *parent,
+    const axutil_env_t *env)
+{
+
+    axiom_node_t *policy_node = NULL;
+    axiom_element_t *policy_ele = NULL;
+    axiom_namespace_t *policy_ns = NULL;
+    axutil_array_list_t *components = NULL;
+    axis2_status_t status = AXIS2_FAILURE;
+
+    policy_ns = axiom_namespace_create(env, NEETHI_NAMESPACE,
+                                        NEETHI_PREFIX);
+
+    policy_ele = axiom_element_create(env, parent, NEETHI_POLICY, policy_ns, &policy_node);
+    if (!policy_ele)
+    {
+        printf("Policy element serialization failed.\n");
+        return NULL;
+    }
+
+    components = neethi_policy_get_policy_components(neethi_policy, env);
+
+    if(components)
+    {
+        int i=0;
+        for (i = 0; i < axutil_array_list_size(components ,
+                env); i++)
+        {
+            neethi_operator_t *operator = NULL;
+            operator = (neethi_operator_t *)axutil_array_list_get(components, env, i);           
+            if(operator)
+            {
+                status = neethi_operator_serialize(operator, env, policy_node);
+                if(status != AXIS2_SUCCESS)
+                {
+                    printf("Operator Serializing failed\n");
+                    return NULL;
+                }
+            }
+        }        
+    } 
+    return policy_node;
+}

Copied: webservices/axis2/trunk/c/neethi/src/reference.c (from r532293, webservices/axis2/scratch/c/neethi/axis2c/neethi/src/reference.c)
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/reference.c?view=diff&rev=542115&p1=webservices/axis2/scratch/c/neethi/axis2c/neethi/src/reference.c&r1=532293&p2=webservices/axis2/trunk/c/neethi/src/reference.c&r2=542115
==============================================================================
--- webservices/axis2/scratch/c/neethi/axis2c/neethi/src/reference.c (original)
+++ webservices/axis2/trunk/c/neethi/src/reference.c Sun May 27 22:25:27 2007
@@ -83,3 +83,34 @@
     return AXIS2_SUCCESS;
 }
 
+
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+neethi_reference_serialize(
+    neethi_reference_t *neethi_reference,
+    axiom_node_t *parent,
+    const axutil_env_t *env)
+{
+
+    axiom_node_t *ref_node = NULL;
+    axiom_element_t *ref_ele = NULL;
+    axiom_namespace_t *policy_ns = NULL;
+    axiom_attribute_t *att_uri = NULL;
+    
+
+    policy_ns = axiom_namespace_create(env, NEETHI_NAMESPACE,
+                                    NEETHI_PREFIX);
+
+    ref_ele = axiom_element_create(env, parent, NEETHI_REFERENCE, policy_ns, &ref_node);
+    if (!ref_node)
+    {
+        printf("Reference serialization failed\n");
+        return AXIS2_FAILURE;
+    }
+        
+    att_uri = axiom_attribute_create(env, NEETHI_URI, neethi_reference->uri, NULL);
+    axiom_element_add_attribute(ref_ele, env, att_uri, ref_node);
+
+    return AXIS2_SUCCESS;
+        
+}

Copied: webservices/axis2/trunk/c/neethi/src/secpolicy/builder/Makefile.am (from r532293, webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/builder/Makefile.am)
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/secpolicy/builder/Makefile.am?view=diff&rev=542115&p1=webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/builder/Makefile.am&r1=532293&p2=webservices/axis2/trunk/c/neethi/src/secpolicy/builder/Makefile.am&r2=542115
==============================================================================
--- webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/builder/Makefile.am (original)
+++ webservices/axis2/trunk/c/neethi/src/secpolicy/builder/Makefile.am Sun May 27 22:25:27 2007
@@ -8,11 +8,12 @@
 						   transport_binding_builder.c username_token_builder.c \
 						   wss10_builder.c transport_token_builder.c \
 						   token_identifier.c https_token_builder.c rampart_config_builder.c \
-						   secpolicy_builder.c
+						   asymmetric_binding_builder.c x509_token_builder.c initiator_token_builder.c \
+						   recipient_token_builder.c signed_encrypted_parts_builder.c secpolicy_builder.c 
 
 
-librp_builder_la_LIBADD  = ${AXIS2C_HOME}/lib
-
+librp_builder_la_LIBADD  = ../../../../axiom/src/om/libaxis2_axiom.la \
+				../../../../util/src/libaxutil.la
 
 INCLUDES = -I$(top_builddir)/include \
 			-I ../../../include \

Copied: webservices/axis2/trunk/c/neethi/src/secpolicy/builder/rampart_config_builder.c (from r532293, webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/builder/rampart_config_builder.c)
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/secpolicy/builder/rampart_config_builder.c?view=diff&rev=542115&p1=webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/builder/rampart_config_builder.c&r1=532293&p2=webservices/axis2/trunk/c/neethi/src/secpolicy/builder/rampart_config_builder.c&r2=542115
==============================================================================
--- webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/builder/rampart_config_builder.c (original)
+++ webservices/axis2/trunk/c/neethi/src/secpolicy/builder/rampart_config_builder.c Sun May 27 22:25:27 2007
@@ -17,6 +17,7 @@
 
 
 #include <rp_rampart_config_builder.h>
+#include <rp_qname_matcher.h>
 
 /*private functions*/
 
@@ -195,6 +196,20 @@
         }
         else
             return AXIS2_FAILURE;
+    }
+
+    else if(axutil_strcmp(local_name, RP_RD) == 0)
+    {
+        if(rp_match_rampart_config_qname(env, RP_RD, node, element))
+        {
+            axis2_char_t *rd_val = NULL;
+            rd_val = axiom_element_get_text(element, env, node);
+            printf("rd_val = %s", rd_val);
+            rp_rampart_config_set_rd_val(rampart_config, env, rd_val);
+            return AXIS2_SUCCESS;
+        }else{
+            return AXIS2_FAILURE;
+        }
     }
     else return AXIS2_FAILURE;
 }

Copied: webservices/axis2/trunk/c/neethi/src/secpolicy/builder/secpolicy_builder.c (from r532293, webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/builder/secpolicy_builder.c)
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/secpolicy/builder/secpolicy_builder.c?view=diff&rev=542115&p1=webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/builder/secpolicy_builder.c&r1=532293&p2=webservices/axis2/trunk/c/neethi/src/secpolicy/builder/secpolicy_builder.c&r2=542115
==============================================================================
--- webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/builder/secpolicy_builder.c (original)
+++ webservices/axis2/trunk/c/neethi/src/secpolicy/builder/secpolicy_builder.c Sun May 27 22:25:27 2007
@@ -28,7 +28,7 @@
 secpolicy_process_alternatives(
         const axutil_env_t *env,
         neethi_all_t *all,
-        rp_secpolicy_t *transport_binding);
+        rp_secpolicy_t *secpolicy);
 
 /***********************************/
 
@@ -44,6 +44,8 @@
     neethi_all_t *all = NULL;
     rp_secpolicy_t *secpolicy = NULL;
 
+    secpolicy = rp_secpolicy_create(env);
+
     policy = neethi_engine_get_normalize(env, AXIS2_FALSE, policy); 
     alternatives = neethi_policy_get_alternatives(policy, env);
 
@@ -99,6 +101,21 @@
                 rp_property_set_value(binding, env, transport_binding, RP_BINDING_TRANSPORT);             
                 rp_secpolicy_set_binding(secpolicy, env, binding);
             }
+            else if(type == ASSERTION_TYPE_ASSYMMETRIC_BINDING)
+            {
+                rp_property_t *binding = NULL;    
+                rp_asymmetric_binding_t *asymmetric_binding = NULL;
+
+                asymmetric_binding = (rp_asymmetric_binding_t *)neethi_assertion_get_value(assertion, env);
+                if(!asymmetric_binding)
+                {
+                    printf("Asymmetric Binding not set\n");
+                    return AXIS2_FAILURE;
+                }                    
+                binding = rp_property_create(env);
+                rp_property_set_value(binding, env, asymmetric_binding, RP_BINDING_ASYMMETRIC);             
+                rp_secpolicy_set_binding(secpolicy, env, binding);
+            }
             else if(type == ASSERTION_TYPE_SUPPORTING_TOKENS)
             {
                 rp_supporting_tokens_t *supporting_tokens = NULL;
@@ -132,6 +149,24 @@
                 wss = rp_property_create(env);
                 rp_property_set_value(wss, env, wss10, RP_WSS_WSS10);
                 rp_secpolicy_set_wss(secpolicy, env, wss);
+            }
+            else if(type == ASSERTION_TYPE_SIGNED_ENCRYPTED_PARTS)
+            {
+                rp_signed_encrypted_parts_t *signed_encrypted_parts = NULL;
+                signed_encrypted_parts = (rp_signed_encrypted_parts_t *)neethi_assertion_get_value(assertion, env);
+                if(signed_encrypted_parts)
+                {
+                    if(rp_signed_encrypted_parts_get_signedparts(signed_encrypted_parts, env))
+                    {
+                        rp_secpolicy_set_signed_parts(secpolicy, env, signed_encrypted_parts);
+                    }
+                    else
+                    {
+                        rp_secpolicy_set_encrypted_parts(secpolicy, env, signed_encrypted_parts);
+                    }
+                }
+                else return AXIS2_FAILURE;
+
             }
             else if(type == ASSERTION_TYPE_RAMPART_CONFIG)
             {

Copied: webservices/axis2/trunk/c/neethi/src/secpolicy/builder/signed_encrypted_parts_builder.c (from r538931, webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/builder/signed_encrypted_parts_builder.c)
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/secpolicy/builder/signed_encrypted_parts_builder.c?view=diff&rev=542115&p1=webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/builder/signed_encrypted_parts_builder.c&r1=538931&p2=webservices/axis2/trunk/c/neethi/src/secpolicy/builder/signed_encrypted_parts_builder.c&r2=542115
==============================================================================
--- webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/builder/signed_encrypted_parts_builder.c (original)
+++ webservices/axis2/trunk/c/neethi/src/secpolicy/builder/signed_encrypted_parts_builder.c Sun May 27 22:25:27 2007
@@ -22,7 +22,7 @@
 #include <neethi_exactlyone.h>
 #include <neethi_all.h>
 #include <neethi_engine.h>
-
+#include <rp_qname_matcher.h>
 
 rp_header_t *AXIS2_CALL
 rp_signed_encrypted_parts_builder_build_header(

Copied: webservices/axis2/trunk/c/neethi/src/secpolicy/builder/transport_binding_builder.c (from r532293, webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/builder/transport_binding_builder.c)
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/secpolicy/builder/transport_binding_builder.c?view=diff&rev=542115&p1=webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/builder/transport_binding_builder.c&r1=532293&p2=webservices/axis2/trunk/c/neethi/src/secpolicy/builder/transport_binding_builder.c&r2=542115
==============================================================================
--- webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/builder/transport_binding_builder.c (original)
+++ webservices/axis2/trunk/c/neethi/src/secpolicy/builder/transport_binding_builder.c Sun May 27 22:25:27 2007
@@ -104,66 +104,63 @@
         value = neethi_assertion_get_value(assertion, env);
         type = neethi_assertion_get_type(assertion, env);
 
-        if(value)
+        if(type == ASSERTION_TYPE_TRANSPORT_TOKEN)
         {
-            if(type == ASSERTION_TYPE_TRANSPORT_TOKEN)
+            rp_property_t *transport_token = NULL;    
+            transport_token = (rp_property_t *)neethi_assertion_get_value(assertion, env);
+            if(transport_token)
             {
-                rp_property_t *transport_token = NULL;    
-                transport_token = (rp_property_t *)neethi_assertion_get_value(assertion, env);
-                if(transport_token)
-                {
-                    rp_transport_binding_set_transport_token(transport_binding, env, transport_token);
-                }
-                else return AXIS2_FAILURE;
+                rp_transport_binding_set_transport_token(transport_binding, env, transport_token);
             }
-            else if(type == ASSERTION_TYPE_ALGORITHM_SUITE)
+            else return AXIS2_FAILURE;
+        }
+        else if(type == ASSERTION_TYPE_ALGORITHM_SUITE)
+        {
+            rp_algorithmsuite_t *algorithmsuite = NULL;
+            algorithmsuite = (rp_algorithmsuite_t *)neethi_assertion_get_value(assertion, env);
+            if(algorithmsuite)
             {
-                rp_algorithmsuite_t *algorithmsuite = NULL;
-                algorithmsuite = (rp_algorithmsuite_t *)neethi_assertion_get_value(assertion, env);
-                if(algorithmsuite)
-                {
-                    rp_binding_commons_set_algorithmsuite(commons, env, algorithmsuite);
-                }                
-                else return AXIS2_FAILURE;
-            }
-            else if(type == ASSERTION_TYPE_INCLUDE_TIMESTAMP)
+                rp_binding_commons_set_algorithmsuite(commons, env, algorithmsuite);
+            }                
+            else return AXIS2_FAILURE;
+        }
+        else if(type == ASSERTION_TYPE_INCLUDE_TIMESTAMP)
+        {
+            rp_binding_commons_set_include_timestamp(commons, env, AXIS2_TRUE);
+        }
+        else if(type == ASSERTION_TYPE_LAYOUT)
+        {
+            rp_layout_t *layout = NULL;
+            layout = (rp_layout_t *)neethi_assertion_get_value(assertion, env);
+            if(layout)
             {
-                rp_binding_commons_set_include_timestamp(commons, env, AXIS2_TRUE);
-            }
-            else if(type == ASSERTION_TYPE_LAYOUT)
+                rp_binding_commons_set_layout(commons, env, layout);
+            }                    
+            else return AXIS2_FAILURE;
+        }
+        else if(type == ASSERTION_TYPE_SUPPORTING_TOKENS)
+        {
+            rp_supporting_tokens_t *supporting_tokens = NULL;
+            supporting_tokens = (rp_supporting_tokens_t *)neethi_assertion_get_value(assertion, env);
+            if(supporting_tokens)
             {
-                rp_layout_t *layout = NULL;
-                layout = (rp_layout_t *)neethi_assertion_get_value(assertion, env);
-                if(layout)
+                int type = 0;
+                type = rp_supporting_tokens_get_type(supporting_tokens, env);
+                if(type == RP_SUPPORTING_SIGNED_SUPPORTING)
                 {
-                    rp_binding_commons_set_layout(commons, env, layout);
-                }                    
-                else return AXIS2_FAILURE;
-            }
-            else if(type == ASSERTION_TYPE_SUPPORTING_TOKENS)
-            {
-                rp_supporting_tokens_t *supporting_tokens = NULL;
-                supporting_tokens = (rp_supporting_tokens_t *)neethi_assertion_get_value(assertion, env);
-                if(supporting_tokens)
+                    rp_binding_commons_set_signed_supporting_tokens(commons, env, supporting_tokens);
+                }    
+                else if(type == RP_SUPPORTING_SIGNED_ENDORSING_SUPPORTING)
                 {
-                    int type = 0;
-                    type = rp_supporting_tokens_get_type(supporting_tokens, env);
-                    if(type == RP_SUPPORTING_SIGNED_SUPPORTING)
-                    {
-                        rp_binding_commons_set_signed_supporting_tokens(commons, env, supporting_tokens);
-                    }    
-                    else if(type == RP_SUPPORTING_SIGNED_ENDORSING_SUPPORTING)
-                    {
-                        rp_binding_commons_set_signed_endorsing_supporting_tokens(commons, env, supporting_tokens);
-                    }                       
-                    else return AXIS2_FAILURE;
-                }                    
+                    rp_binding_commons_set_signed_endorsing_supporting_tokens(commons, env, supporting_tokens);
+                }                       
                 else return AXIS2_FAILURE;
-            }
+            }                    
             else return AXIS2_FAILURE;
-        }        
+        }
         else return AXIS2_FAILURE;
     }
+
     rp_transport_binding_set_binding_commons(transport_binding, env, commons);
     return AXIS2_SUCCESS;
 }

Copied: webservices/axis2/trunk/c/neethi/src/secpolicy/builder/username_token_builder.c (from r532293, webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/builder/username_token_builder.c)
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/secpolicy/builder/username_token_builder.c?view=diff&rev=542115&p1=webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/builder/username_token_builder.c&r1=532293&p2=webservices/axis2/trunk/c/neethi/src/secpolicy/builder/username_token_builder.c&r2=542115
==============================================================================
--- webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/builder/username_token_builder.c (original)
+++ webservices/axis2/trunk/c/neethi/src/secpolicy/builder/username_token_builder.c Sun May 27 22:25:27 2007
@@ -62,6 +62,12 @@
     rp_username_token_set_inclusion(username_token,env,inclusion_value);
     
     child_node = axiom_node_get_first_element(node,env);
+    if(!child_node)
+    {
+        assertion = neethi_assertion_create(env);
+        neethi_assertion_set_value(assertion, env, username_token, ASSERTION_TYPE_USERNAME_TOKEN);
+        return assertion;
+    }        
 
     if(axiom_node_get_node_type(child_node, env) == AXIOM_ELEMENT)
     {

Copied: webservices/axis2/trunk/c/neethi/src/secpolicy/builder/wss10_builder.c (from r532293, webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/builder/wss10_builder.c)
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/secpolicy/builder/wss10_builder.c?view=diff&rev=542115&p1=webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/builder/wss10_builder.c&r1=532293&p2=webservices/axis2/trunk/c/neethi/src/secpolicy/builder/wss10_builder.c&r2=542115
==============================================================================
--- webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/builder/wss10_builder.c (original)
+++ webservices/axis2/trunk/c/neethi/src/secpolicy/builder/wss10_builder.c Sun May 27 22:25:27 2007
@@ -101,26 +101,22 @@
         value = neethi_assertion_get_value(assertion, env);
         type = neethi_assertion_get_type(assertion, env);
 
-        if(value)
+        if(type == ASSERTION_TYPE_MUST_SUPPORT_REF_KEY_IDENTIFIER)
         {
-            if(type == ASSERTION_TYPE_MUST_SUPPORT_REF_KEY_IDENTIFIER)
-            {
-                rp_wss10_set_must_support_ref_key_identifier(wss10,env,AXIS2_TRUE);
-            }
-            else if(type == ASSERTION_TYPE_MUST_SUPPORT_REF_ISSUER_SERIAL)
-            {
-                rp_wss10_set_must_support_ref_issuer_serial(wss10,env,AXIS2_TRUE);
-            }
-            else if(type == ASSERTION_TYPE_MUST_SUPPORT_REF_EXTERNAL_URI)
-            {
-                rp_wss10_set_must_support_ref_external_uri(wss10,env,AXIS2_TRUE);
-            }
-            else if(type == ASSERTION_TYPE_MUST_SUPPORT_REF_EMBEDDED_TOKEN)
-            {
-                rp_wss10_set_must_support_ref_embedded_token(wss10,env,AXIS2_TRUE);
-            }                
-            else return AXIS2_FAILURE;
-        }        
+            rp_wss10_set_must_support_ref_key_identifier(wss10,env,AXIS2_TRUE);
+        }
+        else if(type == ASSERTION_TYPE_MUST_SUPPORT_REF_ISSUER_SERIAL)
+        {
+            rp_wss10_set_must_support_ref_issuer_serial(wss10,env,AXIS2_TRUE);
+        }
+        else if(type == ASSERTION_TYPE_MUST_SUPPORT_REF_EXTERNAL_URI)
+        {
+            rp_wss10_set_must_support_ref_external_uri(wss10,env,AXIS2_TRUE);
+        }
+        else if(type == ASSERTION_TYPE_MUST_SUPPORT_REF_EMBEDDED_TOKEN)
+        {
+            rp_wss10_set_must_support_ref_embedded_token(wss10,env,AXIS2_TRUE);
+        }                
         else return AXIS2_FAILURE;
     }
     return AXIS2_SUCCESS;

Copied: webservices/axis2/trunk/c/neethi/src/secpolicy/model/Makefile.am (from r532293, webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/model/Makefile.am)
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/secpolicy/model/Makefile.am?view=diff&rev=542115&p1=webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/model/Makefile.am&r1=532293&p2=webservices/axis2/trunk/c/neethi/src/secpolicy/model/Makefile.am&r2=542115
==============================================================================
--- webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/model/Makefile.am (original)
+++ webservices/axis2/trunk/c/neethi/src/secpolicy/model/Makefile.am Sun May 27 22:25:27 2007
@@ -10,7 +10,7 @@
 							symmetric_binding.c transport_binding.c ut.c wss10.c wss11.c x509_token.c
 
 
-librp_model_la_LIBADD  = ${AXIS2C_HOME}/lib
+librp_model_la_LIBADD  = ../../../../util/src/libaxutil.la
 
 
 INCLUDES = -I$(top_builddir)/include \

Copied: webservices/axis2/trunk/c/neethi/src/secpolicy/model/rampart_config.c (from r532293, webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/model/rampart_config.c)
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/secpolicy/model/rampart_config.c?view=diff&rev=542115&p1=webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/model/rampart_config.c&r1=532293&p2=webservices/axis2/trunk/c/neethi/src/secpolicy/model/rampart_config.c&r2=542115
==============================================================================
--- webservices/axis2/scratch/c/neethi/axis2c/neethi/src/secpolicy/model/rampart_config.c (original)
+++ webservices/axis2/trunk/c/neethi/src/secpolicy/model/rampart_config.c Sun May 27 22:25:27 2007
@@ -29,6 +29,7 @@
     axis2_char_t *receiver_certificate_file;
     axis2_char_t *certificate_file;
     axis2_char_t *private_key_file;
+    axis2_char_t *rd_val;
 };
 
 AXIS2_EXTERN rp_rampart_config_t *AXIS2_CALL 
@@ -55,6 +56,7 @@
     rampart_config->authenticate_module = NULL;
     rampart_config->password_type = NULL;
     rampart_config->time_to_live = NULL;
+    rampart_config->rd_val = NULL;
     return rampart_config;
 }
 
@@ -275,3 +277,26 @@
     rampart_config->time_to_live = time_to_live;
     return AXIS2_SUCCESS;
 }
+
+AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+rp_rampart_config_get_rd_val(
+    rp_rampart_config_t *rampart_config,
+    const axutil_env_t *env)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+    return rampart_config->rd_val;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rp_rampart_config_set_rd_val(rp_rampart_config_t *rampart_config,
+            const axutil_env_t *env,
+            axis2_char_t *rd_val)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error, rd_val, AXIS2_FAILURE);
+
+    rampart_config->rd_val = rd_val;
+    return AXIS2_SUCCESS;
+}
+

Modified: webservices/axis2/trunk/c/src/core/deployment/Makefile.am
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/deployment/Makefile.am?view=diff&rev=542115&r1=542114&r2=542115
==============================================================================
--- webservices/axis2/trunk/c/src/core/deployment/Makefile.am (original)
+++ webservices/axis2/trunk/c/src/core/deployment/Makefile.am Sun May 27 22:25:27 2007
@@ -34,4 +34,5 @@
             -I$(top_builddir)/src/core/deployment \
             -I$(top_builddir)/src/core/util \
             -I$(top_builddir)/axiom/include \
+            -I$(top_builddir)/neethi/include \
             -I$(top_builddir)/util/include

Modified: webservices/axis2/trunk/c/src/core/deployment/axis2_deployment.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/deployment/axis2_deployment.h?view=diff&rev=542115&r1=542114&r2=542115
==============================================================================
--- webservices/axis2/trunk/c/src/core/deployment/axis2_deployment.h (original)
+++ webservices/axis2/trunk/c/src/core/deployment/axis2_deployment.h Sun May 27 22:25:27 2007
@@ -89,6 +89,10 @@
 #define AXIS2_ATUSE "use"
 #define AXIS2_MEP "mep"
 
+/* for messages */
+#define AXIS2_MESSAGE "message"
+#define AXIS2_LABEL "label"
+
 /* for handlers */
 #define AXIS2_REF "ref"
 #define AXIS2_CLASSNAME "class"

Modified: webservices/axis2/trunk/c/src/core/deployment/axis2_desc_builder.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/deployment/axis2_desc_builder.h?view=diff&rev=542115&r1=542114&r2=542115
==============================================================================
--- webservices/axis2/trunk/c/src/core/deployment/axis2_desc_builder.h (original)
+++ webservices/axis2/trunk/c/src/core/deployment/axis2_desc_builder.h Sun May 27 22:25:27 2007
@@ -44,6 +44,7 @@
 #include <axiom_children_with_specific_attribute_iterator.h>
 #include <axis2_phase.h>
 #include <axutil_dll_desc.h>
+#include <axis2_policy_include.h>
 
 
 #ifdef __cplusplus
@@ -231,6 +232,17 @@
         axis2_char_t *file_name,
         struct axis2_dep_engine *engine);
 
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
+    axis2_process_policy_elements(const axutil_env_t *env,
+        int type, 
+        axiom_children_qname_iterator_t *iterator,
+        axis2_policy_include_t *policy_include);
+
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
+    axis2_process_policy_reference_elements(const axutil_env_t *env,
+        int type, 
+        axiom_children_qname_iterator_t *iterator,
+        axis2_policy_include_t *policy_include);
 /** @} */
 
 #ifdef __cplusplus

Modified: webservices/axis2/trunk/c/src/core/deployment/desc_builder.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/deployment/desc_builder.c?view=diff&rev=542115&r1=542114&r2=542115
==============================================================================
--- webservices/axis2/trunk/c/src/core/deployment/desc_builder.c (original)
+++ webservices/axis2/trunk/c/src/core/deployment/desc_builder.c Sun May 27 22:25:27 2007
@@ -21,6 +21,7 @@
 #include <axutil_utils.h>
 #include <axutil_generic_obj.h>
 #include <axis2_raw_xml_in_out_msg_recv.h>
+#include <neethi_engine.h>
 
 struct axis2_desc_builder
 {
@@ -788,7 +789,6 @@
     return AXIS2_SUCCESS;
 }
 
-
 AXIS2_EXTERN axis2_status_t AXIS2_CALL
 axis2_desc_builder_process_op_module_refs(axis2_desc_builder_t *desc_builder,
     const axutil_env_t *env,
@@ -1000,3 +1000,54 @@
 {
     return desc_builder->engine;
 }
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+axis2_process_policy_elements(const axutil_env_t *env,
+    int type, 
+    axiom_children_qname_iterator_t *iterator,
+    axis2_policy_include_t *policy_include) 
+{
+    while (axiom_children_qname_iterator_has_next(iterator, env))
+    {
+        axiom_node_t *node = NULL;
+        node = axiom_children_qname_iterator_next(iterator, env);
+        if (node)
+        {
+            axiom_element_t *element = NULL;
+            neethi_policy_t *policy = NULL;
+            
+            element = axiom_node_get_data_element(node, env);
+            policy = neethi_engine_get_policy(env, node, element);
+            axis2_policy_include_add_policy_element(policy_include, env, 
+                type, policy);
+        }
+    }
+    return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+axis2_process_policy_reference_elements(const axutil_env_t *env,
+    int type, 
+    axiom_children_qname_iterator_t *iterator,
+    axis2_policy_include_t *policy_include) 
+{
+    while (axiom_children_qname_iterator_has_next(iterator, env))
+    {
+        axiom_node_t *node = NULL;
+        node = axiom_children_qname_iterator_next(iterator, env);
+        if (node)
+        {
+            axiom_element_t *element = NULL;
+            neethi_reference_t *reference = NULL;
+            
+            element = axiom_node_get_data_element(node, env);
+            /* TODO: add neethi_engine_get_policy_reference
+            reference = neethi_engine_get_policy_reference(env, node, element);*/
+            axis2_policy_include_add_policy_reference_element(policy_include, env, 
+                type, reference);
+        }
+    }
+    return AXIS2_SUCCESS;
+}
+
+

Modified: webservices/axis2/trunk/c/src/core/deployment/svc_builder.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/deployment/svc_builder.c?view=diff&rev=542115&r1=542114&r2=542115
==============================================================================
--- webservices/axis2/trunk/c/src/core/deployment/svc_builder.c (original)
+++ webservices/axis2/trunk/c/src/core/deployment/svc_builder.c Sun May 27 22:25:27 2007
@@ -19,6 +19,7 @@
 #include <axutil_class_loader.h>
 #include <axutil_utils.h>
 #include <axutil_property.h>
+#include <axis2_msg.h>
 
 struct axis2_svc_builder
 {
@@ -31,6 +32,12 @@
     const axutil_env_t *env,
     axiom_children_qname_iterator_t *op_itr);
 
+static void 
+axis2_svc_builder_process_msgs(axis2_svc_builder_t *svc_builder,
+    const axutil_env_t *env,
+    axiom_children_qname_iterator_t *iterator,
+    axis2_op_t *op);
+
 AXIS2_EXTERN axis2_svc_builder_t *AXIS2_CALL
 axis2_svc_builder_create(const axutil_env_t *env)
 {
@@ -148,6 +155,7 @@
     axutil_qname_t *qout_faultflowst = NULL;
     axutil_qname_t *qopst = NULL;
     axutil_qname_t *qattname = NULL;
+    axutil_qname_t *qpolicy = NULL;
     axis2_status_t status = AXIS2_FAILURE;
     axis2_svc_grp_t *parent = NULL;
     axiom_element_t *desc_element = NULL;
@@ -177,6 +185,8 @@
     int i = 0;
     int size = 0;
     AXIS2_TIME_T timestamp = 0;
+    axis2_desc_t *desc = NULL;
+    axis2_policy_include_t *policy_include = NULL;
 
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, svc_node, AXIS2_FAILURE);
@@ -193,7 +203,11 @@
         svc_node);
     axutil_qname_free(qparamst, env);
     qparamst = NULL;
+    
     parent = axis2_svc_get_parent(svc_builder->svc, env);
+    
+    desc = axis2_svc_get_base(svc_builder->svc,  env);
+    policy_include = axis2_desc_get_policy_include(desc, env);
 
     status = axis2_desc_builder_process_params(svc_builder->desc_builder, env,
         itr, 
@@ -371,6 +385,37 @@
         axis2_svc_add_op(svc_builder->svc, env, op_desc);
     }
     axutil_array_list_free(ops, env);
+
+    /*
+      <schema targetNamespace="http://x.y.z"/>
+      setting the PolicyInclude
+      processing <wsp:Policy> .. </..> elements
+    */
+    qpolicy = axutil_qname_create(env, NEETHI_POLICY, NEETHI_NAMESPACE, NULL);
+    itr = axiom_element_get_children_with_qname(svc_element, env,
+            qpolicy, svc_node);
+    axutil_qname_free(qpolicy, env) ;
+    qpolicy = NULL;
+
+    if (itr)
+    {
+        axis2_process_policy_elements(env, AXIS2_SERVICE_POLICY, itr,
+            policy_include);
+    }
+
+    /* processing <wsp:PolicyReference> .. </..> elements */
+    qpolicy = axutil_qname_create(env, NEETHI_REFERENCE, NEETHI_NAMESPACE, NULL);
+    itr = axiom_element_get_children_with_qname(svc_element, env,
+            qpolicy, svc_node);
+    axutil_qname_free(qpolicy, env) ;
+    qpolicy = NULL;
+
+    if (itr)
+    {
+        axis2_process_policy_reference_elements(env, AXIS2_POLICY_REF, itr,
+            policy_include);
+    }
+
     return AXIS2_SUCCESS;
 }
 
@@ -406,6 +451,11 @@
         axiom_node_t *recv_node = NULL;
         axis2_status_t status = AXIS2_FAILURE;
         struct axis2_dep_engine *dep_engine = NULL;
+        axis2_desc_t *desc = NULL;
+        axis2_policy_include_t *policy_include = NULL;
+        axiom_children_qname_iterator_t *itr = NULL;
+        axutil_qname_t *qpolicy = NULL;
+        axutil_qname_t *qmessage = NULL;
 
         op_node = axiom_children_qname_iterator_next(op_itr, env);
         /* getting operation name */
@@ -420,6 +470,14 @@
                 AXIS2_FAILURE);
             return AXIS2_FAILURE;
         }
+        
+        op_name = axiom_attribute_get_value(op_name_att, env);
+        qopname = axutil_qname_create(env, op_name, NULL, NULL);
+        op_desc = axis2_op_create(env);
+        axis2_op_set_qname(op_desc, env, qopname);
+        axutil_qname_free(qopname, env);
+        qopname = NULL;
+
         /* set the mep of the operation */
         qmep = axutil_qname_create(env, AXIS2_MEP, NULL, NULL);
         op_mep_att = axiom_element_get_attribute(op_element, env, qmep);
@@ -440,8 +498,9 @@
 
         axis2_op_set_qname(op_desc, env, qopname);
 
-        axutil_qname_free(qopname, env);
-        qopname = NULL;
+        desc = axis2_op_get_base(op_desc,  env);
+        policy_include = axis2_desc_get_policy_include(desc, env);
+
         /* operation parameters */
         qparamst = axutil_qname_create(env, AXIS2_PARAMETERST, NULL, NULL);
         params_itr = axiom_element_get_children_with_qname(op_element, env,
@@ -489,6 +548,48 @@
         {
             return AXIS2_FAILURE;
         }
+
+        /* setting the policy_include */
+
+        /* processing <wsp:Policy> .. </..> elements */
+        
+        qpolicy = axutil_qname_create(env, NEETHI_POLICY, NEETHI_NAMESPACE, NULL);
+        itr = axiom_element_get_children_with_qname(op_element, env,
+                qpolicy, op_node);
+        axutil_qname_free(qpolicy, env) ;
+        qpolicy = NULL;
+
+        if (itr)
+        {
+            axis2_process_policy_elements(env, AXIS2_SERVICE_POLICY, itr,
+                policy_include);
+        }
+
+        /* processing <wsp:PolicyReference> .. </..> elements */
+        qpolicy = axutil_qname_create(env, NEETHI_REFERENCE, NEETHI_NAMESPACE, NULL);
+        itr = axiom_element_get_children_with_qname(op_element, env,
+                qpolicy, op_node);
+        axutil_qname_free(qpolicy, env) ;
+        qpolicy = NULL;
+
+        if (itr)
+        {
+            axis2_process_policy_reference_elements(env, AXIS2_POLICY_REF, itr,
+                policy_include);
+        }
+
+        qmessage = axutil_qname_create(env, AXIS2_MESSAGE, NULL, NULL);
+        itr = axiom_element_get_children_with_qname(op_element, env,
+                qmessage, op_node);
+        axutil_qname_free(qmessage, env) ;
+        qmessage = NULL;
+
+        if (itr)
+        {
+            axis2_svc_builder_process_msgs(svc_builder, env,
+                itr, op_desc);
+        }
+
         /* setting operation phase */
         dep_engine = 
             axis2_desc_builder_get_dep_engine(svc_builder->desc_builder, env);
@@ -506,6 +607,91 @@
     return ops;
 }
 
+static void 
+axis2_svc_builder_process_msgs(axis2_svc_builder_t *svc_builder,
+    const axutil_env_t *env,
+    axiom_children_qname_iterator_t *iterator,
+    axis2_op_t *op)
+{
+    while (AXIS2_TRUE == axiom_children_qname_iterator_has_next(iterator, env))
+    {
+        axiom_node_t *node = NULL;
+        axiom_element_t *element = NULL;
+        axutil_qname_t *qname = NULL;
+        axis2_char_t *msg_label = NULL;
+        axis2_msg_t *msg = NULL;
+        axiom_children_qname_iterator_t *itr = NULL;
+        axutil_qname_t *qpolicy = NULL;
+        axis2_desc_t *desc = NULL;
+        axis2_policy_include_t *policy_include = NULL;
+                
+        
+        node = axiom_children_qname_iterator_next(iterator, env);
+        element = axiom_node_get_data_element(node, env);
+        qname = axutil_qname_create(env, AXIS2_LABEL, NULL, NULL);
+
+        if (element)
+        {
+            msg_label = axiom_element_get_attribute_value(element, env, qname);
+        }
+
+        if(msg_label)
+        {
+            msg = axis2_op_get_msg(op, env, msg_label);
+        }
+
+        if (msg)
+        {
+            /* operation parameters */
+            axiom_children_qname_iterator_t *params_itr = NULL;
+            axutil_qname_t *qparamst = NULL;
+            qparamst = axutil_qname_create(env, AXIS2_PARAMETERST, NULL, NULL);
+            params_itr = axiom_element_get_children_with_qname(element, env,
+                    qparamst, node);
+            axutil_qname_free(qparamst, env);
+            qparamst = NULL;
+            axis2_desc_builder_process_params(svc_builder->desc_builder,
+                env, params_itr, 
+                axis2_msg_get_param_container(msg, env), 
+                axis2_op_get_param_container(op, env));
+
+            desc = axis2_msg_get_base(msg,  env);
+            policy_include = axis2_desc_get_policy_include(desc, env);
+
+            /* setting the policy_include */
+
+            /* processing <wsp:Policy> .. </..> elements */
+            
+            qpolicy = axutil_qname_create(env, NEETHI_POLICY, NEETHI_NAMESPACE, NULL);
+            itr = axiom_element_get_children_with_qname(element, env,
+                    qpolicy, node);
+            axutil_qname_free(qpolicy, env) ;
+            qpolicy = NULL;
+
+            if (itr)
+            {
+                axis2_process_policy_elements(env, AXIS2_SERVICE_POLICY, itr,
+                    policy_include);
+               /* axis2_process_policy_elements(env, AXIS2_MESSAGE_POLICY, itr,
+                    policy_include);*/
+
+            }
+
+            /* processing <wsp:PolicyReference> .. </..> elements */
+            qpolicy = axutil_qname_create(env, NEETHI_REFERENCE, NEETHI_NAMESPACE, NULL);
+            itr = axiom_element_get_children_with_qname(element, env,
+                    qpolicy, node);
+            axutil_qname_free(qpolicy, env) ;
+            qpolicy = NULL;
+
+            if (itr)
+            {
+                axis2_process_policy_reference_elements(env, AXIS2_POLICY_REF, itr,
+                    policy_include);
+            }
+        }
+    }
+}
 
 AXIS2_EXTERN axis2_status_t AXIS2_CALL
 axis2_svc_builder_process_svc_module_conf(axis2_svc_builder_t *svc_builder,

Modified: webservices/axis2/trunk/c/src/core/description/Makefile.am
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/description/Makefile.am?view=diff&rev=542115&r1=542114&r2=542115
==============================================================================
--- webservices/axis2/trunk/c/src/core/description/Makefile.am (original)
+++ webservices/axis2/trunk/c/src/core/description/Makefile.am Sun May 27 22:25:27 2007
@@ -2,6 +2,7 @@
 
 libaxis2_description_la_SOURCES =desc.c \
                                 op.c \
+                                policy_include.c \
                                 svc.c \
                                 module_desc.c \
                                 svc_grp.c \
@@ -16,5 +17,6 @@
 INCLUDES = -I$(top_builddir)/include \
             -I$(top_builddir)/src/core/engine \
             -I$(top_builddir)/util/include \
-            -I$(top_builddir)/axiom/include
+            -I$(top_builddir)/axiom/include \
+            -I$(top_builddir)/neethi/include
 

Modified: webservices/axis2/trunk/c/src/core/description/desc.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/description/desc.c?view=diff&rev=542115&r1=542114&r2=542115
==============================================================================
--- webservices/axis2/trunk/c/src/core/description/desc.c (original)
+++ webservices/axis2/trunk/c/src/core/description/desc.c Sun May 27 22:25:27 2007
@@ -18,6 +18,7 @@
 #include <axis2_desc.h>
 #include <axutil_property.h>
 #include <axis2_msg.h>
+#include <axis2_policy_include.h>
 
 struct axis2_desc
 {
@@ -26,6 +27,10 @@
 
     /** children of this description */
     axutil_hash_t *children;
+
+    axis2_desc_t *parent;
+
+    axis2_policy_include_t *policy_include;
 };
 
 AXIS2_EXTERN axis2_desc_t *AXIS2_CALL
@@ -46,6 +51,8 @@
 
     desc->param_container = NULL;
     desc->children = NULL;
+    desc->parent = NULL;
+    desc->policy_include = NULL;
 
     desc->param_container = (axutil_param_container_t *)
         axutil_param_container_create(env);
@@ -195,4 +202,48 @@
     }
     return AXIS2_FAILURE;
 }
+
+AXIS2_EXTERN axis2_desc_t *AXIS2_CALL
+axis2_desc_get_parent(const axis2_desc_t *desc,
+    const axutil_env_t *env)
+{
+    return desc->parent;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+axis2_desc_set_parent(axis2_desc_t *desc,
+    const axutil_env_t *env,
+    axis2_desc_t *parent)
+{
+    desc->parent = parent;
+    return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+axis2_desc_set_policy_include(axis2_desc_t *desc,
+    const axutil_env_t *env,
+    axis2_policy_include_t *policy_include)
+{
+    if (desc->policy_include)
+    {
+        axis2_policy_include_free(desc->policy_include, env);
+        desc->policy_include = NULL;
+    }
+    
+    desc->policy_include = policy_include;
+    return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN axis2_policy_include_t *AXIS2_CALL
+axis2_desc_get_policy_include(axis2_desc_t *desc,
+    const axutil_env_t *env)
+{
+    if (!desc->policy_include)
+    {
+        /*desc->policy_include = axis2_policy_include_create(env);*/
+        desc->policy_include = axis2_policy_include_create_with_desc(env, desc);
+    }
+    return desc->policy_include;
+}
+
 

Modified: webservices/axis2/trunk/c/src/core/description/msg.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/description/msg.c?view=diff&rev=542115&r1=542114&r2=542115
==============================================================================
--- webservices/axis2/trunk/c/src/core/description/msg.c (original)
+++ webservices/axis2/trunk/c/src/core/description/msg.c Sun May 27 22:25:27 2007
@@ -32,6 +32,8 @@
     axis2_char_t *direction;
     /** parameter container to hold message parameters */
     struct axutil_param_container *param_container;
+    /** base description struct */
+    axis2_desc_t *base;
 };
 
 AXIS2_EXTERN axis2_msg_t *AXIS2_CALL
@@ -55,6 +57,7 @@
     msg->name = NULL;
     msg->element_qname = NULL;
     msg->direction = NULL;
+    msg->base = NULL;
 
     msg->param_container = 
         (axutil_param_container_t *)axutil_param_container_create(env);
@@ -70,7 +73,14 @@
         axis2_msg_free(msg, env);
         return NULL;
     }
-
+    
+    msg->base = axis2_desc_create(env);
+    if (!msg->base)
+    {
+        axis2_msg_free(msg, env);
+        return NULL;
+    }
+    
     return msg;
 }
 
@@ -167,6 +177,10 @@
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     msg->parent = op;
+    if (op)
+    {
+        axis2_desc_set_parent(msg->base, env, axis2_op_get_base(op, env));
+    }
     return AXIS2_SUCCESS;
 }
 
@@ -328,4 +342,16 @@
     return AXIS2_SUCCESS;
 }
 
+AXIS2_EXTERN axis2_desc_t *AXIS2_CALL
+axis2_msg_get_base(const axis2_msg_t *msg,
+    const axutil_env_t *env)
+{
+    return msg->base;
+}
 
+AXIS2_EXTERN axutil_param_container_t *AXIS2_CALL
+axis2_msg_get_param_container(const axis2_msg_t *msg,
+    const axutil_env_t *env)
+{
+    return msg->param_container;
+}

Modified: webservices/axis2/trunk/c/src/core/description/op.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/description/op.c?view=diff&rev=542115&r1=542114&r2=542115
==============================================================================
--- webservices/axis2/trunk/c/src/core/description/op.c (original)
+++ webservices/axis2/trunk/c/src/core/description/op.c Sun May 27 22:25:27 2007
@@ -355,6 +355,10 @@
         op->parent = NULL;
     }
     op->parent = svc;
+    if (svc)
+    {
+        axis2_desc_set_parent(op->base, env, axis2_svc_get_base(svc, env));
+    }
     return AXIS2_SUCCESS;
 }
 
@@ -1184,4 +1188,12 @@
 {
     return op->param_container;
 }
+
+AXIS2_EXTERN axis2_desc_t *AXIS2_CALL
+axis2_op_get_base(const axis2_op_t *op,
+    const axutil_env_t *env)
+{
+    return op->base;
+}
+
 

Copied: webservices/axis2/trunk/c/src/core/description/policy_include.c (from r532293, webservices/axis2/scratch/c/neethi/axis2c/src/core/description/policy_include.c)
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/description/policy_include.c?view=diff&rev=542115&p1=webservices/axis2/scratch/c/neethi/axis2c/src/core/description/policy_include.c&r1=532293&p2=webservices/axis2/trunk/c/src/core/description/policy_include.c&r2=542115
==============================================================================
--- webservices/axis2/scratch/c/neethi/axis2c/src/core/description/policy_include.c (original)
+++ webservices/axis2/trunk/c/src/core/description/policy_include.c Sun May 27 22:25:27 2007
@@ -17,6 +17,7 @@
 
 #include <axis2_policy_include.h>
 #include <neethi_policy.h>
+#include <neethi_engine.h>
 
 struct axis2_policy_include
 {
@@ -306,7 +307,7 @@
         if (wrapper)
         {
             neethi_policy_t *policy = NULL;
-            if (wrapper->type != AXIS2_ANON_POLICY) 
+            if (wrapper->type == AXIS2_POLICY_REF) 
             {
                 neethi_reference_t *reference = 
                     (neethi_reference_t *)wrapper->value;
@@ -356,8 +357,13 @@
         {
             if (axis2_policy_include_get_policy(policy_include, env)) 
             {
-                result = (neethi_policy_t*) neethi_engine_merge(env, parent_policy,
-                    axis2_policy_include_get_policy(policy_include, env));
+                neethi_policy_t *temp_policy = NULL;
+                parent_policy = (neethi_policy_t *)neethi_engine_get_normalize(env, AXIS2_FALSE, parent_policy);
+                temp_policy = axis2_policy_include_get_policy(policy_include, env);
+                temp_policy =  (neethi_policy_t *)neethi_engine_get_normalize(env, AXIS2_FALSE, temp_policy);
+              /* result = (neethi_policy_t*) neethi_engine_merge(env, parent_policy,
+                    axis2_policy_include_get_policy(policy_include, env));*/
+                result = (neethi_policy_t*) neethi_engine_merge(env,parent_policy, temp_policy);
 
             } 
             else 

Modified: webservices/axis2/trunk/c/src/core/description/svc.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/description/svc.c?view=diff&rev=542115&r1=542114&r2=542115
==============================================================================
--- webservices/axis2/trunk/c/src/core/description/svc.c (original)
+++ webservices/axis2/trunk/c/src/core/description/svc.c Sun May 27 22:25:27 2007
@@ -93,6 +93,8 @@
     struct axutil_param_container *param_container;
     /** flow container that encapsulates the flow related data */
     struct axis2_flow_container *flow_container;
+    /** base description struct */
+    axis2_desc_t *base;
 };
 
 AXIS2_EXTERN axis2_svc_t *AXIS2_CALL
@@ -136,6 +138,7 @@
     svc->impl_class = NULL;
     svc->qname = NULL;
     svc->style = NULL;
+    svc->base = NULL;
 
     svc->param_container = axutil_param_container_create(env);
     if (! svc->param_container)
@@ -216,6 +219,13 @@
     }
     svc->target_ns_prefix = axutil_strdup(env, "tns");
     svc->sc_calc_count = 0;
+    
+    svc->base = axis2_desc_create(env);
+    if (!svc->base)
+    {
+        axis2_svc_free(svc, env);
+        return NULL;
+    }
 
     return svc;
 }
@@ -473,6 +483,10 @@
     AXIS2_PARAM_CHECK(env->error, svc_grp, AXIS2_FAILURE);
 
     svc->parent = svc_grp;
+    if (svc_grp)
+    {
+        axis2_desc_set_parent(svc->base, env, axis2_svc_grp_get_base(svc_grp, env));
+    }
 
     return AXIS2_SUCCESS;
 }
@@ -1084,3 +1098,12 @@
     svc->wsdl_path = (axis2_char_t *)wsdl_path;
     return AXIS2_SUCCESS;
 }
+
+
+AXIS2_EXTERN axis2_desc_t *AXIS2_CALL
+axis2_svc_get_base(const axis2_svc_t *svc,
+    const axutil_env_t *env)
+{
+    return svc->base;
+}
+

Modified: webservices/axis2/trunk/c/src/core/description/svc_grp.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/description/svc_grp.c?view=diff&rev=542115&r1=542114&r2=542115
==============================================================================
--- webservices/axis2/trunk/c/src/core/description/svc_grp.c (original)
+++ webservices/axis2/trunk/c/src/core/description/svc_grp.c Sun May 27 22:25:27 2007
@@ -32,6 +32,8 @@
     axutil_array_list_t *module_list;
     /** parameter container to hold service related parameters */
     axutil_param_container_t *param_container;
+    /** base description struct */
+    axis2_desc_t *base;
 };
 
 AXIS2_EXTERN axis2_svc_grp_t *AXIS2_CALL
@@ -55,6 +57,7 @@
     svc_grp->parent = NULL;
     svc_grp->svc_grp_name = NULL;
     svc_grp->module_list = NULL;
+    svc_grp->base = NULL;
 
     svc_grp->param_container =  axutil_param_container_create(env);
     if (!svc_grp->param_container)
@@ -87,6 +90,13 @@
         AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
         return NULL;
     }
+    
+    svc_grp->base = axis2_desc_create(env);
+    if (!svc_grp->base)
+    {
+        axis2_svc_grp_free(svc_grp, env);
+        return NULL;
+    }
 
     return svc_grp;
 }
@@ -104,6 +114,10 @@
     svc_grp = (axis2_svc_grp_t *) axis2_svc_grp_create(env);
     if (svc_grp)
         svc_grp->parent = conf;
+    if (conf)
+    {
+        axis2_desc_set_parent(svc_grp->base, env, axis2_conf_get_base(conf, env));
+    }
 
     return svc_grp;
 
@@ -410,6 +424,10 @@
     if (svc_grp->parent)
          axis2_conf_free(svc_grp->parent, env);
     svc_grp->parent = parent;
+    if (parent)
+    {
+        axis2_desc_set_parent(svc_grp->base, env, axis2_conf_get_base(parent, env));
+    }
     return AXIS2_SUCCESS;
 }
 
@@ -559,4 +577,10 @@
     return svc_grp->param_container;
 }
 
+AXIS2_EXTERN axis2_desc_t *AXIS2_CALL
+axis2_svc_grp_get_base(const axis2_svc_grp_t *svc_grp,
+    const axutil_env_t *env)
+{
+    return svc_grp->base;
+}
 

Modified: webservices/axis2/trunk/c/src/core/engine/Makefile.am
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/engine/Makefile.am?view=diff&rev=542115&r1=542114&r2=542115
==============================================================================
--- webservices/axis2/trunk/c/src/core/engine/Makefile.am (original)
+++ webservices/axis2/trunk/c/src/core/engine/Makefile.am Sun May 27 22:25:27 2007
@@ -23,6 +23,7 @@
 					$(top_builddir)/src/core/transport/http/common/libaxis2_http_common.la \
 					$(top_builddir)/src/core/transport/http/util/libaxis2_http_util.la \
 					$(top_builddir)/util/src/libaxutil.la \
+					$(top_builddir)/neethi/src/libneethi.la \
 					$(top_builddir)/axiom/src/om/libaxis2_axiom.la 
 
 INCLUDES = 	-I$(top_builddir)/include \
@@ -35,6 +36,7 @@
             -I$(top_builddir)/src/core/util \
             -I$(top_builddir)/src/core/clientapi \
             -I$(top_builddir)/util/include \
+            -I$(top_builddir)/neethi/include \
             -I$(top_builddir)/axiom/include
 
 EXTRA_DIST=axis2_disp_checker.h

Modified: webservices/axis2/trunk/c/src/core/engine/conf.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/engine/conf.c?view=diff&rev=542115&r1=542114&r2=542115
==============================================================================
--- webservices/axis2/trunk/c/src/core/engine/conf.c (original)
+++ webservices/axis2/trunk/c/src/core/engine/conf.c Sun May 27 22:25:27 2007
@@ -55,6 +55,11 @@
     axis2_bool_t enable_security;
     /** configuration parameter container */
     axutil_param_container_t *param_container;
+    /** base description struct */
+    axis2_desc_t *base;
+
+    /* this is a hack to keep rampart_context at client side*/
+    void *security_context;
 };
 
 AXIS2_EXTERN axis2_conf_t *AXIS2_CALL
@@ -96,6 +101,8 @@
     conf->handlers = NULL;
     conf->enable_mtom = AXIS2_FALSE;
     conf->enable_security = AXIS2_FALSE;
+    conf->base = NULL;
+    conf->security_context = NULL;
 
     conf->param_container = (axutil_param_container_t *)
             axutil_param_container_create(env);
@@ -151,6 +158,7 @@
     else
     {
         axis2_disp_t *uri_dispatch = NULL;
+        axis2_disp_t *add_dispatch = NULL;
 
         phase = axis2_phase_create(env, AXIS2_PHASE_TRANSPORT_IN);
         if (! phase)
@@ -163,14 +171,22 @@
         uri_dispatch = axis2_req_uri_disp_create(env);
         if (uri_dispatch)
         {
-                axis2_handler_t *handler = NULL;
-                handler = axis2_disp_get_base(uri_dispatch, env);
-                axis2_disp_free(uri_dispatch, env);
-                 axis2_phase_add_handler_at(phase, env, 0, handler);
-                axutil_array_list_add(conf->handlers, env, axis2_handler_get_handler_desc(handler, env));
-                handler = NULL;
+            axis2_handler_t *handler = NULL;
+            handler = axis2_disp_get_base(uri_dispatch, env);
+            axis2_disp_free(uri_dispatch, env);
+            axis2_phase_add_handler_at(phase, env, 0, handler);
+            axutil_array_list_add(conf->handlers, env, axis2_handler_get_handler_desc(handler, env));
+        }
+        
+        add_dispatch = axis2_addr_disp_create(env);
+        if (add_dispatch)
+        {
+            axis2_handler_t *handler = NULL;
+            handler = axis2_disp_get_base(add_dispatch, env);
+            axis2_disp_free(add_dispatch, env);
+            axis2_phase_add_handler_at(phase, env, 1, handler);
+            axutil_array_list_add(conf->handlers, env, axis2_handler_get_handler_desc(handler, env));
         }
-
         status = axutil_array_list_add(conf->
                 in_phases_upto_and_including_post_dispatch, env, phase);
         if (AXIS2_FAILURE == status)
@@ -245,6 +261,13 @@
         return NULL;
     }
 
+    conf->base = axis2_desc_create(env);
+    if (!conf->base)
+    {
+        axis2_conf_free(conf, env);
+        return NULL;
+    }
+
     return conf;
 }
 
@@ -1141,7 +1164,6 @@
 {
     axis2_phase_t *dispatch = NULL;
     axis2_status_t status = AXIS2_FAILURE;
-    axis2_disp_t *add_dispatch = NULL;
     axis2_disp_t *soap_action_based_dispatch = NULL;
     axis2_disp_t *soap_msg_body_based_dispatch = NULL;
     axis2_handler_t *handler = NULL;
@@ -1167,18 +1189,7 @@
      axis2_phase_add_handler_at(dispatch, env, 0, handler);
     axutil_array_list_add(conf->handlers, env, axis2_handler_get_handler_desc(handler, env));
 
-    add_dispatch = axis2_addr_disp_create(env);
-    if (!add_dispatch)
-    {
-         axis2_phase_free(dispatch, env);
-        return AXIS2_FAILURE;
-    }
-
-    handler = axis2_disp_get_base(add_dispatch, env);
-    axis2_disp_free(add_dispatch, env);
-     axis2_phase_add_handler_at(dispatch, env, 1, handler);
-    axutil_array_list_add(conf->handlers, env, axis2_handler_get_handler_desc(handler, env));
-
+    
     soap_action_based_dispatch = axiom_soap_action_disp_create(env);
     if (!soap_action_based_dispatch)
     {
@@ -1583,6 +1594,28 @@
     return AXIS2_SUCCESS;
 }
 
+AXIS2_EXTERN void* AXIS2_CALL
+axis2_conf_get_security_context(
+    axis2_conf_t *conf,
+    const axutil_env_t *env)
+{
+    return conf->security_context;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+axis2_conf_set_security_context(
+    axis2_conf_t *conf,
+    const axutil_env_t *env,
+    void* security_context)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error, conf, AXIS2_FAILURE);
+
+    conf->security_context = (void *)security_context;
+    return AXIS2_SUCCESS;
+}
+
+
 AXIS2_EXTERN axutil_param_container_t *AXIS2_CALL
 axis2_conf_get_param_container(const axis2_conf_t *conf,
     const axutil_env_t *env)
@@ -1590,3 +1623,9 @@
     return conf->param_container;
 }
 
+AXIS2_EXTERN axis2_desc_t *AXIS2_CALL
+axis2_conf_get_base(const axis2_conf_t *conf,
+    const axutil_env_t *env)
+{
+    return conf->base;
+}

Modified: webservices/axis2/trunk/c/src/modules/mod_addr/module.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/modules/mod_addr/module.xml?view=diff&rev=542115&r1=542114&r2=542115
==============================================================================
--- webservices/axis2/trunk/c/src/modules/mod_addr/module.xml (original)
+++ webservices/axis2/trunk/c/src/modules/mod_addr/module.xml Sun May 27 22:25:27 2007
@@ -1,7 +1,7 @@
 <module name="addressing" class="axis2_mod_addr">
     <inflow>
         <handler name="AddressingInHandler" class="axis2_mod_addr">
-            <order phase="PreDispatch"/>
+            <order phase="Transport" before="addressing_based_dispatcher"/>
         </handler>
     </inflow>
 



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org