Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1251
  • Last Modified:

JavaScript - adding rows to array from SOAP call fails - TypeError: Cannot set property "0.0" of undefined to ""

Background:  This is an excerpt from the  Post_Execution Code segment from a CA Technologies Process Automation custom operator. "Get CI Details Process"

The upstream inputs to this SOAP call are correct and this code works:

Process.CI_Length__ = Process[OpName].SelectDataResponse.UDSObject.length;
for ( j = 0; j < Process[OpName].SelectDataResponse.UDSObject.length; j++ )
{
  str = "row" + j;
  Process[OpName].Rows[str] = newValueMap();
  var myAttributes = new Array();
  myAttributes = Local[IconName].SelectDataResponse.UDSObject[j].Attributes[0].Attribute;
  
  Process.CI_Name__[j] = myAttributes[0].AttrValue[0].text_;
  Process.CI_Support_Cont1_Name__[j] = myAttributes[1].AttrValue[0].text_;
  Process.CI_Support_Cont2_Name__[j] = myAttributes[2].AttrValue[0].text_;
  Process.CI_Support_Cont3_Name__[j] = myAttributes[3].AttrValue[0].text_;
  Process.CI_Network_Cont_Name__[j] = myAttributes[4].AttrValue[0].text_;
  Process.CI_UUID__[j] = myAttributes[5].AttrValue[0].text_;
  
  Process.OperatorResultCode__ = "SUCCESS";
}

Open in new window


However, when I add 3 new inputs to the call and then try to capture them in the response:
 
  Process.CI_Length__ = Process[OpName].SelectDataResponse.UDSObject.length;
for ( j = 0; j < Process[OpName].SelectDataResponse.UDSObject.length; j++ )
{
  str = "row" + j;
  Process[OpName].Rows[str] = newValueMap();
  var myAttributes = new Array();
  myAttributes = Local[IconName].SelectDataResponse.UDSObject[j].Attributes[0].Attribute;
  
  Process.CI_Name__[j] = myAttributes[0].AttrValue[0].text_;
  Process.CI_Support_Cont1_Name__[j] = myAttributes[1].AttrValue[0].text_;
  Process.CI_Support_Cont2_Name__[j] = myAttributes[2].AttrValue[0].text_;
  Process.CI_Support_Cont3_Name__[j] = myAttributes[3].AttrValue[0].text_;
  Process.CI_Network_Cont_Name__[j] = myAttributes[4].AttrValue[0].text_;
  Process.CI_UUID__[j] = myAttributes[5].AttrValue[0].text_;
  Process.CI_Med_Risk_App_Group__[j] = myAttributes[6].AttrValue[0].text_;
  Process.CI_High_Risk_App_Group__[j] = myAttributes[7].AttrValue[0].text_;
  Process.CI_QA_App_Group__[j] = myAttributes[8].AttrValue[0].text_;
  
  Process.OperatorResultCode__ = "SUCCESS";
}

Open in new window


I get the error in the subject line.

I have verified the new input parameters and responses are correct both via SoapUI and by examining the response prior the execution of the code.

Based on my search on the error, the new variables are never being defined.  The "0.0" made me think it was a type error however, the responses from myAttributes[1]-[4] are exactly the same type.  These are UUID's as strings, even if they can begin with number.  The values are not NULL nor empty strings.
0
shadowbreeze
Asked:
shadowbreeze
  • 2
1 Solution
 
leakim971PluritechnicianCommented:
add the following just before the << for >> loop :
if(!Process.CI_Med_Risk_App_Group__) Process.CI_Med_Risk_App_Group__ = [];
if(!Process.CI_High_Risk_App_Group__) Process.CI_High_Risk_App_Group__ = [];
if(!Process.CI_QA_App_Group__) Process.CI_QA_App_Group__ = [];

Open in new window

0
 
shadowbreezeAuthor Commented:
Adding the identity test and then explicitly declaring the array did make the error message disappear, but the new array elements are not populated.

I can't find anywhere upstream of this where the previous elements were explicitly declared. (I'm not saying they aren't - just that I haven't found them).
0
 
shadowbreezeAuthor Commented:
This does resolve the issue.  (I had continued working on it before your post and introduced a typo later in the code block - so that was why it wasn't capturing the response).
0

Featured Post

Become an Android App Developer

Ready to kick start your career in 2018? Learn how to build an Android app in January’s Course of the Month and open the door to new opportunities.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now