Merci pour toutes les réponses. Zakness est venu le plus proche pour me donner la réponse dont j'avais besoin, cependant, je suis venu avec un peu plus simple du modèle.
Mon principal objectif était d'éviter d'utiliser une variable statique à ma structure de données principal. J'ai aussi touché le problème d'essayer de comprendre si la principale structure de données a été extrait de la base de données au moment de la tentative d'accès et que faire quand il n'est pas (c'est à dire quand elle est null).
Après avoir regardé le Google Web Toolkit de l'Architecture: les Meilleures Pratiques Pour la création de l'Architecture de Votre Application GWT vidéo de Google IO, l'Événement de Bus idée semblait parfait.
Je vais poster ma solution ici au cas où il permet à quiconque de sortir.
Tout d'abord, créez la classe de Gestionnaire. Notez la référence à la classe d'Événements déjà:
public interface CategoryChangeHandler extends EventHandler {
void onCategoryChange(CategoryChangeEvent event);
}
Maintenant, sur les Événements de la classe. Cela m'a donné le plus de fil à retordre:
public class CategoryChangeEvent extends GwtEvent<CategoryChangeHandler> {
private final List<Category> category;
public CategoryChangeEvent(List<Category> category) {
super();
this.category = category;
}
public static final Type<CategoryChangeHandler> TYPE = new Type<CategoryChangeHandler>();
@Override
protected void dispatch(CategoryChangeHandler handler) {
handler.onCategoryChange(this);
}
@Override
public com.google.gwt.event.shared.GwtEvent.Type<CategoryChangeHandler> getAssociatedType() {
return TYPE;
}
public List<Category> getCategories(){
return category;
}
}
Maintenant, je suis en mesure de les utiliser de Gestionnaire et de classes d'Événements comme lors de cette structure de données principal obtient reloaded:
Ce code a obtenu la structure de données et souhaitez en informer tout le monde qui est à l'écoute qu'il s'est mis à jour:
CategoryChangeEvent event = new CategoryChangeEvent(result);
eventBus.fireEvent(event);
Ce code est une implémentation de l'Événement
public class PopulateCategoryHandler implements CategoryChangeHandler {
@Override
public void onCategoryChange(CategoryChangeEvent event) {
tearDownCategories();
List<Category> categories = event.getCategories();
populateCategories(categories);
}
}