Пример #1
0
neethi_policy_t *AXIS2_CALL
merge_policylist(
    axutil_array_list_t * arraylist,
    const axutil_env_t * env)
{
    int i = 0;
    neethi_policy_t *policy = NULL;
    neethi_policy_t *result = NULL;

    result = (neethi_policy_t *) axutil_array_list_get(arraylist, env, 0);
    result =
        (neethi_policy_t *) neethi_engine_get_normalize(env, AXIS2_FALSE,
                                                        result);

    for (i = 1; i < axutil_array_list_size(arraylist, env); i++)
    {
        policy = (neethi_policy_t *) axutil_array_list_get(arraylist, env, i);
        policy =
            (neethi_policy_t *) neethi_engine_get_normalize(env, AXIS2_FALSE,
                                                            policy);
        result = (neethi_policy_t *) neethi_engine_merge(env, policy, result);
    }
    return result;
}
Пример #2
0
axis2_status_t
wsf_wsdl_util_create_merged_neethi_policy(
    const axutil_env_t* env,
    axiom_node_t* input_policy_node_axiom,
    axiom_node_t* binding_policy_node_axiom,
    neethi_policy_t** merged_input_neethi_policy)
{
    axis2_status_t status = AXIS2_SUCCESS;
    neethi_policy_t *input_neethi_policy = NULL;
    axiom_element_t *input_policy_root_ele = NULL;
    neethi_policy_t *binding_neethi_policy = NULL;
    axiom_element_t *binding_policy_root_ele = NULL;
    neethi_policy_t *normalized_input_neethi_policy = NULL;
    neethi_policy_t *normalized_binding_neethi_policy = NULL;
    
    if (binding_policy_node_axiom) 
    {
        if (axiom_node_get_node_type (binding_policy_node_axiom, env) == AXIOM_ELEMENT) 
        {
            binding_policy_root_ele = 
                (axiom_element_t*)axiom_node_get_data_element(binding_policy_node_axiom, env);
            
            if (binding_policy_root_ele) 
            {
                binding_neethi_policy = neethi_engine_get_policy (env, 
                                                                  binding_policy_node_axiom,
                                                                  binding_policy_root_ele);
                normalized_binding_neethi_policy = 
                    neethi_engine_get_normalize(env, AXIS2_FALSE, binding_neethi_policy);
                neethi_policy_free(binding_neethi_policy, env);
                binding_neethi_policy = NULL;
            }
        }
    }
    
    if (input_policy_node_axiom) 
    {
        if (axiom_node_get_node_type (input_policy_node_axiom, env) == AXIOM_ELEMENT) 
        {
            input_policy_root_ele =
                (axiom_element_t *)axiom_node_get_data_element (input_policy_node_axiom, env);

            if (input_policy_root_ele) 
            {
                input_neethi_policy =  neethi_engine_get_policy (env, 
                                                                 input_policy_node_axiom,
                                                                 input_policy_root_ele);
                normalized_input_neethi_policy = 
                    neethi_engine_get_normalize(env, AXIS2_FALSE, input_neethi_policy);
                neethi_policy_free(input_neethi_policy, env);
                input_neethi_policy = NULL;
            } 
        }
    }
    
    if (normalized_input_neethi_policy && normalized_binding_neethi_policy)
    {
        *merged_input_neethi_policy = 
            neethi_engine_merge(env, normalized_input_neethi_policy, normalized_binding_neethi_policy);
        neethi_policy_free(normalized_binding_neethi_policy, env);
        neethi_policy_free(normalized_input_neethi_policy, env);
        AXIS2_LOG_DEBUG_MSG(env->log, "Outgoing policies merged");
    }
    else if (!normalized_input_neethi_policy && normalized_binding_neethi_policy)
    {
        *merged_input_neethi_policy = normalized_binding_neethi_policy;
        neethi_policy_free(normalized_binding_neethi_policy, env);
        AXIS2_LOG_DEBUG_MSG(env->log, "Binding policy is set");
    }    
    else if (normalized_input_neethi_policy && !normalized_binding_neethi_policy)
    {
        *merged_input_neethi_policy = normalized_input_neethi_policy;
        neethi_policy_free(normalized_input_neethi_policy, env);
        AXIS2_LOG_DEBUG_MSG(env->log, "Input policy is set");
    }
    else
    {
        AXIS2_LOG_DEBUG_MSG(env->log, "Valid policies not found");
        status = AXIS2_FAILURE;
    }
    
    return status;
}