use of com.linkedin.restli.restspec.ActionSchema in project rest.li by linkedin.
the class ResourceSchemaToResourceSpecTranslator method toDynamicRecordMetadata.
private ActionCollectionMetadata toDynamicRecordMetadata(ActionSchemaArray actions, ActionSchemaArray entityActions) {
Map<String, DynamicRecordMetadata> response = new HashMap<String, DynamicRecordMetadata>();
Map<String, DynamicRecordMetadata> request = new HashMap<String, DynamicRecordMetadata>();
ActionSchemaArray[] actionGroups = new ActionSchemaArray[] { actions, entityActions };
for (ActionSchemaArray actionGroup : actionGroups) {
if (actionGroup != null) {
for (ActionSchema action : actionGroup) {
ActionMetadata metadata = toActionMetadata(action);
request.put(metadata._name, metadata._request);
response.put(metadata._name, metadata._response);
}
}
}
return new ActionCollectionMetadata(request, response);
}
use of com.linkedin.restli.restspec.ActionSchema in project rest.li by linkedin.
the class TestResourceSchemaToResourceSpecTranslator method compareActions.
private void compareActions(ResourceSpec actual, ResourceSpec expected, ActionSchemaArray actions) {
for (ActionSchema action : actions) {
ParameterSchemaArray parameters = action.getParameters();
DynamicRecordMetadata actualRequest = actual.getRequestMetadata(action.getName());
DynamicRecordMetadata expectedRequest = expected.getRequestMetadata(action.getName());
if (expectedRequest != null) {
Assert.assertNotNull(actualRequest);
Assert.assertEquals(actualRequest.getRecordDataSchema(), expectedRequest.getRecordDataSchema());
if (parameters != null) {
for (ParameterSchema parameter : parameters) {
compareFieldDef(actualRequest.getFieldDef(parameter.getName()), expectedRequest.getFieldDef(parameter.getName()));
}
}
} else {
Assert.assertNull(actualRequest);
}
compareParameters(actual.getActionResponseMetadata(action.getName()), expected.getActionResponseMetadata(action.getName()));
}
}
use of com.linkedin.restli.restspec.ActionSchema in project rest.li by linkedin.
the class ResourceModelEncoder method createActions.
private ActionSchemaArray createActions(final ResourceModel resourceModel, final ResourceLevel resourceLevel) {
ActionSchemaArray actionsArray = new ActionSchemaArray();
List<ResourceMethodDescriptor> resourceMethodDescriptors = resourceModel.getResourceMethodDescriptors();
Collections.sort(resourceMethodDescriptors, new Comparator<ResourceMethodDescriptor>() {
@Override
public int compare(final ResourceMethodDescriptor o1, final ResourceMethodDescriptor o2) {
if (o1.getType().equals(ResourceMethod.ACTION)) {
if (o2.getType().equals(ResourceMethod.ACTION)) {
return o1.getActionName().compareTo(o2.getActionName());
} else {
return 1;
}
} else if (o2.getType().equals(ResourceMethod.ACTION)) {
return -1;
} else {
return 0;
}
}
});
for (ResourceMethodDescriptor resourceMethodDescriptor : resourceMethodDescriptors) {
if (ResourceMethod.ACTION.equals(resourceMethodDescriptor.getType())) {
//do not apply entity-level actions at collection level or vice-versa
if (resourceMethodDescriptor.getActionResourceLevel() != resourceLevel) {
continue;
}
ActionSchema action = new ActionSchema();
action.setName(resourceMethodDescriptor.getActionName());
//We have to construct the method doc for the action which includes the action return type
final String methodDoc = _docsProvider.getMethodDoc(resourceMethodDescriptor.getMethod());
if (methodDoc != null) {
final StringBuilder methodDocBuilder = new StringBuilder(methodDoc.trim());
if (methodDocBuilder.length() > 0) {
final String returnDoc = sanitizeDoc(_docsProvider.getReturnDoc(resourceMethodDescriptor.getMethod()));
if (returnDoc != null && !returnDoc.isEmpty()) {
methodDocBuilder.append("\n");
methodDocBuilder.append("Service Returns: ");
//Capitalize the first character
methodDocBuilder.append(returnDoc.substring(0, 1).toUpperCase());
methodDocBuilder.append(returnDoc.substring(1));
}
}
action.setDoc(methodDocBuilder.toString());
}
ParameterSchemaArray parameters = createParameters(resourceMethodDescriptor);
if (parameters.size() > 0) {
action.setParameters(parameters);
}
Class<?> returnType = resourceMethodDescriptor.getActionReturnType();
if (returnType != Void.TYPE) {
String returnTypeString = buildDataSchemaType(returnType, resourceMethodDescriptor.getActionReturnRecordDataSchema().getField(ActionResponse.VALUE_NAME).getType());
action.setReturns(returnTypeString);
}
final DataMap customAnnotation = resourceMethodDescriptor.getCustomAnnotationData();
String deprecatedDoc = _docsProvider.getMethodDeprecatedTag(resourceMethodDescriptor.getMethod());
if (deprecatedDoc != null) {
customAnnotation.put(DEPRECATED_ANNOTATION_NAME, deprecateDocToAnnotationMap(deprecatedDoc));
}
if (!customAnnotation.isEmpty()) {
action.setAnnotations(new CustomAnnotationContentSchemaMap(customAnnotation));
}
actionsArray.add(action);
}
}
return actionsArray;
}
use of com.linkedin.restli.restspec.ActionSchema in project rest.li by linkedin.
the class SnapshotGenerator method findModelsAssocation.
private void findModelsAssocation(ResourceSchema resourceSchema, Map<String, NamedDataSchema> foundTypes, List<NamedDataSchema> typeOrder) {
AssociationSchema association = resourceSchema.getAssociation();
if (association != null) {
for (AssocKeySchema assocKeySchema : association.getAssocKeys()) {
String type = assocKeySchema.getType();
recordType(type, foundTypes, typeOrder);
}
if (association.hasFinders()) {
for (FinderSchema restMethodSchema : association.getFinders()) {
findModelsFinder(restMethodSchema, foundTypes, typeOrder);
}
}
if (association.hasMethods()) {
for (RestMethodSchema restMethodSchema : association.getMethods()) {
findModelsMethod(restMethodSchema, foundTypes, typeOrder);
}
}
if (association.hasActions()) {
for (ActionSchema actionSchema : association.getActions()) {
findModelsAction(actionSchema, foundTypes, typeOrder);
}
}
if (association.hasEntity()) {
EntitySchema entitySchema = association.getEntity();
findModelsEntity(entitySchema, foundTypes, typeOrder);
}
}
}
use of com.linkedin.restli.restspec.ActionSchema in project rest.li by linkedin.
the class SnapshotGenerator method findModelsSimple.
private void findModelsSimple(ResourceSchema resourceSchema, Map<String, NamedDataSchema> foundTypes, List<NamedDataSchema> typeOrder) {
SimpleSchema simple = resourceSchema.getSimple();
if (simple != null) {
if (simple.hasMethods()) {
for (RestMethodSchema restMethodSchema : simple.getMethods()) {
findModelsMethod(restMethodSchema, foundTypes, typeOrder);
}
}
if (simple.hasActions()) {
for (ActionSchema actionSchema : simple.getActions()) {
findModelsAction(actionSchema, foundTypes, typeOrder);
}
}
if (simple.hasEntity()) {
EntitySchema entity = simple.getEntity();
findModelsEntity(entity, foundTypes, typeOrder);
}
}
}
Aggregations