You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Inge Solvoll <in...@gmail.com> on 2009/09/09 12:51:53 UTC

Problem overriding service ValidationMessagesSource

Hi!

I want to use my DB-based Messages implementation instead of the T5 property
file based one. My problem is that the getValidationMessages method of my
source is only called once, and probably cached until next server restart.
This doesn't work very good for me, as every request potentially is a new
user with a new Locale/language that should be looked up from DB. Any ideas
on how I could configure the system to do a fresh read from Messages service
every time a validation message is computed?



  public static void contributeServiceOverride(MappedConfiguration<Class,
Object> configuration, @Local final org.apache.tapestry5.ioc.Messages
messages, @Local final ValidationMessagesSource validationMessagesSource) {
    configuration.add(org.apache.tapestry5.ioc.Messages.class, messages);
    configuration.add(ValidationMessagesSource.class,
validationMessagesSource);
  }

The implementation of my ValidationMessagesSource:

public class CustomValidationMessagesSource implements
ValidationMessagesSource, UpdateListener {

  private final Messages messages;

  public CustomValidationMessagesSource(Messages messages) {
    this.messages = messages;

  }

  public Messages getValidationMessages(Locale locale) {
    return messages;
  }

  public void checkForUpdates() {
    // Included to find out what this does
  }
}