Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2012
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 37.22 KB | None | 0 0
  1.  
  2.  
  3.         /**
  4.          * AbstractRequestType.cpp
  5.          *
  6.          * This file was auto-generated from WSDL
  7.          * by the Apache Axis2/C version: SNAPSHOT  Built on : Mar 10, 2008 (08:35:52 GMT+00:00)
  8.          */
  9.  
  10.         #include "AbstractRequestType.h"
  11.         #include <Environment.h>
  12.         #include <WSFError.h>
  13.  
  14.  
  15.         using namespace wso2wsf;
  16.         using namespace std;
  17.        
  18.         using namespace eblbasecomponents_apis_ebay;
  19.        
  20.                 /*
  21.                  * This type was generated from the piece of schema that had
  22.                  * name = AbstractRequestType
  23.                  * Namespace URI = urn:ebay:apis:eBLBaseComponents
  24.                  * Namespace Prefix = ns1
  25.                  */
  26.            eblbasecomponents_apis_ebay::AbstractRequestType::AbstractRequestType()
  27.         {
  28.  
  29.        
  30.                     property_MessageID;
  31.                
  32.             isValidMessageID  = false;
  33.        
  34.                 property_ExtraElement  = NULL;
  35.              
  36.             isValidExtraElement  = false;
  37.        
  38.         }
  39.  
  40.        eblbasecomponents_apis_ebay::AbstractRequestType::AbstractRequestType(std::string arg_MessageID,std::vector<wso2wsf::OMElement*>* arg_ExtraElement)
  41.         {
  42.              
  43.                  property_MessageID;
  44.              
  45.             isValidMessageID  = true;
  46.            
  47.                property_ExtraElement  = NULL;
  48.              
  49.             isValidExtraElement  = true;
  50.            
  51.                     property_MessageID = arg_MessageID;
  52.            
  53.                     property_ExtraElement = arg_ExtraElement;
  54.            
  55.         }
  56.         eblbasecomponents_apis_ebay::AbstractRequestType::~AbstractRequestType()
  57.         {
  58.  
  59.         }
  60.  
  61.        
  62.  
  63.         bool WSF_CALL
  64.         eblbasecomponents_apis_ebay::AbstractRequestType::deserialize(axiom_node_t** dp_parent,bool *dp_is_early_node_valid, bool dont_care_minoccurs)
  65.         {
  66.           axiom_node_t *parent = *dp_parent;
  67.          
  68.           bool status = AXIS2_SUCCESS;
  69.            
  70.          const axis2_char_t* text_value = NULL;
  71.          axutil_qname_t *mqname = NULL;
  72.          
  73.                int i = 0;
  74.            
  75.                int sequence_broken = 0;
  76.                axiom_node_t *tmp_node = NULL;
  77.            
  78.             axutil_qname_t *element_qname = NULL;
  79.            
  80.                axiom_node_t *first_node = NULL;
  81.                bool is_early_node_valid = true;
  82.                axiom_node_t *current_node = NULL;
  83.                axiom_element_t *current_element = NULL;
  84.            
  85.              
  86.               while(parent && axiom_node_get_node_type(parent, Environment::getEnv()) != AXIOM_ELEMENT)
  87.               {
  88.                   parent = axiom_node_get_next_sibling(parent, Environment::getEnv());
  89.               }
  90.               if (NULL == parent)
  91.               {  
  92.                 return AXIS2_FAILURE;
  93.               }
  94.              
  95.                      
  96.                       first_node = axiom_node_get_first_child(parent, Environment::getEnv());
  97.                      
  98.                    
  99.  
  100.                      
  101.                      /*
  102.                       * building MessageID element
  103.                       */
  104.                      
  105.                      
  106.                      
  107.                                    current_node = first_node;
  108.                                    is_early_node_valid = false;
  109.                                    
  110.                                    
  111.                                     while(current_node && axiom_node_get_node_type(current_node, Environment::getEnv()) != AXIOM_ELEMENT)
  112.                                     {
  113.                                         current_node = axiom_node_get_next_sibling(current_node, Environment::getEnv());
  114.                                     }
  115.                                     if(current_node != NULL)
  116.                                     {
  117.                                         current_element = (axiom_element_t *)axiom_node_get_data_element(current_node, Environment::getEnv());
  118.                                         mqname = axiom_element_get_qname(current_element, Environment::getEnv(), current_node);
  119.                                     }
  120.                                    
  121.                                  element_qname = axutil_qname_create(Environment::getEnv(), "MessageID", "urn:ebay:apis:eBLBaseComponents", NULL);
  122.                                  
  123.  
  124.                            if (
  125.                                 (current_node   && current_element && (axutil_qname_equals(element_qname, Environment::getEnv(), mqname))))
  126.                            {
  127.                               if( current_node   && current_element && (axutil_qname_equals(element_qname, Environment::getEnv(), mqname)))
  128.                               {
  129.                                 is_early_node_valid = true;
  130.                               }
  131.                              
  132.                                  
  133.                                       text_value = axiom_element_get_text(current_element, Environment::getEnv(), current_node);
  134.                                       if(text_value != NULL)
  135.                                       {
  136.                                             status = setMessageID(text_value);
  137.                                       }
  138.                                      
  139.                                       else
  140.                                       {
  141.                                             /*
  142.                                              * axis2_qname_t *qname = NULL;
  143.                                              * axiom_attribute_t *the_attri = NULL;
  144.                                              *
  145.                                              * qname = axutil_qname_create(Environment::getEnv(), "nil", "http://www.w3.org/2001/XMLSchema-instance", "xsi");
  146.                                              * the_attri = axiom_element_get_attribute(current_element, Environment::getEnv(), qname);
  147.                                              */
  148.                                             /* currently thereis a bug in the axiom_element_get_attribute, so we have to go to this bad method */
  149.  
  150.                                             axiom_attribute_t *the_attri = NULL;
  151.                                             axis2_char_t *attrib_text = NULL;
  152.                                             axutil_hash_t *attribute_hash = NULL;
  153.  
  154.                                             attribute_hash = axiom_element_get_all_attributes(current_element, Environment::getEnv());
  155.  
  156.                                             attrib_text = NULL;
  157.                                             if(attribute_hash)
  158.                                             {
  159.                                                  axutil_hash_index_t *hi;
  160.                                                  void *val;
  161.                                                  const void *key;
  162.                                        
  163.                                                  for (hi = axutil_hash_first(attribute_hash, Environment::getEnv()); hi; hi = axutil_hash_next(Environment::getEnv(), hi))
  164.                                                  {
  165.                                                      axutil_hash_this(hi, &key, NULL, &val);
  166.                                                      
  167.                                                      if(strstr((axis2_char_t*)key, "nil|http://www.w3.org/2001/XMLSchema-instance"))
  168.                                                      {
  169.                                                          the_attri = (axiom_attribute_t*)val;
  170.                                                          break;
  171.                                                      }
  172.                                                  }
  173.                                             }
  174.  
  175.                                             if(the_attri)
  176.                                             {
  177.                                                 attrib_text = axiom_attribute_get_value(the_attri, Environment::getEnv());
  178.                                             }
  179.                                             else
  180.                                             {
  181.                                                 /* this is hoping that attribute is stored in "http://www.w3.org/2001/XMLSchema-instance", this happnes when name is in default namespace */
  182.                                                 attrib_text = axiom_element_get_attribute_value_by_name(current_element, Environment::getEnv(), "nil");
  183.                                             }
  184.  
  185.                                             if(attrib_text && 0 == axutil_strcmp(attrib_text, "1"))
  186.                                             {
  187.                                                 WSF_LOG_ERROR_MSG(Environment::getEnv()->log, WSF_LOG_SI, "NULL value is set to a non nillable element MessageID");
  188.                                                 status = AXIS2_FAILURE;
  189.                                             }
  190.                                             else
  191.                                             {
  192.                                                 /* after all, we found this is a empty string */
  193.                                                 status = setMessageID("");
  194.                                             }
  195.                                       }
  196.                                      
  197.                                  if(AXIS2_FAILURE ==  status)
  198.                                  {
  199.                                      WSF_LOG_ERROR_MSG( Environment::getEnv()->log,WSF_LOG_SI,"failed in setting the value for MessageID ");
  200.                                      if(element_qname)
  201.                                      {
  202.                                          axutil_qname_free(element_qname, Environment::getEnv());
  203.                                      }
  204.                                      return AXIS2_FAILURE;
  205.                                  }
  206.                               }
  207.                            
  208.                   if(element_qname)
  209.                   {
  210.                      axutil_qname_free(element_qname, Environment::getEnv());
  211.                      element_qname = NULL;
  212.                   }
  213.                  
  214.                        {
  215.                     /*
  216.                      * building ExtraElement array
  217.                      */
  218.                        std::vector<wso2wsf::OMElement*>* arr_list =new std::vector<wso2wsf::OMElement*>();
  219.                    
  220.  
  221.                      
  222.                      /*
  223.                       * building extraElement element
  224.                       */
  225.                      
  226.                      
  227.                      
  228.                             /* 'any' arrays are not handling correctly when there are other elements mixed with the 'any' element. */
  229.                            
  230.                                
  231.                                for (i = 0, sequence_broken = 0, current_node = (is_early_node_valid?axiom_node_get_next_sibling(current_node, Environment::getEnv()):current_node); !sequence_broken && current_node != NULL;)
  232.                                              
  233.                                {
  234.                                   if(axiom_node_get_node_type(current_node, Environment::getEnv()) != AXIOM_ELEMENT)
  235.                                   {
  236.                                      current_node =axiom_node_get_next_sibling(current_node, Environment::getEnv());
  237.                                      is_early_node_valid = false;
  238.                                      continue;
  239.                                   }
  240.                                  
  241.                                       is_early_node_valid = true;
  242.                                      
  243.                                      
  244.                                           text_value = NULL; /* just to avoid warning */
  245.                                          
  246.                                             {
  247.                                               axiom_node_t *current_property_node = current_node;
  248.                                               current_node = axiom_node_get_next_sibling(current_node, Environment::getEnv());
  249.                                               axiom_node_detach(current_property_node, Environment::getEnv());
  250.                                               arr_list->push_back(new OMElement(NULL, current_property_node));
  251.                                             }
  252.                                            
  253.                                      if(AXIS2_FAILURE ==  status)
  254.                                      {
  255.                                          WSF_LOG_ERROR_MSG(Environment::getEnv()->log, WSF_LOG_SI, "failed in setting the value for extraElement ");
  256.                                          if(element_qname)
  257.                                          {
  258.                                             axutil_qname_free(element_qname, Environment::getEnv());
  259.                                          }
  260.                                          if(arr_list)
  261.                                          {
  262.                                             delete arr_list;
  263.                                          }
  264.                                          return false;
  265.                                      }
  266.  
  267.                                      i++;
  268.                                    
  269.                                }
  270.  
  271.                                
  272.  
  273.                                if(0 == arr_list->size())
  274.                                {
  275.                                     delete arr_list;
  276.                                }
  277.                                else
  278.                                {
  279.                                     status = setExtraElement(arr_list);
  280.                                }
  281.  
  282.                              
  283.                             }
  284.                        
  285.                   if(element_qname)
  286.                   {
  287.                      axutil_qname_free(element_qname, Environment::getEnv());
  288.                      element_qname = NULL;
  289.                   }
  290.                  
  291.           return status;
  292.        }
  293.  
  294.           bool WSF_CALL
  295.           eblbasecomponents_apis_ebay::AbstractRequestType::isParticle()
  296.           {
  297.            
  298.                  return false;
  299.              
  300.           }
  301.  
  302.  
  303.           void WSF_CALL
  304.           eblbasecomponents_apis_ebay::AbstractRequestType::declareParentNamespaces(
  305.                     axiom_element_t *parent_element,
  306.                     axutil_hash_t *namespaces, int *next_ns_index)
  307.           {
  308.            
  309.                   /* Here this is an empty function, Nothing to declare */
  310.                  
  311.           }
  312.  
  313.        
  314.        
  315.         axiom_node_t* WSF_CALL
  316.     eblbasecomponents_apis_ebay::AbstractRequestType::serialize(axiom_node_t *parent,
  317.             axiom_element_t *parent_element,
  318.             int parent_tag_closed,
  319.             axutil_hash_t *namespaces,
  320.             int *next_ns_index)
  321.         {
  322.            
  323.            
  324.              axis2_char_t *string_to_stream;
  325.            
  326.          
  327.          axiom_node_t *current_node = NULL;
  328.          int tag_closed = 0;
  329.  
  330.          
  331.          
  332.                 axiom_namespace_t *ns1 = NULL;
  333.  
  334.                 axis2_char_t *qname_uri = NULL;
  335.                 axis2_char_t *qname_prefix = NULL;
  336.                 axis2_char_t *p_prefix = NULL;
  337.            
  338.                int i = 0;
  339.                int count = 0;
  340.                void *element = NULL;
  341.              
  342.                     axis2_char_t *text_value_1;
  343.                     axis2_char_t *text_value_1_temp;
  344.                    
  345.                     axis2_char_t *text_value_2;
  346.                     axis2_char_t *text_value_2_temp;
  347.                    
  348.                axis2_char_t *start_input_str = NULL;
  349.                axis2_char_t *end_input_str = NULL;
  350.                unsigned int start_input_str_len = 0;
  351.                unsigned int end_input_str_len = 0;
  352.            
  353.            
  354.                axiom_data_source_t *data_source = NULL;
  355.                axutil_stream_t *stream = NULL;
  356.  
  357.            
  358.                     current_node = parent;
  359.                     data_source = (axiom_data_source_t *)axiom_node_get_data_element(current_node, Environment::getEnv());
  360.                     if (!data_source)
  361.                         return NULL;
  362.                     stream = axiom_data_source_get_stream(data_source, Environment::getEnv()); /* assume parent is of type data source */
  363.                     if (!stream)
  364.                         return NULL;
  365.                  
  366.             if(!parent_tag_closed)
  367.             {
  368.            
  369.               string_to_stream = ">";
  370.               axutil_stream_write(stream, Environment::getEnv(), string_to_stream, axutil_strlen(string_to_stream));
  371.               tag_closed = 1;
  372.            
  373.             }
  374.            
  375.                        if(!(p_prefix = (axis2_char_t*)axutil_hash_get(namespaces, "urn:ebay:apis:eBLBaseComponents", AXIS2_HASH_KEY_STRING)))
  376.                        {
  377.                            p_prefix = (axis2_char_t*)AXIS2_MALLOC(Environment::getEnv()->allocator, sizeof (axis2_char_t) * ADB_DEFAULT_NAMESPACE_PREFIX_LIMIT);
  378.                            sprintf(p_prefix, "n%d", (*next_ns_index)++);
  379.                            axutil_hash_set(namespaces, "urn:ebay:apis:eBLBaseComponents", AXIS2_HASH_KEY_STRING, p_prefix);
  380.                            
  381.                            axiom_element_declare_namespace_assume_param_ownership(parent_element, Environment::getEnv(), axiom_namespace_create (Environment::getEnv(),
  382.                                             "urn:ebay:apis:eBLBaseComponents", p_prefix));
  383.                        }
  384.                      
  385.  
  386.                    if (!isValidMessageID)
  387.                    {
  388.                      
  389.                            /* no need to complain for minoccurs=0 element */
  390.                            
  391.                          
  392.                    }
  393.                    else
  394.                    {
  395.                      start_input_str = (axis2_char_t*)AXIS2_MALLOC(Environment::getEnv()->allocator, sizeof(axis2_char_t) *
  396.                                  (4 + axutil_strlen(p_prefix) +
  397.                                   axutil_strlen("MessageID")));
  398.                                  
  399.                                  /* axutil_strlen("<:>") + 1 = 4 */
  400.                      end_input_str = (axis2_char_t*)AXIS2_MALLOC(Environment::getEnv()->allocator, sizeof(axis2_char_t) *
  401.                                  (5 + axutil_strlen(p_prefix) + axutil_strlen("MessageID")));
  402.                                   /* axutil_strlen("</:>") + 1 = 5 */
  403.                                  
  404.                      
  405.  
  406.                    
  407.                    
  408.                      
  409.                      /*
  410.                       * parsing MessageID element
  411.                       */
  412.  
  413.                    
  414.                    
  415.                             sprintf(start_input_str, "<%s%sMessageID>",
  416.                                  p_prefix?p_prefix:"",
  417.                                  (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
  418.                            
  419.                         start_input_str_len = axutil_strlen(start_input_str);
  420.                         sprintf(end_input_str, "</%s%sMessageID>",
  421.                                  p_prefix?p_prefix:"",
  422.                                  (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
  423.                         end_input_str_len = axutil_strlen(end_input_str);
  424.                    
  425.                            text_value_1 = (axis2_char_t*)property_MessageID.c_str();
  426.                            
  427.                            axutil_stream_write(stream, Environment::getEnv(), start_input_str, start_input_str_len);
  428.                            
  429.                            
  430.                            text_value_1_temp = axutil_xml_quote_string(Environment::getEnv(), text_value_1, true);
  431.                            if (text_value_1_temp)
  432.                            {
  433.                                axutil_stream_write(stream, Environment::getEnv(), text_value_1_temp, axutil_strlen(text_value_1_temp));
  434.                                AXIS2_FREE(Environment::getEnv()->allocator, text_value_1_temp);
  435.                            }
  436.                            else
  437.                            {
  438.                                axutil_stream_write(stream, Environment::getEnv(), text_value_1, axutil_strlen(text_value_1));
  439.                            }
  440.                            
  441.                            axutil_stream_write(stream, Environment::getEnv(), end_input_str, end_input_str_len);
  442.                            
  443.                      
  444.                      AXIS2_FREE(Environment::getEnv()->allocator,start_input_str);
  445.                      AXIS2_FREE(Environment::getEnv()->allocator,end_input_str);
  446.                  }
  447.  
  448.                  
  449.                        p_prefix = NULL;
  450.                      
  451.  
  452.                    if (!isValidExtraElement)
  453.                    {
  454.                      
  455.                            /* no need to complain for minoccurs=0 element */
  456.                            
  457.                          
  458.                    }
  459.                    else
  460.                    {
  461.                      start_input_str = (axis2_char_t*)AXIS2_MALLOC(Environment::getEnv()->allocator, sizeof(axis2_char_t) *
  462.                                  (4 + axutil_strlen(p_prefix) +
  463.                                   axutil_strlen("extraElement")));
  464.                                  
  465.                                  /* axutil_strlen("<:>") + 1 = 4 */
  466.                      end_input_str = (axis2_char_t*)AXIS2_MALLOC(Environment::getEnv()->allocator, sizeof(axis2_char_t) *
  467.                                  (5 + axutil_strlen(p_prefix) + axutil_strlen("extraElement")));
  468.                                   /* axutil_strlen("</:>") + 1 = 5 */
  469.                                  
  470.                      
  471.  
  472.                    
  473.                    
  474.                      /*
  475.                       * Parsing ExtraElement array
  476.                       */
  477.                      if (property_ExtraElement != NULL)
  478.                      {
  479.                        
  480.                             sprintf(start_input_str, "<%s%sextraElement>",
  481.                                  p_prefix?p_prefix:"",
  482.                                  (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
  483.                            
  484.                          start_input_str_len = axutil_strlen(start_input_str);
  485.  
  486.                          sprintf(end_input_str, "</%s%sextraElement>",
  487.                                  p_prefix?p_prefix:"",
  488.                                  (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
  489.                          end_input_str_len = axutil_strlen(end_input_str);
  490.  
  491.                          count = property_ExtraElement->size();
  492.                          for(i = 0; i < count; i++)
  493.                          {
  494.                             wso2wsf::OMElement* element = (*property_ExtraElement)[i];
  495.  
  496.                             if(NULL == element)
  497.                             {
  498.                                 continue;
  499.                             }
  500.  
  501.                    
  502.                      
  503.                      /*
  504.                       * parsing extraElement element
  505.                       */
  506.  
  507.                    
  508.                    
  509.                                 std::string s = element->toString();
  510.                                 text_value_2 = (axis2_char_t*)(s.c_str());
  511.                                
  512.                                 axutil_stream_write(stream, Environment::getEnv(), text_value_2, axutil_strlen(text_value_2));
  513.                                
  514.                          }
  515.                      }
  516.                    
  517.                      
  518.                      AXIS2_FREE(Environment::getEnv()->allocator,start_input_str);
  519.                      AXIS2_FREE(Environment::getEnv()->allocator,end_input_str);
  520.                  }
  521.  
  522.                  
  523.  
  524.             return parent;
  525.         }
  526.  
  527.  
  528.        
  529.  
  530.             /**
  531.              * Getter for MessageID by  Property Number 1
  532.              */
  533.             std::string WSF_CALL
  534.             eblbasecomponents_apis_ebay::AbstractRequestType::getProperty1()
  535.             {
  536.                 return getMessageID();
  537.             }
  538.  
  539.             /**
  540.              * getter for MessageID.
  541.              */
  542.             std::string WSF_CALL
  543.             eblbasecomponents_apis_ebay::AbstractRequestType::getMessageID()
  544.              {
  545.                 return property_MessageID;
  546.              }
  547.  
  548.             /**
  549.              * setter for MessageID
  550.              */
  551.             bool WSF_CALL
  552.             eblbasecomponents_apis_ebay::AbstractRequestType::setMessageID(
  553.                     const std::string  arg_MessageID)
  554.              {
  555.                
  556.  
  557.                 if(isValidMessageID &&
  558.                         arg_MessageID == property_MessageID)
  559.                 {
  560.                    
  561.                     return true;
  562.                 }
  563.  
  564.                
  565.  
  566.                
  567.                 resetMessageID();
  568.  
  569.                
  570.                         property_MessageID = std::string(arg_MessageID.c_str());
  571.                         isValidMessageID = true;
  572.                    
  573.                 return true;
  574.              }
  575.  
  576.              
  577.  
  578.            /**
  579.             * resetter for MessageID
  580.             */
  581.            bool WSF_CALL
  582.            eblbasecomponents_apis_ebay::AbstractRequestType::resetMessageID()
  583.            {
  584.                int i = 0;
  585.                int count = 0;
  586.  
  587.  
  588.                
  589.                isValidMessageID = false;
  590.                return true;
  591.            }
  592.  
  593.            /**
  594.             * Check whether MessageID is nill
  595.             */
  596.            bool WSF_CALL
  597.            eblbasecomponents_apis_ebay::AbstractRequestType::isMessageIDNil()
  598.            {
  599.                return !isValidMessageID;
  600.            }
  601.  
  602.            /**
  603.             * Set MessageID to nill (currently the same as reset)
  604.             */
  605.            bool WSF_CALL
  606.            eblbasecomponents_apis_ebay::AbstractRequestType::setMessageIDNil()
  607.            {
  608.                return resetMessageID();
  609.            }
  610.  
  611.            
  612.  
  613.             /**
  614.              * Getter for extraElement by  Property Number 2
  615.              */
  616.             std::vector<wso2wsf::OMElement*>* WSF_CALL
  617.             eblbasecomponents_apis_ebay::AbstractRequestType::getProperty2()
  618.             {
  619.                 return getExtraElement();
  620.             }
  621.  
  622.             /**
  623.              * getter for extraElement.
  624.              */
  625.             std::vector<wso2wsf::OMElement*>* WSF_CALL
  626.             eblbasecomponents_apis_ebay::AbstractRequestType::getExtraElement()
  627.              {
  628.                 return property_ExtraElement;
  629.              }
  630.  
  631.             /**
  632.              * setter for extraElement
  633.              */
  634.             bool WSF_CALL
  635.             eblbasecomponents_apis_ebay::AbstractRequestType::setExtraElement(
  636.                     std::vector<wso2wsf::OMElement*>*  arg_ExtraElement)
  637.              {
  638.                
  639.                  int size = 0;
  640.                  int i = 0;
  641.                  bool non_nil_exists = false;
  642.                
  643.  
  644.                 if(isValidExtraElement &&
  645.                         arg_ExtraElement == property_ExtraElement)
  646.                 {
  647.                    
  648.                     return true;
  649.                 }
  650.  
  651.                
  652.                  size = arg_ExtraElement->size();
  653.                  
  654.                  if (size < 0)
  655.                  {
  656.                      WSF_LOG_ERROR_MSG( Environment::getEnv()->log,WSF_LOG_SI,"extraElement has less than minOccurs(0)");
  657.                      return false;
  658.                  }
  659.                  for(i = 0; i < size; i ++ )
  660.                  {
  661.                      if(NULL != (*arg_ExtraElement)[i])
  662.                      {
  663.                          non_nil_exists = true;
  664.                          break;
  665.                      }
  666.                  }
  667.  
  668.                  
  669.  
  670.                
  671.                 resetExtraElement();
  672.  
  673.                
  674.                     if(NULL == arg_ExtraElement)
  675.                          
  676.                 {
  677.                     /* We are already done */
  678.                     return true;
  679.                 }
  680.                
  681.                         property_ExtraElement = arg_ExtraElement;
  682.                         if(non_nil_exists)
  683.                         {
  684.                             isValidExtraElement = true;
  685.                         }
  686.                        
  687.                    
  688.                 return true;
  689.              }
  690.  
  691.            
  692.             /**
  693.              * Get ith element of extraElement.
  694.              */
  695.             wso2wsf::OMElement* WSF_CALL
  696.             eblbasecomponents_apis_ebay::AbstractRequestType::getExtraElementAt(int i)
  697.             {
  698.                 wso2wsf::OMElement* ret_val;
  699.                 if(property_ExtraElement == NULL)
  700.                 {
  701.                     return (wso2wsf::OMElement*)0;
  702.                 }
  703.                 ret_val =   (*property_ExtraElement)[i];
  704.                
  705.                     return ret_val;
  706.                  
  707.             }
  708.  
  709.             /**
  710.              * Set the ith element of extraElement.
  711.              */
  712.            bool WSF_CALL
  713.             eblbasecomponents_apis_ebay::AbstractRequestType::setExtraElementAt(int i,
  714.                     wso2wsf::OMElement* arg_ExtraElement)
  715.             {
  716.                  wso2wsf::OMElement* element;
  717.                 int size = 0;
  718.  
  719.                 int non_nil_count;
  720.                 bool non_nil_exists = false;
  721.  
  722.                  
  723.  
  724.                 if( isValidExtraElement &&
  725.                     property_ExtraElement &&
  726.                  
  727.                     arg_ExtraElement == (*property_ExtraElement)[i])
  728.                  
  729.                  {
  730.                    
  731.                     return AXIS2_SUCCESS;
  732.                 }
  733.  
  734.                    
  735.                      non_nil_exists = true;
  736.                  
  737.  
  738.                 if(property_ExtraElement == NULL)
  739.                 {
  740.                     property_ExtraElement = new std::vector<wso2wsf::OMElement*>();
  741.                 }
  742.                 else{
  743.                 /* check whether there already exist an element */
  744.                 element = (*property_ExtraElement)[i];
  745.                 }
  746.  
  747.                
  748.                         if(NULL != element)
  749.                         {
  750.                          
  751.                          
  752.                          
  753.                                  // TODO Clear om Element
  754.                                  delete element;
  755.                              
  756.                         }
  757.                        
  758.                    
  759.                     if(!non_nil_exists)
  760.                     {
  761.                        
  762.                         isValidExtraElement = true;
  763.                         (*property_ExtraElement)[i]= NULL;
  764.                        
  765.                         return AXIS2_SUCCESS;
  766.                     }
  767.                
  768.                     (*property_ExtraElement)[i] = arg_ExtraElement;
  769.                  
  770.  
  771.                isValidExtraElement = true;
  772.                
  773.                 return AXIS2_SUCCESS;
  774.             }
  775.  
  776.             /**
  777.              * Add to extraElement.
  778.              */
  779.             bool WSF_CALL
  780.             eblbasecomponents_apis_ebay::AbstractRequestType::addExtraElement(
  781.                     wso2wsf::OMElement* arg_ExtraElement)
  782.              {
  783.  
  784.                
  785.                     if( NULL == arg_ExtraElement
  786.                      )
  787.                     {
  788.                      
  789.                            return true;
  790.                        
  791.                     }
  792.                  
  793.  
  794.                 if(property_ExtraElement == NULL)
  795.                 {
  796.                     property_ExtraElement = new std::vector<wso2wsf::OMElement*>();
  797.                 }
  798.              
  799.                property_ExtraElement->push_back(arg_ExtraElement);
  800.              
  801.                 isValidExtraElement = true;
  802.                 return true;
  803.              }
  804.  
  805.             /**
  806.              * Get the size of the extraElement array.
  807.              */
  808.             int WSF_CALL
  809.             eblbasecomponents_apis_ebay::AbstractRequestType::sizeofExtraElement()
  810.             {
  811.  
  812.                 if(property_ExtraElement == NULL)
  813.                 {
  814.                     return 0;
  815.                 }
  816.                 return property_ExtraElement->size();
  817.             }
  818.  
  819.             /**
  820.              * remove the ith element, same as set_nil_at.
  821.              */
  822.             bool WSF_CALL
  823.             eblbasecomponents_apis_ebay::AbstractRequestType::removeExtraElementAt(int i)
  824.             {
  825.                 return setExtraElementNilAt(i);
  826.             }
  827.  
  828.            
  829.  
  830.            /**
  831.             * resetter for extraElement
  832.             */
  833.            bool WSF_CALL
  834.            eblbasecomponents_apis_ebay::AbstractRequestType::resetExtraElement()
  835.            {
  836.                int i = 0;
  837.                int count = 0;
  838.  
  839.  
  840.                
  841.                 if (property_ExtraElement != NULL)
  842.                 {
  843.                   std::vector<wso2wsf::OMElement*>::iterator it =  property_ExtraElement->begin();
  844.                   for( ; it <  property_ExtraElement->end() ; ++it)
  845.                   {
  846.                      wso2wsf::OMElement* element = *it;
  847.                
  848.            
  849.                
  850.  
  851.                 if(element != NULL)
  852.                 {
  853.                    
  854.                    
  855.                         delete element;
  856.                          element = NULL;
  857.                      
  858.  
  859.                    }
  860.  
  861.                
  862.                
  863.                
  864.                }
  865.  
  866.              }
  867.                
  868.                     if(NULL != property_ExtraElement)
  869.                  delete property_ExtraElement;
  870.                
  871.                isValidExtraElement = false;
  872.                return true;
  873.            }
  874.  
  875.            /**
  876.             * Check whether extraElement is nill
  877.             */
  878.            bool WSF_CALL
  879.            eblbasecomponents_apis_ebay::AbstractRequestType::isExtraElementNil()
  880.            {
  881.                return !isValidExtraElement;
  882.            }
  883.  
  884.            /**
  885.             * Set extraElement to nill (currently the same as reset)
  886.             */
  887.            bool WSF_CALL
  888.            eblbasecomponents_apis_ebay::AbstractRequestType::setExtraElementNil()
  889.            {
  890.                return resetExtraElement();
  891.            }
  892.  
  893.            
  894.            /**
  895.             * Check whether extraElement is nill at i
  896.             */
  897.            bool WSF_CALL
  898.            eblbasecomponents_apis_ebay::AbstractRequestType::isExtraElementNilAt(int i)
  899.            {
  900.                return (isValidExtraElement == false ||
  901.                        NULL == property_ExtraElement ||
  902.                      NULL == (*property_ExtraElement)[i]);
  903.             }
  904.  
  905.            /**
  906.             * Set extraElement to nil at i
  907.             */
  908.            bool WSF_CALL
  909.            eblbasecomponents_apis_ebay::AbstractRequestType::setExtraElementNilAt(int i)
  910.            {
  911.                 int size = 0;
  912.                 int j;
  913.                 bool non_nil_exists = false;
  914.  
  915.                 int k = 0;
  916.  
  917.                 if(property_ExtraElement == NULL ||
  918.                             isValidExtraElement == false)
  919.                 {
  920.                    
  921.                     non_nil_exists = false;
  922.                 }
  923.                 else
  924.                 {
  925.                     size = property_ExtraElement->size();
  926.                     for(j = 0, k = 0; j < size; j ++ )
  927.                     {
  928.                         if(i == j) continue;
  929.                         if(NULL != (*property_ExtraElement)[i])
  930.                         {
  931.                             k++;
  932.                             non_nil_exists = true;
  933.                             if( k >= 0)
  934.                             {
  935.                                 break;
  936.                             }
  937.                         }
  938.                     }
  939.                 }
  940.                
  941.  
  942.                 if( k < 0)
  943.                 {
  944.                        WSF_LOG_ERROR_MSG(Environment::getEnv()->log, WSF_LOG_SI, "Size of the array of extraElement is beinng set to be smaller than the specificed number of minOccurs(0)");
  945.                        return AXIS2_FAILURE;
  946.                 }
  947.  
  948.                 if(property_ExtraElement == NULL)
  949.                 {
  950.                     isValidExtraElement = false;
  951.                    
  952.                     return true;
  953.                 }
  954.                  
  955.                  /* check whether there already exist an element */
  956.                  wso2wsf::OMElement* element = (*property_ExtraElement)[i];
  957.                 if(NULL != element)
  958.                 {
  959.                  
  960.                  
  961.                  
  962.                      delete element;
  963.                      
  964.                  }
  965.                  
  966.                     if(!non_nil_exists)
  967.                     {
  968.                        
  969.                         isValidExtraElement = false;
  970.                         (*property_ExtraElement)[i] = NULL;
  971.                         return AXIS2_SUCCESS;
  972.                     }
  973.                
  974.  
  975.                
  976.                 (*property_ExtraElement)[i] = NULL;
  977.                
  978.                 return AXIS2_SUCCESS;
  979.  
  980.            }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement