Hey Joakim... I tried your suggestion... and it worked.
I actually created an interface with a host of default methods that I am forcing down the hierarchy... one of which is displayableName. And I made it past the tapestry code... final PropertyAdapter propertyAdapter = classPropertyAdapter.getPropertyAdapter(labelProperty); final ValueEncoder encoder = this.valueEncoderSource.getValueEncoder(propertyAdapter.getType()); propertyAdapter is not null anymore... and so I am able to get my encoder successfully now. Thanks a bunch... - ciao KEN public interface IAbstractEntity { @NonVisual @PropertyDescriptor(nonVisual = true, searchable = false) public Long getCreated(); @NonVisual @PropertyDescriptor(nonVisual = true, searchable = false) public Long getAccessed(); @NonVisual @PropertyDescriptor(nonVisual = true, searchable = false) public void setCreated(Long created); @NonVisual @PropertyDescriptor(nonVisual = true, searchable = false) public void setAccessed(Long accessed); @Transient @PropertyDescriptor(nonVisual = true, searchable = false) public String getCreatedAsString(); @Transient @PropertyDescriptor(nonVisual = true, searchable = false) public String getAccessedAsString(); @Transient @PropertyDescriptor(nonVisual = true, searchable = false) public void setCreatedAsString(String value) throws Exception; @Transient @PropertyDescriptor(nonVisual = true, searchable = false) public void setAccessedAsString(String value) throws Exception; public String getDisplayableName(); public void setDisplayableName(String displayableName); public int hashCode(); public boolean equals(Object obj); public String toString(); }