protected MApiParameterBuilder createApiParameter(ApiMetadataContext context, ApiMetadataBuilder m, Route route, MApiOperationBuilder op, Argument a) {
MApiParameterBuilder p = new MApiParameterBuilder();
p.setName(a.getName());
p.setArgument(a);
log.trace("{}", a.getName(), p.getLocation());
if(isParameterFileType(a.getType())) {
p.setType(MSimpleTypes.BINARY);
p.setFile(true);
op.addConsume(MimeTypes.MULTIPART_FORM_DATA);
}else{
p.setType(createMType(context, m, route.getAction().getControllerClass(), a.getType(), a.getGenericType()));
}
p.setLocation(getParameterLocation(context, route.getAction(), a, op, p));
if (null != a.getRequired()) {
p.setRequired(a.getRequired());
} else if (p.getLocation() == MApiParameter.Location.PATH) {
p.setRequired(true);
}
if(a.getType().isEnum()){
p.setEnumValues(Enums.getValues(a.getType()));
}
op.addParameter(p);
return p;
}