/// <summary> /// Finds a subschema using the given schema reference. /// </summary> /// <param name="reference">The schema reference used to get the subschema.</param> /// <param name="rootSchema">The root schema to resolve the subschema from.</param> /// <returns>The matching subschema.</returns> public virtual JSchema GetSubschema(SchemaReference reference, JSchema rootSchema) { if (reference.SubschemaId == null) { return(rootSchema); } Uri rootSchemaId = reference.BaseUri; Uri subschemaId = reference.SubschemaId; JSchemaReader resolverSchemaReader = new JSchemaReader(new JSchemaReaderSettings { Resolver = this, BaseUri = rootSchema.BaseUri }); resolverSchemaReader.RootSchema = rootSchema; JSchema subSchema = null; SchemaDiscovery.FindSchema(s => subSchema = s, rootSchema, rootSchemaId, subschemaId, resolverSchemaReader); if (subSchema != null) { resolverSchemaReader.ResolveDeferedSchemas(); return(subSchema); } return(null); }
/// <summary> /// Gets the schema resource for a given schema reference. /// </summary> /// <param name="context">The schema ID context.</param> /// <param name="reference">The schema reference.</param> /// <returns>The schema resource for a given schema reference.</returns> public override Stream?GetSchemaResource(ResolveSchemaContext context, SchemaReference reference) { if (reference.BaseUri == null) { throw new InvalidOperationException("Can't get schema resource because SchemaReference.BaseUri doesn't have a value."); } if (_preloadedData.TryGetValue(reference.BaseUri, out byte[] data))
/// <summary> /// Gets the schema resource for a given schema reference. /// </summary> /// <param name="context">The schema ID context.</param> /// <param name="reference">The schema reference.</param> /// <returns>The schema resource for a given schema reference.</returns> public override Stream GetSchemaResource(ResolveSchemaContext context, SchemaReference reference) { byte[] data; if (_preloadedData.TryGetValue(reference.BaseUri, out data)) { return(new MemoryStream(data)); } return(_resolver?.GetSchemaResource(context, reference)); }
/// <summary> /// Gets the schema resource for a given schema reference. /// </summary> /// <param name="context">The schema ID context.</param> /// <param name="reference">The schema reference.</param> /// <returns>The schema resource for a given schema reference.</returns> public override Stream GetSchemaResource(ResolveSchemaContext context, SchemaReference reference) { byte[] data; if (_preloadedData.TryGetValue(reference.BaseUri, out data)) return new MemoryStream(data); if (_resolver != null) return _resolver.GetSchemaResource(context, reference); return null; }
/// <summary> /// Resolves the schema reference from the specified schema ID context. /// </summary> /// <param name="context">The schema ID context to resolve.</param> /// <returns>The resolved schema reference.</returns> public virtual SchemaReference ResolveSchemaReference(ResolveSchemaContext context) { string fragment; Uri baseUri = ResolveBaseUri(context, out fragment); SchemaReference schemaReference = new SchemaReference(); schemaReference.BaseUri = baseUri; if (fragment != null) schemaReference.SubschemaId = new Uri(fragment, UriKind.RelativeOrAbsolute); return schemaReference; }
/// <summary> /// Resolves the schema reference from the specified schema ID context. /// </summary> /// <param name="context">The schema ID context to resolve.</param> /// <returns>The resolved schema reference.</returns> public virtual SchemaReference ResolveSchemaReference(ResolveSchemaContext context) { Uri baseUri = ResolveBaseUri(context, out string fragment); SchemaReference schemaReference = new SchemaReference(); schemaReference.BaseUri = baseUri; if (fragment != null) { schemaReference.SubschemaId = new Uri(fragment, UriKind.RelativeOrAbsolute); } return(schemaReference); }
/// <summary> /// Gets the schema resource for a given schema reference. /// </summary> /// <param name="context">The schema ID context.</param> /// <param name="reference">The schema reference.</param> /// <returns>The schema resource for a given schema reference.</returns> public override Stream GetSchemaResource(ResolveSchemaContext context, SchemaReference reference) { if (!reference.BaseUri.IsAbsoluteUri) { return(null); } #if !PORTABLE int?timeout = Timeout; #else int?timeout = null; #endif return(_downloader.GetStream(reference.BaseUri, _credentials, timeout, ByteLimit)); }
/// <summary> /// Finds a subschema using the given schema reference. /// </summary> /// <param name="reference">The schema reference used to get the subschema.</param> /// <param name="rootSchema">The root schema to resolve the subschema from.</param> /// <returns>The matching subschema.</returns> public virtual JSchema?GetSubschema(SchemaReference reference, JSchema rootSchema) { if (reference.SubschemaId == null) { return(rootSchema); } Uri?rootSchemaId = reference.BaseUri; Uri subschemaId = reference.SubschemaId; JSchemaReader?resolverSchemaReader = rootSchema.InternalReader; if (resolverSchemaReader == null) { resolverSchemaReader = new JSchemaReader(new JSchemaReaderSettings { Resolver = this, BaseUri = rootSchema.BaseUri }); resolverSchemaReader.RootSchema = rootSchema; } JSchema?subSchema = null; Uri?dynamicScope = null; // Might be a problem. Should dynamic scope be passed in? SchemaDiscovery.FindSchema(s => subSchema = s, rootSchema, rootSchemaId, subschemaId, subschemaId, dynamicScope, resolverSchemaReader, ref resolverSchemaReader._schemaDiscovery); if (subSchema != null) { resolverSchemaReader.ResolveDeferedSchemas(); resolverSchemaReader.RaiseValidationErrors(); return(subSchema); } return(null); }
/// <summary> /// Gets the schema resource for a given schema reference. /// </summary> /// <param name="context">The schema ID context.</param> /// <param name="reference">The schema reference.</param> /// <returns>The schema resource for a given schema reference.</returns> public abstract Stream GetSchemaResource(ResolveSchemaContext context, SchemaReference reference);
/// <summary> /// Gets the schema resource for a given schema reference. /// </summary> /// <param name="context">The schema ID context.</param> /// <param name="reference">The schema reference.</param> /// <returns>The schema resource for a given schema reference.</returns> public abstract Stream GetSchemaResource(ResolveSchemaContext context, SchemaReference reference);
/// <summary> /// Finds a subschema using the given schema reference. /// </summary> /// <param name="reference">The schema reference used to get the subschema.</param> /// <param name="rootSchema">The root schema to resolve the subschema from.</param> /// <returns>The matching subschema.</returns> public virtual JSchema GetSubschema(SchemaReference reference, JSchema rootSchema) { if (reference.SubschemaId == null) return rootSchema; Uri rootSchemaId = reference.BaseUri; Uri subschemaId = reference.SubschemaId; JSchemaReader resolverSchemaReader = rootSchema.InternalReader; if (resolverSchemaReader == null) { resolverSchemaReader = new JSchemaReader(new JSchemaReaderSettings { Resolver = this, BaseUri = rootSchema.BaseUri }); resolverSchemaReader.RootSchema = rootSchema; } JSchema subSchema = null; SchemaDiscovery.FindSchema(s => subSchema = s, rootSchema, rootSchemaId, subschemaId, resolverSchemaReader, ref resolverSchemaReader._schemaDiscovery); if (subSchema != null) { resolverSchemaReader.ResolveDeferedSchemas(); resolverSchemaReader.RaiseValidationErrors(); return subSchema; } return null; }
/// <summary> /// Gets the schema resource for a given schema reference. /// </summary> /// <param name="context">The schema ID context.</param> /// <param name="reference">The schema reference.</param> /// <returns>The schema resource for a given schema reference.</returns> public override Stream GetSchemaResource(ResolveSchemaContext context, SchemaReference reference) { if (_preloadedData.TryGetValue(reference.BaseUri, out byte[] data))