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?