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]); }
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]); }
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 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; }
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); }); } }
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 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, 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); } }
@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; }
for(MApiPropertyBuilder p : m.getProperties().values()) { MetaField f = e.getField(p.getName()); f.setApiProperty(p);