2012-06-08 3 views
0

Я пытаюсь написать мини-плагин для системного сервера запроса действий BMC.Как получить значения из Java List <E>?

filterAPICall 
public abstract List<com.bmc.arsys.api.Value> filterAPICall(ARPluginContext context, 
                 List<com.bmc.arsys.api.Value> pInValues) 
               throws com.bmc.arsys.api.ARExceptionDescription copied from interface: ARFilterAPIPluggable 

Учитывая набор входных значений, обработайте его и верните список выходных значений. Также предоставляются контекст плагина и данные экземпляра.

Specified by: 
filterAPICall in interface ARFilterAPIPluggable 

Parameters: 
context - Current context for this plugin call, like username etc. 
pInValues - input values 

Returns: 
output values 

Throws: 
com.bmc.arsys.api.ARException 

Описание com.bmc.arsys.api.Value здесь: http://www.javasystemsolutions.com/documentation/thirdparty/arapiv75/com/bmc/arsys/api/Value.html

Теперь, вот мой призыв:

public List<Value> filterAPICall(ARPluginContext context, List<Value> pInValues) throws ARException{ 
     context.logMessage(pluginInfo, ARPluginContext.PLUGIN_LOG_LEVEL_INFO, "filterapiCall()"); 

     if (pInValues.size() == 0) 
      return null; 

     ArrayList<Value> outValues = new ArrayList<Value>(); 

     outValues.add(0, new Value(String.valueOf(InetAddresses.isInetAddress(String.valueOf(pInValues))))); 

     return outValues; 
    } 

По какой-то причине

outValues.add(0, new Value(String.valueOf(InetAddresses.isInetAddress(String.valueOf(pInValues))))); 

не работает.

Я также попытался:

outValues.add(0, new Value(String.valueOf(InetAddresses.isInetAddress(String.valueOf(pInValues.getValue()))))); 

но компилятор говорит:

javac IPChecker.java 
IPChecker.java:30: cannot find symbol 
symbol : method getValue() 
location: interface java.util.List<com.bmc.arsys.api.Value> 
     outValues.add(0, new Value(String.valueOf(InetAddresses.isInetAddress(String.valueOf(pInValues.getValue()))))); 
                            ^
1 error 

Любые идеи?

Благодаря Томас

ответ

2

Вы должны быть итерация.

if (pInValues.size() == 0) 
    return null; 

ArrayList<Value> outValues = new ArrayList<Value>(); 

for(Value value : pInValues) { 
    outValues.add(0, new Value(String.valueOf(InetAddresses.isInetAddress(String.valueOf(value))))); 
} 

return outValues; 
+0

+1 Творческая сторона, о-о! – GingerHead

1

pInValues является java.util.List. List s не имеют метода getValue().

+0

У 'String' есть метод' valueOf() 'для' List'. – SimplyPanda

0

Вам нужно будет получить доступ к элементу в List, чтобы позвонить по телефону getValue(). Попытка:

outValues.add(0, new Value(String.valueOf(InetAddresses.isInetAddress(
    String.valueOf(pInValues.get(0).getValue()))))); 

Это приведет к переводу первого элемента и добавлению его в выходной список. Чтобы получить все элементы, вам необходимо выполнить итерацию по элементам в pInValues и перевести их по одному, добавив каждый результат в выходной список