# HG changeset patch # User cin # Date 1403657093 -14400 # Node ID a809805210d1d574274ebdfa3766b75e28816190 # Parent 908b4f340c6992fa9bcae84fb36130c6bf25d765 small refactoring diff -r 908b4f340c69 -r a809805210d1 Implab/JSON/JSONXmlReader.cs --- a/Implab/JSON/JSONXmlReader.cs Mon Jun 23 17:34:40 2014 +0400 +++ b/Implab/JSON/JSONXmlReader.cs Wed Jun 25 04:44:53 2014 +0400 @@ -38,10 +38,8 @@ readonly bool m_flattenArrays; readonly string m_arrayItemName; readonly XmlNameTable m_nameTable; - readonly bool m_disposeParser; - public JSONXmlReader(JSONParser parser, JSONXmlReaderOptions options) { - Safe.ArgumentNotNull(parser, "parser"); + JSONXmlReader(JSONParser parser, JSONXmlReaderOptions options) { m_parser = parser; if (options != null) { @@ -51,7 +49,6 @@ m_flattenArrays = options.FlattenArrays; m_arrayItemName = options.ArrayItemName ?? "item"; m_nameTable = options.NameTable ?? new NameTable(); - m_disposeParser = options.DisposeParser; } else { m_prefix = String.Empty; m_namespaceUri = String.Empty; @@ -59,7 +56,6 @@ m_flattenArrays = false; m_arrayItemName = "item"; m_nameTable = new NameTable(); - m_disposeParser = false; } } @@ -306,17 +302,23 @@ protected override void Dispose(bool disposing) { if (disposing) { - if (m_disposeParser) - m_parser.Dispose(); + m_parser.Dispose(); } base.Dispose(disposing); } + public static JSONXmlReader Create(string file, JSONXmlReaderOptions options) { + return Create(File.OpenText(file), options); + } - public static JSONXmlReader OpenFile(string file, JSONXmlReaderOptions options) { - var stream = File.OpenText(file); - var parser = new JSONParser(stream, true); - return new JSONXmlReader(parser, options); + public static JSONXmlReader Create(TextReader reader, JSONXmlReaderOptions options) { + return new JSONXmlReader(new JSONParser(reader, true), options); + } + + public static JSONXmlReader Create(Stream stream, JSONXmlReaderOptions options) { + Safe.ArgumentNotNull(stream, "stream"); + // HACK don't dispose StreaReader to keep stream opened + return Create(new StreamReader(stream), options); } } } diff -r 908b4f340c69 -r a809805210d1 Implab/JSON/JSONXmlReaderOptions.cs --- a/Implab/JSON/JSONXmlReaderOptions.cs Mon Jun 23 17:34:40 2014 +0400 +++ b/Implab/JSON/JSONXmlReaderOptions.cs Wed Jun 25 04:44:53 2014 +0400 @@ -58,12 +58,5 @@ set; } - /// - /// Флаг, означающий, что неужно освободить парсер по окончанию работы. - /// - public bool DisposeParser { - get; - set; - } } }