Just tried it (using List, not ArrayList) same problem.
I think it relates to this bit from parseType, where you explicitly check whether you're on the last but one component (couldn't that be names.length > 1)?
Not that I'm claiming to have understood what's going on here fully yet :)

boolean isPrimitive = InjectionUtils.isPrimitive(returnType) || returnType.isEnum();
boolean lastTry = names.length == 2
        && (isPrimitive || returnType == Date.class || returnCollection);

Jim

On 03/03/2014 22:24, Sergey Beryozkin wrote:
I wonder if it will work with 2.7.11-SNAPSHOT...It rings a bell, seems
like I had to deal with the similar issue recently...

Can you try the snapshot for now ?

Cheers. Sergey
On 03/03/14 21:48, Jim Talbut wrote:
Hi,

Using CXF 2.7.10, if I have:
class Job {
     public List<Task> getTasks(){}
     public void setTasks(List<Task> tasks){}
}
class Task {
     public List<Item> getItems(){}
     public void setItems(List<Item> items){}
     public String getTaskName(){}
     public void setTaskName(String taskName){}
}
class Item {
     public String getItemName(){}
     public void setItemName(String itemName){}
}

With a map that contains:
         map.put("taskName","tasks.taskName");
         map.put("itemName","tasks.items.itemName");

I can do:
"&_s=taskName==Bob"
but if I do
"&_s=itemName==Bob"
it fails because it tries to instantiate a List object - if I force that
to be an ArrayList it then tries to setItemName on the ArrayList.

Is it currently possible to make FIQL work through two layers of
collections?

Thanks

Jim



Reply via email to