use of com.linkedin.restli.common.ErrorResponse in project rest.li by linkedin.
the class TestBatchGetResponseBuilder method dataProvider.
@DataProvider(name = TestConstants.RESTLI_PROTOCOL_1_2_PREFIX + "testData")
public Object[][] dataProvider() {
Map<CompoundKey, Foo> results = new HashMap<>();
CompoundKey c1 = new CompoundKey().append("a", "a1").append("b", 1);
CompoundKey c2 = new CompoundKey().append("a", "a2").append("b", 2);
CompoundKey c3 = new CompoundKey().append("a", "a3").append("b", 3);
Foo record1 = new Foo().setStringField("record1").setFruitsField(Fruits.APPLE);
Foo projectedRecord1 = new Foo().setStringField("record1");
Foo record2 = new Foo().setStringField("record2").setIntField(7);
Foo projectedRecord2 = new Foo().setStringField("record2");
results.put(c1, record1);
results.put(c2, record2);
DataMap projectionDataMap = new DataMap();
projectionDataMap.put("stringField", MaskOperation.POSITIVE_MASK_OP.getRepresentation());
MaskTree maskTree = new MaskTree(projectionDataMap);
Map<String, Foo> protocol1TransformedResults = new HashMap<>();
protocol1TransformedResults.put("a=a1&b=1", record1);
protocol1TransformedResults.put("a=a2&b=2", record2);
Map<String, Foo> protocol1TransformedResultsWithProjection = new HashMap<>();
protocol1TransformedResultsWithProjection.put("a=a1&b=1", projectedRecord1);
protocol1TransformedResultsWithProjection.put("a=a2&b=2", projectedRecord2);
Map<String, Foo> protocol2TransformedResults = new HashMap<>();
protocol2TransformedResults.put("(a:a1,b:1)", record1);
protocol2TransformedResults.put("(a:a2,b:2)", record2);
Map<String, Foo> protocol2TransformedResultsWithProjection = new HashMap<>();
protocol2TransformedResultsWithProjection.put("(a:a1,b:1)", projectedRecord1);
protocol2TransformedResultsWithProjection.put("(a:a2,b:2)", projectedRecord2);
Map<String, ErrorResponse> protocol1Errors = Collections.singletonMap("a=a3&b=3", new ErrorResponse().setStatus(404));
Map<String, ErrorResponse> protocol2Errors = Collections.singletonMap("(a:a3,b:3)", new ErrorResponse().setStatus(404));
Map<CompoundKey, HttpStatus> statuses = new HashMap<>();
statuses.put(c1, HttpStatus.S_200_OK);
statuses.put(c2, HttpStatus.S_200_OK);
Map<CompoundKey, RestLiServiceException> exceptions = new HashMap<>();
exceptions.put(c3, new RestLiServiceException(HttpStatus.S_404_NOT_FOUND));
BatchResult<CompoundKey, Foo> batchResult = new BatchResult<>(results, statuses, exceptions);
Map<Object, RestLiServiceException> exceptionsWithUntypedKey = new HashMap<>(exceptions);
ProtocolVersion protocolVersion1 = AllProtocolVersions.RESTLI_PROTOCOL_1_0_0.getProtocolVersion();
ProtocolVersion protocolVersion2 = AllProtocolVersions.RESTLI_PROTOCOL_2_0_0.getProtocolVersion();
ProjectionMode auto = ProjectionMode.AUTOMATIC;
ProjectionMode manual = ProjectionMode.MANUAL;
return new Object[][] { // automatic projection mode with null mask tree
{ results, protocolVersion1, protocol1TransformedResults, protocol1Errors, exceptionsWithUntypedKey, null, auto }, { results, protocolVersion2, protocol2TransformedResults, protocol2Errors, exceptionsWithUntypedKey, null, auto }, { batchResult, protocolVersion1, protocol1TransformedResults, protocol1Errors, exceptionsWithUntypedKey, null, auto }, { batchResult, protocolVersion2, protocol2TransformedResults, protocol2Errors, exceptionsWithUntypedKey, null, auto }, // manual projection mode with null mask tree
{ results, protocolVersion1, protocol1TransformedResults, protocol1Errors, exceptionsWithUntypedKey, null, manual }, { results, protocolVersion2, protocol2TransformedResults, protocol2Errors, exceptionsWithUntypedKey, null, manual }, { batchResult, protocolVersion1, protocol1TransformedResults, protocol1Errors, exceptionsWithUntypedKey, null, manual }, { batchResult, protocolVersion2, protocol2TransformedResults, protocol2Errors, exceptionsWithUntypedKey, null, manual }, // manual projection mode with non-null mask tree
{ results, protocolVersion1, protocol1TransformedResults, protocol1Errors, exceptionsWithUntypedKey, maskTree, manual }, { results, protocolVersion2, protocol2TransformedResults, protocol2Errors, exceptionsWithUntypedKey, maskTree, manual }, { batchResult, protocolVersion1, protocol1TransformedResults, protocol1Errors, exceptionsWithUntypedKey, maskTree, manual }, { batchResult, protocolVersion2, protocol2TransformedResults, protocol2Errors, exceptionsWithUntypedKey, maskTree, manual }, // automatic projection mode with non-null mask tree
{ results, protocolVersion1, protocol1TransformedResultsWithProjection, protocol1Errors, exceptionsWithUntypedKey, maskTree, auto }, { results, protocolVersion2, protocol2TransformedResultsWithProjection, protocol2Errors, exceptionsWithUntypedKey, maskTree, auto }, { batchResult, protocolVersion1, protocol1TransformedResultsWithProjection, protocol1Errors, exceptionsWithUntypedKey, maskTree, auto }, { batchResult, protocolVersion2, protocol2TransformedResultsWithProjection, protocol2Errors, exceptionsWithUntypedKey, maskTree, auto } };
}
use of com.linkedin.restli.common.ErrorResponse in project rest.li by linkedin.
the class TestMockBatchKVResponseFactory method compoundKeyData.
@DataProvider(name = "compoundKey")
public Object[][] compoundKeyData() {
CompoundKey c1 = buildCompoundKey("c1", 1);
CompoundKey c2 = buildCompoundKey("c2", 2);
CompoundKey c3 = buildCompoundKey("c3", 3);
Map<CompoundKey, Greeting> recordTemplates = new HashMap<>();
recordTemplates.put(c1, buildGreeting(1L));
recordTemplates.put(c2, buildGreeting(2L));
Map<CompoundKey, ErrorResponse> errorResponses = new HashMap<>();
errorResponses.put(c3, new ErrorResponse().setMessage("3"));
Map<CompoundKey, HttpStatus> statuses = new HashMap<>();
statuses.put(c1, HttpStatus.S_200_OK);
statuses.put(c2, HttpStatus.S_200_OK);
statuses.put(c3, HttpStatus.S_500_INTERNAL_SERVER_ERROR);
Map<String, CompoundKey.TypeInfo> keyParts = new HashMap<>();
keyParts.put("part1", new CompoundKey.TypeInfo(String.class, String.class));
keyParts.put("part2", new CompoundKey.TypeInfo(Integer.class, Integer.class));
Map<CompoundKey, EntityResponse<Greeting>> expectedResults = new HashMap<>();
expectedResults.put(c1, buildEntityResponse(recordTemplates.get(c1), HttpStatus.S_200_OK, null));
expectedResults.put(c2, buildEntityResponse(recordTemplates.get(c2), HttpStatus.S_200_OK, null));
expectedResults.put(c3, buildEntityResponse(null, HttpStatus.S_500_INTERNAL_SERVER_ERROR, errorResponses.get(c3)));
return new Object[][] { { keyParts, recordTemplates, statuses, errorResponses, expectedResults } };
}
use of com.linkedin.restli.common.ErrorResponse in project rest.li by linkedin.
the class TestMockBatchKVResponseFactory method customPrimitiveTyperefKeyData.
@DataProvider(name = "customPrimitiveTyperefKey")
public Object[][] customPrimitiveTyperefKeyData() {
MyCustomString m1 = new MyCustomString("1");
MyCustomString m2 = new MyCustomString("2");
MyCustomString m3 = new MyCustomString("3");
Map<MyCustomString, Greeting> recordTemplates = new HashMap<>();
Map<MyCustomString, ErrorResponse> errorResponses = new HashMap<>();
recordTemplates.put(m1, buildGreeting(1L));
recordTemplates.put(m2, buildGreeting(2L));
errorResponses.put(m3, new ErrorResponse().setMessage("3"));
Map<MyCustomString, HttpStatus> statuses = new HashMap<>();
statuses.put(m1, HttpStatus.S_200_OK);
statuses.put(m2, HttpStatus.S_200_OK);
statuses.put(m3, HttpStatus.S_500_INTERNAL_SERVER_ERROR);
Map<MyCustomString, EntityResponse<Greeting>> expectedResults = new HashMap<>();
expectedResults.put(m1, buildEntityResponse(recordTemplates.get(m1), HttpStatus.S_200_OK, null));
expectedResults.put(m2, buildEntityResponse(recordTemplates.get(m2), HttpStatus.S_200_OK, null));
expectedResults.put(m3, buildEntityResponse(null, HttpStatus.S_500_INTERNAL_SERVER_ERROR, errorResponses.get(m3)));
return new Object[][] { { recordTemplates, statuses, errorResponses, expectedResults } };
}
use of com.linkedin.restli.common.ErrorResponse in project rest.li by linkedin.
the class ParSeqRestClientTest method mockClient.
/**
* @return a mock ParSeqRestClient that gives an error
*/
@SuppressWarnings("deprecation")
private ParSeqRestClient mockClient(final String errKey, final String errValue, final String errMsg, final int httpCode, final int appCode, String code, String docUrl, String requestId, final ProtocolVersion protocolVersion, final String errorResponseHeaderName) {
final ErrorResponse er = new ErrorResponse();
final DataMap errMap = new DataMap();
errMap.put(errKey, errValue);
er.setErrorDetails(new ErrorDetails(errMap));
er.setErrorDetailType(EmptyRecord.class.getCanonicalName());
er.setStatus(httpCode);
er.setMessage(errMsg);
er.setServiceErrorCode(appCode);
er.setCode(code);
er.setDocUrl(docUrl);
er.setRequestId(requestId);
final byte[] mapBytes;
try {
mapBytes = new JacksonDataCodec().mapToBytes(er.data());
} catch (final IOException e) {
throw new RuntimeException(e);
}
final Map<String, String> headers = new HashMap<>();
headers.put(RestConstants.HEADER_RESTLI_PROTOCOL_VERSION, protocolVersion.toString());
headers.put(errorResponseHeaderName, RestConstants.HEADER_VALUE_ERROR);
RestClient restClient = new RestClient(new MockClient(httpCode, headers, mapBytes), "http://localhost");
return new ParSeqRestliClientBuilder().setClient(restClient).setConfig(new ParSeqRestliClientConfigBuilder().build()).build();
}
use of com.linkedin.restli.common.ErrorResponse in project rest.li by linkedin.
the class MockFailedResponseFutureBuilder method buildWithEntity.
private ResponseFuture<V> buildWithEntity() {
int status = getStatus();
byte[] entity = mapToBytes(getEntity().data());
Response<V> decodedResponse = new MockResponseBuilder<K, V>().setEntity(getEntity()).setStatus(status).setHeaders(getHeaders()).setCookies(getCookies()).setProtocolVersion(getProtocolVersion()).build();
RestResponse restResponse = new RestResponseBuilder().setEntity(entity).setStatus(status).setHeaders(decodedResponse.getHeaders()).setCookies(CookieUtil.encodeCookies(decodedResponse.getCookies())).build();
RestLiResponseException restLiResponseException = new RestLiResponseException(restResponse, decodedResponse, new ErrorResponse());
ExecutionException executionException = new ExecutionException(restLiResponseException);
Future<Response<V>> responseFuture = buildFuture(null, executionException);
return new ResponseFutureImpl<>(responseFuture, _errorHandlingBehavior);
}
Aggregations