/// <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);
        }
Пример #2
0
        /// <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))
Пример #3
0
        /// <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;
        }
Пример #12
0
 /// <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))