2012-01-20 15 views
20

En gwt-user.jar hay 2 interfaces EventBus y las implementaciones de SimpleEventBus.¿Qué GWT EventBus debería usar?

com.google.gwt.event.shared.EventBus y com.google.web.bindery.event.shared.EventBus Me referiré a estos como 'gwt.event' y 'web.bindery'.

Al ver los JavaDocs y el código fuente, puedo ver que gwt.event simplemente ajusta el web.bindery. Sin embargo, la implementación de gwt.event también oculta una serie de métodos en desuso

Entonces, ¿qué implementación debo usar? (Estoy en GWT 2.4)

+1

Tengo el mismo dilema. Quizás, muchos otros sí. Ignoro la advertencia obsoleta y uso el paquete anterior, porque google ha creado un desastre. –

Respuesta

19

Por lo general, debe usar el de com.google.web.bindery. La única versión solía estar en com.google.gwt.event, pero cuando RequestFactory y AutoBeans se movían fuera de GWT y entraban en com.google.web.bindery para que pudieran funcionar en clientes que no pertenecían a GWT.

Si utiliza la versión com.google.web.bindery en sus presentadores y tal, será más fácil usar aplicaciones GWT externas, si es necesario. Tampoco recibirá advertencias de desaprobación al pasar esa instancia al PlaceController y a otras clases que utilicen EventBus.

+0

¡Ah! Los clientes que no pertenecen a GWT tienen tanto sentido. – checketts

+3

Si usa Actividad y Lugares, Actividad en el método de inicio quiere un com.google.gwt.event.shared.EventBus –

0

Para hacer la elección aún más compleja. Estoy usando guayaba en mi aplicación GWT y los chicos de Google han agregado otro EventBus (incluso menos funciones completas).

¿Quizás esos tipos necesitan sentarse juntos y definir UNA implementación para gobernarlos a todos?

Obviamente, me gustaría evitar todas las dependencias en GWT para el código que no se usa estrictamente en el código GWT, por lo que el Guava me pareció interesante.

4

Sé que esta pregunta ya tiene una respuesta pero podría valer la pena al agregar lo siguiente. Como dije en mi comentario anterior, Activity aún necesita la clase com.google.gwt.event.shared.EventBus. Para evitar las advertencias en desuso, hice lo siguiente (yo uso GIN):

public class GinClientModule extends AbstractGinModule { 

    @Override 
    protected void configure() { 
     bind(EventBus.class).to(SimpleEventBus.class).in(Singleton.class); 
     ... 
    } 

    @Provides 
    @Singleton 
    public com.google.gwt.event.shared.EventBus adjustEventBus(
      EventBus busBindery) { 
     return (com.google.gwt.event.shared.EventBus) busBindery; 
    } 

... 

Al hacer esto, siempre se va a utilizar el objeto de la "nueva" versión de bus de eventos en el paquete de enlace.