Search in sources :

Example 6 with BatchCollectionResponse

use of com.linkedin.restli.common.BatchCollectionResponse in project rest.li by linkedin.

the class TestBatchFinderResource method testBatchFinderWithProjection.

@Test(dataProvider = com.linkedin.restli.internal.common.TestConstants.RESTLI_PROTOCOL_1_2_PREFIX + "batchFindersRequestBuilderDataProvider")
public void testBatchFinderWithProjection(RootBuilderWrapper<Long, Greeting> builders) throws RemoteInvocationException {
    GreetingCriteria c1 = new GreetingCriteria().setId(1L).setTone(Tone.SINCERE);
    GreetingCriteria c2 = new GreetingCriteria().setId(2L).setTone(Tone.FRIENDLY);
    Request<BatchCollectionResponse<Greeting>> request = builders.batchFindBy("searchGreetings").setQueryParam("criteria", Arrays.asList(c1, c2)).setQueryParam("message", "hello world").fields(Greeting.fields().id()).build();
    ResponseFuture<BatchCollectionResponse<Greeting>> future = getClient().sendRequest(request);
    BatchCollectionResponse<Greeting> response = future.getResponse().getEntity();
    List<BatchFinderCriteriaResult<Greeting>> batchResult = response.getResults();
    List<Greeting> greetings1 = batchResult.get(0).getElements();
    Assert.assertFalse(greetings1.get(0).hasTone());
    Assert.assertTrue(greetings1.get(0).hasId());
    List<Greeting> greetings2 = batchResult.get(1).getElements();
    Assert.assertTrue(greetings2.get(0).hasId());
    Assert.assertFalse(greetings2.get(0).hasTone());
}
Also used : Greeting(com.linkedin.restli.examples.greetings.api.Greeting) BatchFinderCriteriaResult(com.linkedin.restli.common.BatchFinderCriteriaResult) BatchCollectionResponse(com.linkedin.restli.common.BatchCollectionResponse) GreetingCriteria(com.linkedin.restli.examples.greetings.api.GreetingCriteria) Test(org.testng.annotations.Test)

Example 7 with BatchCollectionResponse

use of com.linkedin.restli.common.BatchCollectionResponse in project rest.li by linkedin.

the class TestBatchFinderResource method testUsingResourceSpecificBuilder.

@Test
public void testUsingResourceSpecificBuilder() throws RemoteInvocationException {
    GreetingCriteria c1 = new GreetingCriteria().setId(1L).setTone(Tone.SINCERE);
    GreetingCriteria c2 = new GreetingCriteria().setId(2L).setTone(Tone.FRIENDLY);
    GreetingCriteria c3 = new GreetingCriteria().setId(100);
    Request<BatchCollectionResponse<Greeting>> req = new BatchfindersRequestBuilders().batchFindBySearchGreetings().criteriaParam(Arrays.asList(c1, c2, c3)).messageParam("hello world").build();
    Response<BatchCollectionResponse<Greeting>> resp = REST_CLIENT.sendRequest(req).getResponse();
    BatchCollectionResponse<Greeting> response = resp.getEntity();
    List<BatchFinderCriteriaResult<Greeting>> batchResult = response.getResults();
    Assert.assertEquals(batchResult.size(), 3);
    // on success
    List<Greeting> greetings1 = batchResult.get(0).getElements();
    Assert.assertTrue(greetings1.get(0).hasTone());
    Assert.assertTrue(greetings1.get(0).getTone().equals(Tone.SINCERE));
    // on error
    ErrorResponse error = batchResult.get(2).getError();
    Assert.assertTrue(batchResult.get(2).isError());
    Assert.assertEquals(error.getMessage(), "Fail to find Greeting!");
}
Also used : Greeting(com.linkedin.restli.examples.greetings.api.Greeting) BatchFinderCriteriaResult(com.linkedin.restli.common.BatchFinderCriteriaResult) BatchCollectionResponse(com.linkedin.restli.common.BatchCollectionResponse) BatchfindersRequestBuilders(com.linkedin.restli.examples.greetings.client.BatchfindersRequestBuilders) GreetingCriteria(com.linkedin.restli.examples.greetings.api.GreetingCriteria) ErrorResponse(com.linkedin.restli.common.ErrorResponse) Test(org.testng.annotations.Test)

Example 8 with BatchCollectionResponse

use of com.linkedin.restli.common.BatchCollectionResponse in project rest.li by linkedin.

the class TestParseqBasedFluentClientApiWithProjections method testBatchFinderWithProjection.

@Test
public void testBatchFinderWithProjection() throws Exception {
    Batchfinders batchFinders = new BatchfindersFluentClient(_parSeqRestliClient, _parSeqUnitTestHelper.getEngine());
    GreetingCriteria c1 = new GreetingCriteria().setId(1L).setTone(Tone.SINCERE);
    GreetingCriteria c2 = new GreetingCriteria().setId(2L).setTone(Tone.FRIENDLY);
    CompletionStage<BatchCollectionResponse<Greeting>> result = batchFinders.findBySearchGreetings(Arrays.asList(c1, c2), "hello world", params -> params.withMask(mask -> mask.withTone().withId()));
    CompletableFuture<BatchCollectionResponse<Greeting>> future = result.toCompletableFuture();
    List<BatchFinderCriteriaResult<Greeting>> batchResult = future.get(5000, TimeUnit.MILLISECONDS).getResults();
    List<Greeting> greetings1 = batchResult.get(0).getElements();
    Assert.assertTrue(greetings1.get(0).hasTone());
    Assert.assertEquals(greetings1.get(0).getTone(), Tone.SINCERE);
    Assert.assertTrue(greetings1.get(0).hasId());
    Assert.assertFalse(greetings1.get(0).hasMessage());
    List<Greeting> greetings2 = batchResult.get(1).getElements();
    Assert.assertTrue(greetings2.get(0).hasId());
    Assert.assertEquals(greetings2.get(0).getTone(), Tone.FRIENDLY);
    Assert.assertTrue(greetings2.get(0).hasId());
    Assert.assertFalse(greetings2.get(0).hasMessage());
}
Also used : PagingMetadataProjections(com.linkedin.restli.examples.greetings.client.PagingMetadataProjections) Arrays(java.util.Arrays) RestLiValidationFilter(com.linkedin.restli.server.validation.RestLiValidationFilter) CollectionResponse(com.linkedin.restli.common.CollectionResponse) AutoValidationWithProjectionFluentClient(com.linkedin.restli.examples.greetings.client.AutoValidationWithProjectionFluentClient) Test(org.testng.annotations.Test) PatchGenerator(com.linkedin.restli.client.util.PatchGenerator) EntityResponse(com.linkedin.restli.common.EntityResponse) Map(java.util.Map) CreateIdEntityStatus(com.linkedin.restli.common.CreateIdEntityStatus) CreateIdStatus(com.linkedin.restli.common.CreateIdStatus) BatchfindersFluentClient(com.linkedin.restli.examples.greetings.client.BatchfindersFluentClient) ManualProjections(com.linkedin.restli.examples.greetings.client.ManualProjections) Greetings(com.linkedin.restli.examples.greetings.client.Greetings) BeforeClass(org.testng.annotations.BeforeClass) Set(java.util.Set) ParSeqRestliClientConfigBuilder(com.linkedin.restli.client.ParSeqRestliClientConfigBuilder) CollectionMetadata(com.linkedin.restli.common.CollectionMetadata) List(java.util.List) CompletionStage(java.util.concurrent.CompletionStage) ParSeqRestliClientBuilder(com.linkedin.restli.client.ParSeqRestliClientBuilder) CreateGreeting(com.linkedin.restli.examples.greetings.client.CreateGreeting) AutoValidationWithProjection(com.linkedin.restli.examples.greetings.client.AutoValidationWithProjection) GreetingsFluentClient(com.linkedin.restli.examples.greetings.client.GreetingsFluentClient) HashMap(java.util.HashMap) CompletableFuture(java.util.concurrent.CompletableFuture) com.linkedin.restli.examples.greetings.api.myRecord(com.linkedin.restli.examples.greetings.api.myRecord) PatchRequest(com.linkedin.restli.common.PatchRequest) Assert(org.testng.Assert) UpdateEntityStatus(com.linkedin.restli.common.UpdateEntityStatus) ManualProjectionsFluentClient(com.linkedin.restli.examples.greetings.client.ManualProjectionsFluentClient) RestLiResponseException(com.linkedin.restli.client.RestLiResponseException) Greeting(com.linkedin.restli.examples.greetings.api.Greeting) ParSeqUnitTestHelper(com.linkedin.parseq.ParSeqUnitTestHelper) Tone(com.linkedin.restli.examples.greetings.api.Tone) PartialUpdateGreetingFluentClient(com.linkedin.restli.examples.greetings.client.PartialUpdateGreetingFluentClient) IdEntityResponse(com.linkedin.restli.common.IdEntityResponse) AfterClass(org.testng.annotations.AfterClass) ValidationDemo(com.linkedin.restli.examples.greetings.api.ValidationDemo) BatchFinderCriteriaResult(com.linkedin.restli.common.BatchFinderCriteriaResult) PartialUpdateGreeting(com.linkedin.restli.examples.greetings.client.PartialUpdateGreeting) GreetingCriteria(com.linkedin.restli.examples.greetings.api.GreetingCriteria) ExecutionException(java.util.concurrent.ExecutionException) TimeUnit(java.util.concurrent.TimeUnit) CreateGreetingFluentClient(com.linkedin.restli.examples.greetings.client.CreateGreetingFluentClient) PagingMetadataProjectionsFluentClient(com.linkedin.restli.examples.greetings.client.PagingMetadataProjectionsFluentClient) ParSeqRestliClient(com.linkedin.restli.client.ParSeqRestliClient) BatchCollectionResponse(com.linkedin.restli.common.BatchCollectionResponse) com.linkedin.restli.examples.greetings.api.myItem(com.linkedin.restli.examples.greetings.api.myItem) Batchfinders(com.linkedin.restli.examples.greetings.client.Batchfinders) Sets(org.testng.collections.Sets) Batchfinders(com.linkedin.restli.examples.greetings.client.Batchfinders) BatchFinderCriteriaResult(com.linkedin.restli.common.BatchFinderCriteriaResult) CreateGreeting(com.linkedin.restli.examples.greetings.client.CreateGreeting) Greeting(com.linkedin.restli.examples.greetings.api.Greeting) PartialUpdateGreeting(com.linkedin.restli.examples.greetings.client.PartialUpdateGreeting) BatchCollectionResponse(com.linkedin.restli.common.BatchCollectionResponse) BatchfindersFluentClient(com.linkedin.restli.examples.greetings.client.BatchfindersFluentClient) GreetingCriteria(com.linkedin.restli.examples.greetings.api.GreetingCriteria) Test(org.testng.annotations.Test)

Example 9 with BatchCollectionResponse

use of com.linkedin.restli.common.BatchCollectionResponse in project rest.li by linkedin.

the class TestParseqBasedFluentClientApiWithProjections method testBatchFinderWithPagingProjection.

@Test
public void testBatchFinderWithPagingProjection() throws Exception {
    Batchfinders batchFinders = new BatchfindersFluentClient(_parSeqRestliClient, _parSeqUnitTestHelper.getEngine());
    GreetingCriteria c1 = new GreetingCriteria().setId(1L).setTone(Tone.SINCERE);
    GreetingCriteria c2 = new GreetingCriteria().setId(2L).setTone(Tone.FRIENDLY);
    CompletionStage<BatchCollectionResponse<Greeting>> result = batchFinders.findBySearchGreetings(Arrays.asList(c1, c2), "hello world", params -> params.withPagingMask(mask -> mask.withStart()).withMask(fieldMask -> fieldMask.withId().withTone()));
    CompletableFuture<BatchCollectionResponse<Greeting>> future = result.toCompletableFuture();
    List<BatchFinderCriteriaResult<Greeting>> batchResult = future.get(5000, TimeUnit.MILLISECONDS).getResults();
    for (BatchFinderCriteriaResult<?> singleCriteria : batchResult) {
        CollectionMetadata paging = singleCriteria.getPaging();
        Assert.assertTrue(paging.hasStart());
        Assert.assertFalse(paging.hasCount());
        Assert.assertFalse(paging.hasTotal());
        Assert.assertFalse(paging.hasLinks());
    }
    // Same request without paging mask (setting field mask to avoid validation error on server)
    result = batchFinders.findBySearchGreetings(Arrays.asList(c1, c2), "hello world", params -> params.withMask(fieldMask -> fieldMask.withId().withTone()));
    future = result.toCompletableFuture();
    batchResult = future.get(5000, TimeUnit.MILLISECONDS).getResults();
    for (BatchFinderCriteriaResult<?> singleCriteria : batchResult) {
        CollectionMetadata paging = singleCriteria.getPaging();
        Assert.assertTrue(paging.hasStart());
        Assert.assertTrue(paging.hasCount());
        Assert.assertTrue(paging.hasTotal());
        Assert.assertTrue(paging.hasLinks());
    }
}
Also used : PagingMetadataProjections(com.linkedin.restli.examples.greetings.client.PagingMetadataProjections) Arrays(java.util.Arrays) RestLiValidationFilter(com.linkedin.restli.server.validation.RestLiValidationFilter) CollectionResponse(com.linkedin.restli.common.CollectionResponse) AutoValidationWithProjectionFluentClient(com.linkedin.restli.examples.greetings.client.AutoValidationWithProjectionFluentClient) Test(org.testng.annotations.Test) PatchGenerator(com.linkedin.restli.client.util.PatchGenerator) EntityResponse(com.linkedin.restli.common.EntityResponse) Map(java.util.Map) CreateIdEntityStatus(com.linkedin.restli.common.CreateIdEntityStatus) CreateIdStatus(com.linkedin.restli.common.CreateIdStatus) BatchfindersFluentClient(com.linkedin.restli.examples.greetings.client.BatchfindersFluentClient) ManualProjections(com.linkedin.restli.examples.greetings.client.ManualProjections) Greetings(com.linkedin.restli.examples.greetings.client.Greetings) BeforeClass(org.testng.annotations.BeforeClass) Set(java.util.Set) ParSeqRestliClientConfigBuilder(com.linkedin.restli.client.ParSeqRestliClientConfigBuilder) CollectionMetadata(com.linkedin.restli.common.CollectionMetadata) List(java.util.List) CompletionStage(java.util.concurrent.CompletionStage) ParSeqRestliClientBuilder(com.linkedin.restli.client.ParSeqRestliClientBuilder) CreateGreeting(com.linkedin.restli.examples.greetings.client.CreateGreeting) AutoValidationWithProjection(com.linkedin.restli.examples.greetings.client.AutoValidationWithProjection) GreetingsFluentClient(com.linkedin.restli.examples.greetings.client.GreetingsFluentClient) HashMap(java.util.HashMap) CompletableFuture(java.util.concurrent.CompletableFuture) com.linkedin.restli.examples.greetings.api.myRecord(com.linkedin.restli.examples.greetings.api.myRecord) PatchRequest(com.linkedin.restli.common.PatchRequest) Assert(org.testng.Assert) UpdateEntityStatus(com.linkedin.restli.common.UpdateEntityStatus) ManualProjectionsFluentClient(com.linkedin.restli.examples.greetings.client.ManualProjectionsFluentClient) RestLiResponseException(com.linkedin.restli.client.RestLiResponseException) Greeting(com.linkedin.restli.examples.greetings.api.Greeting) ParSeqUnitTestHelper(com.linkedin.parseq.ParSeqUnitTestHelper) Tone(com.linkedin.restli.examples.greetings.api.Tone) PartialUpdateGreetingFluentClient(com.linkedin.restli.examples.greetings.client.PartialUpdateGreetingFluentClient) IdEntityResponse(com.linkedin.restli.common.IdEntityResponse) AfterClass(org.testng.annotations.AfterClass) ValidationDemo(com.linkedin.restli.examples.greetings.api.ValidationDemo) BatchFinderCriteriaResult(com.linkedin.restli.common.BatchFinderCriteriaResult) PartialUpdateGreeting(com.linkedin.restli.examples.greetings.client.PartialUpdateGreeting) GreetingCriteria(com.linkedin.restli.examples.greetings.api.GreetingCriteria) ExecutionException(java.util.concurrent.ExecutionException) TimeUnit(java.util.concurrent.TimeUnit) CreateGreetingFluentClient(com.linkedin.restli.examples.greetings.client.CreateGreetingFluentClient) PagingMetadataProjectionsFluentClient(com.linkedin.restli.examples.greetings.client.PagingMetadataProjectionsFluentClient) ParSeqRestliClient(com.linkedin.restli.client.ParSeqRestliClient) BatchCollectionResponse(com.linkedin.restli.common.BatchCollectionResponse) com.linkedin.restli.examples.greetings.api.myItem(com.linkedin.restli.examples.greetings.api.myItem) Batchfinders(com.linkedin.restli.examples.greetings.client.Batchfinders) Sets(org.testng.collections.Sets) Batchfinders(com.linkedin.restli.examples.greetings.client.Batchfinders) BatchFinderCriteriaResult(com.linkedin.restli.common.BatchFinderCriteriaResult) BatchCollectionResponse(com.linkedin.restli.common.BatchCollectionResponse) CollectionMetadata(com.linkedin.restli.common.CollectionMetadata) BatchfindersFluentClient(com.linkedin.restli.examples.greetings.client.BatchfindersFluentClient) GreetingCriteria(com.linkedin.restli.examples.greetings.api.GreetingCriteria) Test(org.testng.annotations.Test)

Example 10 with BatchCollectionResponse

use of com.linkedin.restli.common.BatchCollectionResponse in project rest.li by linkedin.

the class TestRestLiValidation method testBatchFinderAutoWithErrorCriteriaResult.

@Test(dataProvider = "autoBuilders")
public void testBatchFinderAutoWithErrorCriteriaResult(Object builder) throws RemoteInvocationException {
    ValidationDemoCriteria c1 = new ValidationDemoCriteria().setIntA(5555).setStringB("hello");
    ValidationDemoCriteria c2 = new ValidationDemoCriteria().setIntA(4444).setStringB("world");
    Request<BatchCollectionResponse<ValidationDemo>> request = new RootBuilderWrapper<Integer, ValidationDemo>(builder).batchFindBy("searchValidationDemos").setQueryParam("criteria", Arrays.asList(c1, c2)).build();
    _restClientAuto.sendRequest(request).getResponse();
    Response<BatchCollectionResponse<ValidationDemo>> response = _restClientAuto.sendRequest(request).getResponse();
    Assert.assertEquals(response.getStatus(), HttpStatus.S_200_OK.getCode());
}
Also used : BatchCollectionResponse(com.linkedin.restli.common.BatchCollectionResponse) ValidationDemoCriteria(com.linkedin.restli.examples.greetings.api.ValidationDemoCriteria) ValidationDemo(com.linkedin.restli.examples.greetings.api.ValidationDemo) Test(org.testng.annotations.Test)

Aggregations

BatchCollectionResponse (com.linkedin.restli.common.BatchCollectionResponse)18 Test (org.testng.annotations.Test)16 BatchFinderCriteriaResult (com.linkedin.restli.common.BatchFinderCriteriaResult)11 Greeting (com.linkedin.restli.examples.greetings.api.Greeting)10 GreetingCriteria (com.linkedin.restli.examples.greetings.api.GreetingCriteria)10 ValidationDemo (com.linkedin.restli.examples.greetings.api.ValidationDemo)7 ErrorResponse (com.linkedin.restli.common.ErrorResponse)6 RestLiResponseException (com.linkedin.restli.client.RestLiResponseException)5 ValidationDemoCriteria (com.linkedin.restli.examples.greetings.api.ValidationDemoCriteria)5 CollectionMetadata (com.linkedin.restli.common.CollectionMetadata)3 Batchfinders (com.linkedin.restli.examples.greetings.client.Batchfinders)3 BatchfindersFluentClient (com.linkedin.restli.examples.greetings.client.BatchfindersFluentClient)3 CreateGreeting (com.linkedin.restli.examples.greetings.client.CreateGreeting)3 PartialUpdateGreeting (com.linkedin.restli.examples.greetings.client.PartialUpdateGreeting)3 ParSeqUnitTestHelper (com.linkedin.parseq.ParSeqUnitTestHelper)2 ParSeqRestliClient (com.linkedin.restli.client.ParSeqRestliClient)2 ParSeqRestliClientBuilder (com.linkedin.restli.client.ParSeqRestliClientBuilder)2 ParSeqRestliClientConfigBuilder (com.linkedin.restli.client.ParSeqRestliClientConfigBuilder)2 PatchGenerator (com.linkedin.restli.client.util.PatchGenerator)2 CollectionResponse (com.linkedin.restli.common.CollectionResponse)2