private void ResolveDeferedSchema(DeferedSchema deferedSchema) { Uri reference = deferedSchema.ResolvedReference; bool found = SchemaDiscovery.FindSchema(s => { // additional json copied to referenced schema // kind of hacky if (deferedSchema.ReferenceSchema._extensionData != null) { foreach (KeyValuePair <string, JToken> keyValuePair in deferedSchema.ReferenceSchema._extensionData.ToList()) { s.ExtensionData[keyValuePair.Key] = keyValuePair.Value; } } deferedSchema.SetResolvedSchema(s); }, RootSchema, RootSchema.Id, reference, this, ref _schemaDiscovery); if (found) { return; } JSchema resolvedSchema; try { resolvedSchema = ResolvedSchema(deferedSchema.ReferenceSchema.Reference, deferedSchema.ResolvedReference); } catch (Exception ex) { throw JSchemaReaderException.Create(deferedSchema.ReferenceSchema, _baseUri, deferedSchema.ReferenceSchema.Path, "Error when resolving schema reference '{0}'.".FormatWith(CultureInfo.InvariantCulture, deferedSchema.ReferenceSchema.Reference), ex); } if (resolvedSchema != null) { deferedSchema.SetResolvedSchema(resolvedSchema); return; } throw JSchemaReaderException.Create(deferedSchema.ReferenceSchema, _baseUri, deferedSchema.ReferenceSchema.Path, "Could not resolve schema reference '{0}'.".FormatWith(CultureInfo.InvariantCulture, deferedSchema.ResolvedReference)); }
private void ResolveDeferedSchema(DeferedSchema deferedSchema) { Uri reference = deferedSchema.ResolvedReference; bool found = SchemaDiscovery.FindSchema(s => { // additional json copied to referenced schema // kind of hacky if (deferedSchema.ReferenceSchema._extensionData != null) { foreach (KeyValuePair <string, JToken> keyValuePair in deferedSchema.ReferenceSchema._extensionData.ToList()) { s.ExtensionData[keyValuePair.Key] = keyValuePair.Value; } } deferedSchema.SetResolvedSchema(s); }, RootSchema, RootSchema.Id, reference, this); if (!found) { throw new JsonException("Could not resolve schema reference '{0}'.".FormatWith(CultureInfo.InvariantCulture, deferedSchema.ResolvedReference)); } }