У меня возник вопрос об использовании GWT-RequestFactory в Android. В качестве отправной точки я использовал код из мастера «Создание Android-проекта, подключенного к AppEngine» (информация: 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: RequestFactory ValidationTool должен быть запущен для типа RequestFactory com.hotool.client.MyRequestFactory ».
Возможно, для вашей информации: метод 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
Я думаю, что это может быть проблема Class-Loader, но попытался разобраться безуспешно.
Я пытался использовать ValidationTool, но, во-первых, это не помогло, а во-вторых, я обнаружил, что классы, которые будет генерировать ValidationTool, уже существуют (вероятно, благодаря обработке аннотаций, как упоминалось здесь: http://code.google.com/p/google-web-toolkit/wiki/RequestFactoryInterfaceValidation)
У кого-нибудь есть идеи, что может вызвать это?
Большое спасибо и наилучшие пожелания.
Маркус Нойеншвандер