Я пытаюсь динамически генерировать некоторый набор обработчиков событий (используя подкласс com.google.gwt.core.ext.Generator
). Весь процесс генерации отлично работает, мои обработчики обработаны EventBus через инсталляцию setter (аннотация @Inject), и вся идея состоит в том, что эти автоматически генерируемые обработчики регистрируются в (вложенном) EventBus под капотом. Проблема в том, что все эти обработчики должны быть каким-то образом созданы. GIN ничего не знает о них, пока они не будут связаны в модуле GIN; что-то, как показано ниже:Связывание сгенерированных классов в gin
bind(MyDynamicallyGeneratedHandler.class).asEagerSingleton();
Проблема с этим кодом является то, что я должен генерировать модуль джин также (который будет содержать все инструкции связывания (...)). Он работает хорошо, но я не могу установить сгенерированный модуль (@Inject it) в другой не сгенерированный модуль, чтобы его команды привязки выполнялись (в результате установки (MyDynamicModule.class)). Я пробовал грязные трюки со статической инъекцией и провайдерами - все это безуспешно.
Есть ли способ настроить динамически созданный модуль GIN? Или, может быть, есть какой-либо способ создать динамически создаваемые обработчики, чтобы произошла инсталляция сеттера (и, следовательно, регистрация шины событий)?
Ниже приведен пример фрагмента кода:
// it is standard interface
public interace DynamicHandler {
@Inject
void setEventBus(EventBus eventBus);
}
// one of dynamically generated handlers
// where (how) to instantiate me?
public class MyHandler implements DynamicHandler {
@Inject
AnotherHandlerSpecificComponent component
void setEventBus(EventBus eventBus) {
eventBus.register(...); // register myself
}
}
Важно отметить, что все эти динамически генерируемые обработчики имеют некоторые другие зависимости @Injected (кроме EventBus). И эти зависимости (их типы) ale handler-specific (AnotherHandlerSpecificComponent
в приведенном выше примере). Поэтому мне нужно создать экземпляр этих обработчиков таким образом, чтобы запускать инъекцию GIN (я не могу, например, вручную вводить зависимости).
Заранее благодарим за любые подсказки. Я полностью stucked ...
Кажется, что там это аналогичный вопрос: http://stackoverflow.com/questions/5490729/gin-injection-inside-class-generated-by-deferred-binding –