Exemple #1
0
void
test_array_list(
    const axutil_env_t * env)
{
    axutil_array_list_t *al;
    a *entry = NULL;
    int size;

    al = axutil_array_list_create(env, 1);
    printf("list size %d\n", axutil_array_list_size(al, env));

    entry = (a *) AXIS2_MALLOC(env->allocator, sizeof(a));
    entry->value = axutil_strdup(env, "value1");
    axutil_array_list_add(al, env, (void *) entry);

    entry = (a *) AXIS2_MALLOC(env->allocator, sizeof(a));
    entry->value = axutil_strdup(env, "value2");
    axutil_array_list_add(al, env, (void *) entry);

    entry = (a *) AXIS2_MALLOC(env->allocator, sizeof(a));
    entry->value = axutil_strdup(env, "value3");
    axutil_array_list_add(al, env, (void *) entry);

    entry = (a *) AXIS2_MALLOC(env->allocator, sizeof(a));
    entry->value = axutil_strdup(env, "value4");
    axutil_array_list_add(al, env, (void *) entry);

    entry = (a *) AXIS2_MALLOC(env->allocator, sizeof(a));
    entry->value = axutil_strdup(env, "value5");
    axutil_array_list_add(al, env, (void *) entry);

    entry = (a *) AXIS2_MALLOC(env->allocator, sizeof(a));
    entry->value = axutil_strdup(env, "value6");
    axutil_array_list_add(al, env, (void *) entry);

    entry = (a *) AXIS2_MALLOC(env->allocator, sizeof(a));
    entry->value = axutil_strdup(env, "value7");
    axutil_array_list_set(al, env, 3, (void *) entry);
    axutil_array_list_remove(al, env, 2);

    entry = (a *) axutil_array_list_get(al, env, 0);
    printf("entry->value:%s\n", entry->value);

    entry = (a *) axutil_array_list_get(al, env, 2);
    printf("entry->value:%s\n", entry->value);
    size = axutil_array_list_size(al, env);
    printf("list size %d\n", axutil_array_list_size(al, env));

}
/**
 * Set return to nill at i
 */
axis2_status_t AXIS2_CALL
adb_listExternalUsersResponse_set_return_nil_at(
    adb_listExternalUsersResponse_t* _listExternalUsersResponse,
    const axutil_env_t *env, int i)
{
    void *element = NULL;
    int size = 0;
    int j;
    axis2_bool_t non_nil_exists = AXIS2_FALSE;

    int k = 0;

    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
    AXIS2_PARAM_CHECK(env->error, _listExternalUsersResponse, AXIS2_FAILURE);

    if(_listExternalUsersResponse->property_return == NULL ||
            _listExternalUsersResponse->is_valid_return == AXIS2_FALSE)
    {

        non_nil_exists = AXIS2_FALSE;
    }
    else
    {
        size = axutil_array_list_size(_listExternalUsersResponse->property_return, env);
        for(j = 0, k = 0; j < size; j ++ )
        {
            if(i == j) continue;
            if(NULL != axutil_array_list_get(_listExternalUsersResponse->property_return, env, i))
            {
                k ++;
                non_nil_exists = AXIS2_TRUE;
                if( k >= 0)
                {
                    break;
                }
            }
        }
    }


    if( k < 0)
    {
        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Size of the array of return is beinng set to be smaller than the specificed number of minOccurs(0)");
        return AXIS2_FAILURE;
    }

    if(_listExternalUsersResponse->property_return == NULL)
    {
        _listExternalUsersResponse->is_valid_return = AXIS2_FALSE;

        return AXIS2_SUCCESS;
    }

    /* check whether there already exist an element */
    element = axutil_array_list_get(_listExternalUsersResponse->property_return, env, i);
    if(NULL != element)
    {



        /* This is an unknown type or a primitive. Please free this manually*/

    }


    if(!non_nil_exists)
    {

        _listExternalUsersResponse->is_valid_return = AXIS2_FALSE;
        axutil_array_list_set(_listExternalUsersResponse->property_return , env, i, NULL);
        return AXIS2_SUCCESS;
    }



    axutil_array_list_set(_listExternalUsersResponse->property_return , env, i, NULL);

    return AXIS2_SUCCESS;

}
/**
 * Set the ith element of return.
 */
axis2_status_t AXIS2_CALL
adb_listExternalUsersResponse_set_return_at(
    adb_listExternalUsersResponse_t* _listExternalUsersResponse,
    const axutil_env_t *env, int i,
    const axis2_char_t* arg_return)
{
    void *element = NULL;
    int size = 0;
    int j;
    int non_nil_count;
    axis2_bool_t non_nil_exists = AXIS2_FALSE;



    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
    AXIS2_PARAM_CHECK(env->error, _listExternalUsersResponse, AXIS2_FAILURE);

    if( _listExternalUsersResponse->is_valid_return &&
            _listExternalUsersResponse->property_return &&

            arg_return == (axis2_char_t*)axutil_array_list_get(_listExternalUsersResponse->property_return, env, i))

    {

        return AXIS2_SUCCESS;
    }


    if(NULL != arg_return)
    {
        non_nil_exists = AXIS2_TRUE;
    }
    else {
        if(_listExternalUsersResponse->property_return != NULL)
        {
            size = axutil_array_list_size(_listExternalUsersResponse->property_return, env);
            for(j = 0, non_nil_count = 0; j < size; j ++ )
            {
                if(i == j) continue;
                if(NULL != axutil_array_list_get(_listExternalUsersResponse->property_return, env, i))
                {
                    non_nil_count ++;
                    non_nil_exists = AXIS2_TRUE;
                    if(non_nil_count >= 0)
                    {
                        break;
                    }
                }
            }


        }
    }


    if(_listExternalUsersResponse->property_return == NULL)
    {
        _listExternalUsersResponse->property_return = axutil_array_list_create(env, 10);
    }

    /* check whether there already exist an element */
    element = axutil_array_list_get(_listExternalUsersResponse->property_return, env, i);
    if(NULL != element)
    {



        /* This is an unknown type or a primitive. Please free this manually*/

    }


    if(!non_nil_exists)
    {

        _listExternalUsersResponse->is_valid_return = AXIS2_FALSE;
        axutil_array_list_set(_listExternalUsersResponse->property_return , env, i, NULL);

        return AXIS2_SUCCESS;
    }

    axutil_array_list_set(_listExternalUsersResponse->property_return , env, i, axutil_strdup(env, arg_return));
    _listExternalUsersResponse->is_valid_return = AXIS2_TRUE;

    return AXIS2_SUCCESS;
}
            /**
             * Set the ith element of extraElement.
             */
            axis2_status_t AXIS2_CALL
            adb_CanonicalizationMethodType_set_extraElement_at(
                    adb_CanonicalizationMethodType_t* _CanonicalizationMethodType,
                    const axutil_env_t *env, int i,
                    axiom_node_t* arg_extraElement)
            {
                void *element = NULL;
                int size = 0;
                int j;
                int non_nil_count;
                axis2_bool_t non_nil_exists = AXIS2_FALSE;

                

                AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
                AXIS2_PARAM_CHECK(env->error, _CanonicalizationMethodType, AXIS2_FAILURE);
                
                if( _CanonicalizationMethodType->is_valid_extraElement &&
                    _CanonicalizationMethodType->property_extraElement &&
                
                    arg_extraElement == (axiom_node_t*)axutil_array_list_get(_CanonicalizationMethodType->property_extraElement, env, i))
                  
                {
                    
                    return AXIS2_SUCCESS; 
                }

                
                    if(NULL != arg_extraElement)
                    {
                        non_nil_exists = AXIS2_TRUE;
                    }
                    else {
                        if(_CanonicalizationMethodType->property_extraElement != NULL)
                        {
                            size = axutil_array_list_size(_CanonicalizationMethodType->property_extraElement, env);
                            for(j = 0, non_nil_count = 0; j < size; j ++ )
                            {
                                if(i == j) continue; 
                                if(NULL != axutil_array_list_get(_CanonicalizationMethodType->property_extraElement, env, i))
                                {
                                    non_nil_count ++;
                                    non_nil_exists = AXIS2_TRUE;
                                    if(non_nil_count >= 0)
                                    {
                                        break;
                                    }
                                }
                            }

                        
                        }
                    }
                  

                if(_CanonicalizationMethodType->property_extraElement == NULL)
                {
                    _CanonicalizationMethodType->property_extraElement = axutil_array_list_create(env, 10);
                }
                
                /* check whether there already exist an element */
                element = axutil_array_list_get(_CanonicalizationMethodType->property_extraElement, env, i);
                if(NULL != element)
                {
                  
                  
                  
                      axiom_node_free_tree ((axiom_node_t*)element, env);
                     
                }

                
                    if(!non_nil_exists)
                    {
                        
                        _CanonicalizationMethodType->is_valid_extraElement = AXIS2_FALSE;
                        axutil_array_list_set(_CanonicalizationMethodType->property_extraElement , env, i, NULL);
                        
                        return AXIS2_SUCCESS;
                    }
                
                   axutil_array_list_set(_CanonicalizationMethodType->property_extraElement , env, i, arg_extraElement);
                  _CanonicalizationMethodType->is_valid_extraElement = AXIS2_TRUE;
                
                return AXIS2_SUCCESS;
            }
           /**
            * Set extraElement to nill at i
            */
           axis2_status_t AXIS2_CALL
           adb_CanonicalizationMethodType_set_extraElement_nil_at(
                   adb_CanonicalizationMethodType_t* _CanonicalizationMethodType,
                   const axutil_env_t *env, int i)
           {
                void *element = NULL;
                int size = 0;
                int j;
                axis2_bool_t non_nil_exists = AXIS2_FALSE;

                int k = 0;

                AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
                AXIS2_PARAM_CHECK(env->error, _CanonicalizationMethodType, AXIS2_FAILURE);

                if(_CanonicalizationMethodType->property_extraElement == NULL ||
                            _CanonicalizationMethodType->is_valid_extraElement == AXIS2_FALSE)
                {
                    
                    non_nil_exists = AXIS2_FALSE;
                }
                else
                {
                    size = axutil_array_list_size(_CanonicalizationMethodType->property_extraElement, env);
                    for(j = 0, k = 0; j < size; j ++ )
                    {
                        if(i == j) continue; 
                        if(NULL != axutil_array_list_get(_CanonicalizationMethodType->property_extraElement, env, i))
                        {
                            k ++;
                            non_nil_exists = AXIS2_TRUE;
                            if( k >= 0)
                            {
                                break;
                            }
                        }
                    }
                }
                

                if( k < 0)
                {
                       AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Size of the array of extraElement is beinng set to be smaller than the specificed number of minOccurs(0)");
                       return AXIS2_FAILURE;
                }
 
                if(_CanonicalizationMethodType->property_extraElement == NULL)
                {
                    _CanonicalizationMethodType->is_valid_extraElement = AXIS2_FALSE;
                    
                    return AXIS2_SUCCESS;
                }

                /* check whether there already exist an element */
                element = axutil_array_list_get(_CanonicalizationMethodType->property_extraElement, env, i);
                if(NULL != element)
                {
                  
                  
                  
                      axiom_node_free_tree ((axiom_node_t*)element, env);
                     
                }

                
                    if(!non_nil_exists)
                    {
                        
                        _CanonicalizationMethodType->is_valid_extraElement = AXIS2_FALSE;
                        axutil_array_list_set(_CanonicalizationMethodType->property_extraElement , env, i, NULL);
                        return AXIS2_SUCCESS;
                    }
                

                
                axutil_array_list_set(_CanonicalizationMethodType->property_extraElement , env, i, NULL);
                
                return AXIS2_SUCCESS;

           }
/**
 * Set the ith element of controlOperations.
 */
axis2_status_t AXIS2_CALL
adb_OperationMetaDataWrapper_set_controlOperations_at(
    adb_OperationMetaDataWrapper_t* _OperationMetaDataWrapper,
    const axutil_env_t *env, int i,
    adb_OperationMetaData_t* arg_controlOperations)
{
    void *element = NULL;
    int size = 0;
    int j;
    int non_nil_count;
    axis2_bool_t non_nil_exists = AXIS2_FALSE;



    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
    AXIS2_PARAM_CHECK(env->error, _OperationMetaDataWrapper, AXIS2_FAILURE);

    if( _OperationMetaDataWrapper->is_valid_controlOperations &&
            _OperationMetaDataWrapper->property_controlOperations &&

            arg_controlOperations == (adb_OperationMetaData_t*)axutil_array_list_get(_OperationMetaDataWrapper->property_controlOperations, env, i))

    {

        return AXIS2_SUCCESS;
    }


    if(NULL != arg_controlOperations)
    {
        non_nil_exists = AXIS2_TRUE;
    }
    else {
        if(_OperationMetaDataWrapper->property_controlOperations != NULL)
        {
            size = axutil_array_list_size(_OperationMetaDataWrapper->property_controlOperations, env);
            for(j = 0, non_nil_count = 0; j < size; j ++ )
            {
                if(i == j) continue;
                if(NULL != axutil_array_list_get(_OperationMetaDataWrapper->property_controlOperations, env, i))
                {
                    non_nil_count ++;
                    non_nil_exists = AXIS2_TRUE;
                    if(non_nil_count >= 0)
                    {
                        break;
                    }
                }
            }


        }
    }


    if(_OperationMetaDataWrapper->property_controlOperations == NULL)
    {
        _OperationMetaDataWrapper->property_controlOperations = axutil_array_list_create(env, 10);
    }

    /* check whether there already exist an element */
    element = axutil_array_list_get(_OperationMetaDataWrapper->property_controlOperations, env, i);
    if(NULL != element)
    {


        adb_OperationMetaData_free((adb_OperationMetaData_t*)element, env);

    }


    if(!non_nil_exists)
    {

        _OperationMetaDataWrapper->is_valid_controlOperations = AXIS2_FALSE;
        axutil_array_list_set(_OperationMetaDataWrapper->property_controlOperations , env, i, NULL);

        return AXIS2_SUCCESS;
    }

    axutil_array_list_set(_OperationMetaDataWrapper->property_controlOperations , env, i, arg_controlOperations);
    _OperationMetaDataWrapper->is_valid_controlOperations = AXIS2_TRUE;

    return AXIS2_SUCCESS;
}
           /**
            * Set Transform to nill at i
            */
           axis2_status_t AXIS2_CALL
           adb_TransformsType_set_Transform_nil_at(
                   adb_TransformsType_t* _TransformsType,
                   const axutil_env_t *env, int i)
           {
                void *element = NULL;
                int size = 0;
                int j;
                axis2_bool_t non_nil_exists = AXIS2_FALSE;

                int k = 0;

                AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
                AXIS2_PARAM_CHECK(env->error, _TransformsType, AXIS2_FAILURE);

                if(_TransformsType->property_Transform == NULL ||
                            _TransformsType->is_valid_Transform == AXIS2_FALSE)
                {
                    
                    non_nil_exists = AXIS2_FALSE;
                }
                else
                {
                    size = axutil_array_list_size(_TransformsType->property_Transform, env);
                    for(j = 0, k = 0; j < size; j ++ )
                    {
                        if(i == j) continue; 
                        if(NULL != axutil_array_list_get(_TransformsType->property_Transform, env, i))
                        {
                            k ++;
                            non_nil_exists = AXIS2_TRUE;
                            if( k >= 1)
                            {
                                break;
                            }
                        }
                    }
                }
                
                   if(!non_nil_exists)
                   {
                       AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "All the elements in the array of Transform is being set to NULL, but it is not a nullable or minOccurs=0 element");
                       return AXIS2_FAILURE;
                   }
                

                if( k < 1)
                {
                       AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Size of the array of Transform is beinng set to be smaller than the specificed number of minOccurs(1)");
                       return AXIS2_FAILURE;
                }
 
                if(_TransformsType->property_Transform == NULL)
                {
                    _TransformsType->is_valid_Transform = AXIS2_FALSE;
                    
                    return AXIS2_SUCCESS;
                }

                /* check whether there already exist an element */
                element = axutil_array_list_get(_TransformsType->property_Transform, env, i);
                if(NULL != element)
                {
                  
                  
                  adb_TransformType_free((adb_TransformType_t*)element, env);
                     
                }

                

                
                axutil_array_list_set(_TransformsType->property_Transform , env, i, NULL);
                
                return AXIS2_SUCCESS;

           }
            /**
             * Set the ith element of return.
             */
            axis2_status_t AXIS2_CALL
            adb_listModulesForServiceGroupResponse_set_return_at(
                    adb_listModulesForServiceGroupResponse_t* _listModulesForServiceGroupResponse,
                    const axutil_env_t *env, int i,
                    adb_ModuleMetaData_t* arg_return)
            {
                void *element = NULL;
                int size = 0;
                int j;
                int non_nil_count;
                axis2_bool_t non_nil_exists = AXIS2_FALSE;

                

                AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
                AXIS2_PARAM_CHECK(env->error, _listModulesForServiceGroupResponse, AXIS2_FAILURE);
                
                if( _listModulesForServiceGroupResponse->is_valid_return &&
                    _listModulesForServiceGroupResponse->property_return &&
                
                    arg_return == (adb_ModuleMetaData_t*)axutil_array_list_get(_listModulesForServiceGroupResponse->property_return, env, i))
                  
                {
                    
                    return AXIS2_SUCCESS; 
                }

                
                    if(NULL != arg_return)
                    {
                        non_nil_exists = AXIS2_TRUE;
                    }
                    else {
                        if(_listModulesForServiceGroupResponse->property_return != NULL)
                        {
                            size = axutil_array_list_size(_listModulesForServiceGroupResponse->property_return, env);
                            for(j = 0, non_nil_count = 0; j < size; j ++ )
                            {
                                if(i == j) continue; 
                                if(NULL != axutil_array_list_get(_listModulesForServiceGroupResponse->property_return, env, i))
                                {
                                    non_nil_count ++;
                                    non_nil_exists = AXIS2_TRUE;
                                    if(non_nil_count >= 0)
                                    {
                                        break;
                                    }
                                }
                            }

                        
                        }
                    }
                  

                if(_listModulesForServiceGroupResponse->property_return == NULL)
                {
                    _listModulesForServiceGroupResponse->property_return = axutil_array_list_create(env, 10);
                }
                
                /* check whether there already exist an element */
                element = axutil_array_list_get(_listModulesForServiceGroupResponse->property_return, env, i);
                if(NULL != element)
                {
                  
                  
                  adb_ModuleMetaData_free((adb_ModuleMetaData_t*)element, env);
                     
                }

                
                    if(!non_nil_exists)
                    {
                        
                        _listModulesForServiceGroupResponse->is_valid_return = AXIS2_FALSE;
                        axutil_array_list_set(_listModulesForServiceGroupResponse->property_return , env, i, NULL);
                        
                        return AXIS2_SUCCESS;
                    }
                
                   axutil_array_list_set(_listModulesForServiceGroupResponse->property_return , env, i, arg_return);
                  _listModulesForServiceGroupResponse->is_valid_return = AXIS2_TRUE;
                
                return AXIS2_SUCCESS;
            }
            /**
             * Set the ith element of reservationStatuses.
             */
            axis2_status_t AXIS2_CALL
            adb_getReservationStatusesResponse_set_reservationStatuses_at(
                    adb_getReservationStatusesResponse_t* _getReservationStatusesResponse,
                    const axutil_env_t *env, int i,
                    adb_ReservationStatus_t* arg_reservationStatuses)
            {
                void *element = NULL;
                int size = 0;
                int j;
                int k;
                axis2_bool_t non_nil_exists = AXIS2_FALSE;

                

                AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
                AXIS2_PARAM_CHECK(env->error, _getReservationStatusesResponse, AXIS2_FAILURE);
                
                if( _getReservationStatusesResponse->is_valid_reservationStatuses &&
                    _getReservationStatusesResponse->property_reservationStatuses &&
                
                    arg_reservationStatuses == (adb_ReservationStatus_t*)axutil_array_list_get(_getReservationStatusesResponse->property_reservationStatuses, env, i))
                  
                {
                    
                    return AXIS2_SUCCESS; 
                }

                
                    if(NULL == arg_reservationStatuses)
                    {
                        if(_getReservationStatusesResponse->property_reservationStatuses != NULL)
                        {
                            size = axutil_array_list_size(_getReservationStatusesResponse->property_reservationStatuses, env);
                            for(j = 0, k = 0; j < size; j ++ )
                            {
                                if(i == j) continue; 
                                if(NULL != axutil_array_list_get(_getReservationStatusesResponse->property_reservationStatuses, env, i))
                                {
                                    k ++;
                                    non_nil_exists = AXIS2_TRUE;
                                    if(k >= 0)
                                    {
                                        break;
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        non_nil_exists = AXIS2_TRUE;
                    }
                  
                if( k < 0)
                {
                       AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Size of the array of reservationStatuses is beinng set to be smaller than the specificed number of minOccurs(0)");
                       return AXIS2_FAILURE;
                }

                if(_getReservationStatusesResponse->property_reservationStatuses == NULL)
                {
                    _getReservationStatusesResponse->property_reservationStatuses = axutil_array_list_create(env, 10);
                }
                
                /* check whether there already exist an element */
                element = axutil_array_list_get(_getReservationStatusesResponse->property_reservationStatuses, env, i);
                if(NULL != element)
                {
                  
                  
                  
                        adb_ReservationStatus_free((adb_ReservationStatus_t*)element, env);
                     
                }

                
                    if(!non_nil_exists)
                    {
                        
                        _getReservationStatusesResponse->is_valid_reservationStatuses = AXIS2_FALSE;
                        axutil_array_list_set(_getReservationStatusesResponse->property_reservationStatuses , env, i, NULL);
                        
                        return AXIS2_SUCCESS;
                    }
                
                   axutil_array_list_set(_getReservationStatusesResponse->property_reservationStatuses , env, i, arg_reservationStatuses);
                  _getReservationStatusesResponse->is_valid_reservationStatuses = AXIS2_TRUE;
                
                return AXIS2_SUCCESS;
            }
            /**
             * Set the ith element of protocol.
             */
            axis2_status_t AXIS2_CALL
            adb_additionalTransferProtocols_type0_set_protocol_at(
                    adb_additionalTransferProtocols_type0_t* _additionalTransferProtocols_type0,
                    const axutil_env_t *env, int i,
                    const axis2_char_t* arg_protocol)
            {
                void *element = NULL;
                int size = 0;
                int j;
                int non_nil_count;
                axis2_bool_t non_nil_exists = AXIS2_FALSE;

                

                AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
                AXIS2_PARAM_CHECK(env->error, _additionalTransferProtocols_type0, AXIS2_FAILURE);
                
                if( _additionalTransferProtocols_type0->is_valid_protocol &&
                    _additionalTransferProtocols_type0->property_protocol &&
                
                    arg_protocol == (axis2_char_t*)axutil_array_list_get(_additionalTransferProtocols_type0->property_protocol, env, i))
                  
                {
                    
                    return AXIS2_SUCCESS; 
                }

                
                    if(NULL != arg_protocol)
                    {
                        non_nil_exists = AXIS2_TRUE;
                    }
                    else {
                        if(_additionalTransferProtocols_type0->property_protocol != NULL)
                        {
                            size = axutil_array_list_size(_additionalTransferProtocols_type0->property_protocol, env);
                            for(j = 0, non_nil_count = 0; j < size; j ++ )
                            {
                                if(i == j) continue; 
                                if(NULL != axutil_array_list_get(_additionalTransferProtocols_type0->property_protocol, env, i))
                                {
                                    non_nil_count ++;
                                    non_nil_exists = AXIS2_TRUE;
                                    if(non_nil_count >= 1)
                                    {
                                        break;
                                    }
                                }
                            }

                         
                            if( non_nil_count < 1)
                            {
                                   AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Size of the array of protocol is beinng set to be smaller than the specificed number of minOccurs(1)");
                                   return AXIS2_FAILURE;
                            }
                        
                        }
                    }
                  
                   if(!non_nil_exists)
                   {
                       AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "All the elements in the array of protocol is being set to NULL, but it is not a nullable or minOccurs=0 element");
                       return AXIS2_FAILURE;
                   }
                

                if(_additionalTransferProtocols_type0->property_protocol == NULL)
                {
                    _additionalTransferProtocols_type0->property_protocol = axutil_array_list_create(env, 10);
                }
                
                /* check whether there already exist an element */
                element = axutil_array_list_get(_additionalTransferProtocols_type0->property_protocol, env, i);
                if(NULL != element)
                {
                  
                  
                  
                       /* This is an unknown type or a primitive. Please free this manually*/
                     
                }

                
                   axutil_array_list_set(_additionalTransferProtocols_type0->property_protocol , env, i, axutil_strdup(env, arg_protocol));
                  _additionalTransferProtocols_type0->is_valid_protocol = AXIS2_TRUE;
                
                return AXIS2_SUCCESS;
            }
Exemple #11
0
axis2_status_t static
remote_registry_rest_client_set_cache(
									  remote_registry_rest_client_t *rest_client,
									  const axutil_env_t *env,
									  const axis2_char_t *url,
									  axis2_char_t *buffer, 
									  int buffer_len, 
									  axis2_char_t* new_etag)
{
	axis2_char_t *prev_cache = NULL;
	axis2_char_t *prev_cache_etag = NULL;
	int cache_replacing = 0;
	axis2_char_t *early_url = NULL;
	axis2_char_t *url_dup = NULL;
	axis2_char_t *buffer_dup = NULL;

    /* updating the env for all the hashes */
    axutil_hash_set_env(rest_client->cached_entries, env);
    axutil_hash_set_env(rest_client->cached_entries_len, env);
    axutil_hash_set_env(rest_client->etags, env);
    axutil_hash_set_env(rest_client->reverse_cached_order, env);

	/* check wether there were any old entries, if so free them */
	prev_cache = axutil_hash_get(rest_client->cached_entries, url, AXIS2_HASH_KEY_STRING);

	/* freeing the old entries */
	if(prev_cache)
	{
		int prev_cache_index;
		/* set a flag to identify that we replace already existed one */
		cache_replacing = 1;
		AXIS2_FREE(env->allocator, prev_cache);

		/* now we are going to check the place of it in the cached index */
		prev_cache_index = (int)axutil_hash_get(rest_client->reverse_cached_order, url, AXIS2_HASH_KEY_STRING);

		/* the value of the url and early_url is same, but different pointers */
		early_url = axutil_array_list_get(rest_client->cached_order, env, prev_cache_index);
		AXIS2_FREE(env->allocator, early_url);

        /* the reverse cache order will be cleard at the time it is overwritten */

		/* checking the next to clear (because of out of LIMIT) */
		early_url = axutil_array_list_get(rest_client->cached_order, env, rest_client->cached_order_index);
		if(early_url)
		{
			/* so actually we need to erase the existing one, rather we promot it to the prev_cache_index
			   so non of the cache will be erased other than the one that got replaced */
			axutil_array_list_set(rest_client->cached_order, env, prev_cache_index, early_url);
            early_url = axutil_strdup(env, early_url);
			axutil_hash_set(rest_client->reverse_cached_order, early_url, AXIS2_HASH_KEY_STRING, (void*)prev_cache_index);
		}

		/* and we are going to put our current url to the rest_client->cached_order_index */
		url_dup = axutil_strdup(env, url);
		axutil_array_list_set(rest_client->cached_order, env, rest_client->cached_order_index, url_dup);
		url_dup = axutil_strdup(env, url);
		axutil_hash_set(rest_client->reverse_cached_order, url_dup, AXIS2_HASH_KEY_STRING, (void*)rest_client->cached_order_index);
	}

	if(!cache_replacing)
	{
		int prev_cache_len;

		/* now we have to consider the limit of the cache for non-replacing case */
		early_url = axutil_array_list_get(rest_client->cached_order, env, rest_client->cached_order_index);
		if(early_url)
		{
			/* we have to remove this url for fit within the cache url */
			prev_cache = axutil_hash_get(rest_client->cached_entries, early_url, AXIS2_HASH_KEY_STRING);
			if(prev_cache)
			{
				AXIS2_FREE(env->allocator, prev_cache);
				axutil_hash_set(rest_client->cached_entries, early_url, AXIS2_HASH_KEY_STRING, NULL);
			}

			prev_cache_etag = axutil_hash_get(rest_client->etags, early_url, AXIS2_HASH_KEY_STRING);
			if(prev_cache_etag)
			{
				AXIS2_FREE(env->allocator, prev_cache_etag);
				axutil_hash_set(rest_client->etags, early_url, AXIS2_HASH_KEY_STRING, NULL);
			}

			prev_cache_len = (int)axutil_hash_get(rest_client->cached_entries_len, early_url, AXIS2_HASH_KEY_STRING);
			if(prev_cache_len)
			{
				axutil_hash_set(rest_client->cached_entries_len, early_url, AXIS2_HASH_KEY_STRING, NULL);
			}

			/* as the last we remove it from the order as well */
			axutil_hash_set(rest_client->reverse_cached_order, early_url, AXIS2_HASH_KEY_STRING, NULL);
			AXIS2_FREE(env->allocator, early_url);

            /* and we put our values in there */
            url_dup = axutil_strdup(env, url);
            axutil_array_list_set(rest_client->cached_order, env, rest_client->cached_order_index, url_dup);
            url_dup = axutil_strdup(env, url);
            axutil_hash_set(rest_client->reverse_cached_order, url_dup, AXIS2_HASH_KEY_STRING, (void*)rest_client->cached_order_index);
		}
        else {
            /* if no replacing is hapenning we can add the url to cached_order */
            url_dup = axutil_strdup(env, url);
            axutil_array_list_add(rest_client->cached_order, env, url_dup);
            url_dup = axutil_strdup(env, url);
            axutil_hash_set(rest_client->reverse_cached_order, url_dup, AXIS2_HASH_KEY_STRING, (void*)rest_client->cached_order_index);
        }
	}
    if(buffer)
    {
		buffer_dup = (axis2_char_t*)AXIS2_MALLOC(env->allocator, buffer_len + sizeof(axis2_char_t));
		memcpy(buffer_dup, buffer, buffer_len + sizeof(axis2_char_t));

		url_dup = axutil_strdup(env, url);
		axutil_hash_set(rest_client->cached_entries, url_dup, AXIS2_HASH_KEY_STRING, buffer_dup);
		url_dup = axutil_strdup(env, url);
		axutil_hash_set(rest_client->cached_entries_len, url_dup, AXIS2_HASH_KEY_STRING, (void*)buffer_len);
	}
	else 
	{
		url_dup = axutil_strdup(env, url);
		axutil_hash_set(rest_client->cached_entries, url_dup, AXIS2_HASH_KEY_STRING, NULL);
		url_dup = axutil_strdup(env, url);
		axutil_hash_set(rest_client->cached_entries_len, url_dup, AXIS2_HASH_KEY_STRING, (void*)0);
	}
	url_dup = axutil_strdup(env, url);
	axutil_hash_set(rest_client->etags, url_dup, AXIS2_HASH_KEY_STRING, new_etag);

	/* we need to increment the cached_order_index in cyclic manner .. */

	rest_client->cached_order_index ++;
	if(rest_client->cached_order_index >= remote_registry_conf_get_cache_entries_limit(rest_client->conf, env))
	{
		rest_client->cached_order_index = 0;
	}

	return AXIS2_SUCCESS;
}
           /**
            * Set protectionFormat to nill at i
            */
           axis2_status_t AXIS2_CALL
           adb_supportedContentProtectionFormats_type0_set_protectionFormat_nil_at(
                   adb_supportedContentProtectionFormats_type0_t* _supportedContentProtectionFormats_type0,
                   const axutil_env_t *env, int i)
           {
                void *element = NULL;
                int size = 0;
                int j;
                axis2_bool_t non_nil_exists = AXIS2_FALSE;

                int k = 0;

                AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
                AXIS2_PARAM_CHECK(env->error, _supportedContentProtectionFormats_type0, AXIS2_FAILURE);

                if(_supportedContentProtectionFormats_type0->property_protectionFormat == NULL ||
                            _supportedContentProtectionFormats_type0->is_valid_protectionFormat == AXIS2_FALSE)
                {
                    
                    non_nil_exists = AXIS2_FALSE;
                }
                else
                {
                    size = axutil_array_list_size(_supportedContentProtectionFormats_type0->property_protectionFormat, env);
                    for(j = 0, k = 0; j < size; j ++ )
                    {
                        if(i == j) continue; 
                        if(NULL != axutil_array_list_get(_supportedContentProtectionFormats_type0->property_protectionFormat, env, i))
                        {
                            k ++;
                            non_nil_exists = AXIS2_TRUE;
                            if( k >= 0)
                            {
                                break;
                            }
                        }
                    }
                }
                

                if( k < 0)
                {
                       AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Size of the array of protectionFormat is beinng set to be smaller than the specificed number of minOccurs(0)");
                       return AXIS2_FAILURE;
                }
 
                if(_supportedContentProtectionFormats_type0->property_protectionFormat == NULL)
                {
                    _supportedContentProtectionFormats_type0->is_valid_protectionFormat = AXIS2_FALSE;
                    
                    return AXIS2_SUCCESS;
                }

                /* check whether there already exist an element */
                element = axutil_array_list_get(_supportedContentProtectionFormats_type0->property_protectionFormat, env, i);
                if(NULL != element)
                {
                  
                  
                  adb_protectionFormat_type1_free((adb_protectionFormat_type1_t*)element, env);
                     
                }

                
                    if(!non_nil_exists)
                    {
                        
                        _supportedContentProtectionFormats_type0->is_valid_protectionFormat = AXIS2_FALSE;
                        axutil_array_list_set(_supportedContentProtectionFormats_type0->property_protectionFormat , env, i, NULL);
                        return AXIS2_SUCCESS;
                    }
                

                
                axutil_array_list_set(_supportedContentProtectionFormats_type0->property_protectionFormat , env, i, NULL);
                
                return AXIS2_SUCCESS;

           }
            /**
             * Set the ith element of protectionFormat.
             */
            axis2_status_t AXIS2_CALL
            adb_supportedContentProtectionFormats_type0_set_protectionFormat_at(
                    adb_supportedContentProtectionFormats_type0_t* _supportedContentProtectionFormats_type0,
                    const axutil_env_t *env, int i,
                    adb_protectionFormat_type1_t* arg_protectionFormat)
            {
                void *element = NULL;
                int size = 0;
                int j;
                int non_nil_count;
                axis2_bool_t non_nil_exists = AXIS2_FALSE;

                

                AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
                AXIS2_PARAM_CHECK(env->error, _supportedContentProtectionFormats_type0, AXIS2_FAILURE);
                
                if( _supportedContentProtectionFormats_type0->is_valid_protectionFormat &&
                    _supportedContentProtectionFormats_type0->property_protectionFormat &&
                
                    arg_protectionFormat == (adb_protectionFormat_type1_t*)axutil_array_list_get(_supportedContentProtectionFormats_type0->property_protectionFormat, env, i))
                  
                {
                    
                    return AXIS2_SUCCESS; 
                }

                
                    if(NULL != arg_protectionFormat)
                    {
                        non_nil_exists = AXIS2_TRUE;
                    }
                    else {
                        if(_supportedContentProtectionFormats_type0->property_protectionFormat != NULL)
                        {
                            size = axutil_array_list_size(_supportedContentProtectionFormats_type0->property_protectionFormat, env);
                            for(j = 0, non_nil_count = 0; j < size; j ++ )
                            {
                                if(i == j) continue; 
                                if(NULL != axutil_array_list_get(_supportedContentProtectionFormats_type0->property_protectionFormat, env, i))
                                {
                                    non_nil_count ++;
                                    non_nil_exists = AXIS2_TRUE;
                                    if(non_nil_count >= 0)
                                    {
                                        break;
                                    }
                                }
                            }

                        
                        }
                    }
                  

                if(_supportedContentProtectionFormats_type0->property_protectionFormat == NULL)
                {
                    _supportedContentProtectionFormats_type0->property_protectionFormat = axutil_array_list_create(env, 10);
                }
                
                /* check whether there already exist an element */
                element = axutil_array_list_get(_supportedContentProtectionFormats_type0->property_protectionFormat, env, i);
                if(NULL != element)
                {
                  
                  
                  adb_protectionFormat_type1_free((adb_protectionFormat_type1_t*)element, env);
                     
                }

                
                    if(!non_nil_exists)
                    {
                        
                        _supportedContentProtectionFormats_type0->is_valid_protectionFormat = AXIS2_FALSE;
                        axutil_array_list_set(_supportedContentProtectionFormats_type0->property_protectionFormat , env, i, NULL);
                        
                        return AXIS2_SUCCESS;
                    }
                
                   axutil_array_list_set(_supportedContentProtectionFormats_type0->property_protectionFormat , env, i, arg_protectionFormat);
                  _supportedContentProtectionFormats_type0->is_valid_protectionFormat = AXIS2_TRUE;
                
                return AXIS2_SUCCESS;
            }