Flo
Не уверен, что вы вообще на Google Wave, но, похоже, это одно из мест, где можно идти в ногу с текущими усилиями. В частности, эта волна доступна для общественности:
RequestFactory Wave
Он охватывает детали (хорошо появляющиеся детали) об API RequestFactory.
Основная идея заключается в том, что объекты вашей доменной модели необходимы на стороне сервера и на стороне клиента. Использование hibernate может вызвать проблемы с файлами классов, и люди имеют два набора объектов модели и используют пользовательский GWT-RPC для выполнения запросов к серверу и маршалирования / отмены маршала между объектами модели на стороне клиента и сервера. Не идеальное решение. Даже если вы можете использовать одни и те же объекты модели, накладные расходы на RPC являются перетаскиванием.
Введите RequestFactory, и мы видим, что инженерам Google, вероятно, платят по стоимости. Взгляните на пример кода, сгенерированного из .roo, в частности ApplicationRequestFactory.java.
package com.springsource.extrack.gwt.request;
import com.google.gwt.requestfactory.shared.RequestFactory;
public interface ApplicationRequestFactory extends RequestFactory {
ReportRequest reportRequest();
ExpenseRequest expenseRequest();
EmployeeRequest employeeRequest();
}
Это интерфейс, который предоставляет методы запроса для каждого из объектов домена. Реализация этого класса не определена в проекте. Он создается в EntryPoint с помощью вызова GWT.create (...):
final ApplicationRequestFactory requestFactory =
GWT.create(ApplicationRequestFactory.class);
requestFactory.init(eventBus);
В пакете com.springsource.extrack.gwt.request
вы увидите ApplicationEntityTypesProcessor.java, который ловко использует дженерики для упаковки ссылок на классы домена для использования позже в презентации. Остальная часть этого пакета - события и обработчики для каждого объекта модели.
В частности, есть четыре автоматически сгенерированных класса для каждого объекта:
- EmployeeRecord.java - это DTO для объекта домена.
- EmployeeRecordChanged.java - это событие RecordChanged, предоставляющее метод подключения onEmployeeChanged.
- EmployeeChangedHandler.java - это интерфейс, который будет реализован, когда требуется определенное поведение для onEmployeeChanged.
- EmployeeRequest.java - это интерфейс, используемый ApplicationRequestFactory для упаковки различных методов доступа для данного объекта.
Имейте в виду, что за кулисами генерируется много кода для поддержки всего этого. И от M1 до M2 многое было очищено от того, что видно в проекте GWT. Я ожидаю, что будет больше изменений, но не так радикально, как от M1 до M2.
Итак, наконец, эти события можно использовать как в пакете пользовательского интерфейса, чтобы связать домен и пользовательский интерфейс. ReportListActivity.java:
public void start(Display display) {
this.registration = eventBus.addHandler(ReportRecordChanged.TYPE, new ReportChangedHandler() {
public void onReportChanged(ReportRecordChanged event) {
update(event.getWriteOperation(), event.getRecord());
}
});
super.start(display);
}
Снова я отсылаю вас к волне за дополнительной информацией. Кроме того, в Cost.roo показано, как использовать Places, а также имеется довольно удобная платформа Activity. Счастливого GWTing.
Привет.