@Override protected PropertyValidation[] resolvePropertyValidations(MetaApi api, MetaEntity model, String name) { List<PropertyValidation> list = new ArrayList<>(); for(MetaField field : model.getFields().values()) { MApiPropertyBuilder ap = field.getApiProperty(); if(null == ap || ap.isReadOnly()) { continue; } String qname = qname(name, field.getName()); Validator validator = Validators.of(api, qname, ap.isRequired(), ap.getType(), field); if(null != validator) { list.add(new PropertyValidation(ap.getName(), validator)); } } return list.toArray(new PropertyValidation[0]); }
public MApiPropertyBuilder readProperty(String name, Map<String,Object> map, SwaggerExtension ex) { MApiPropertyBuilder mp = new MApiPropertyBuilder(); JsonObject p = JsonObject.of(map); readParameterBase(name, p, mp, ex); mp.setName(name); //yaml read all values to string. mp.setIdentity(p.getBoolean(X_IDENTITY, false)); mp.setUnique(p.getBoolean(X_UNIQUE, false)); mp.setSortable(p.get(X_SORTABLE, Boolean.class)); mp.setFilterable(p.get(X_FILTERABLE, Boolean.class)); mp.setCreatable(p.get(X_CREATABLE, Boolean.class)); mp.setUpdatable(p.get(X_UPDATABLE, Boolean.class)); mp.setExpandable(p.get(X_EXPANDABLE, Boolean.class)); return mp; }
protected void processProperty(ApiMetadataContext context, ClassDoc doc, MApiPropertyBuilder p) { BeanProperty bp = p.getBeanProperty(); if(null != bp) { String desc = doc.properties.get(bp.getName()); if(!Strings.isEmpty(desc)) { p.setDescription(desc); } } }
public List<MApiPropertyBuilder> readProperties(Map<String,Object> properties, List<String> requiredProperties, SwaggerExtension ex) { List<MApiPropertyBuilder> list = new ArrayList<>(); properties.forEach((propName, propMap) -> { MApiPropertyBuilder p = readProperty(propName, (Map<String,Object>)propMap, ex); if(null != requiredProperties && requiredProperties.contains(p.getName())) { p.setRequired(true); } list.add(p); }); return list; }
protected String[] resolveReadOnlyProperties(T model) { Set<String> set = new HashSet<>(); MApiModelBuilder apiModel = model.getApiModel(); if(null != apiModel) { apiModel.getProperties().values().forEach(p -> { if(p.isReadOnly()) { set.add(p.getName()); } }); } return set.toArray(new String[0]); }
MetaField f = e.getField(p.getName()); f.setApiProperty(p); FieldMapping fm = em.tryGetFieldMapping(f.getName()); if (null != fm) { p.setBeanProperty(fm.getBeanProperty()); if((null != p.getCreatable() && !p.getCreatable()) && (null != p.getUpdatable() && !p.getUpdatable())) { p.setReadOnly(true); f.setReadOnly(true); if(p.isReadOnly()) { p.setRequired(false); p.setExtension(ex); Expression expr = exprConverter.convertToExpr(f.getDefaults()); if(expr instanceof ValuedExpression) { p.setDefaultValue(exprConverter.extractValue(expr)); MApiValidationBuilder v = p.getValidation(); if(null == v) { v = new MApiValidationBuilder(); p.setValidation(v); p.setFormat(format.getName()); MetaUtils.tryCopyValidation(format, v); MApiPropertyBuilder p = new MApiPropertyBuilder();
public MApiModelBuilder toApiModel(MetaApi api, MetaModel mm) { MApiModelBuilder m = new MApiModelBuilder(); MetaUtils.copyNamed(mm, m); if(null != mm.getMappingClass()) { m.addJavaType(mm.getMappingClass()); } mm.getProperties().values().forEach(mp -> { MApiPropertyBuilder p = new MApiPropertyBuilder(); MetaUtils.copyNamed(mp, p); mp.setApiProperty(p); p.setType(mp.getResolvedType()); p.setFormat(mp.getFormat()); p.setRequired(mp.getRequired()); p.setReadOnly(mp.getReadOnly()); p.setFile(mp.isFile()); p.setBeanProperty(mp.getMappingProperty()); p.setDefaultValue(mp.getDefaults()); p.setEnumValues(mp.getEnums()); if(p.isReadOnly()) { p.setRequired(false); } MApiValidationBuilder v = new MApiValidationBuilder(); p.setValidation(v); MetaUtils.tryCopyValidation(mp, v); MetaUtils.tryCopyValidation(mp.getResolvedFormat(), v); m.addProperty(p); }); mm.setApiModel(m); return m; }
public void addProperty(MApiPropertyBuilder p) { properties.put(p.getName(), p); }
public static void tryCopyProperty(MApiPropertyBuilder from, MetaProperty to) { MetaUtils.tryCopyParameterBase(from, to); if (Strings.isEmpty(to.getType())) { to.setType(Types.toTypeName(from.getType())); } if (null == to.getMappingProperty()) { to.setMappingProperty(from.getBeanProperty()); } if (null == to.getReadOnly()) { to.setReadOnly(from.getReadOnly()); } }
protected void processProperty(ApiMetadataContext context, MApiPropertyBuilder p) { BeanProperty bp = p.getBeanProperty(); if(null != bp) { Doc doc = bp.getAnnotation(Doc.class); if(null != doc) { resolveDoc(context, p, doc); } } }
@Override public MApiModelBuilder tryAddModel(ApiMetadataContext context, ApiMetadataBuilder md, MComplexType ct) { String name = modelName(context, ct); MApiModelBuilder model = md.tryGetModel(name); if(null != model) { if(null != ct.getJavaType() && !model.getJavaTypes().contains(ct.getJavaType())) { model.addJavaType(ct.getJavaType()); } return null; } model = new MApiModelBuilder(ct, name); model.getProperties().values().forEach(p -> { if(p.getType().isComplexType()) { MComplexType complexType = (MComplexType)p.getType(); if(null == md.tryGetModel(complexType.getName())) { tryAddModel(context, md, ct); } } }); md.addModel(model); return model; }
public MApiModelBuilder(MComplexType type, String name) { this.type = type; this.name = Strings.isEmpty(name) ? type.getName() : name; this.title = type.getTitle(); this.summary = type.getSummary(); this.description = type.getDescription(); this.entity = type.isEntity(); boolean annotatedOnly = false; if(null != type.getJavaType()) { this.javaTypes.add(type.getJavaType()); ApiModel a = type.getJavaType().getAnnotation(ApiModel.class); if(null != a) { this.name = Strings.firstNotEmpty(a.name(), a.value(), this.name); this.description = Strings.firstNotEmpty(a.desc(), this.description); annotatedOnly = a.explicitProperties(); } } for (MProperty mp : type.getProperties()) { if(annotatedOnly) { BeanProperty bp = mp.getBeanProperty(); if(null != bp && !bp.isAnnotationPresent(ApiProperty.class)) { continue; } } addProperty(new MApiPropertyBuilder(mp)); } }
@Override protected ModelValidatorBase.PropertyValidation[] resolvePropertyValidations(MetaApi api, MetaModel model, String name) { List<PropertyValidation> list = new ArrayList<>(); model.getProperties().values().forEach( p -> { MApiPropertyBuilder ap = p.getApiProperty(); if(null == ap || ap.isReadOnly()) { return; } Validator validator = Validators.of(api, p, qname(name, p.getName())); if(null != validator) { list.add(new PropertyValidation(ap.getName(), validator)); } }); return list.toArray(new PropertyValidation[0]); }
protected String[] resolveRequiredProperties(T model) { Set<String> set = new HashSet<>(); MApiModelBuilder apiModel = model.getApiModel(); if(null != apiModel) { apiModel.getProperties().values().forEach(p -> { if (isPropertyRequired(model, p)) { set.add(p.getName()); } }); } return set.toArray(new String[0]); }
public static void tryCopyModel(MApiModelBuilder from, MetaModel to) { tryCopyNamed(from, to); if (null != from.getJavaTypes() && !from.getJavaTypes().isEmpty()) { to.setMappingClass(from.getJavaTypes().iterator().next()); } for (MApiPropertyBuilder ap : from.getProperties().values()) { MetaProperty mp = to.getProperty(ap.getName()); if (null == mp) { to.addProperty(toMetaProperty(ap)); } else { tryCopyProperty(ap, mp); } } }
protected void processModel(ApiMetadataContext context, MApiModelBuilder m) { ModelConfig mc = null; for(Class<?> javaType : m.getJavaTypes()) { mc = context.getConfig().getModelConfig(javaType); if(null != mc) { break; } } if(null == mc) { mc = context.getConfig().getModelConfig(m.getName()); } //configure the model properties. for(MApiPropertyBuilder p : m.getProperties().values()) { ModelConfig.Property c = null == mc ? null : mc.getProperty(p.getName()); trySetDoc(p, c, c); } }