Hi, I'm illustrating an interesting issue with generic classes in our data model. Here is the very simple page class and template used:
public class TestPageGenericProb { @Property private List<Foo> _foos = new LinkedList<Foo>(); void setupRender () { Foo f1 = new Foo(); _foos.add( f1 ); } } TestPageGenericProb.tml: <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"> <body> <t:grid source="foos" /> </body> </html> The data classes are public class Foo extends Bla<String> { private Long _id; public Long getId () { return _id; } public void setId (Long id) { _id = id; } } public abstract class Bla<U> extends Baz<U, Integer> { } public abstract class Baz <V, W> { private W _dealyBob; public W getDealyBob () { return _dealyBob; } public void setDealyBob (W dealyBob) { _dealyBob = dealyBob; } } On visiting the page, I get Render queue error in SetupRender[TestPageGenericProb:grid]: Failure reading parameter 'model' of component TestPageGenericProb:grid: java.lang.ArrayIndexOutOfBoundsException: 1. The first several elements of the stack trace are: # org.apache.tapestry.ioc.internal.util.GenericsUtils.extractGenericReturnType(GenericsUtils.java:75) # org.apache.tapestry.ioc.internal.services.ClassPropertyAdapterImpl.<init>(ClassPropertyAdapterImpl.java:47) # org.apache.tapestry.ioc.internal.services.PropertyAccessImpl.buildAdapter(PropertyAccessImpl.java:93) # org.apache.tapestry.ioc.internal.services.PropertyAccessImpl.getAdapter(PropertyAccessImpl.java:65) # org.apache.tapestry.internal.services.BeanModelSourceImpl.create(BeanModelSourceImpl.java:74) # org.apache.tapestry.corelib.components.Grid$1.get(Grid.java:336) # org.apache.tapestry.internal.structure.InternalComponentResourcesImpl.readParameter(InternalComponentResourcesImpl.java:233) # org.apache.tapestry.internal.structure.InternalComponentResourcesImpl.readParameter(InternalComponentResourcesImpl.java:248) # org.apache.tapestry.corelib.components.Grid._$read_parameter_model(Grid.java) # org.apache.tapestry.corelib.components.Grid.setupDataSource(Grid.java:382) # org.apache.tapestry.corelib.components.Grid.setupRender(Grid.java:367) # org.apache.tapestry.corelib.components.Grid.setupRender(Grid.java) It doesn't matter if I add data to my original foo instance for all the fields, same result. However, if I fold the implementation of Baz into Bla, I render fine. Thoughts? -- Bill @ PeoplePad --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]