Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
895 views
in Technique[技术] by (71.8m points)

google app engine - How to Use the GWT-RequestFactory in Android SyncAdapter (always getting ValidationTool-Error)

I got a question about the usage of GWT-RequestFactory in Android. As a starting point I used the code from the “Create a AppEngine connected Android-Project”-Wizard (infos: http://code.google.com/intl/de-DE/eclipse/docs/appengine_connected_android.html) and it worked great.

But now in my case I want do extend this application to use a local ContentProvider with SQLite and a SyncService with SyncAdapter do synchronize the data from the ContentProvider to the AppEngine using the RequestFactory. Now my problem is the following: I can call

MyRequestFactory requestFactory = Util.getRequestFactory(mContext, MyRequestFactory.class);

in any Activity I want and will receive an instance of MyRequestFactory. (Note: Util is a class created by the Wizard.) But if I try to make the same call from my SyncAdapter, I will get a java.lang.RuntimeException: The RequestFactory ValidationTool must be run for the com.hotool.client.MyRequestFactory RequestFactory type”.

Maybe for your information: The Util.getRequestFacory method looks like this:

/**
* 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;
}

The error occurs in RequestFactorySource which lies in the requestfactory-client.jar I think, that this may be a Class-Loader problem, but tried to figure it out with no success.

I tried to use the ValidationTool but first of all it didn't help and secondly I discovered, that the classes the ValidationTool will generate are already in place (probably thanks to annotation-processing as mentioned here: http://code.google.com/p/google-web-toolkit/wiki/RequestFactoryInterfaceValidation)

Does anybody have an idea what could cause this?

Thanks a lot and best regards.

Markus Neuenschwander

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...