Question

I want to send array of object or list to app engine using endpoint API

@ApiMethod(name = "insertGroupMembers")
public List<GroupMembers> insertGroupMembers(Collection<GroupMembers> members) {
    EntityManager mgr = getEntityManager();
    List<GroupMembers> listMembers = new ArrayList<>(); 
    try {
        for (GroupMembers groupMember : members) {
            mgr.persist(groupMember);
            listMembers.add(groupMember);
        }

    } finally {
        mgr.close();

    return listMembers;

}

But it shows the error at the time generating api library as follows :-

Description Resource Path Location Type There was a problem generating the API metadata for your Cloud Endpoints classes: com.google.api.server.spi.config.validation.CollectionResourceException: groupmembersendpoint.com.appbell.tagalone.GroupMembersEndpoint.insertGroupMembers parameter (type java.util.Collection): Illegal parameter type ('class com.appbell.tagalone.GroupMembers' in collection type 'java.util.Collection'). Arrays or collections of entity types are not allowed. TagAlone-AppEngine Unknown Google App Engine Cloud Endpoints Problem Marker

Était-ce utile?

La solution

I don't remember where I read it, but–if I'm not mistaken–CE does not allow arrays or lists as method parameters. Don't ask me why. The solution I remember seeing was to pass an object to the method with the list as one of the object properties.

Then your method would look like:

public List<GroupMembers> insertGroupMembers(MembersWrapper membersWrapper) {
  for (GroupMembers groupMember : membersWrapper.members) {
    mgr.persist(groupMember);
    listMembers.add(groupMember);
  }
  …
}

Autres conseils

Also, If you are receiving Custom VO object, than ensure the method is annotated with POST. ex @ApiMethod(httpMethod = "POST", path = "insertGroupMembers") I wasted a lot of time, since my parameters sent from Client turned out to be null, only to realize that the data received on server is null. Regenerate Client libraries and automatically the custom VO object would be available as a parameter!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top