public MApiModelBuilder readModel(String name, Map<String,Object> map, SwaggerExtension ex) { MApiModelBuilder mm = new MApiModelBuilder(); JsonObject model = JsonObject.of(map); List<String> requiredProperties = model.getList(REQUIRED); mm.setName(name); mm.setTitle(model.getString(TITLE)); mm.setSummary(model.getString(SUMMARY)); mm.setDescription(model.getString(DESCRIPTION)); mm.setEntity(model.getBoolean(X_ENTITY, false)); Map<String,Object> properties = model.getMap(PROPERTIES); if(null != properties) { List<MApiPropertyBuilder> list = readProperties(properties, requiredProperties, ex); list.forEach(mm::addProperty); } return mm; }
protected void postProcessModelInheritance(ApiMetadataContext context, ApiMetadataBuilder m, String name, MApiModelBuilder model) { if(null != model.getJavaTypes()) { for(Class<?> javaType : model.getJavaTypes()) { //already processed. if (null != model.getBaseName()) { return; } Class<?> c = javaType.getSuperclass(); if (Object.class.equals(c) || model.getJavaTypes().contains(c)) { return; } MApiModelBuilder parent = m.tryGetModel(c); if (null != parent) { //the parent's inheritance must be processed firstly. postProcessModelInheritance(context, m, name, parent); //process child. model.setBaseName(parent.getName()); //removes the properties inherited from base model. parent.getProperties().keySet().forEach((p) -> { model.removeProperty(p); }); } } } }
protected void processModel(ApiMetadataContext context, Map<Class<?>,ClassDoc> docs, MApiModelBuilder model) { for(Class<?> c : model.getJavaTypes()) { ClassDoc doc = resolveClassDoc(docs, c, true); if(!Strings.isEmpty(doc.description)) { model.setDescription(doc.description); } model.getProperties().forEach((k,p) -> { processProperty(context, doc, p); }); } }
protected void processModel(ApiMetadataContext context, MApiModelBuilder model) { for(Class<?> c : model.getJavaTypes()) { Doc doc = c.getAnnotation(Doc.class); if (null != doc) { resolveDoc(context, model, doc); } } model.getProperties().forEach((k,p) -> { processProperty(context, p); }); }
public MApiModelBuilder toApiModel(MetaApi api, OrmContext oc, MetaEntity e) { MApiModelBuilder m = new MApiModelBuilder(convertToType(e).build()); m.setEntity(true); m.setExtension(extension); extension.setAttribute("id", e.getIdentity().values().stream().map(f -> f.getName()).toArray(size -> new String[size])); if(e.isRemote()) { m.addJavaType(em.getEntityClass()); for(MApiPropertyBuilder p : m.getProperties().values()) { MetaField f = e.getField(p.getName()); f.setApiProperty(p); m.addProperty(p);
@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 static MetaModel toMetaModel(MComplexType ct) { MetaModel m = new MetaModel(); MApiModelBuilder am = new MApiModelBuilder(ct); tryCopyModel(am, m); m.setApiModel(am); m.getProperties().values().forEach(p -> { p.setApiProperty(am.getProperties().get(p.getName())); }); return m; }
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; }
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); } }
writeRefType(context, m, w, ((MComplexType)type).createTypeRef()); }else { MApiModel model = new MApiModelBuilder(ct).build(); writeModelWithinObject(context, m, w, model);
MApiModelBuilder model = m.tryGetModel(resourceType); if(null != model) { op.addTag(model.getName()); MApiTag tag = m.getTags().get(model.getName()); if(null == tag) { m.addTag(new MApiTag(model.getName(),model.getTitle(),model.getSummary(),model.getDescription(),null));
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(MComplexType from, MetaModel to) { tryCopyModel(new MApiModelBuilder(from), to); }
public MApiModelBuilder tryGetModel(Class<?> type) { if (null == type) { return null; } for (MApiModelBuilder m : models.values()) { for (Class<?> javaType : m.getJavaTypes()) { if (type.equals(javaType)) { return m; } } } return null; }
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)); } }
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); } } }
writeRefType(context, m, w, ct.createTypeRef()); }else { model = new MApiModelBuilder(ct).build(); w.property(TYPE, OBJECT); writeModelProperties(context, m, w, model);
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]); }
public MApiModelBuilder tryGetModelByClassName(String className) { if (Strings.isEmpty(className)) { return null; } for (MApiModelBuilder m : models.values()) { for (Class<?> javaType : m.getJavaTypes()) { if (javaType.getName().equals(className)) { return m; } } } return null; }