restlet / restlet-framework-java

The first REST API framework for Java
https://restlet.talend.com
645 stars 284 forks source link

Odata. Advanced $count request not work. #1230

Open tbw777 opened 7 years ago

tbw777 commented 7 years ago

Where is no action in api to do request like this:

http://services.odata.org/Northwind/Northwind.svc/Customers/$count

http://services.odata.org/Northwind/Northwind.svc/Customers/$count/?$filter=substringof(%27London%27,%20City)

tbw777 commented 7 years ago

This code is work:

public int getCountWithFilter(String filter) {

        // Send a request to a specific URI.
        String targetUri = createTargetUri();

        if (guessType(targetUri) == TYPE_ENTITY) {
            targetUri = targetUri.substring(0, targetUri.lastIndexOf("("));
        }

        targetUri += "/$count";
        targetUri += "/?$filter=" + filter;

        ClientResource resource = service.createResource(new Reference(targetUri));

        try {
            Representation result = resource.get();
            count = Integer.parseInt(result.getText());
        } catch (Exception e) {
            getLogger().warning("Cannot parse count value due to: " + e.getMessage());
        }

        return count;
}