I'm having problems using parameterized types with seam remoting.
I have a simple method that returns a generic list:
@WebRemote public NodeList<MyNode> getNodes();
where node list is:
public class NodeList<T> { private List<T> nodes; private int totalNodes; get/setNodes() {...} get/setTotalNodes() {...} }
I have found that when calling interface.js, the resulting script contains a correct definition for MyNode but no definition of NodeList.
I think I've tracked the problem down to org.jboss.seam.remoting.InterfaceGenerator.appendTypeSource()
private void appendTypeSource(OutputStream out, Type type, Set<Type> types) throws IOException { if (type instanceof Class) { .... appendClassSource(out, classType, types); } else if (type instanceof ParameterizedType) { for (Type t : ((ParameterizedType) type).getActualTypeArguments()) appendTypeSource(out, t, types); } }
I looks like js class source is only emitted for instances of Class. When the type is a parameterized type, the source for the type arguments is emitted, but source for the type itself is not.