use of com.linkedin.restli.server.annotations.BatchFinder in project rest.li by linkedin.
the class BatchFinderResource method searchGreetings.
@BatchFinder(value = "searchGreetings", batchParam = "criteria")
public BatchFinderResult<GreetingCriteria, Greeting, Empty> searchGreetings(@PagingContextParam PagingContext context, @QueryParam("criteria") GreetingCriteria[] criteria, @QueryParam("message") String message) {
BatchFinderResult<GreetingCriteria, Greeting, Empty> batchFinderResult = new BatchFinderResult<>();
for (GreetingCriteria currentCriteria : criteria) {
if (currentCriteria.getId() == 1L) {
// on success
CollectionResult<Greeting, Empty> c1 = new CollectionResult<>(Arrays.asList(g1), 1);
batchFinderResult.putResult(currentCriteria, c1);
} else if (currentCriteria.getId() == 2L) {
CollectionResult<Greeting, Empty> c2 = new CollectionResult<>(Arrays.asList(g2), 1);
batchFinderResult.putResult(currentCriteria, c2);
} else if (currentCriteria.getId() == 100L) {
// on error: to construct error response for test
batchFinderResult.putError(currentCriteria, new RestLiServiceException(HttpStatus.S_404_NOT_FOUND, "Fail to find Greeting!"));
}
}
return batchFinderResult;
}
use of com.linkedin.restli.server.annotations.BatchFinder in project rest.li by linkedin.
the class AssociationsResource method searchMessages.
@BatchFinder(value = "searchMessages", batchParam = "criteria")
public BatchFinderResult<MessageCriteria, Message, Empty> searchMessages(@AssocKeyParam("src") String src, @PagingContextParam PagingContext context, @QueryParam("criteria") MessageCriteria[] criteria) {
BatchFinderResult<MessageCriteria, Message, Empty> batchFinderResult = new BatchFinderResult<>();
for (MessageCriteria currentCriteria : criteria) {
if (currentCriteria.getTone() == Tone.FRIENDLY) {
// on success
CollectionResult<Message, Empty> cr = new CollectionResult<>(Arrays.asList(m1, m2), 2);
batchFinderResult.putResult(currentCriteria, cr);
} else {
// on error: to construct error response for test
batchFinderResult.putError(currentCriteria, new RestLiServiceException(HttpStatus.S_404_NOT_FOUND, "Failed to find message!"));
}
}
return batchFinderResult;
}
use of com.linkedin.restli.server.annotations.BatchFinder in project rest.li by linkedin.
the class BatchGreetingResource method searchGreetings.
@BatchFinder(value = "searchGreetings", batchParam = "criteria")
@MaxBatchSize(value = 2, validate = true)
public BatchFinderResult<GreetingCriteria, Greeting, Empty> searchGreetings(@QueryParam("criteria") GreetingCriteria[] criteria) {
BatchFinderResult<GreetingCriteria, Greeting, Empty> batchFinderResult = new BatchFinderResult<>();
for (GreetingCriteria currentCriteria : criteria) {
if (currentCriteria.getId() == 1l) {
CollectionResult<Greeting, Empty> c1 = new CollectionResult<>(Arrays.asList(GREETING_ONE), 1);
batchFinderResult.putResult(currentCriteria, c1);
} else if (currentCriteria.getId() == 2l) {
CollectionResult<Greeting, Empty> c2 = new CollectionResult<>(Arrays.asList(GREETING_TWO), 1);
batchFinderResult.putResult(currentCriteria, c2);
}
}
return batchFinderResult;
}
use of com.linkedin.restli.server.annotations.BatchFinder in project rest.li by linkedin.
the class ResourceModelEncoder method createBatchFinderSchema.
private BatchFinderSchema createBatchFinderSchema(ResourceMethodDescriptor resourceMethodDescriptor) {
BatchFinderSchema batchFinder = new BatchFinderSchema();
batchFinder.setName(resourceMethodDescriptor.getBatchFinderName());
String doc = _docsProvider.getMethodDoc(resourceMethodDescriptor.getMethod());
if (doc != null) {
batchFinder.setDoc(doc);
}
ParameterSchemaArray parameters = createParameters(resourceMethodDescriptor);
if (parameters.size() > 0) {
batchFinder.setParameters(parameters);
}
StringArray assocKeys = createAssocKeyParameters(resourceMethodDescriptor);
if (assocKeys.size() > 0) {
batchFinder.setAssocKeys(assocKeys);
}
if (resourceMethodDescriptor.getCollectionCustomMetadataType() != null) {
batchFinder.setMetadata(createMetadataSchema(resourceMethodDescriptor));
}
final DataMap customAnnotation = resourceMethodDescriptor.getCustomAnnotationData();
String deprecatedDoc = _docsProvider.getMethodDeprecatedTag(resourceMethodDescriptor.getMethod());
if (deprecatedDoc != null) {
customAnnotation.put(DEPRECATED_ANNOTATION_NAME, deprecateDocToAnnotationMap(deprecatedDoc));
}
if (!customAnnotation.isEmpty()) {
batchFinder.setAnnotations(new CustomAnnotationContentSchemaMap(customAnnotation));
}
if (resourceMethodDescriptor.isPagingSupported()) {
batchFinder.setPagingSupported(true);
}
MaxBatchSizeSchema maxBatchSize = resourceMethodDescriptor.getMaxBatchSize();
if (maxBatchSize != null) {
batchFinder.setMaxBatchSize(maxBatchSize);
}
appendServiceErrors(batchFinder, resourceMethodDescriptor.getServiceErrors());
appendSuccessStatuses(batchFinder, resourceMethodDescriptor.getSuccessStatuses());
BatchFinder batchFinderAnnotation = resourceMethodDescriptor.getMethod().getAnnotation(BatchFinder.class);
batchFinder.setBatchParam(batchFinderAnnotation.batchParam());
return batchFinder;
}
Aggregations