2012-01-20 4 views
20

В gwt-user.jar есть 2 интерфейса EventBus и импланты SimpleEventBus.Какой GWT EventBus следует использовать?

com.google.gwt.event.shared.EventBus и com.google.web.bindery.event.shared.EventBus Я буду называть их «gwt.event» и «web.bindery».

Глядя на JavaDocs и исходный код, я вижу, что gwt.event просто обертывает web.bindery. Однако реализация gwt.event также скрывает ряд устаревших методов

Итак, какую реализацию следует использовать? (Я на GWT 2.4)

+1

У меня такая же дилемма. Возможно, многие другие. Я игнорирую устаревшие рекомендации и использую старый пакет, потому что Google создал беспорядок там. –

ответ

19

Обычно вы должны использовать тот, который находится в com.google.web.bindery. Единственная версия была в com.google.gwt.event, но когда RequestFactory и AutoBeans были перемещены из самого GWT и в com.google.web.bindery, чтобы они могли работать в клиентах без GWT.

Если вы используете версию com.google.web.bindery в своих презентациях и т. Д., Это упростит использование внешних приложений GWT, если вам нужно. Вы также не получите предупреждения об устаревании при передаче этого экземпляра PlaceController и другим классам, использующим EventBus.

+0

Ах! Клиенты, не являющиеся GWT, имеют такой смысл. – checketts

+3

Если вы используете Activity и Places, Activity в методе start хочет com.google.gwt.event.shared.EventBus –

2

Если вы используете действия, то вам, вероятно, придется использовать устаревший, по крайней мере, до тех пор, пока они не очистят весь API: http://code.google.com/p/google-web-toolkit/issues/detail?id=6653.

+0

Благодаря ссылке на проблему. Я бы сразу столкнулся с проблемой. – checketts

0

Чтобы сделать выбор еще более сложным. Я использую guava в своем приложении GWT, и ребята из Google добавили еще один EventBus (еще меньше функций).

Возможно, этим парням нужно сидеть вместе и определить ОДНУЮ реализацию, чтобы управлять ими всеми?

Очевидно, что я хотел бы избежать всех зависимостей от GWT для кода, который строго не используется в коде GWT, поэтому мне понравился Guava.

4

Я знаю, что этот вопрос уже имеет ответ, но, возможно, стоит добавить следующее. Как я уже сказал в своем комментарии выше, Activity по-прежнему нуждается в классе com.google.gwt.event.shared.EventBus. Чтобы избежать устаревших предупреждений, я сделал следующее (я использую 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; 
    } 

... 

Делая это, вы всегда будете использовать объект из «новой» версии шины событий в пакете переплетного.

Смежные вопросы