Search in sources :

Example 11 with Finder

use of com.linkedin.restli.server.annotations.Finder in project rest.li by linkedin.

the class GreetingsResourceImpl method search.

@Finder("search")
public List<Greeting> search(@PagingContextParam PagingContext ctx, @QueryParam("tone") @Optional Tone tone) {
    List<Greeting> greetings = new ArrayList<Greeting>();
    int idx = 0;
    int start = ctx.getStart();
    int stop = start + ctx.getCount();
    for (Greeting g : _db.values()) {
        if (idx++ >= ctx.getStart()) {
            if (tone == null || g.getTone().equals(tone)) {
                greetings.add(g);
            }
            if (idx == stop) {
                break;
            }
        }
    }
    return greetings;
}
Also used : Greeting(com.linkedin.restli.examples.greetings.api.Greeting) ArrayList(java.util.ArrayList) Finder(com.linkedin.restli.server.annotations.Finder)

Example 12 with Finder

use of com.linkedin.restli.server.annotations.Finder in project rest.li by linkedin.

the class GreetingsResourceImpl method searchWithPostFilter.

@Finder("searchWithPostFilter")
public CollectionResult<Greeting, Empty> searchWithPostFilter(@PagingContextParam PagingContext ctx) {
    List<Greeting> greetings = new ArrayList<Greeting>();
    int idx = 0;
    int start = ctx.getStart();
    int stop = start + ctx.getCount();
    for (Greeting g : _db.values()) {
        if (idx++ >= ctx.getStart()) {
            greetings.add(g);
            if (idx == stop) {
                break;
            }
        }
    }
    // for testing, using a post-filter that just removes the first element
    if (greetings.size() > 0)
        greetings.remove(0);
    int total = _db.values().size();
    // this is to keep paging consistent even in the presence of a post filter.
    return new CollectionResult<Greeting, Empty>(greetings, total, null, PageIncrement.FIXED);
}
Also used : Greeting(com.linkedin.restli.examples.greetings.api.Greeting) CollectionResult(com.linkedin.restli.server.CollectionResult) ArrayList(java.util.ArrayList) Finder(com.linkedin.restli.server.annotations.Finder)

Example 13 with Finder

use of com.linkedin.restli.server.annotations.Finder in project rest.li by linkedin.

the class MixedResource method search.

@Finder("search")
public Promise<List<Greeting>> search(@QueryParam("what") final String s) {
    final SettablePromise<List<Greeting>> result = Promises.settable();
    Runnable requestHandler = new Runnable() {

        public void run() {
            result.done(Arrays.asList(new Greeting().setMessage(s)));
        }
    };
    scheduler.schedule(requestHandler, DELAY, TimeUnit.MILLISECONDS);
    return result;
}
Also used : Greeting(com.linkedin.restli.examples.greetings.api.Greeting) List(java.util.List) Finder(com.linkedin.restli.server.annotations.Finder)

Aggregations

Finder (com.linkedin.restli.server.annotations.Finder)13 ArrayList (java.util.ArrayList)10 Greeting (com.linkedin.restli.examples.greetings.api.Greeting)7 CollectionResult (com.linkedin.restli.server.CollectionResult)3 Message (com.linkedin.restli.examples.greetings.api.Message)2 Tone (com.linkedin.restli.examples.greetings.api.Tone)2 HashMap (java.util.HashMap)2 Map (java.util.Map)2 DataMap (com.linkedin.data.DataMap)1 ValidationResult (com.linkedin.data.schema.validation.ValidationResult)1 RecordTemplate (com.linkedin.data.template.RecordTemplate)1 StringMap (com.linkedin.data.template.StringMap)1 CompoundKey (com.linkedin.restli.common.CompoundKey)1 AlbumEntry (com.linkedin.restli.example.AlbumEntry)1 Photo (com.linkedin.restli.example.Photo)1 EmptyMap (com.linkedin.restli.examples.greetings.api.EmptyMap)1 SearchMetadata (com.linkedin.restli.examples.greetings.api.SearchMetadata)1 ToneFacet (com.linkedin.restli.examples.greetings.api.ToneFacet)1 ToneFacetArray (com.linkedin.restli.examples.greetings.api.ToneFacetArray)1 ValidationDemo (com.linkedin.restli.examples.greetings.api.ValidationDemo)1