SAP PI UDF中的ArrayIndexOutOfBoundsException

时间:2014-10-20 07:11:53

标签: java indexoutofboundsexception

我正在尝试开发一个UDF(队列的所有值),它接受一个字符串作为输入包含字段和字段值的管道(|)分隔符。此外,字符串包含标题和详细信息。

标题字段将出现一次,并在一行中详细显示N'

下面是输入字符串::


Headerfield1|fieldValue1|Headerfield2|fieldValue2|Headerfield3|fieldValue3|Headerfield4|fieldValue4|Headerfield5|fieldValue5|Headerfield6|fieldValue6|Itemfield1|fieldvalue1|Itemfield1|fieldvalue1|Itemfield2|fieldvalue2|Itemfield3|fieldvalue3|Itemfield4|fieldvalue4|Itemfield1-1|fieldvalue1-1|Itemfield2-1|fieldvalue1-2|Itemfield3-1|fieldvalue3-1|Itemfield4-1|fieldvalue4-1|Itemfield1-2|fieldvalue1-2|Itemfield2-2|fieldvalue2-2|Itemfield3-2|fieldvalue3-2|Itemfield4-2|fieldvalue4-2|

在上面的字符串中说,Headerfield1是一个字段,其对应的值是fieldValue1

在UDF中,我们将变量输入中的输入字符串和变量字段中的必填字段传递。

我正在尝试传递字段名称并期望其对应的字段值作为输出

Below is the UDF

public void StringSplit(String[] input, String[] field, ResultList result, Container container) throws StreamTransformationException{

String str = input.toString();
String tokens[] = str.split("\\|");
Map<String, String>tokensMap = new HashMap();
  int j =0;
  for(int i =0; i <tokens.length ; i++)
  {
    if(j == i)
    {
     String key = tokens[i].toString();
       if (key.contains("-"))
     {
     String key2 = key.substring(0, key.indexOf("-"));
     if(tokensMap.containsKey(key2))
     {
     tokensMap.put(key2, tokensMap.get(key2)+","+tokens[i+1].toString());
     }
     else
     {
     tokensMap.put(key.substring(0, key.indexOf("-")),tokens[i+1].toString());
     }
     }
     else
     {
     tokensMap.put(tokens[i].toString(),tokens[i+1].toString());
     }
     j = i+2;
    }
   }
  String[] result1 = tokensMap.get(field).split(",");
  for (int i = 0; i < result1.length; i++)
{
if (result1[i].equals("") || result1[i].equals(null) )
result.addSuppress();
else
      result.addValue(result1[i]);  
}
}

这个UDF接受输入字符串并用管道(|)拆分并将其保存在标记中,然后将其添加到tokensMap。最后获取必需的字段并存储到result1中,并使用for循环添加到结果列表中。我在下面收到错误。

错误

  

异常:com.sap.xi.tf类中的[java.lang.ArrayIndexOutOfBoundsException:]。

附加错误日志屏幕截图。 PFA。

请检查错误并建议我需要更改的位置。

提前致谢

谢谢你, Chakradhar N!

0 个答案:

没有答案