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?

Reply via email to