I am experiencing a strange behavior while generating endpoints using the Google Appengine Eclipse plugin. I have an endpoint class with over 20 endpoint methods. When I first tried generating the endpoints for android I get the error
Generating Cloud Endpoint has encountered errors and is not complete
By way of troubleshooting, I comment out all the methods to find the culprits. What I found is a bit baffling. After uncommenting the 16th method, I get the error again. There are two methods that are interfering with each other! If I comment out one or the other the endpoint is generated fine. But if I have both uncommented, I get the error above.
Does anyone know what may be causing this interference?
@ApiMethod(name = "getOrangers", httpMethod = HttpMethod.POST)
public FaceList getOrangers(UserRequest request) throws NotFoundException {
FaceList list = new FaceList();
return list;
}
@ApiMethod(name = "getMangoers", httpMethod = HttpMethod.POST)
public FaceList getMangoers(UserRequest request) throws NotFoundException {
FaceList list = new FaceList();
return list;
}
I have edited the methods down to their stubs as shown above and still get the same interference problem.
Firstly, when you get an error with that annoying undescriptive message:
you should check the Error Log under
Window -> Show View -> Error Log
to get more info.I did so, and I found that the actual exception is:
So, the problem is that your 2 methods have the same path! Adding explicitly a path for your methods will solve the problem:
NOTE: As you didn't set paths for your methods, GPE is generating them automatically. It seems that GPE is generating the same path for the 2 methods, using to form the path the HTTP method (POST) and the returned value (facelist), which doesn't correspond with what is said in Google Cloud Endpoints Documentation:
It says that the path is automatically generated using the method name, and in that case you'd not getting any error, since your 2 methods have obviously different names. So I guess it must be a bug (as many others) in Endpoints.