protected void setApiExtension(RouteBuilder route, String name, Object value) { MApiExtension extension = route.getExtension(MApiExtension.class); if (null == extension) { extension = new MApiExtension(); route.setExtension(extension); } extension.setAttribute(name, value); }
private void writeExtension(JsonWriter w, MApiExtension extension) { if(null != extension) { extension.getAttributes().forEach((name, value) -> { if(null != value) { w.property("x-" + name, value); } }); } }
public MApiExtension getOrCreateExtention() { if(null == extension) { extension = new MApiExtension(); } return extension; }
protected MApiParameterBuilder toApiParameter(MetaApi mapi, HTTP.Method method, MetaParameter mp) { MApiParameterBuilder p = new MApiParameterBuilder(); MetaUtils.copyNamed(mp, p); p.setRequired(mp.getRequired()); p.setLocation(mp.getLocation()); p.setFile(mp.isFile()); p.setType(mp.getResolvedType()); if (HTTP.Method.PATCH.equals(method)) { if(p.getType().isComplexTypeOrRef()) { Validators.setPartial(true); p.getOrCreateExtention().setAttribute("partial", true); } } ArgumentValidator validator = Validators.of(mapi, mp); if(null != validator) { p.addValidator(validator); } Validators.removePartial(); return p; }
@Override public void postProcess(ApiMetadataContext context, ApiMetadataBuilder m) { m.getPaths().values().forEach(p -> { for(MApiOperationBuilder op : p.getOperations()) { Route route = op.getRoute(); if(null != route) { MetaEntity entity = route.getExtension(MetaEntity.class); MApiExtension extension = route.getExtension(MApiExtension.class); if(null != entity && null != extension) { String crud = (String)extension.getAttribute("crud"); if(!Strings.isEmpty(crud)) { doc(route, op, entity, crud); } } } } }); }
MApiExtension extension = new MApiExtension(); m.setExtension(extension); extension.setAttribute("id", e.getIdentity().values().stream().map(f -> f.getName()).toArray(size -> new String[size])); if(e.isRemote()) { extension.setAttribute("remote", true); extension.setAttribute("attrs", e.getXattrs()); MApiExtension ex = new MApiExtension(); p.setExtension(ex); ex.setAttribute("input", f.getInput()); ex.setAttribute("meaning", f.getMeaning()); ex.setAttribute("required", true); ex.setAttribute("has-default", true); ex.setAttribute("options", os); ex.setAttribute("attrs", f.getXattrs()); MApiExtension ex = new MApiExtension(); p.setExtension(ex); ex.setAttribute("relation", true); ex.setAttribute("relation-required", null != r.getOptional() ? !r.getOptional() : false); ex.setAttribute("relation-type", r.getType().getValue());