protected MApiOperationBuilder toApiOperation(MetaApi mapi, MetaOperation mop) { MApiOperationBuilder op = new MApiOperationBuilder(); MetaUtils.copyNamed(mop, op); op.trySetSummary(op.getTitle()); op.setName(mop.getName()); op.setMethod(mop.getMethod()); op.setAllowAnonymous(mop.isAnonymous()); op.setDeprecated(mop.isDeprecated()); if(null != mop.getConsumes()) { mop.getConsumes().forEach(op::addConsume); } if(null != mop.getProduces()) { mop.getProduces().forEach(op::addProduce); } mop.getParameters().forEach(mp -> { op.addParameter(toApiParameter(mapi, op.getMethod(), mp)); }); mop.getResponses().forEach(mr -> { op.addResponse(toApiResponse(mr)); }); toApiSecurity(mapi, mop, op); if(null != mop.getTags()) { mop.getTags().forEach(op::addTag); } if(op.getTags().isEmpty()) { op.addTag("Default"); } return op; }
protected void createApiParameters(ApiMetadataContext context, ApiMetadataBuilder m, Route route, MApiOperationBuilder op) { Action action = route.getAction(); log.trace(" Parameters({})", action.getArguments().length); for(Argument a : action.getArguments()) { MApiParameterBuilder p = a.getExtension(MApiParameterBuilder.class); if(null != p) { op.addParameter(p); continue; } if(a.isWrapper()) { createApiWrapperParameter(context, m, route, op, a); if(!a.isRequestBody()) { continue; } } if(!a.isContextual()) { createApiParameter(context, m, route, op, a); } } }
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; }
p.setType(MSimpleTypes.STRING); p.setRequired(true); mo.addParameter(p);