У меня возник вопрос об использовании GWT-RequestFactory в Android. В качестве отправной точки я использовал код из мастера «Создать связанный с AppEngine Android-проект» (информация: http://code.google.com/intl/de-DE/eclipse/docs/appengine_connected_android.html), и это сработало отлично.
Но теперь, в моем случае, я хочу расширить это приложение, чтобы использовать локальный ContentProvider с SQLite, а SyncService с SyncAdapter синхронизировать данные из ContentProvider в AppEngine с помощью RequestFactory. Теперь моя проблема заключается в следующем: я могу позвонить
MyRequestFactory requestFactory = Util.getRequestFactory(mContext, MyRequestFactory.class);
в любом действии, которое я захочу, и получу экземпляр MyRequestFactory. (Примечание: Util — это класс, созданный Мастером.) Но если я попытаюсь сделать тот же вызов из моего SyncAdapter, я получу исключение java.lang.RuntimeException: для com.hotool.client необходимо запустить RequestFactory ValidationTool. MyRequestFactory Тип RequestFactory».
Возможно, для информации: метод Util.getRequestFacory выглядит так:
/**
* Creates and returns an initialized {@link RequestFactory} of the given
* type.
*/
public static <T extends RequestFactory> T getRequestFactory(
Context context, Class<T> factoryClass) {
T requestFactory = RequestFactorySource.create(factoryClass);
SharedPreferences prefs = getSharedPreferences(context);
String authCookie = prefs.getString(Util.AUTH_COOKIE, null);
String uriString = Util.getBaseUrl(context) + RF_METHOD;
URI uri;
try {
uri = new URI(uriString);
} catch (URISyntaxException e) {
Log.w(TAG, "Bad URI: " + uriString, e);
return null;
}
requestFactory.initialize(new SimpleEventBus(),
new AndroidRequestTransport(uri, authCookie));
return requestFactory;
}
Ошибка возникает в RequestFactorySource, который находится в requestfactory-client.jar. Я думаю, что это может быть проблема с загрузчиком классов, но безуспешно пытался понять это. .
Я пытался использовать ValidationTool, но, во-первых, это не помогло, а во-вторых, я обнаружил, что классы, которые будет генерировать ValidationTool, уже на месте (вероятно, благодаря обработке аннотаций, как упоминалось здесь: http://code.google.com/p/google-web-toolkit/wiki/RequestFactoryInterfaceValidation )
Кто-нибудь знает, что может быть причиной этого?
Большое спасибо и с наилучшими пожеланиями.
Маркус Нойеншвандер