protected void writeRefType(WriteContext context, ApiMetadata m, JsonWriter w, MTypeRef tr) { if(!m.getModels().containsKey(tr.getRefTypeName())) { throw new IllegalStateException("The referenced type '" + tr.getRefTypeName() + "' not exists!"); } w.property(REF, ref(tr.getRefTypeName())); }
/** * Returns the referenced type name. */ public String getRefTypeName() { return type.isCollectionType() ? type.asCollectionType().getElementType().asTypeRef().getRefTypeName() : type.asTypeRef().getRefTypeName(); }
private void checkType(MetaApi api, MetaModel model, MetaProperty p, MType type) { if (type.isTypeRef()) { String name = type.asTypeRef().getRefTypeName(); if (null == api.getEntity(name) && null == api.getModel(name)) { if (Strings.containsIgnoreCase(name, "definitions/")) { throw new IllegalStateException("The ref type + '" + name + "' at '" + model.getName() + "#" + p.getName() + "' not exists, should use '#/definitions/' prefix!"); } else { throw new IllegalStateException("The ref type + '" + name + "' at '" + model.getName() + "#" + p.getName() + "' not exists!"); } } } else if (type.isCollectionType()) { checkType(api, model, p, type.asCollectionType().getElementType()); } }
public static String toTypeName(MType type) { if(type.isSimpleType()) { SwaggerType st = swaggerWriter.convertSimpleType(type.asSimpleType()); if(null == st) { throw new IllegalStateException("Unsupported type '" + type + "'"); } return st.name().toLowerCase(); } if(type.isCollectionType()) { MType elementType = type.asCollectionType().getElementType(); return "array<" + toTypeName(elementType) + ">"; } if(type.isComplexType()) { return type.asComplexType().getName(); } if(type.isTypeRef()) { return type.asTypeRef().getRefTypeName(); } if(type.isDictionaryType()) { return "map<string," + toTypeName(type.asDictionaryType().getValueType()) + ">"; } if(type.isObjectType()) { return "object"; } if(type.isVoidType()) { return ""; } throw new IllegalStateException("Unsupported type '" + type + "'"); }