Hi! Why don't you just pass a GridDataSource directly instead of relying on having your collection coerced to it?
On Wed, May 31, 2017 at 10:41 AM, Andrias Sundskarð <a...@amc.dk> wrote: > Hi, guys. > > I'm using tapestry 5.3.8. > > I need a different grid sorting than the one provided in > "CollectionGridDataSource". > I contribute a custom type coercer like this: > > public static void contributeTypeCoercer(Configuration<CoercionTuple> > configuration) > { > > configuration.add(CoercionTuple.create(Collection.class, > GridDataSource.class, > new Coercion<Collection, > GridDataSource>() > { > @Override > public > GridDataSource coerce(Collection input) > { > > return new MyCollectionGridDataSource(input); > } > })); > } > > My code seems to work without issues, but at random times > "MyCollectionGridDataSource" is not being used. These times the standard > "CollectionGridDataSource" is used instead. I have verified this by setting > break point in both classes. > > Configuration list before adding custom type coercer: > org.apache.tapestry5.ComponentResources --> org.apache.tapestry5. > PropertyOverrides > String --> org.apache.tapestry5.SelectModel > java.util.Map --> org.apache.tapestry5.SelectModel > java.util.Collection --> org.apache.tapestry5.grid.GridDataSource > null --> org.apache.tapestry5.grid.GridDataSource > java.util.List --> org.apache.tapestry5.SelectModel > String --> java.util.regex.Pattern > org.apache.tapestry5.runtime.ComponentResourcesAware --> > org.apache.tapestry5.ComponentResources > String --> org.apache.tapestry5.Renderable > org.apache.tapestry5.Renderable --> org.apache.tapestry5.Block > String --> java.text.DateFormat > String --> org.apache.tapestry5.ioc.Resource > org.apache.tapestry5.Renderable --> org.apache.tapestry5.runtime. > RenderCommand > java.util.Date --> java.util.Calendar > org.apache.tapestry5.ioc.Resource --> org.apache.tapestry5.services. > dynamic.DynamicTemplate > org.apache.tapestry5.Asset --> org.apache.tapestry5.ioc.Resource > String --> org.apache.tapestry5.corelib.ClientValidation > org.apache.tapestry5.services.ComponentClassTransformWorker --> > org.apache.tapestry5.services.transform.ComponentClassTransformWorker2 > org.apache.tapestry5.ValueEncoder --> org.apache.tapestry5.services. > ValueEncoderFactory > org.apache.tapestry5.services.InjectionProvider --> > org.apache.tapestry5.services.transform.InjectionProvider2 > > and after: > org.apache.tapestry5.ComponentResources --> org.apache.tapestry5. > PropertyOverrides > String --> org.apache.tapestry5.SelectModel > java.util.Map --> org.apache.tapestry5.SelectModel > java.util.Collection --> org.apache.tapestry5.grid.GridDataSource > null --> org.apache.tapestry5.grid.GridDataSource > java.util.List --> org.apache.tapestry5.SelectModel > String --> java.util.regex.Pattern > org.apache.tapestry5.runtime.ComponentResourcesAware --> > org.apache.tapestry5.ComponentResources > String --> org.apache.tapestry5.Renderable > org.apache.tapestry5.Renderable --> org.apache.tapestry5.Block > String --> java.text.DateFormat > String --> org.apache.tapestry5.ioc.Resource > org.apache.tapestry5.Renderable --> org.apache.tapestry5.runtime. > RenderCommand > java.util.Date --> java.util.Calendar > org.apache.tapestry5.ioc.Resource --> org.apache.tapestry5.services. > dynamic.DynamicTemplate > org.apache.tapestry5.Asset --> org.apache.tapestry5.ioc.Resource > String --> org.apache.tapestry5.corelib.ClientValidation > org.apache.tapestry5.services.ComponentClassTransformWorker --> > org.apache.tapestry5.services.transform.ComponentClassTransformWorker2 > org.apache.tapestry5.ValueEncoder --> org.apache.tapestry5.services. > ValueEncoderFactory > org.apache.tapestry5.services.InjectionProvider --> > org.apache.tapestry5.services.transform.InjectionProvider2 > java.util.Collection --> org.apache.tapestry5.grid.GridDataSource > > As seen here it seems that my custom coercer does not replace the existing > one. > > How can I replace the existing type coercer with my own? > -- Thiago