/** * Writes an array use writer function. */ default <T> JsonWriter array(T[] a, Consumer<T> itemWriter) { startArray(); if(null != a) { for(int i=0;i<a.length;i++) { T item = a[i]; if(i > 0) { separator(); } itemWriter.accept(item); } } endArray(); return this; }
/** * Writes an array use writer function. */ default <T> JsonWriter array(Iterable<T> a, Consumer<T> itemWriter) { startArray(); if(null != a) { int i = 0; for(T item : a) { if(i > 0) { separator(); }else{ i++; } itemWriter.accept(item); } } endArray(); return this; }
/** * Writes an array property. */ default JsonWriter propertyJsonable(String key, Iterable<? extends JsonStringable> iterable) { key(key).startArray(); if(null != iterable) { Iterator<? extends JsonStringable> iterator = iterable.iterator(); while (iterator.hasNext()){ JsonStringable o = iterator.next(); o.toJson(this); if(iterator.hasNext()){ this.separator(); } } } return endArray(); }
/** * Writes an array property. */ default JsonWriter propertyJsonable(String key, JsonStringable... array) { key(key).startArray(); if(null != array) { int i = 0; for(JsonStringable o : array){ o.toJson(this); if(i < array.length - 1) { this.separator(); } i++; } } return endArray(); }
protected void writeModelWithinObject(WriteContext context, ApiMetadata m, JsonWriter w, MApiModel model) { if(!model.hasBaseModel()) { w.property(TYPE, OBJECT); } if(model.isEntity()) { w.property(X_ENTITY, true); } writeExtension(w, model.getExtension()); w.propertyOptional(TITLE, model.getTitle()); w.propertyOptional(SUMMARY, model.getSummary()); w.propertyOptional(DESCRIPTION, model.getDescription()); if(!model.hasBaseModel()) { writeModelProperties(context, m, w, model); }else{ w.property(ALL_OF, () -> { w.startArray(); //item1 : the base model. w.startObject() .property(REF, ref(model.getBaseName())) .endObject(); w.separator(); //item2 : self w.startObject() .property(TYPE, OBJECT); writeModelProperties(context, m, w, model); w.endObject(); w.endArray(); }); } }