public ArrayDataType(DataType itemType) { this.ItemType = itemType; }
public BodyOperationParameter(DataType dataTypeArgument, bool isRequired) { dataType = dataTypeArgument; IsRequired = isRequired; }
public FormOperationParameter(DataType dataType, bool isRequired) { operationDataType = dataType; IsRequired = isRequired; }
public MapDataType(DataType additionalPropertiesType) { this.AdditionalPropertiesType = additionalPropertiesType; }
private DataType ResolveType(DataType t) { if (t is PrimitiveDataType) { // nothing to do, we're good! return t; } var reference = t as TypeReferenceDataType; if (reference != null) { DataType resolvedType = ResolveType(typesMap[Swagger20Parser.StripDefinitionPrefix(t.Name)]); typesMap[Swagger20Parser.StripDefinitionPrefix(t.Name)] = resolvedType; return resolvedType; } var compositeType = t as CompositeDataType; if (compositeType != null) { if (compositeType.Properties.All(p => !(p.Value is TypeReferenceDataType))) { // No type refs, we're good! return compositeType; } var resolvedType = new CompositeDataType(compositeType.Name, compositeType.Properties.Select(p => { if (p.Value is TypeReferenceDataType && p.Value.Name == compositeType.Name) { return new KeyValuePair<string, DataType>(p.Key, new SelfReferenceDataType()); } return new KeyValuePair<string, DataType>( p.Key, ResolveType(p.Value)); }), compositeType.Required); typesMap[resolvedType.Name] = resolvedType; return resolvedType; } var arrayType = t as ArrayDataType; if (arrayType != null) { if (arrayType.ItemType is TypeReferenceDataType) { return new ArrayDataType(ResolveType(arrayType.ItemType)); } return t; } var mapType = t as MapDataType; if (mapType != null) { if (mapType.AdditionalPropertiesType is TypeReferenceDataType) { return new MapDataType(ResolveType(mapType.AdditionalPropertiesType)); } return t; } throw new InvalidOperationException("Unknown data type, coding error!"); }