From 476abfc4097d2dfa858375ed4cfc0e2bb4385da9 Mon Sep 17 00:00:00 2001 From: Louis DeJardin Date: Wed, 7 Apr 2010 15:34:38 -0700 Subject: [PATCH 1/9] Changing shell settings loader to prep for multi-tenancy work Adding data prefix property Moving to a different yaml library Renaming IShellSettingsLoader and ShellSettingsLoader to ITenantManager and DefaultTenantManager Avoiding use of MapPath in the appdatafolder abstraction --HG-- branch : dev --- lib/yaml/ChangeLog.txt | 47 + lib/yaml/Readme.txt | 39 + lib/yaml/YAML Serializer.chm | Bin 0 -> 342902 bytes lib/yaml/YamlSerializer.XML | 3770 +++++++++++++++++ lib/yaml/YamlSerializer.dll | Bin 0 -> 139264 bytes .../Configuration/AppDataFolderTests.cs | 14 + .../DefaultTenantManagerTests.cs | 76 + src/Orchard.Tests/Orchard.Tests.csproj | 1 + .../Configuration/AppDataFolder.cs | 6 +- .../Configuration/DefaultTenantManager.cs | 72 + .../Configuration/ITenantManager.cs | 8 + .../Configuration/ShellSettings.cs | 8 +- .../Configuration/ShellSettingsLoader.cs | 93 - src/Orchard/Orchard.csproj | 4 + 14 files changed, 4041 insertions(+), 97 deletions(-) create mode 100644 lib/yaml/ChangeLog.txt create mode 100644 lib/yaml/Readme.txt create mode 100644 lib/yaml/YAML Serializer.chm create mode 100644 lib/yaml/YamlSerializer.XML create mode 100644 lib/yaml/YamlSerializer.dll create mode 100644 src/Orchard.Tests/Environment/Configuration/DefaultTenantManagerTests.cs create mode 100644 src/Orchard/Environment/Configuration/DefaultTenantManager.cs create mode 100644 src/Orchard/Environment/Configuration/ITenantManager.cs delete mode 100644 src/Orchard/Environment/Configuration/ShellSettingsLoader.cs diff --git a/lib/yaml/ChangeLog.txt b/lib/yaml/ChangeLog.txt new file mode 100644 index 000000000..026f548a5 --- /dev/null +++ b/lib/yaml/ChangeLog.txt @@ -0,0 +1,47 @@ +--- 2009-10-04 Osamu TAKEUCHI +Alpha release of YamlSerializer as 0.9.0.2 + +* All "_"s in integer and floating point values are neglected + to accommodate the !!int and !!float encoding. +* YamlConfig.DontUseVerbatimTag is added but the default value is set false. + Note that ! is much human friendly than !System.Int32%5B%2C%5D. +* Equality of YamlNode with an unknown tag is evaluated by identity, + while that of !!map and !!seq node is still evaluated by YAML's standard. + Note that equality of !!map and !!seq are different from that of object[] + and Dictionary. +* YamlConfig.OmitTagForRootNode was added. Fixed issue #2850. +* Serialize Dictionary to !!map. Fixed #2891. +* Modified [126-130] ns-plain-???, [147] c-ns-flow-map-separate-value(n,c) + to accommodate revision 2009-10-01 +* Omit !< > if Tag contains only ns-tag-char, Fixed issue #2813 + +--- 2009-09-23 Osamu TAKEUCHI +Alpha release of YamlSerializer as 0.9.0.1 + +* Removed TODO's for reporting bugs in YAML spec that are done. +* Fixed assembly copyright. +* !!merge is supported. Fixed issue#2605. +* Read-only class-type member with no child members are omitted when + serializing. Fixed issue#2599. +* Culture for TypeConverter is set to be CultureInfo.InvariantCulture. + Fixed issue #2629. +* To fix Issue#2631 + * Field names and property names are always presented as simple texts. + * When deserializing, we can not avoid the parser parses some spacial + names to !!bool and !!null. Such non-text nodes are converted to + texts at construction stage. +* To fix issue#2663 + * Hash code stored in a mapping node is now updated when the a key node's + content is changed. + * Hash code and equality became independent on the order of keys in a + mapping node. + * A mapping node checks for duplicated keys every time the node content + is changed. + * Test results are changed because some of them are dependent on the hash + key order. +* The current equality evaluation is too strict, probably needs some adjustment. +* NativeObject property was added to YamlScalar. +* YamlScalar's equality is evaluated by comparing NativeObject. + +--- 2009-09-11 Osamu TAKEUCHI +First release of YamlSerializer as 0.9.0.0 diff --git a/lib/yaml/Readme.txt b/lib/yaml/Readme.txt new file mode 100644 index 000000000..e6152eb5e --- /dev/null +++ b/lib/yaml/Readme.txt @@ -0,0 +1,39 @@ +YamlSerializer 0.9.0.2 (2009-10-04) Osamu TAKEUCHI + +Description: + A library that serialize / deserialize C# native objects into YAML1.2 text. + +Development environment: + Visual C# 2008 Express Edition + Sandcastle (2008-05-29) + SandcastleBuilder 1.8.0.2 + HTML Help workshop 4.74.8702 + NUnit 2.5.0.9122 + TestDriven.NET 2.0 + +Support web page: + http://yamlserializer.codeplex.com/ + +License: + YamlSerializer is distributed under the MIT license as following: + +--- +The MIT License (MIT) +Copyright (c) 2009 Osamu TAKEUCHI + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in the +Software without restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, +and to permit persons to whom the Software is furnished to do so, subject to the +following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/lib/yaml/YAML Serializer.chm b/lib/yaml/YAML Serializer.chm new file mode 100644 index 0000000000000000000000000000000000000000..34162f2e59bf7662068f9e5c951de4d007055a85 GIT binary patch literal 342902 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%0D^)#;{(i#<1^!&`4{ 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�By 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 Xgi-7+2y4IM(!h&0=rN9+=XDu6IDGSU7BL;9b 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 literal 0 HcmV?d00001 diff --git a/lib/yaml/YamlSerializer.XML b/lib/yaml/YamlSerializer.XML new file mode 100644 index 000000000..c083f3957 --- /dev/null +++ b/lib/yaml/YamlSerializer.XML @@ -0,0 +1,3770 @@ + + + + YamlSerializer + + + +

+ Converts various types to / from string.
+ I don't remember why this class was needed.... +
+ + + object obj = GetObjectToConvert(); + + // Check if the type has [TypeConverter] attribute. + if( EasyTypeConverter.IsTypeConverterSpecified(type) ) { + + // Convert the object to string. + string s = EasyTypeConverter.ConvertToString(obj); + + // Convert the string to an object of the spific type. + object restored = EasyTypeConverter.ConvertFromString(s, type); + + Assert.AreEqual(obj, restored); + + } + + + + + + Converts C# object to YamlNode + + + + object obj; + YamlNode node = YamlRepresenter.ObjectToNode(obj); + + + + + + Implements utility functions to instantiating YamlNode's + + + + var node_tree = seq( + str("abc"), + str("def"), + map( + str("key"), str("value"), + str("key2"), seq( str("value2a"), str("value2b") ) + ), + str("2"), // !!str + str("!!int", "2") + ); + + string yaml = node_tree.ToYaml(); + + // %YAML 1.2 + // --- + // - abc + // - def + // - key: value + // key2: [ value2a, value2b ] + // - "2" # !!str + // - 2 # !!int + // ... + + + + + + Create a scalar node. Tag is set to be "!!str". + + + + var node_tree = seq( + str("abc"), + str("def"), + map( + str("key"), str("value"), + str("key2"), seq( str("value2a"), str("value2b") ) + ), + str("2"), // !!str + str("!!int", "2") + ); + + string yaml = node_tree.ToYaml(); + + // %YAML 1.2 + // --- + // - abc + // - def + // - key: value + // key2: [ value2a, value2b ] + // - "2" # !!str + // - 2 # !!int + // ... + + + Value for the scalar node. + Created scalar node. + + + + Create a scalar node. + + Tag for the scalar node. + Value for the scalar node. + Created scalar node. + + + + Create a sequence node. Tag is set to be "!!seq". + + Child nodes. + Created sequence node. + + + + Create a sequence node. + + Child nodes. + Tag for the seuqnce. + Created sequence node. + + + + Create a mapping node. Tag is set to be "!!map". + + Sequential list of key/value pairs. + Created mapping node. + + + + Create a mapping node. + + Sequential list of key/value pairs. + Tag for the mapping. + Created mapping node. + + + + When reports syntax error by exception, this class is thrown. + + Sytax errors can also be reported by simply returing false with giving some warnings. + + + + + Initialize an instance of + + Error message. + + + + Base class to implement a parser class. + + It allows not very efficient but easy implementation of a text parser along + with a parameterized BNF productions. + + Parser specific state structure. + + + + Parse the using the + as the starting rule. + + Starting rule. + Text to be parsed. + + + + + Gets / sets source text to be parsed. + While parsing, this variable will not be changed. + The current position to be read by parser is represented by the field . + Namely, the next character to be read is text[p]. + + + + + The current reading position. + + The next character to be read by the parser is text[p]. + + Increase to reduce some part of source text . + + The current position is automatically reverted at rewinding. + + + Example to show how to reduce BNF reduction rule of ( "t" "e" "x" "t" ). + + return RewindUnless(()=> + text[p++] == 't' && + text[p++] == 'e' && + text[p++] == 'x' && + text[p++] == 't' + ); + + + + + + Use this variable to build some string data from source text. + + It will be automatically reverted at rewinding. + + + + + Individual-parser-specific state object. + + It will be automatically reverted at rewinding. + + If some action, in addition to simply restore the value of the state object, + is needed to recover the previous state, override + method. + + + + + Initialize , which represents line number to + start position of each line list. + + + + + Line number to start position list. + + + + + Reporting syntax error by throwing . + + template for the error message. + parameters if required + Because it throw exception, nothing will be returned in reality. + + + + Give warning if is true. + + By default, the warning will not be shown / stored to anywhere. + To show or log the warning, override . + + + + return + SomeObsoleteReductionRule() && + WarningIf( + context != Context.IndeedObsolete, + "Obsolete"); + + + If true, warning is given; otherwize do nothing. + template for the warning message. + parameters if required + Always true. + + + + Give warning if is false. + + By default, the warning will not be shown / stored to anywhere. + To show or log the warning, override . + + + + return + SomeObsoleteReductionRule() && + WarningUnless( + context != Context.NotObsolete, + "Obsolete"); + + + If false, warning is given; otherwize do nothing. + template for the warning message. + parameters if required + Always true. + + + + Give warning. + + By default, the warning will not be shown / stored to anywhere. + To show or log the warning, override . + + + + return + SomeObsoleteReductionRule() && + Warning("Obsolete"); + + + template for the warning message. + parameters if required + Always true. + + + + Invoked when warning was given while parsing. + + Override this method to display / store the warning. + + Warning message. + + + + Represents EBNF operator of "join", i.e. serial appearence of several rules. + + + This recoveres , , + when does not return true. + + If any specific operation is needed for rewinding, in addition to simply + recover the value of , override . + + If false is returned, the parser status is rewound. + true if returned true; otherwise false. + + name ::= first-name middle-name? last-name + + bool Name() + { + return RewindUnless(()=> + FirstName() && + Optional(MiddleName) && + LastName() + ); + } + + + + + + This method is called just after recovers . + Override it to do any additional operation for rewinding. + + + + + Represents EBNF operator of "*". + + Reduction rule to be repeated. + Always true. + + lines-or-empty ::= line* + + bool LinesOrEmpty() + { + return + Repeat(Line); + } + + + lines-or-empty ::= (text line-break)* + Note: Do not forget if several + rules are sequentially appears in operator. + + bool LinesOrEmpty() + { + return + Repeat(()=> + RewindUnless(()=> + Text() && + LineBreak() + ) + ); + } + + + + + + Represents EBNF operator of "+". + + Reduction rule to be repeated. + true if the rule matches; otherwise false. + + lines ::= line+ + + bool Lines() + { + return + Repeat(Line); + } + + + + lines ::= (text line-break)+ + + Note: Do not forget RewindUnless in Repeat operator. + + bool Lines() + { + return + Repeat(()=> + RewindUnless(()=> + Text() && + LineBreak() + ) + ); + } + + + + + + Represents n times repeatition. + + + four-lines ::= (text line-break){4} + + Note: Do not forget if several + rules are sequentially appears in operator. + + bool FourLines() + { + return + Repeat(4, ()=> + RewindUnless(()=> + Text() && + LineBreak() + ) + ); + } + + + Repetition count. + Reduction rule to be repeated. + true if the rule matches; otherwise false. + + + + Represents at least , at most times repeatition. + + + google ::= "g" "o"{2,100} "g" "l" "e" + Note: Do not forget if several + rules are sequentially appears in operator. + + bool Google() + { + return + RewindUnless(()=> + text[p++] == 'g' && + Repeat(2, 100, + RewindUnless(()=> + text[p++] == 'o' + ) + ) + text[p++] == 'g' && + text[p++] == 'l' && + text[p++] == 'e' + ); + } + + + Minimum repetition count. Negative value is treated as 0. + Maximum repetition count. Negative value is treated as positive infinity. + Reduction rule to be repeated. + true if the rule matches; otherwise false. + + + + Represents BNF operator "?". + + + file ::= header? body footer? + + Note: Do not forget if several + rules are sequentially appears in operator. + + bool File() + { + return + Optional(Header()) && + Body() && + Optional(Footer()); + } + + + Reduction rule that is optional. + Always true. + + + + Represents BNF operator "?" (WITH rewinding wrap). + + + file = header? body footer? + + Note: Do not forget if several + rules are sequentially appears in operator. + + bool File() + { + return + Optional(Header) && + Body() && + Optional(Footer); + } + + + Reduction rule that is optional. + Always true. + + + + Reduce one character if it is a member of the specified character set. + + Acceptable character set. + true if the rule matches; otherwise false. + + alpha ::= [A-Z][a-z]
+ num ::= [0-9]
+ alpha-num :: alpha | num
+ word ::= alpha ( alpha-num )*
+ + Func<char,bool> Alpha = Charset( c => + ( 'A' <= c && c <= 'Z' ) || + ( 'a' <= c && c <= 'z' ) + ); + Func<char,bool> Num = Charset( c => + '0' <= c && c <= '9' + ); + Func<char,bool> AlphaNum = Charset( c => + Alpha(c) || Num(c) + ); + bool Word() + { + return + Accept(Alpha) && + Repeat(AlphaNum); + // No need for RewindUnless + } + +
+
+ + + Accepts a character 'c'. + + It can be also represented by text[p++] == c wrapped by . + + The character to be accepted. + true if the rule matches; otherwise false. + + YMCA ::= "Y" "M" "C" "A" + + bool YMCA() + { + return + RewindUnless(()=> + Accept('Y') && + Accept('M') && + Accept('C') && + Accept('A') + ); + } + + -or- + + bool YMCA() + { + return + RewindUnless(()=> + text[p++] == 'Y' && + text[p++] == 'M' && + text[p++] == 'C' && + text[p++] == 'A' + ); + } + + + + + + Accepts a sequence of characters. + + Sequence of characters to be accepted. + true if the rule matches; otherwise false. + + YMCA ::= "Y" "M" "C" "A" + + bool YMCA() + { + return + Accept("YMCA"); + } + + + + + + Represents sequence of characters. + + Sequence of characters to be accepted. + true if the rule matches; otherwise false. + + + + Represents BNF operator of "*". + + Character set to be accepted. + Always true. + + + + Represents BNF operator of "+". + + Character set to be accepted. + true if the rule matches; otherwise false. + + + + Represents n times repetition of characters. + + Character set to be accepted. + Repetition count. + true if the rule matches; otherwise false. + + + + Represents at least min times, at most max times + repetition of characters. + + Character set to be accepted. + Minimum repetition count. Negative value is treated as 0. + Maximum repetition count. Negative value is treated as positive infinity. + true if the rule matches; otherwise false. + + + + Represents BNF operator "?". + + Character set to be accepted. + Always true. + + + + Builds a performance-optimized table-based character set definition from a simple + but slow comparison-based definition. + + By default, the character table size is 0x100, namely only the characters of [\0-\xff] are + judged by using a character table and others are by the as-given slow comparisn-based definitions. + + To have maximized performance, locate the comparison for non-table based judgement first + in the definition as the example below. + + Use form to explicitly + specify the table size. + + This sample shows how to build a character set delegate. + + static class YamlCharsets: Charsets + { + Func<char, bool> cPrintable; + Func<char, bool> sWhite; + + static YamlCharsets() + { + cPrintable = CacheResult(c => + /* ( 0x10000 < c && c < 0x110000 ) || */ + ( 0xe000 <= c && c <= 0xfffd ) || + ( 0xa0 <= c && c <= 0xd7ff ) || + ( c < 0x100 && ( // to improve performance + c == 0x85 || + ( 0x20 <= c && c <= 0x7e ) || + c == 0x0d || + c == 0x0a || + c == 0x09 + ) ) + ); + sWhite = CacheResult(c => + c < 0x100 && ( // to improve performance + c == '\t' || + c == ' ' + ) + ); + } + } + + A simple but slow comparison-based definition of the charsert. + A performance-optimized table-based delegate built from the given . + + + + Builds a performance-optimized table-based character set definition from a simple + but slow comparison-based definition. + + Characters out of the table are judged by the as-given slow comparisn-based + definitions. + + So, to have maximized performance, locate the comparison for non-table based + judgement first in the definition as the example below. + + This sample shows how to build a character set delegate. + + static class YamlCharsets: Charsets + { + Func<char, bool> cPrintable; + Func<char, bool> sWhite; + + static YamlCharsets() + { + cPrintable = CacheResult(c => + /* ( 0x10000 < c && c < 0x110000 ) || */ + ( 0xe000 <= c && c <= 0xfffd ) || + ( 0xa0 <= c && c <= 0xd7ff ) || + ( c < 0x100 && ( // to improve performance + c == 0x85 || + ( 0x20 <= c && c <= 0x7e ) || + c == 0x0d || + c == 0x0a || + c == 0x09 + ) ) + ); + sWhite = CacheResult(c => + c < 0x100 && ( // to improve performance + c == '\t' || + c == ' ' + ) + ); + } + } + + Character table size. + A simple but slow comparison-based definition of the charsert. + A performance-optimized table-based delegate built from the given . + + + + Saves a part of the source text that is reduced in the . + If the rule does not match, nothing happends. + + Reduction rule to match. + If the matches, + the part of the source text reduced in the is set; + otherwise String.Empty is set. + true if matches; otherwise false. + + + + Saves a part of the source text that is reduced in the + and append it to . + If the rule does not match, nothing happends. + + Reduction rule to match. + true if matches; otherwise false. + + + + Saves a part of the source text that is reduced in the . + If the rule does not match, nothing happends. + + Reduction rule to match. + If matches, this delegate is invoked + with the part of the source text that is reduced in the + as the parameter. Do any action in the delegate. + true if matches; otherwise false. + + + bool SomeRule() + { + return + Save(()=> SubRule(), s => MessageBox.Show(s)); + } + + + + + Execute some action. + + Action to be done. + Always true. + + + bool SomeRule() + { + return + SubRule() && + Action(()=> do_some_action()); + } + + + + + Report error by throwing when the does not match. + + Some reduction rule that must match. + Error message as template + Parameters for template + Always true; otherwise an exception thrown. + + + + Report error by throwing when the does not match. + + Some reduction rule that must match. + Error message as template + Parameters for template + Always true; otherwise an exception is thrown. + + + + Report error by throwing when the does not match + and an additional condition is true. + + Some reduction rule that must match. + Additional condition: if this parameter is false, + rewinding occurs, instead of throwing exception. + Error message as template + Parameters for template + true if the reduction rule matches; otherwise false. + + + + Report error by throwing when is true. + + True to throw exception. + Error message as template + Parameters for template + Always true. + + + + Assign var = value and return true; + + Type of the variable and value. + Variable to be assigned. + Value to be assigned. + Always true. + + + + Get current position represented by raw and column. + + + + + Represents a position in a multiline text. + + + + + Raw in a text. + + + + + Column in a text. + + + + + Validates a text as a global tag in YAML. + + RFC4151 - The 'tag' URI Scheme> + + + + + Validates a text as a global tag in YAML. + + A candidate for a global tag in YAML. + True if is a valid global tag. + + + + Not used in this parser + + + + + Dictionary that automatically rehash when the content of a key is changed. + Keys of this dictionary must implement . + It also call back item addition and removal by and + events. + + Type of key. Must implements . + Type of value. + + + + A dictionary that returns or + from hash code. This is the main repository that stores the pairs. + If there are several entries that have same hash code for thir keys, + a is stored to hold all those entries. + Otherwise, a is stored. + + + + + A dictionary that returns hash code from the key reference. + The key must be the instance that + to one exsisting in the dictionary. + + + We store the hashes correspoinding to each key. So that when rehash, + we can find old hash code to quickly find the entry for the key. + It is also used to remember the number of keys exists in the dictionary. + + + + + Recalc hash key of the . + + The key to be rehash. The key must be the instance that + to one exsisting in the dictionary. + + + + Try to find entry for key (and value). + + key to find + if true, value matters + value to find + key not found + hash hit one entry and key found + hash hit several entries and key found + + + + Try to find entry for key (and value). + + key to find + if true, value matters + value to find + hash not found + hash hit one entry but key not found + hash hit one entry and key found + hash hit several entries but key not found + hash hit several entries and key found + + + + Collection that is readonly and invalidated when an item is + added to or removed from the dictionary. + + + + + A text parser for
+ YAML Ain’t Markup Language (YAML™) Version 1.2
+ 3rd Edition (2009-07-21)
+ http://yaml.org/spec/1.2/spec.html
+ + This class parse a YAML document and compose representing graph. +
+ + + string yaml = LoadYamlSource(); + YamlParser parser = new YamlParser(); + Node[] result = null; + try { + result = parser.Parse(yaml); + ... + // you can reuse parser as many times you want + ... + + } catch( ParseErrorException e ) { + MessageBox.Show(e.Message); + } + if(result != null) { + ... + + } + + + + Currently, this parser violates the YAML 1.2 specification in the following points. + - line breaks are not normalized. + - omission of the final line break is allowed in plain / literal / folded text. + - ':' followed by ns-indicator is excluded from ns-plain-char. + +
+ + + Initialize a YAML parser. + + + + + Parse YAML text and returns a list of . + + YAML text to be parsed. + A list of parsed from the given text + + + + Parse YAML text and returns a list of . + + YAML text to be parsed. + YAML Configuration to be used in parsing. + A list of parsed from the given text + + + + Add message in property. + + + + + + Invoked when unknown directive is found in YAML document. + + Name of the directive + Parameters for the directive + + + + Invoked when YAML directive is found in YAML document. + + Given version + + + + rewinding action + + + + + set status.tag with tag resolution + + + + + + + + set status.tag with verbatim tag value + + verbatim tag + + + + + Used when the parser resolves a tag for a scalar node from its value. + + New resolution rules can be add before calling method. + + + + + [105] + + + + + [106] + + + + + Warnings that are made while parsing a YAML text. + This property is cleared by new call for method. + + + + + additional fields to be rewound + + + + + tag for the next value (will be cleared when the next value is created) + + + + + anchor for the next value (will be cleared when the next value is created) + + + + + current value + + + + + anchor rewinding position + + + + + [22] + + + + + [23] + + + + + Construct YAML node tree that represents a given C# object. + + + + + Construct YAML node tree that represents a given C# object. + + to be converted to C# object. + to customize serialization. + + + + + Construct YAML node tree that represents a given C# object. + + to be converted to C# object. + Expected type for the root object. + to customize serialization. + + + + + Add string class two methods: .UriEscape(), .UriUnescape() + + Charset that is not escaped is represented NonUriChar member. + + NonUriChar = new Regex(@"[^0-9A-Za-z\-_.!~*'()\\;/?:@&=$,\[\]]"); + + + + + Escape the string in URI encoding format. + + String to be escaped. + Escaped string. + + + + Escape the string in URI encoding format. + + String to be escaped. + Escaped string. + + + + Unescape the string escaped in URI encoding format. + + String to be unescape. + Unescaped string. + + + + Escape / Unescape string in URI encoding format + + Charset that is not escaped is represented NonUriChar member. + + NonUriChar = new Regex(@"[^0-9A-Za-z\-_.!~*'()\\;/?:@&=$,\[\]]"); + + + + + Reset(); + SetupDefaultTagPrefixes(); + Add(tag_handle, tag_prefix); + verbatim_tag = Resolve(tag_handle, tag_name); + + + + + Converts YamlNode tree into yaml text. + + + + YamlNode node; + YamlPresenter.ToYaml(node); + + YamlNode node1; + YamlNode node2; + YamlNode node3; + YamlPresenter.ToYaml(node1, node2, node3); + + + + + + + object に代入されたクラスや構造体のメンバーに、リフレクションを + 解して簡単にアクセスできるようにしたクラス + + アクセス方法をキャッシュするので、繰り返し使用する場合に高速化が + 期待できる + + + + + Caches ObjectMemberAccessor instances for reuse. + + + + + + 指定した型へのアクセス方法を表すインスタンスを返す + キャッシュに存在すればそれを返す + キャッシュに存在しなければ新しく作って返す + 作った物はキャッシュされる + + クラスまたは構造体を表す型情報 + + + + + メンバ名と Accessor のペアを巡回する + + + + + + メンバへの読み書きを行うことができる + + オブジェクト + メンバの名前 + + + + + Configuration to customize YAML serialization. + An instance of this class can be passed to the serialization + methods, such as YamlNode.ToYaml(YamlConfig) and + YamlNode.FromYaml(Stream,YamlConfig) or + it can be assigned to YamlNode.DefaultConfig. + + + + + + If true, all line breaks in the node value are normalized into "\r\n" + (= ) when serialize and line breaks + that are not escaped in YAML stream are normalized into "\n" + (= . + If false, the line breaks are preserved. Setting this option false violates + the YAML specification but sometimes useful. The default is true. + + + The YAML sepcification requires a YAML parser to normalize every line break that + is not escaped in a YAML stream, into a single line feed "\n" when it parse a YAML stream. + But this is not convenient in some cases, especially under Windows environment, where + the system default line break + is "\r\n" instead of "\n". + + This library provides two workarounds for this problem. + One is setting false. It disables the line break + normalization. The line breaks are serialized into a YAML stream as is and + those in the YAML stream are deserialized as is. + Another is setting "\r\n". Then, the YAML parser + normalizes all line breaks into "\r\n" instead of "\n". + Note that although these two options are useful in some cases, + they makes the YAML parser violate the YAML specification. + + + + // A string containing line breaks "\n\r" and "\r". + YamlNode node = "a\r\n b\rcde"; + + // By default conversion, line breaks are escaped in a double quoted string. + var yaml = node.ToYaml(); + // %YAML 1.2 + // --- + // "a\r\n\ + // \ b\r\ + // cde" + // ... + + // "%YAML 1.2\r\n---\r\n\"a\\r\\n\\\r\n\ b\\r\\\r\ncde\"\r\n...\r\n" + + // Such a YAML stream is not pretty but is capable to preserve + // original line breaks even when the line breaks of the YAML stream + // are changed (for instance, by some editor) between serialization + // and deserialization. + var restored = YamlNode.FromYaml(yaml)[0]; + // "a\r\n b\rcde" // equivalent to the original + + yaml = yaml.Replace("\r\n", "\n").Replace("\r", "\n"); + var restored = YamlNode.FromYaml(yaml)[0]; + // "a\r\n b\rcde" // still equivalent to the original + + // By setting ExplicitlyPreserveLineBreaks false, the output becomes + // much prettier. + YamlNode.DefaultConfig.ExplicitlyPreserveLineBreaks = false; + yaml = node.ToYaml(); + // %YAML 1.2 + // --- + // |-2 + // a + // b + // cde + // ... + + // line breaks are nomalized to "\r\n" (= YamlNode.DefaultConfig.LineBreakForOutput) + // "%YAML 1.2\r\n---\r\n|-2\r\n a\r\n b\r\ncde\r\n...\r\n" + + // line breaks are nomalized to "\n" (= YamlNode.DefaultConfig.LineBreakForInput) + var restored = YamlNode.FromYaml(yaml)[0]; + // "a\n b\ncde" + + + // Disable line break normalization. + YamlNode.DefaultConfig.NormalizeLineBreaks = false; + yaml = node.ToYaml(); + + // line breaks are not nomalized + // "%YAML 1.2\r\n---\r\n|-2\r\n a\r\n b\rcde\r\n...\r\n" + + // Unless line breaks in YAML stream is preserved, original line + // breaks can be restored. + restored = YamlNode.FromYaml(yaml)[0]; + // "a\r\n b\rcde" // equivalent to the original + + yaml = yaml.Replace("\r\n", "\n").Replace("\r", "\n"); + restored = YamlNode.FromYaml(yaml)[0]; + // "a\n b\ncde" // original line breaks are lost + + + + + + If true, all s whose text expression contains line breaks + will be presented as double quoted texts, where the line break characters are escaped + by back slash as "\\n" and "\\r". The default is true. + + + The escaped line breaks makes the YAML stream hard to read, but is required to + prevent the line break characters be normalized by the YAML parser; the YAML + sepcification requires a YAML parser to normalize all line breaks that are not escaped + into a single line feed "\n" when it parse a YAML source. + + + If the preservation of line breaks are not required, set this value false. + + + Then, whenever it is possible, the s are presented + as literal style text, where the line breaks are not escaped. This results in + a much prettier output in the YAML stream. + + + + // A string containing line breaks "\n\r" and "\r". + YamlNode node = "a\r\n b\rcde"; + + // By default conversion, line breaks are escaped in a double quoted string. + var yaml = node.ToYaml(); + // %YAML 1.2 + // --- + // "a\r\n\ + // \ b\r\ + // cde" + // ... + + // "%YAML 1.2\r\n---\r\n\"a\\r\\n\\\r\n\ b\\r\\\r\ncde\"\r\n...\r\n" + + // Such a YAML stream is not pretty but is capable to preserve + // original line breaks even when the line breaks of the YAML stream + // are changed (for instance, by some editor) between serialization + // and deserialization. + var restored = YamlNode.FromYaml(yaml)[0]; + // "a\r\n b\rcde" // equivalent to the original + + yaml = yaml.Replace("\r\n", "\n").Replace("\r", "\n"); + var restored = YamlNode.FromYaml(yaml)[0]; + // "a\r\n b\rcde" // still equivalent to the original + + // By setting ExplicitlyPreserveLineBreaks false, the output becomes + // much prettier. + YamlNode.DefaultConfig.ExplicitlyPreserveLineBreaks = false; + yaml = node.ToYaml(); + // %YAML 1.2 + // --- + // |-2 + // a + // b + // cde + // ... + + // line breaks are nomalized to "\r\n" (= YamlNode.DefaultConfig.LineBreakForOutput) + // "%YAML 1.2\r\n---\r\n|-2\r\n a\r\n b\r\ncde\r\n...\r\n" + + // line breaks are nomalized to "\n" (= YamlNode.DefaultConfig.LineBreakForInput) + var restored = YamlNode.FromYaml(yaml)[0]; + // "a\n b\ncde" + + + // Disable line break normalization. + YamlNode.DefaultConfig.NormalizeLineBreaks = false; + yaml = node.ToYaml(); + + // line breaks are not nomalized + // "%YAML 1.2\r\n---\r\n|-2\r\n a\r\n b\rcde\r\n...\r\n" + + // Unless line breaks in YAML stream is preserved, original line + // breaks can be restored. + restored = YamlNode.FromYaml(yaml)[0]; + // "a\r\n b\rcde" // equivalent to the original + + yaml = yaml.Replace("\r\n", "\n").Replace("\r", "\n"); + restored = YamlNode.FromYaml(yaml)[0]; + // "a\n b\ncde" // original line breaks are lost + + + + + + Line break to be used when is presented in YAML stream. + "\r", "\r\n", "\n" are allowed. "\r\n" is defalut. + + + + // A string containing line breaks "\n\r" and "\r". + YamlNode node = "a\r\n b\rcde"; + + // By default conversion, line breaks are escaped in a double quoted string. + var yaml = node.ToYaml(); + // %YAML 1.2 + // --- + // "a\r\n\ + // \ b\r\ + // cde" + // ... + + // "%YAML 1.2\r\n---\r\n\"a\\r\\n\\\r\n\ b\\r\\\r\ncde\"\r\n...\r\n" + + // Such a YAML stream is not pretty but is capable to preserve + // original line breaks even when the line breaks of the YAML stream + // are changed (for instance, by some editor) between serialization + // and deserialization. + var restored = YamlNode.FromYaml(yaml)[0]; + // "a\r\n b\rcde" // equivalent to the original + + yaml = yaml.Replace("\r\n", "\n").Replace("\r", "\n"); + var restored = YamlNode.FromYaml(yaml)[0]; + // "a\r\n b\rcde" // still equivalent to the original + + // By setting ExplicitlyPreserveLineBreaks false, the output becomes + // much prettier. + YamlNode.DefaultConfig.ExplicitlyPreserveLineBreaks = false; + yaml = node.ToYaml(); + // %YAML 1.2 + // --- + // |-2 + // a + // b + // cde + // ... + + // line breaks are nomalized to "\r\n" (= YamlNode.DefaultConfig.LineBreakForOutput) + // "%YAML 1.2\r\n---\r\n|-2\r\n a\r\n b\r\ncde\r\n...\r\n" + + // line breaks are nomalized to "\n" (= YamlNode.DefaultConfig.LineBreakForInput) + var restored = YamlNode.FromYaml(yaml)[0]; + // "a\n b\ncde" + + + // Disable line break normalization. + YamlNode.DefaultConfig.NormalizeLineBreaks = false; + yaml = node.ToYaml(); + + // line breaks are not nomalized + // "%YAML 1.2\r\n---\r\n|-2\r\n a\r\n b\rcde\r\n...\r\n" + + // Unless line breaks in YAML stream is preserved, original line + // breaks can be restored. + restored = YamlNode.FromYaml(yaml)[0]; + // "a\r\n b\rcde" // equivalent to the original + + yaml = yaml.Replace("\r\n", "\n").Replace("\r", "\n"); + restored = YamlNode.FromYaml(yaml)[0]; + // "a\n b\ncde" // original line breaks are lost + + + + + + The YAML parser normalizes line breaks in a YAML stream to this value. + + "\n" is default, and is the only valid value in the YAML specification. "\r" and "\r\n" are + allowed in this library for convenience. + + To suppress normalization of line breaks by YAML parser, set + false, though it is also violate the YAML specification. + + + The YAML sepcification requires a YAML parser to normalize every line break that + is not escaped in a YAML stream, into a single line feed "\n" when it parse a YAML stream. + But this is not convenient in some cases, especially under Windows environment, where + the system default line break + is "\r\n" instead of "\n". + + This library provides two workarounds for this problem. + One is setting false. It disables the line break + normalization. The line breaks are serialized into a YAML stream as is and + those in the YAML stream are deserialized as is. + Another is setting "\r\n". Then, the YAML parser + normalizes all line breaks into "\r\n" instead of "\n". + Note that although these two options are useful in some cases, + they makes the YAML parser violate the YAML specification. + + + + // A string containing line breaks "\n\r" and "\r". + YamlNode node = "a\r\n b\rcde"; + + // By default conversion, line breaks are escaped in a double quoted string. + var yaml = node.ToYaml(); + // %YAML 1.2 + // --- + // "a\r\n\ + // \ b\r\ + // cde" + // ... + + // "%YAML 1.2\r\n---\r\n\"a\\r\\n\\\r\n\ b\\r\\\r\ncde\"\r\n...\r\n" + + // Such a YAML stream is not pretty but is capable to preserve + // original line breaks even when the line breaks of the YAML stream + // are changed (for instance, by some editor) between serialization + // and deserialization. + var restored = YamlNode.FromYaml(yaml)[0]; + // "a\r\n b\rcde" // equivalent to the original + + yaml = yaml.Replace("\r\n", "\n").Replace("\r", "\n"); + var restored = YamlNode.FromYaml(yaml)[0]; + // "a\r\n b\rcde" // still equivalent to the original + + // By setting ExplicitlyPreserveLineBreaks false, the output becomes + // much prettier. + YamlNode.DefaultConfig.ExplicitlyPreserveLineBreaks = false; + yaml = node.ToYaml(); + // %YAML 1.2 + // --- + // |-2 + // a + // b + // cde + // ... + + // line breaks are nomalized to "\r\n" (= YamlNode.DefaultConfig.LineBreakForOutput) + // "%YAML 1.2\r\n---\r\n|-2\r\n a\r\n b\r\ncde\r\n...\r\n" + + // line breaks are nomalized to "\n" (= YamlNode.DefaultConfig.LineBreakForInput) + var restored = YamlNode.FromYaml(yaml)[0]; + // "a\n b\ncde" + + + // Disable line break normalization. + YamlNode.DefaultConfig.NormalizeLineBreaks = false; + yaml = node.ToYaml(); + + // line breaks are not nomalized + // "%YAML 1.2\r\n---\r\n|-2\r\n a\r\n b\rcde\r\n...\r\n" + + // Unless line breaks in YAML stream is preserved, original line + // breaks can be restored. + restored = YamlNode.FromYaml(yaml)[0]; + // "a\r\n b\rcde" // equivalent to the original + + yaml = yaml.Replace("\r\n", "\n").Replace("\r", "\n"); + restored = YamlNode.FromYaml(yaml)[0]; + // "a\n b\ncde" // original line breaks are lost + + + + + + If true, tag for the root node is omitted by . + + + + + If true, the verbatim style of a tag, i.e. !< > is avoided as far as possible. + + + + + Add a custom tag resolution rule. + + + + + + + Type of value. + Tag for the value. + Pattern to match the value. + Method that decode value from + data after matching by . + Method that encode value to . + + + + Add an ability of instantiating an instance of a class that has no default constructer. + + Type of the object that is activated by this . + A delegate that creates an instance of . + + + var serializer= new YamlSerializer(); + + var yaml = + @"%YAML 1.2 + --- + !System.Drawing.SolidBrush + Color: Red + ... + "; + + SolidBrush b = null; + try { + b = (SolidBrush)serializer.Deserialize(yaml)[0]; + } catch(MissingMethodException) { + // SolidBrush has no default constructor! + } + + YamlNode.DefaultConfig.AddActivator<SolidBrush>(() => new SolidBrush(Color.Black)); + + // Now the serializer knows how to activate an instance of SolidBrush. + b = (SolidBrush)serializer.Deserialize(yaml)[0]; + + Assert.AreEqual(b.Color, Color.Red); + + + + + + Gets or sets CultureInfo with which the .NET native values are converted + to / from string. Currently, this is not to be changed from CultureInfo.InvariantCulture. + + + + + Abstract base class of YAML data nodes. + + See , and + for actual data classes. + + +

YAML data model

+ See http://yaml.org/ for the official definition of + Information Models of YAML. + + YAML data structure is defined as follows. + Note that this does not represents the text syntax of YAML text + but does logical data structure. + + + yaml-stream ::= yaml-document*
+ yaml-document ::= yaml-directive* yaml-node
+ yaml-directive ::= YAML-directive | TAG-directive | user-defined-directive
+ yaml-node ::= yaml-scalar | yaml-sequence | yaml-mapping
+ yaml-scalar ::= yaml-tag yaml-value
+ yaml-sequence ::= yaml-tag yaml-node*
+ yaml-mapping ::= yaml-tag ( yaml-node yaml-node )*
+ yaml-tag ::= yaml-global-tag yaml-local-tag
+ yaml-global-tag ::= "tag:" taggingEntity ":" specific [ "#" fragment ]
+ yaml-local-tag ::= "!" yaml-local-tag-name
+
+ + Namely, + + + A YAML stream consists of zero or more YAML documents.
+ A YAML documents have zero or more YAML directives and a root YAML node.
+ A YAML directive is either YAML-directive, TAG-directive or user-defined-directive.
+ A YAML node is either YAML scalar, YAML sequence or YAML mapping.
+ A YAML scalar consists of a YAML tag and a scalar value.
+ A YAML sequence consists of a YAML tag and zero or more child YAML nodes.
+ A YAML mapping cosists of a YAML tag and zero or more key/value pairs of YAML nodes.
+ A YAML tag is either a YAML global tag or a YAML local tag.
+ A YAML global tag starts with "tag:" and described in the "tag:" URI scheme defined in RFC4151.
+ A YAML local tag starts with "!" with a YAML local tag name
+
+ + + // Construct YAML node tree + YamlNode node = + new YamlSequence( // !!seq node + new YamlScalar("abc"), // !!str node + new YamlScalar("!!int", "123"), // !!int node + new YamlScalar("!!float", "1.23"), // !!float node + new YamlSequence( // nesting !!seq node + new YamlScalar("def"), + new YamlScalar("ghi") + ), + new YamlMapping( // !!map node + new YamlScalar("key1"), new YamlScalar("value1"), + new YamlScalar("key2"), new YamlScalar("value2"), + new YamlScalar("key3"), new YamlMapping( // nesting !!map node + new YamlScalar("value3key1"), new YamlScalar("value3value1") + ), + new YamlScalar("key4"), new YamlScalar("value4") + ) + ); + + // Convert it to YAML stream + string yaml = node.ToYaml(); + + // %YAML 1.2 + // --- + // - abc + // - 123 + // - 1.23 + // - - def + // - ghi + // - key1: value1 + // key2: value2 + // key3: + // value3key1: value3value1 + // key4: value4 + // ... + + // Load the YAML node from the YAML stream. + // Note that a YAML stream can contain several YAML documents each of which + // contains a root YAML node. + YamlNode[] nodes = YamlNode.FromYaml(yaml); + + // The only one node in the stream is the one we have presented above. + Assert.AreEqual(1, nodes.Length); + YamlNode resotred = nodes[0]; + + // Check if they are equal to each other. + Assert.AreEquel(node, restored); + + // Extract sub nodes. + var seq = (YamlSequence)restored; + var map = (YamlMapping)seq[4]; + var map2 = (YamlMapping)map[new YamlScalar("key3")]; + + // Modify the restored node tree + map2[new YamlScalar("value3key1")] = new YamlScalar("value3value1 modified"); + + // Now they are not equal to each other. + Assert.AreNotEquel(node, restored); + + +

YamlNode class

+ + is an abstract class that represents a YAML node. + + In reality, a is either , or + . + + All has property that denotes + the actual data type represented in the YAML node. + + Default Tag value for , or are + "tag:yaml.org,2002:str", "tag:yaml.org,2002:seq", "tag:yaml.org,2002:map". + + Global tags that starts with "tag:yaml.org,2002:" ( = + YamlNode.DefaultTagPrefix) are defined in the YAML tag repository at + http://yaml.org/type/. In this library, such a tags can be also + represented in a short form that starts with "!!", like "!!str", "!!seq" and "!!map". + Tags in the formal style and the shorthand form can be converted to each other by the static methods of + and . + In addition to these three basic tags, this library uses "!!null", "!!bool", "!!int", + "!!float" and "!!timestamp" tags, by default. + + s can be read from a YAML stream with , + , and + static methods. Since a YAML stream generally consist of multiple + YAML documents, each of which has a root YAML node, these methods return an array of + that is contained in the stream. + + s can be written to a YAML stream with , + , and + . + + The way of serialization can be configured in some aspects. The custom settings are specified + by an instance of class. The serialization methods introduced above has + overloaded styles that accepts instance to customize serialization. + It is also possible to change the default serialization method by modifying + YamlNode.DefaultConfig static property. + + A has property, which holds the string expression + of the node value. + + A implements IList<YamlNode> + interface to access the child nodes. + + implements + IDictionary<YamlNode,YamlNode> interface + to access the key/value pairs under the node. + +

Implicit conversion from C# native object to YamlScalar

+ + Implicit cast operators from , , , + and to is defined. Thus, anytime + is required in C# source, naked scalar value can be written. Namely, + methods of and accept such C# native types + as arguments in addition to types. + + + var map = new YamlMapping(); + map["Time"] = DateTime.Now; // implicitly converted to YamlScalar + Assert.IsTrue(map.ContainsKey(new YamlScalar("Time"))); + Assert.IsTrue(map.ContainsKey("Time")); // implicitly converted to YamlScalar + + +

Equality of YamlNodes

+ + Equality of s are evaluated on the content base. Different + objects that have the same content are evaluated to be equal. Use method for + equality evaluation. + + In detail, two s are logically equal to each other when the + and its child nodes have the same contents ( and ) + and their node graph topology is exactly same. + + + + YamlNode a1 = "a"; // implicit conversion + YamlNode a2 = "a"; // implicit conversion + YamlNode a3 = new YamlNode("!char", "a"); + YamlNode b = "b"; // implicit conversion + + Assert.IsTrue(a1 != a2); // different objects + Assert.IsTrue(a1.Equals(a2)); // different objects having same content + + Assert.IsFalse(a1.Equals(a3)); // Tag is different + Assert.IsFalse(a1.Equals(b)); // Value is different + + var s1 = new YamlMapping(a1, new YamlSequence(a1, a2)); + var s2 = new YamlMapping(a1, new YamlSequence(a2, a1)); + var s3 = new YamlMapping(a2, new YamlSequence(a1, a2)); + + Assert.IsFalse(s1.Equals(s2)); // node graph topology is different + Assert.IsFalse(s1.Equals(s3)); // node graph topology is different + Assert.IsTrue(s2.Equals(s3)); // different objects having same content and node graph topology + + +
+ + Example 2.27 in YAML 1.2 specification + + + // %YAML 1.2 + // --- + // !<tag:clarkevans.com,2002:invoice> + // invoice: 34843 + // date : 2001-01-23 + // bill-to: &id001 + // given : Chris + // family : Dumars + // address: + // lines: | + // 458 Walkman Dr. + // Suite #292 + // city : Royal Oak + // state : MI + // postal : 48046 + // ship-to: *id001 + // product: + // - sku : BL394D + // quantity : 4 + // description : Basketball + // price : 450.00 + // - sku : BL4438H + // quantity : 1 + // description : Super Hoop + // price : 2392.00 + // tax : 251.42 + // total: 4443.52 + // comments: + // Late afternoon is best. + // Backup contact is Nancy + // Billsmer @ 338-4338. + // ... + + var invoice = new YamlMapping( + "invoice", 34843, + "date", new DateTime(2001, 01, 23), + "bill-to", new YamlMapping( + "given", "Chris", + "family", "Dumars", + "address", new YamlMapping( + "lines", "458 Walkman Dr.\nSuite #292\n", + "city", "Royal Oak", + "state", "MI", + "postal", 48046 + ) + ), + "product", new YamlSequence( + new YamlMapping( + "sku", "BL394D", + "quantity", 4, + "description", "Basketball", + "price", 450.00 + ), + new YamlMapping( + "sku", "BL4438H", + "quantity", 1, + "description", "Super Hoop", + "price", 2392.00 + ) + ), + "tax", 251.42, + "total", 4443.52, + "comments", "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338." + ); + invoice["ship-to"] = invoice["bill-to"]; + invoice.Tag = "tag:clarkevans.com,2002:invoice"; + + invoice.ToYamlFile("invoice.yaml"); + // %YAML 1.2 + // --- + // !<tag:clarkevans.com,2002:invoice> + // invoice: 34843 + // date: 2001-01-23 + // bill-to: &A + // given: Chris + // family: Dumars + // address: + // lines: "458 Walkman Dr.\n\ + // Suite #292\n" + // city: Royal Oak + // state: MI + // postal: 48046 + // product: + // - sku: BL394D + // quantity: 4 + // description: Basketball + // price: !!float 450 + // - sku: BL4438H + // quantity: 1 + // description: Super Hoop + // price: !!float 2392 + // tax: 251.42 + // total: 4443.52 + // comments: Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338. + // ship-to: *A + // ... + + + +
+ + + Initialize a node. + + + + + YAML Tag for this node, which represents the type of node's value. + The property is returned in a shorthand style. + + + + + Serves as a hash function for a particular type. + Hash code is calculated using Tag and Value properties. + + Hash code + + + + Return the hash code. + The returned value will be cached until is called. + + Hash code + + + + Call this function when the content of the node is changed. + + + + + Returns true if is of same type as the and + its content is also logically same. + + + Two 's are logically equal when the and its child nodes + have the same contents ( and ) + and their node graph topology is exactly same as the other. + + + + var a1 = new YamlNode("a"); + var a2 = new YamlNode("a"); + var a3 = new YamlNode("!char", "a"); + var b = new YamlNode("b"); + + Assert.IsTrue(a1 != a2); // different objects + Assert.IsTrue(a1.Equals(a2)); // different objects having same content + + Assert.IsFalse(a1.Equals(a3)); // Tag is different + Assert.IsFalse(a1.Equals(b)); // Value is different + + var s1 = new YamlMapping(a1, new YamlSequence(a1, a2)); + var s2 = new YamlMapping(a1, new YamlSequence(a2, a1)); + var s3 = new YamlMapping(a2, new YamlSequence(a1, a2)); + + Assert.IsFalse(s1.Equals(s2)); // node graph topology is different + Assert.IsFalse(s1.Equals(s3)); // node graph topology is different + Assert.IsTrue(s2.Equals(s3)); // different objects having same content and node graph topology + + + Object to be compared. + True if the logically equals to the ; otherwise false. + + + + Returns true if is of same type as the and + its content is also logically same. + + Node to be compared. + Node repository holds the nodes that already appeared and + the corresponding node in the other node tree. + true if they are equal to each other. + + + + Returns true if is of same type as the and + its Tag is same as the node. It returns true for if they + both already appeared in the node trees and were compared. + + Node to be compared. + Node repository holds the nodes that already appeared and + the corresponding node in the other node tree. + true if they already appeared in the node tree and were compared. + true if they are equal to each other. + + + + Returns a that represents the current . + + A that represents the current + + + + Convert to a YAML text. + + YAML stream. + + + + Convert to a YAML text. + + YAML stream. + YAML configuration to customize serialization. + + + + Convert to a YAML text and save it to . + + to output. + + + + Convert to a YAML text and save it to . + + to output. + YAML configuration to customize serialization. + + + + Convert to a YAML text and save it to . + + to output. + + + + Convert to a YAML text and save it to . + + to output. + YAML configuration to customize serialization. + + + + Convert to a YAML text and save it to the file. + + Name of the file to output + + + + Convert to a YAML text and save it to the file. + + Name of the file to output + YAML configuration to customize serialization. + + + + Convert YAML text to a list of . + + YAML text + YAML nodes + + + + Convert YAML text to a list of . + + YAML text + YAML nodes + YAML configuration to customize serialization. + + + + Convert YAML text to a list of . + + from which YAML document is read. + YAML nodes + + + + Convert YAML text to a list of . + + from which YAML document is read. + YAML nodes + YAML configuration to customize serialization. + + + + Convert YAML text to a list of . + + from which YAML document is read. + YAML nodes + + + + Convert YAML text to a list of . + + from which YAML document is read. + YAML nodes + YAML configuration to customize serialization. + + + + Convert YAML text to a list of . + + YAML File Name + YAML nodes + + + + Convert YAML text to a list of . + + YAML File Name + YAML nodes + YAML configuration to customize serialization. + + + + Implicit conversion from string to . + + Value to be converted. + Conversion result. + + + + Implicit conversion from string to . + + Value to be converted. + Conversion result. + + + + Implicit conversion from string to . + + Value to be converted. + Conversion result. + + + + Implicit conversion from string to . + + Value to be converted. + Conversion result. + + + + Implicit conversion from to . + + Value to be converted. + Conversion result. + + + + Convert shorthand tag starting with "!!" to the formal style that starts with "tag:yaml.org,2002:". + + + When starts with "!!", it is converted into formal style. + Otherwise, is returned as is. + + + + var tag = YamlNode.DefaultTagPrefix + "int"; // -> "tag:yaml.org,2002:int" + tag = YamlNode.ShorthandTag(tag); // -> "!!int" + tag = YamlNode.ExpandTag(tag); // -> "tag:yaml.org,2002:int" + + + Tag in the shorthand style. + Tag in formal style. + + + + Convert a formal style tag that starts with "tag:yaml.org,2002:" to + the shorthand style that starts with "!!". + + + When contains YAML standard types, it is converted into !!xxx style. + Otherwise, is returned as is. + + + + var tag = YamlNode.DefaultTagPrefix + "int"; // -> "tag:yaml.org,2002:int" + tag = YamlNode.ShorthandTag(tag); // -> "!!int" + tag = YamlNode.ExpandTag(tag); // -> "tag:yaml.org,2002:int" + + + Tag in formal style. + Tag in compact style. + + + + Position in a YAML document, where the node appears. + Both and sets this property. + When the node appeared multiple times in the document, this property returns the position + where it appeared for the first time. + + + + + Position in a YAML document, where the node appears. + Both and sets this property. + When the node appeared multiple times in the document, this property returns the position + where it appeared for the first time. + + + + + Temporary data, transfering information between YamlRepresenter and YamlPresenter. + + + + + YAML Tag for this node, which represents the type of node's value. + + + + YAML standard types has tags in a form of "tag:yaml.org,2002:???". Well known tags are + tag:yaml.org,2002:null, tag:yaml.org,2002:bool, tag:yaml.org,2002:int, tag:yaml.org,2002:str, + tag:yaml.org,2002:map, tag:yaml.org,2002:seq, tag:yaml.org,2002:float and tag:yaml.org,2002:timestamp. + + + + + + Invoked when the node's content or its childrens' content was changed. + + + + + Gets YAML's default tag prefix. + + "tag:yaml.org,2002:" + + + + Gets or sets the default configuration to customize serialization of . + + + + + Remember the order of appearance of nodes. It also has ability of rewinding. + + + + + Represents a scalar node in a YAML document. + + + + var string_node = new YamlNode("abc"); + Assert.AreEqual("!!str", string_node.ShorthandTag()); + + var int_node1= new YamlNode(YamlNode.DefaultTagPrefix + "int", "1"); + Assert.AreEqual("!!int", int_node1.ShorthandTag()); + + // shorthand tag style can be specified + var int_node2= new YamlNode("!!int", "1"); + Assert.AreEqual(YamlNode.DefaultTagPrefix + "int", int_node1.Tag); + Assert.AreEqual("!!int", int_node1.ShorthandTag()); + + // or use implicit conversion + YamlNode int_node3 = 1; + + // YamlNodes Equals to another node when their values are equal. + Assert.AreEqual(int_node1, int_node2); + + // Of course, they are different if compaired by references. + Assert.IsTrue(int_node1 != int_node2); + + + + + + Create empty string node. + + + + + Initialize string node that has as its content. + + Value of the node. + + + + Create a scalar node with arbitral tag. + + Tag to the node. + Value of the node. + + + + Initialize an integer node that has as its content. + + + + + Initialize a float node that has as its content. + + + + + Initialize a bool node that has as its content. + + + + + Initialize a timestamp node that has as its content. + + + + + Implicit conversion from string to . + + Value to be converted. + Conversion result. + + + + Implicit conversion from string to . + + Value to be converted. + Conversion result. + + + + Implicit conversion from string to . + + Value to be converted. + Conversion result. + + + + Implicit conversion from string to . + + Value to be converted. + Conversion result. + + + + Implicit conversion from to . + + Value to be converted. + Conversion result. + + + + Call this function when the content of the node is changed. + + + + + Returns the hash code. + The returned value will be cached until is called. + + Hash code + + + + String expression of the node value. + + + + + When the node has YAML's standard scalar type, the native object corresponding to + it can be got from this property. To see if this property contains a valid data, + refer to . + + This property is not available. See . + + This property is available when . contains + an entry for the nodes tag and defines how to decode the property into native objects. + When this property is available, equality of the scalar node is evaluated by comparing the + properties by the language default equality operator. + + + + + Gets if contains a valid content. + + + + + Abstract base class of that have child nodes. + + and inherites from this class. + + + + + Calculate hash code from property and all child nodes. + The result is cached. + + Hash value for the object. + + + + Calculates the hash code for a collection object. This function is called recursively + on the child objects with the sub cache code repository for the nodes already appeared + in the node tree. + + The cache code for the path where this node was found. + Repository of the nodes that already appeared in the node tree. + Sub hash code for the nodes can be refered to from this dictionary. + + + + + Represents a mapping node in a YAML document. + Use IDictionary<YamlNode,YamlNode> interface to + manipulate child key/value pairs. + + + Child items can be accessed via IDictionary<YamlNode, YamlNode> interface. + + Note that mapping object can not contain multiple keys with same value. + + + + // Create a mapping. + var map1 = new YamlMapping( + // (key, value) pairs should be written sequential + new YamlScalar("key1"), new YamlScalar("value1"), + "key2", "value2" // implicitely converted to YamlScalar + ); + + // Refer to the mapping. + Assert.AreEqual( map1[new Scalar("key1")], new YamlScalar("value1") ); + Assert.AreEqual( map1["key1"], "value1" ); + + // Add an entry. + map1.Add( "key3", new YamlSequence( "value3a", "value3b" ) ); + + // Create another mapping. + var map2 = new YamlMapping( + "key1", "value1", + "key2", "value2", + "key3", new YamlSequence( "value3a", "value3b" ) + ); + + // Mappings are equal when they have objects that are equal to each other. + Assert.IsTrue( map1.Equals( map2 ) ); + + + + + + Calculates the hash code for a collection object. This function is called recursively + on the child objects with the sub cache code repository for the nodes already appeared + in the node tree. + + The cache code for the path where this node was found. + Repository of the nodes that already appeared in the node tree. + Sub hash code for the nodes can be refered to from this dictionary. + + + + + Create a YamlMapping that contains in it. + + + + // Create a mapping. + var map1 = new YamlMapping( + // (key, value) pairs should be written sequential + new YamlScalar("key1"), new YamlScalar("value1"), + new YamlScalar("key2"), new YamlScalar("value2") + ); + + + Even number of arguments are expected. + (key, value) pairs are written sequential. + + + + Enumerate child nodes. + + Inumerator that iterates child nodes + + + + Adds an element with the provided key and value. + + or is a null reference. + An element with the same key already exists. + The node to use as the key of the element to add. + The node to use as the value of the element to add. + + + + Determines whether the contains an element with the specified key. + + The key to locate in the . + is a null reference + true if the contains an element with the key that is equal to the specified value; otherwise, false. + + + + Removes the element with the specified key from the . + + The key of the element to remove. + true if the element is successfully removed; otherwise, false. This method also returns false if key was not found in the original . + + + + Gets the value associated with the specified key. + + The key whose value to get. + When this method returns, the value associated with the specified key, if the key is found; + otherwise, the default value for the type of the value parameter. This parameter is passed uninitialized. + true if the object that implements contains an element with the specified key; otherwise, false. + + + + Removes all entries from the . + + + + + Determines whether the contains a specific value. + + The object to locate in the . + true if item is found in the otherwise, false. + + + + Returns an enumerator that iterates through the . + + An enumerator that iterates through the . + + + + Gets an ICollection<YamlNode> containing the keys of the . + + + + + Gets an ICollection<YamlNode> containing the values of the . + + + + + Gets or sets the element with the specified key. + + The key of the element to get or set. + The element with the specified key. + key is a null reference + The property is retrieved and key is not found. + + + + Returns the number of entries in a . + + + + + Represents a sequence node in a YAML document. + Use IList<YamlNode> interface + to manipulate child nodes. + + + + + Create a sequence node that has as its child. + + Child nodes of the sequence. + + + + Performs application-defined tasks associated with freeing, releasing, or + resetting unmanaged resources. + + + + + Calculates the hash code for a collection object. This function is called recursively + on the child objects with the sub cache code repository for the nodes already appeared + in the node tree. + + The cache code for the path where this node was found. + Repository of the nodes that already appeared in the node tree. + Sub hash code for the nodes can be refered to from this dictionary. + + + + + Determines the index of a specific child node in the . + + + If an node appears multiple times in the sequence, the IndexOf method always returns the first instance found. + + The child node to locate in the . + The index of if found in the sequence; otherwise, -1. + + + + Inserts an item to the at the specified . + + The zero-based index at which should be inserted. + The node to insert into the . + is not a valid index in the + . + + If equals the number of items in the , + then is appended to the sequence. + The nodes that follow the insertion point move down to accommodate the new node. + + + + + Removes the item at the specified index. + + The zero-based index of the node to remove. + is not a valid index in the . + + The nodes that follow the removed node move up to occupy the vacated spot. + + + + + Adds an item to the . + + The node to add to the . + + + + Removes all nodes from the . + + + + + Determines whether a sequence contains a child node that equals to the specified + by using the default equality comparer. + + The node value to locate in the sequence. + true If the sequence contains an node that has the specified value; otherwise, false. + + + var seq = new YamlSequence(new YamlScalar("a")); + + // different object that has same value + Assert.IsTrue(seq.Contains(new YamlScalar("a"))); + + // different value + Assert.IsFalse(s.Contains(str("b"))); + + + + + + Copies the child nodes of the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . + The zero-based index in at which copying begins. + is a null reference. + is less than 0. + + array is multidimensional. + -or- + The number of elements in the source is greater than the available space from + to the end of the destination array. + + + + + Removes the first occurrence of a specific node from the . + + The node to remove from the . + true if was successfully removed from the ; otherwise, false. + This method also returns false if is not found in the original . + + + + + Returns an enumerator that iterates through the all child nodes. + + An enumerator that iterates through the all child nodes. + + + + Gets or sets the node at the specified index. + + The zero-based index of the node to get or set. + The node at the specified index. + is not a valid index in the ). + + This property provides the ability to access a specific node in the sequence by using the following syntax: mySequence[index]. + + + + + Gets the number of child nodes of the . + + The number of child nodes of the sequence. + + + + class has instance methods and , + with which C# native objects can be converted into / from YAML text without any preparations. + + var serializer = new YamlSerializer(); + object obj = GetObjectToSerialize(); + string yaml = serializer.Serialize(obj); + object restored = serializer.Deserialize(yaml); + Assert.AreEqual(obj, restored); + + + + +

What kind of objects can be serialized?

+ + can serialize / deserialize native C# objects of primitive types + (bool, char, int,...), enums, built-in non-primitive types (string, decimal), structures, + classes and arrays of these types. + + + On the other hand, it does not deal with IntPtr (which is a primitive type, though) and + pointer types (void*, int*, ...) because these types are, by their nature, not persistent. + + + + Classes without a default constructor can be deserialized only when the way of activating an instance + is explicitly specified by . + + + + object obj = new object[]{ + null, + "abc", + true, + 1, + (Byte)1, + 1.0, + "1", + new double[]{ 1.1, 2, -3 }, + new string[]{ "def", "ghi", "1" }, + new System.Drawing.Point(1,3), + new System.Drawing.SolidBrush(Color.Blue) + }; + + var serializer = new YamlSerializer(); + string yaml = serializer.Serialize(obj); + // %YAML 1.2 + // --- + // - null + // - abc + // - True + // - 1 + // - !System.Byte 1 + // - !!float 1 + // - "1" + // - !<!System.Double[]%gt; [1.1, 2, -3] + // - !<!System.String[]%gt; + // - def + // - ghi + // - !System.Drawing.Point 1, 3 + // - !System.Drawing.SolidBrush + // Color: Blue + // ... + + object restored; + try { + restored = YamlSerializer.Deserialize(yaml)[0]; + } catch(MissingMethodException) { + // default constructor is missing for SolidBrush + } + + // Let the library know how to activate an instance of SolidBrush. + YamlNode.DefaultConfig.AddActivator<System.Drawing.SolidBrush>( + () => new System.Drawing.SolidBrush(Color.Black /* dummy */)); + + // Then, all the objects can be restored correctly. + restored = serializer.Deserialize(yaml)[0]; + + + A YAML document generated by always have a %YAML directive and + explicit document start ("---") and end ("...") marks. + This allows several documents to be written in a single YAML stream. + + + var yaml = ""; + var serializer = new YamlSerializer(); + yaml += serializer.Serialize("a"); + yaml += serializer.Serialize(1); + yaml += serializer.Serialize(1.1); + // %YAML 1.2 + // --- + // a + // ... + // %YAML 1.2 + // --- + // 1 + // ... + // %YAML 1.2 + // --- + // 1.1 + // ... + + object[] objects = serializer.Deserialize(yaml); + // objects[0] == "a" + // objects[1] == 1 + // objects[2] == 1.1 + + + Since a YAML stream can consist of multiple YAML documents as above, + returns an array of . + + +

Serializing structures and classes

+ + For structures and classes, by default, all public fields and public properties are + serialized. Note that protected / private members are always ignored. + +

Serialization methods

+ + Readonly value-type members are also ignored because there is no way to + assign a new value to them on deserialization, while readonly class-type members + are serialized. When deserializing, instead of creating a new object and assigning it + to the member, the child members of such class instance are restored independently. + Such a deserializing method is refered to + YamlSerializeMethod.Content. + + + On the other hand, when writeable fields/properties are deserialized, new objects are + created by using the parameters in the YAML description and assiend to the fields/properties. + Such a deserializing method is refered to + YamlSerializeMethod.Assign. Writeable properties can be explicitly specified to use + YamlSerializeMethod.Content method for + deserialization, by adding to its definition. + + + Another type of serializing method is + YamlSerializeMethod.Binary. + This method is only applicable to an array-type field / property that contains + only value-type members. + + If serializing method is specified, + the member is never serialized nor deserialized. + + + public class Test1 + { + public int PublicProp { get; set; } // processed (by assign) + protected int ProtectedProp { get; set; } // Ignored + private int PrivateProp { get; set; } // Ignored + internal int InternalProp { get; set; } // Ignored + + public int PublicField; // processed (by assign) + protected int ProtectedField; // Ignored + private int PrivateField; // Ignored + internal int InternalField; // Ignored + + public List<string> ClassPropByAssign // processed (by assign) + { get; set; } + + public int ReadOnlyValueProp { get; private set; } // Ignored + public List<string> ReadOnlyClassProp // processed (by content) + { get; private set; } + + [YamlSerialize(YamlSerializeMethod.Content)] + public List<string> ClassPropByContent// processed (by content) + { get; set; } + + public int[] IntArrayField = // processed (by assign) + new int[10]; + + [YamlSerialize(YamlSerializeMethod.Binary)] + public int[] IntArrayFieldBinary = // processed (as binary) + new int[100]; + + [YamlSerialize(YamlSerializeMethod.Never)] + public int PublicPropHidden; // Ignored + + public Test1() + { + ClassPropByAssign = new List<string>(); + ReadOnlyClassProp = new List<string>(); + ClassPropByContent = new List<string>(); + } + } + + public void TestPropertiesAndFields1() + { + var test1 = new Test1(); + test1.ClassPropByAssign.Add("abc"); + test1.ReadOnlyClassProp.Add("def"); + test1.ClassPropByContent.Add("ghi"); + var rand = new Random(0); + for ( int i = 0; i < test1.IntArrayFieldBinary.Length; i++ ) + test1.IntArrayFieldBinary[i] = rand.Next(); + + var serializer = new YamlSerializer(); + string yaml = serializer.Serialize(test1); + // %YAML 1.2 + // --- + // !YamlSerializerTest.Test1 + // PublicProp: 0 + // ClassPropByAssign: + // Capacity: 4 + // ICollection.Items: + // - abc + // ReadOnlyClassProp: + // Capacity: 4 + // ICollection.Items: + // - def + // ClassPropByContent: + // Capacity: 4 + // ICollection.Items: + // - ghi + // PublicField: 0 + // IntArrayField: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + // IntArrayFieldBinary: |+2 + // Gor1XAwenmhGkU5ib9NxR11LXxp1iYlH5LH4c9hImTitWSB9Z78II2UvXSXV99A79fj6UBn3GDzbIbd9 + // yBDjAyslYm58iGd/NN+tVjuLRCg3cJBo+PWMbIWm9n4AEC0E7LKXWV5HXUNk7I13APEDWFMM/kWTz2EK + // s7LzFw2gBjpKugkmQJqIfinpQ1J1yqhhz/XjA3TBxDBsEuwrD+SNevQSqEC+/KRbwgE6D011ACMeyRt0 + // BOG6ZesRKCtL0YU6tSnLEpgKVBz+R300qD3/W0aZVk+1vHU+auzyGCGUaHCGd6dpRoEhXoIg2m3+AwJX + // EJ37T+TA9BuEPJtyGoq+crQMFQtXj1Zriz3HFbReclLvDdVpZlcOHPga/3+3Y509EHZ7UyT7H1xGeJxn + // eXPrDDb0Ul04MfZb4UYREOfR3HNzNTUYGRsIPUvHOEW7AaoplIfkVQp19DvGBrBqlP2TZ9atlWUHVdth + // 7lIBeIh0wiXxoOpCbQ7qVP9GkioQUrMkOcAJaad3exyZaOsXxznFCA== + // ... + } + + +

Default values of fields and properties

+ + is aware of + System.ComponentModel.DefaultValueAttribute. + So, when a member of a structure / class instance has a value that equals to the default value, + the member will not be written in the YAML text. + + It also checkes for the result of ShouldSerializeXXX method. For instance, just before serializing Font + property of some type, bool ShouldSerializeFont() method is called if exists. If the method returns false, + Font property will not be written in the YAML text. ShouldSerializeXXX method can be non-public. + + + using System.ComponentModel; + + public class Test2 + { + [DefaultValue(0)] + public int Default0 = 0; + + [DefaultValue("a")] + public string Defaulta = "a"; + + public int DynamicDefault = 0; + + bool ShouldSerializeDynamicDefault() + { + return Default0 != DynamicDefault; + } + } + + public void TestDefaultValue() + { + var test2 = new Test2(); + var serializer = new YamlSerializer(); + + // All properties have defalut values. + var yaml = serializer.Serialize(test2); + // %YAML 1.2 + // --- + // !YamlSerializerTest.Test2 {} + // ... + + test2.Defaulta = "b"; + yaml = serializer.Serialize(test2); + // %YAML 1.2 + // --- + // !YamlSerializerTest.Test2 + // Defaulta: b + // ... + + test2.Defaulta = "a"; + var yaml = serializer.Serialize(test2); + // %YAML 1.2 + // --- + // !YamlSerializerTest.Test2 {} + // ... + + test2.DynamicDefault = 1; + yaml = serializer.Serialize(test2); + // %YAML 1.2 + // --- + // !YamlSerializerTest.Test2 + // DynamicDefault: 1 + // ... + + test2.Default0 = 1; + yaml = serializer.Serialize(test2); + // %YAML 1.2 + // --- + // !YamlSerializerTest.Test2 + // Default0: 1 + // ... + } + + +

Collection classes

+ + If an object implements , or + the child objects are serialized as well its other public members. + Pseudproperty ICollection.Items or IDictionary.Entries appears to hold the child objects. + +

Multitime appearance of a same object

+ + preserve C# objects' graph structure. Namely, when a same objects are refered to + from several points in the object graph, the structure is correctly described in YAML text and restored objects + preserve the structure. can safely manipulate directly / indirectly self refering + objects, too. + + + public class TestClass + { + public List<TestClass> list = + new List<TestClass>(); + } + + public class ChildClass: TestClass + { + } + + void RecursiveObjectsTest() + { + var a = new TestClass(); + var b = new ChildClass(); + a.list.Add(a); + a.list.Add(a); + a.list.Add(b); + a.list.Add(a); + a.list.Add(b); + b.list.Add(a); + var serializer = new YamlSerializer(); + string yaml = serializer.Serialize(a); + // %YAML 1.2 + // --- + // &A !TestClass + // list: + // Capacity: 8 + // ICollection.Items: + // - *A + // - *A + // - &B !ChildClass + // list: + // Capacity: 4 + // ICollection.Items: + // - *A + // - *A + // - *B + // ... + + var restored = (TestClass)serializer.Deserialize(yaml)[0]; + Assert.IsTrue(restored == restored.list[0]); + Assert.IsTrue(restored == restored.list[1]); + Assert.IsTrue(restored == restored.list[3]); + Assert.IsTrue(restored == restored.list[5]); + Assert.IsTrue(restored.list[2] == restored.list[4]); + } + + + This is not the case if the object is . Same instances of + are repeatedly written in a YAML text and restored as different + instance of when deserialized, unless the content of the string + is extremely long (longer than 999 chars). + + + // 1000 chars + string long_str = + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"; + string short_str = "12345"; + object obj = new object[] { long_str, long_str, short_str, short_str }; + var serializer = new YamlSerializer(); + string yaml = serializer.Serialize(obj); + // %YAML 1.2 + // --- + // - &A 01234567890123456789012345678901234567890123456789 ... (snip) ... 789 + // - *A + // - "12345" + // - "12345" + // ... + + +

YAML text written / read by

+ + When serializing, intelligently uses various YAML 1.2 styles, + namely the block style, flow style, explicit mapping and implicit mapping, to maximize readability + of the YAML stream. + + + [Flags] + enum TestEnum: uint + { + abc = 1, + あいう = 2 + } + + public void TestVariousFormats() + { + var dict = new Dictionary<object, object>(); + dict.Add(new object[] { 1, "a" }, new object()); + object obj = new object[]{ + dict, + null, + "abc", + "1", + "a ", + "- a", + "abc\n", + "abc\ndef\n", + "abc\ndef\nghi", + new double[]{ 1.1, 2, -3, 3.12, 13.2 }, + new int[,] { { 1, 3}, {4, 5}, {10, 1} }, + new string[]{ "jkl", "mno\npqr" }, + new System.Drawing.Point(1,3), + TestEnum.abc, + TestEnum.abc | TestEnum.あいう, + }; + var config = new YamlConfig(); + config.ExplicitlyPreserveLineBreaks = false; + var serializer = new YamlSerializer(config); + string yaml = serializer.Serialize(obj); + + // %YAML 1.2 + // --- + // - !<!System.Collections.Generic.Dictionary%602[[System.Object,...],[System.Object,...]]> + // Keys: {} + // Values: {} + // IDictionary.Entries: + // ? - 1 + // - a + // : !System.Object {} + // - null + // - abc + // - "1" + // - "a " + // - "- a" + // - "abc\n" + // - |+2 + // abc + // def + // - |-2 + // abc + // def + // ghi + // - !<!System.Double[]> [1.1, 2, -3, 3.12, 13.2] + // - !<!System.Int32[,]> [[1, 3], [4, 5], [10, 1]] + // - !<!System.String[]> + // - jkl + // - |-2 + // mno + // pqr + // - !System.Drawing.Point 1, 3 + // - !TestEnum abc + // - !TestEnum abc, あいう + // ... + } + + + When deserializing, accepts any valid YAML 1.2 documents. + TAG directives, comments, flow / block styles, implicit / explicit mappings can be freely used + to express valid C# objects. Namely, the members of the array can be given eighter in a flow style + or in a block style. + + + By default, outputs a YAML stream with line break of "\r\n". + This can be customized either by setting YamlNode.DefaultConfig.LineBreakForOutput or + by giving an instance of to the + constructor. + + + + var serializer = new YamlSerializer(); + var yaml = serializer.Serialize("abc"); + // %YAML 1.2\r\n // line breaks are explicitly shown in this example + // ---\r\n + // abc\r\n + // ...\r\n + + var config = new YamlConfig(); + config.LineBreakForOutput = "\n"; + serializer = new YamlSerializer(config); + var yaml = serializer.Serialize("abc"); + // %YAML 1.2\n + // ---\n + // abc\n + // ...\n + + YamlNode.DefaultConfig.LineBreakForOutput = "\n"; + + var serializer = new YamlSerializer(); + serializer = new YamlSerializer(); + var yaml = serializer.Serialize("abc"); + // %YAML 1.2\n + // ---\n + // abc\n + // ...\n + + +

Line breaks in YAML text

+ + By default, line breaks in multi line values are explicitly presented as escaped style. + Although, this makes the resulting YAML stream hard to read, it is necessary to preserve + the exact content of the string because the YAML specification requires that a YAML parser + must normalize evely line break that is not escaped in a YAML document to be a single line + feed "\n" when deserializing. + + In order to have the YAML documents easy to be read, set + YamlConfig.ExplicitlyPreserveLineBreaks + false. Then, the multiline values of will be written in literal style. + + Of course, it makes all the line breaks to be normalized into a single line feeds "\n". + + + var serializer = new YamlSerializer(); + var text = "abc\r\n def\r\nghi\r\n"; + // abc + // def + // ghi + + // By default, line breaks explicitly appears in escaped form. + var yaml = serializer.Serialize(text); + // %YAML 1.2 + // --- + // "abc\r\n\ + // \ def\r\n\ + // ghi\r\n" + // ... + + // Original line breaks are preserved + var restored = (string)serializer.Deserialize(yaml)[0]; + // "abc\r\n def\r\nghi\r\n" + + + YamlNode.DefaultConfig.ExplicitlyPreserveLineBreaks = false; + + // Literal style is easier to be read. + var yaml = serializer.Serialize(text); + // %YAML 1.2 + // --- + // |+2 + // abc + // def + // ghi + // ... + + // Original line breaks are lost. + var restored = (string)serializer.Deserialize(yaml)[0]; + // "abc\n def\nghi\n" + + + This library offers two work arounds for this problem, although both of which + violates the official behavior of a YAML parser defined in the YAML specification. + + One is to set YamlConfig.LineBreakForInput + to be "\r\n". Then, the YAML parser normalizes all line breaks into "\r\n" instead of "\n". + + The other is to set YamlConfig.NormalizeLineBreaks + false. It disables the line break normalization both at output and at input. Namely, the line breaks are + written and read as-is when serialized / deserialized. + + + var serializer = new YamlSerializer(); + + // text with mixed line breaks + var text = "abc\r def\nghi\r\n"; + // abc\r // line breaks are explicitly shown in this example + // def\n + // ghi\r\n + + YamlNode.DefaultConfig.ExplicitlyPreserveLineBreaks = false; + + // By default, all line breaks are normalized to "\r\n" when serialized. + var yaml = serializer.Serialize(text); + // %YAML 1.2\r\n + // ---\r\n + // |+2\r\n + // abc\r\n + // def\r\n + // ghi\r\n + // ...\r\n + + // When deserialized, line breaks are normalized into "\n". + var restored = (string)serializer.Deserialize(yaml)[0]; + // "abc\n def\nghi\n" + + // Line breaks are normalized into "\r\n" instead of "\n". + YamlNode.DefaultConfig.LineBreakForInput = "\r\n"; + restored = (string)serializer.Deserialize(yaml)[0]; + // "abc\r\n def\r\nghi\r\n" + + // Line breaks are written as is, + YamlNode.DefaultConfig.NormalizeLineBreaks = false; + var yaml = serializer.Serialize(text); + // %YAML 1.2\r\n + // ---\r\n + // |+2\r\n + // abc\r + // def\n + // ghi\r\n + // ...\r\n + + // and are read as is. + restored = (string)serializer.Deserialize(yaml)[0]; + // "abc\r def\nghi\r\n" + + // Note that when the line breaks of YAML stream is changed + // between serialization and deserialization, the original + // line breaks are lost. + yaml = yaml.Replace("\r\n", "\n").Replace("\r", "\n"); + restored = (string)serializer.Deserialize(yaml)[0]; + // "abc\n def\nghi\n" + + + It is repeatedly stated that although these two options are useful in many situation, + they makes the YAML parser violate the YAML specification. + +
+
+ + + Initialize an instance of that obeys + . + + + + + Initialize an instance of with custom . + + Custom to customize serialization. + + + + Serialize C# object into YAML text. + + Object to be serialized. + YAML text. + + + + Serialize C# object into YAML text and write it into a . + + A to which the YAML text is written. + Object to be serialized. + + + + Serialize C# object into YAML text and write it into a . + + A to which the YAML text is written. + Object to be serialized. + + + + Serialize C# object into YAML text and save it into a file named as . + + A file name to which the YAML text is written. + Object to be serialized. + + + + Deserialize C# object(s) from a YAML text. Since a YAML text can contain multiple YAML documents, each of which + represents a C# object, the result is returned as an array of . + + A YAML text from which C# objects are deserialized. + Expected type(s) of the root object(s) in the YAML stream. + C# object(s) deserialized from YAML text. + + + + Deserialize C# object(s) from a YAML text in a . + Since a YAML text can contain multiple YAML documents, each of which + represents a C# object, the result is returned as an array of . + + A that contains YAML text from which C# objects are deserialized. + Expected type(s) of the root object(s) in the YAML stream. + C# object(s) deserialized from YAML text. + + + + Deserialize C# object(s) from a YAML text in a . + Since a YAML text can contain multiple YAML documents, each of which + represents a C# object, the result is returned as an array of . + + A that contains YAML text from which C# objects are deserialized. + Expected type(s) of the root object(s) in the YAML stream. + C# object(s) deserialized from YAML text. + + + + Deserialize C# object(s) from a YAML text in a file named as . + Since a YAML text can contain multiple YAML documents, each of which + represents a C# object, the result is returned as an array of . + + The name of a file that contains YAML text from which C# objects are deserialized. + Expected type(s) of the root object(s) in the YAML stream. + C# object(s) deserialized from YAML text. + + + + Add .DoFunction method to string + + + + + Short expression of string.Format(XXX, arg1, arg2, ...) + + + + + + + + Specify the way to store a property or field of some class or structure. + See for detail. + + + + + + + The property / field will not be stored. + + + + + When restored, new object is created by using the parameters in + the YAML data and assigned to the property / field. When the + property / filed is writeable, this is the default. + + + + + Only valid for a property / field that has a class or struct type. + When restored, instead of recreating the whole class or struct, + the members are independently restored. When the property / field + is not writeable this is the default. + + + + + Only valid for a property / field that has an array type of a + some value type. The content of the array is stored in a binary + format encoded in base64 style. + + + + + Specify the way to store a property or field of some class or structure. + + See for detail. + + + + + + + Specify the way to store a property or field of some class or structure. + + See for detail. + + + + + + - Never: The property / field will not be stored. + + + - Assign: When restored, new object is created by using the parameters in + the YAML data and assigned to the property / field. When the + property / filed is writeable, this is the default. + + + - Content: Only valid for a property / field that has a class or struct type. + When restored, instead of recreating the whole class or struct, + the members are independently restored. When the property / field + is not writeable this is the default. + + + - Binary: Only valid for a property / field that has an array type of a + some value type. The content of the array is stored in a binary + format encoded in base64 style. + + + + + + Type 関連のユーティリティメソッド + + + + Type type; + AttributeType attr = type.GetAttribute<AttributeType>(); + + PropertyInfo propInfo; + AttributeType attr = propInfo.GetAttribute<AttributeType>(); + + string name; + Type type = TypeUtils.GetType(name); // search from all assembly loaded + + + + + + + + Type や PropertyInfo, FieldInfo から指定された型の属性を取り出して返す + 複数存在した場合には最後の値を返す + 存在しなければ null を返す + + 取り出したい属性の型 + 取り出した属性値 + + + + 現在ロードされているすべてのアセンブリから name という名の型を探して返す + + + + + + + Check if the type is a ValueType and does not contain any non ValueType members. + + + + + + + Returnes true if the specified is a struct type. + + to be analyzed. + true if the specified is a struct type; otehrwise false. + + + + Compare two objects to see if they are equal or not. Null is acceptable. + + + + + + + + Return if an object is a numeric value. + + Any object to be tested. + True if object is a numeric value. + + + + Cast an object to a specified numeric type. + + Any object + Numric type + Numeric value or null if the object is not a numeric value. + + + + Cast boxed numeric value to double + + boxed numeric value + Numeric value in double. Double.Nan if obj is not a numeric value. + + + + Check if type is fully public or not. + Nested class is checked if all declared types are public. + + + + + + + Equality comparer that uses Object.ReferenceEquals(x, y) to compare class values. + + + + + + Determines whether two objects of type T are equal by calling Object.ReferenceEquals(x, y). + + The first object to compare. + The second object to compare. + true if the specified objects are equal; otherwise, false. + + + + Serves as a hash function for the specified object for hashing algorithms and + data structures, such as a hash table. + + The object for which to get a hash code. + A hash code for the specified object. + is null. + + + + Returns a default equality comparer for the type specified by the generic argument. + + The default instance of the System.Collections.Generic.EqualityComparer<T> + class for type T. + + + + Calculate hash code by reference. + + + + + + Initializes a new instance of the HashCodeByRef<T> class. + + + + + Calculate hash code by reference. + + + + + Represents the way to automatically resolve Tag from the Value of a YamlScalar. + + + + + Create TagResolver with default resolution rules. + + + + + Add default tag resolution rules to the rule list. + + + + + List of tag resolution rules. + + + + + Add a tag resolution rule that is invoked when matches + the Value of a node. + + The tag is resolved to and is + invoked when actual value of type is extracted from + the node text. + + + Surround sequential calls of this function by / + pair to avoid invoking slow internal calculation method many times. + + + + BeginUpdate(); // to avoid invoking slow internal calculation method many times. + Add( ... ); + Add( ... ); + Add( ... ); + Add( ... ); + EndUpdate(); // automaticall invoke internal calculation method + + + + + + + + + Supress invoking slow internal calculation method when + called. + + BeginUpdate / can be called nestedly. + + + + + Quit to supress invoking slow internal calculation method when + called. + + + + + Execute tag resolution and returns automatically determined tag value from . + + Node text with which automatic tag resolution is done. + Automatically determined tag value . + + + + Decode and returns actual value in C# object. + + Node to be decoded. + Decoded value. + True if decoded successfully. + + + + Extend string object to have .DoubleQuoteEscape() / .DoubleQuoteUnescape(). + + + + + Escape control codes with YAML double quoted string format. + + + + + + + Unescape control codes escaped with YAML double quoted string format. + + + + + + + YAML style double quoted string escape / unescape. + + + + + Initialize tables + + + + + Escape control codes, double quotations, backslashes in the YAML double quoted string format + + + + + Unescape control codes, double quotations, backslashes escape in the YAML double quoted string format + + + + diff --git a/lib/yaml/YamlSerializer.dll b/lib/yaml/YamlSerializer.dll new file mode 100644 index 0000000000000000000000000000000000000000..057f2c4e6be2c097ad87826bd8aede1e73cf9630 GIT binary patch literal 139264 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

Ib9ty)Y1J7=$xURs9}cs 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 G;Qs}$e&JXE literal 0 HcmV?d00001 diff --git a/src/Orchard.Tests/Environment/Configuration/AppDataFolderTests.cs b/src/Orchard.Tests/Environment/Configuration/AppDataFolderTests.cs index d2895ed73..bbde69cee 100644 --- a/src/Orchard.Tests/Environment/Configuration/AppDataFolderTests.cs +++ b/src/Orchard.Tests/Environment/Configuration/AppDataFolderTests.cs @@ -77,5 +77,19 @@ namespace Orchard.Tests.Environment.Configuration { _appDataFolder.CreateFile("alpha\\omega\\foo\\bar.txt", "quux"); Assert.That(Directory.Exists(Path.Combine(_tempFolder, "alpha\\omega\\foo")), Is.True); } + + + [Test] + public void FilesCanBeReadBack() { + _appDataFolder.CreateFile("alpha\\gamma\\foo\\bar.txt", @" +this is +a +test"); + var text = _appDataFolder.ReadFile("alpha\\gamma\\foo\\bar.txt"); + Assert.That(text, Is.EqualTo(@" +this is +a +test")); + } } } diff --git a/src/Orchard.Tests/Environment/Configuration/DefaultTenantManagerTests.cs b/src/Orchard.Tests/Environment/Configuration/DefaultTenantManagerTests.cs new file mode 100644 index 000000000..19b2b4382 --- /dev/null +++ b/src/Orchard.Tests/Environment/Configuration/DefaultTenantManagerTests.cs @@ -0,0 +1,76 @@ +using System.IO; +using System.Linq; +using NUnit.Framework; +using Orchard.Environment.Configuration; + +namespace Orchard.Tests.Environment.Configuration { + [TestFixture] + public class ShellSettingsLoaderTests { + private string _tempFolder; + private AppDataFolder _appData; + + [SetUp] + public void Init() { + _appData = new AppDataFolder(); + _tempFolder = Path.GetTempFileName(); + File.Delete(_tempFolder); + _appData.SetBasePath(_tempFolder); + } + [TearDown] + public void Term() { + Directory.Delete(_tempFolder, true); + } + + [Test] + public void SingleSettingsFileShouldComeBackAsExpected() { + + _appData.CreateFile("Sites\\Default\\Settings.txt", "Name: Default\r\nDataProvider: SQLite\r\nDataConnectionString: something else"); + + IShellSettingsLoader loader = new ShellSettingsLoader(_appData); + var settings = loader.LoadSettings().Single(); + Assert.That(settings, Is.Not.Null); + Assert.That(settings.Name, Is.EqualTo("Default")); + Assert.That(settings.DataProvider, Is.EqualTo("SQLite")); + Assert.That(settings.DataConnectionString, Is.EqualTo("something else")); + } + + + [Test] + public void MultipleFilesCanBeDetected() { + + _appData.CreateFile("Sites\\Default\\Settings.txt", "Name: Default\r\nDataProvider: SQLite\r\nDataConnectionString: something else"); + _appData.CreateFile("Sites\\Another\\Settings.txt", "Name: Another\r\nDataProvider: SQLite2\r\nDataConnectionString: something else2"); + + IShellSettingsLoader loader = new ShellSettingsLoader(_appData); + var settings = loader.LoadSettings(); + Assert.That(settings.Count(), Is.EqualTo(2)); + + var def = settings.Single(x => x.Name == "Default"); + Assert.That(def.Name, Is.EqualTo("Default")); + Assert.That(def.DataProvider, Is.EqualTo("SQLite")); + Assert.That(def.DataConnectionString, Is.EqualTo("something else")); + + var alt = settings.Single(x => x.Name == "Another"); + Assert.That(alt.Name, Is.EqualTo("Another")); + Assert.That(alt.DataProvider, Is.EqualTo("SQLite2")); + Assert.That(alt.DataConnectionString, Is.EqualTo("something else2")); + } + + [Test] + public void NewSettingsCanBeStored() { + _appData.CreateFile("Sites\\Default\\Settings.txt", "Name: Default\r\nDataProvider: SQLite\r\nDataConnectionString: something else"); + + IShellSettingsLoader loader = new ShellSettingsLoader(_appData); + var foo = new ShellSettings {Name = "Foo", DataProvider = "Bar", DataConnectionString = "Quux"}; + + Assert.That(loader.LoadSettings().Count(), Is.EqualTo(1)); + loader.SaveSettings(foo); + Assert.That(loader.LoadSettings().Count(), Is.EqualTo(2)); + + var text = File.ReadAllText(_appData.MapPath("Sites\\Foo\\Settings.txt")); + Assert.That(text, Is.StringContaining("Foo")); + Assert.That(text, Is.StringContaining("Bar")); + Assert.That(text, Is.StringContaining("Quux")); + } + } +} diff --git a/src/Orchard.Tests/Orchard.Tests.csproj b/src/Orchard.Tests/Orchard.Tests.csproj index 22e917d4a..f6d2ae1f6 100644 --- a/src/Orchard.Tests/Orchard.Tests.csproj +++ b/src/Orchard.Tests/Orchard.Tests.csproj @@ -153,6 +153,7 @@ + diff --git a/src/Orchard/Environment/Configuration/AppDataFolder.cs b/src/Orchard/Environment/Configuration/AppDataFolder.cs index fd235f784..529790164 100644 --- a/src/Orchard/Environment/Configuration/AppDataFolder.cs +++ b/src/Orchard/Environment/Configuration/AppDataFolder.cs @@ -15,6 +15,7 @@ namespace Orchard.Environment.Configuration { IEnumerable ListDirectories(string path); void CreateFile(string path, string content); + string ReadFile(string path); void DeleteFile(string path); string CreateDirectory(string path); @@ -26,7 +27,6 @@ namespace Orchard.Environment.Configuration { /// void SetBasePath(string basePath); string MapPath(string path); - } public class AppDataFolder : IAppDataFolder { @@ -44,6 +44,10 @@ namespace Orchard.Environment.Configuration { File.WriteAllText(filePath, content); } + public string ReadFile(string path) { + return File.ReadAllText(Path.Combine(_basePath, path)); + } + public void DeleteFile(string path) { File.Delete(Path.Combine(_basePath, path)); } diff --git a/src/Orchard/Environment/Configuration/DefaultTenantManager.cs b/src/Orchard/Environment/Configuration/DefaultTenantManager.cs new file mode 100644 index 000000000..237c36f87 --- /dev/null +++ b/src/Orchard/Environment/Configuration/DefaultTenantManager.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Yaml.Serialization; +using Orchard.Localization; + +namespace Orchard.Environment.Configuration { + public class DefaultTenantManager : ITenantManager { + private readonly IAppDataFolder _appDataFolder; + Localizer T { get; set; } + + public DefaultTenantManager(IAppDataFolder appDataFolder) { + _appDataFolder = appDataFolder; + T = NullLocalizer.Instance; + } + + IEnumerable ITenantManager.LoadSettings() { + return LoadSettings().ToArray(); + } + + void ITenantManager.SaveSettings(IShellSettings settings) { + if (settings == null) + throw new ArgumentException(T("There are no settings to save.").ToString()); + if (string.IsNullOrEmpty(settings.Name)) + throw new ArgumentException(T("Settings \"Name\" is not set.").ToString()); + + var filePath = Path.Combine(Path.Combine("Sites", settings.Name), "Settings.txt"); + _appDataFolder.CreateFile(filePath, ComposeSettings(settings)); + } + + IEnumerable LoadSettings() { + var filePaths = _appDataFolder + .ListDirectories("Sites") + .SelectMany(path => _appDataFolder.ListFiles(path)) + .Where(path => string.Equals(Path.GetFileName(path), "Settings.txt", StringComparison.OrdinalIgnoreCase)); + + foreach (var filePath in filePaths) { + yield return ParseSettings(_appDataFolder.ReadFile(filePath)); + } + } + + class Content { + public string Name { get; set; } + public string DataProvider { get; set; } + public string DataConnectionString { get; set; } + } + + static IShellSettings ParseSettings(string text) { + var ser = new YamlSerializer(); + var content = ser.Deserialize(text, typeof(Content)).Cast().Single(); + return new ShellSettings { + Name = content.Name, + DataProvider = content.DataProvider, + DataConnectionString = content.DataConnectionString, + DataPrefix = content.DataPrefix, + }; + } + + static string ComposeSettings(IShellSettings shellSettings) { + if (shellSettings == null) + return ""; + + var ser = new YamlSerializer(); + return ser.Serialize(new Content { + Name = shellSettings.Name, + DataProvider = shellSettings.DataProvider, + DataConnectionString = shellSettings.DataConnectionString + }); + } + } +} diff --git a/src/Orchard/Environment/Configuration/ITenantManager.cs b/src/Orchard/Environment/Configuration/ITenantManager.cs new file mode 100644 index 000000000..67da12e5b --- /dev/null +++ b/src/Orchard/Environment/Configuration/ITenantManager.cs @@ -0,0 +1,8 @@ +using System.Collections.Generic; + +namespace Orchard.Environment.Configuration { + public interface ITenantManager { + IEnumerable LoadSettings(); + void SaveSettings(IShellSettings settings); + } +} \ No newline at end of file diff --git a/src/Orchard/Environment/Configuration/ShellSettings.cs b/src/Orchard/Environment/Configuration/ShellSettings.cs index fc84ab2d7..342aef8b5 100644 --- a/src/Orchard/Environment/Configuration/ShellSettings.cs +++ b/src/Orchard/Environment/Configuration/ShellSettings.cs @@ -1,13 +1,15 @@ namespace Orchard.Environment.Configuration { public interface IShellSettings { - string Name { get; set; } - string DataProvider { get; set; } - string DataConnectionString { get; set; } + string Name { get; } + string DataProvider { get; } + string DataConnectionString { get; } + string DataPrefix { get; } } public class ShellSettings : IShellSettings { public string Name { get; set; } public string DataProvider { get; set; } public string DataConnectionString { get; set; } + public string DataPrefix { get; set; } } } diff --git a/src/Orchard/Environment/Configuration/ShellSettingsLoader.cs b/src/Orchard/Environment/Configuration/ShellSettingsLoader.cs deleted file mode 100644 index 81a7a8091..000000000 --- a/src/Orchard/Environment/Configuration/ShellSettingsLoader.cs +++ /dev/null @@ -1,93 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Web.Hosting; -using Orchard.Localization; -using Yaml.Grammar; - -namespace Orchard.Environment.Configuration { - public interface IShellSettingsLoader { - IEnumerable LoadSettings(); - void SaveSettings(IShellSettings settings); - } - - public class ShellSettingsLoader : IShellSettingsLoader { - private readonly IAppDataFolder _appDataFolder; - Localizer T { get; set; } - - public ShellSettingsLoader(IAppDataFolder appDataFolder) { - _appDataFolder = appDataFolder; - T = NullLocalizer.Instance; - } - - IEnumerable IShellSettingsLoader.LoadSettings() { - return LoadSettings().ToArray(); - } - - public void SaveSettings(IShellSettings settings) { - if (settings == null) - throw new ArgumentException(T("There are no settings to save.").ToString()); - if (string.IsNullOrEmpty(settings.Name)) - throw new ArgumentException(T("Settings \"Name\" is not set.").ToString()); - - var settingsFile = Path.Combine(Path.Combine("Sites", settings.Name), "Settings.txt"); - _appDataFolder.CreateFile(settingsFile, ComposeSettings(settings)); - } - - IEnumerable LoadSettings() { - foreach (var yamlDocument in LoadFiles()) { - yield return ParseSettings(yamlDocument); - } - } - - IEnumerable LoadFiles() { - var sitePaths = _appDataFolder - .ListDirectories("Sites") - .SelectMany(path => _appDataFolder.ListFiles(path)) - .Where(path => string.Equals(Path.GetFileName(path), "Settings.txt", StringComparison.OrdinalIgnoreCase)); - - foreach (var sitePath in sitePaths) { - var yamlStream = YamlParser.Load(_appDataFolder.MapPath(sitePath)); - yield return yamlStream.Documents.Single(); - } - } - - static IShellSettings ParseSettings(YamlDocument document) { - var mapping = (Mapping)document.Root; - var fields = mapping.Entities - .Where(x => x.Key is Scalar) - .ToDictionary(x => ((Scalar)x.Key).Text, x => x.Value); - - return new ShellSettings { - Name = GetValue(fields, "Name"), - DataProvider = GetValue(fields, "DataProvider"), - DataConnectionString = GetValue(fields, "DataConnectionString") - }; - } - - static string GetValue( - IDictionary fields, - string key) { - - DataItem value; - return fields.TryGetValue(key, out value) ? value.ToString() : null; - } - - static string ComposeSettings(IShellSettings shellSettings) { - if (shellSettings == null) - return ""; - - var settingsBuilder = new StringBuilder(); - - settingsBuilder.AppendLine(string.Format("Name: {0}", shellSettings.Name)); - settingsBuilder.AppendLine(string.Format("DataProvider: {0}", shellSettings.DataProvider)); - - if (!string.IsNullOrEmpty(shellSettings.DataConnectionString)) - settingsBuilder.AppendLine(string.Format("DataConnectionString: {0}", shellSettings.DataConnectionString)); - - return settingsBuilder.ToString(); - } - } -} diff --git a/src/Orchard/Orchard.csproj b/src/Orchard/Orchard.csproj index 105c385cf..c80cc21dc 100644 --- a/src/Orchard/Orchard.csproj +++ b/src/Orchard/Orchard.csproj @@ -101,6 +101,10 @@ False ..\..\lib\yaml\Yaml.dll + + False + ..\..\lib\yaml\YamlSerializer.dll + From 7172a784c07c44ae51a852a837e7ddf83c39cd01 Mon Sep 17 00:00:00 2001 From: Louis DeJardin Date: Wed, 7 Apr 2010 15:41:43 -0700 Subject: [PATCH 2/9] Fixing an incomplete save/merge for previous commit --HG-- branch : dev --- .../Setup/SetupControllerTests.cs | 2 +- .../Configuration/DefaultTenantManagerTests.cs | 8 ++++---- .../Environment/DefaultOrchardHostTests.cs | 4 ++-- src/Orchard.Tests/Orchard.Framework.Tests.csproj | 2 +- .../Orchard.Setup/Controllers/SetupController.cs | 8 ++++---- .../Configuration/DefaultTenantManager.cs | 12 +++++++----- src/Orchard/Environment/DefaultOrchardHost.cs | 8 ++++---- src/Orchard/Environment/OrchardStarter.cs | 5 +---- src/Orchard/Orchard.Framework.csproj | 3 ++- 9 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/Orchard.Tests.Modules/Setup/SetupControllerTests.cs b/src/Orchard.Tests.Modules/Setup/SetupControllerTests.cs index 372bbb731..f8124f950 100644 --- a/src/Orchard.Tests.Modules/Setup/SetupControllerTests.cs +++ b/src/Orchard.Tests.Modules/Setup/SetupControllerTests.cs @@ -43,7 +43,7 @@ namespace Orchard.Tests.Modules.Setup { //builder.Register().As(); //builder.Register().As(); //builder.Register().As(); - //builder.Register().As(); + //builder.Register().As(); //builder.Register().As(); //_container = builder.Build(); } diff --git a/src/Orchard.Tests/Environment/Configuration/DefaultTenantManagerTests.cs b/src/Orchard.Tests/Environment/Configuration/DefaultTenantManagerTests.cs index 19b2b4382..650dab337 100644 --- a/src/Orchard.Tests/Environment/Configuration/DefaultTenantManagerTests.cs +++ b/src/Orchard.Tests/Environment/Configuration/DefaultTenantManagerTests.cs @@ -5,7 +5,7 @@ using Orchard.Environment.Configuration; namespace Orchard.Tests.Environment.Configuration { [TestFixture] - public class ShellSettingsLoaderTests { + public class DefaultTenantManagerTests { private string _tempFolder; private AppDataFolder _appData; @@ -26,7 +26,7 @@ namespace Orchard.Tests.Environment.Configuration { _appData.CreateFile("Sites\\Default\\Settings.txt", "Name: Default\r\nDataProvider: SQLite\r\nDataConnectionString: something else"); - IShellSettingsLoader loader = new ShellSettingsLoader(_appData); + ITenantManager loader = new DefaultTenantManager(_appData); var settings = loader.LoadSettings().Single(); Assert.That(settings, Is.Not.Null); Assert.That(settings.Name, Is.EqualTo("Default")); @@ -41,7 +41,7 @@ namespace Orchard.Tests.Environment.Configuration { _appData.CreateFile("Sites\\Default\\Settings.txt", "Name: Default\r\nDataProvider: SQLite\r\nDataConnectionString: something else"); _appData.CreateFile("Sites\\Another\\Settings.txt", "Name: Another\r\nDataProvider: SQLite2\r\nDataConnectionString: something else2"); - IShellSettingsLoader loader = new ShellSettingsLoader(_appData); + ITenantManager loader = new DefaultTenantManager(_appData); var settings = loader.LoadSettings(); Assert.That(settings.Count(), Is.EqualTo(2)); @@ -60,7 +60,7 @@ namespace Orchard.Tests.Environment.Configuration { public void NewSettingsCanBeStored() { _appData.CreateFile("Sites\\Default\\Settings.txt", "Name: Default\r\nDataProvider: SQLite\r\nDataConnectionString: something else"); - IShellSettingsLoader loader = new ShellSettingsLoader(_appData); + ITenantManager loader = new DefaultTenantManager(_appData); var foo = new ShellSettings {Name = "Foo", DataProvider = "Bar", DataConnectionString = "Quux"}; Assert.That(loader.LoadSettings().Count(), Is.EqualTo(1)); diff --git a/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs b/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs index f3b18cabe..3b7ab07f8 100644 --- a/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs +++ b/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs @@ -47,7 +47,7 @@ namespace Orchard.Tests.Environment { builder.RegisterInstance(new ViewEngineCollection { new WebFormViewEngine() }); builder.RegisterInstance(new StuExtensionManager()).As(); builder.RegisterInstance(new Mock().Object); - builder.RegisterInstance(new StubShellSettingsLoader()).As(); + builder.RegisterInstance(new StubShellSettingsLoader()).As(); }); _lifetime = _container.BeginLifetimeScope(); var updater = new ContainerUpdater(); @@ -55,7 +55,7 @@ namespace Orchard.Tests.Environment { updater.Update(_lifetime); } - public class StubShellSettingsLoader : IShellSettingsLoader { + public class StubShellSettingsLoader : ITenantManager { private readonly List _shellSettings = new List {new ShellSettings {Name = "testing"}}; diff --git a/src/Orchard.Tests/Orchard.Framework.Tests.csproj b/src/Orchard.Tests/Orchard.Framework.Tests.csproj index bdb92ad32..c633ce04e 100644 --- a/src/Orchard.Tests/Orchard.Framework.Tests.csproj +++ b/src/Orchard.Tests/Orchard.Framework.Tests.csproj @@ -153,7 +153,7 @@ - + diff --git a/src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupController.cs b/src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupController.cs index db96e7b85..d6a7be770 100644 --- a/src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupController.cs +++ b/src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupController.cs @@ -21,17 +21,17 @@ namespace Orchard.Setup.Controllers { public class SetupController : Controller { private readonly INotifier _notifier; private readonly IOrchardHost _orchardHost; - private readonly IShellSettingsLoader _shellSettingsLoader; + private readonly ITenantManager _tenantManager; private readonly IAppDataFolder _appDataFolder; public SetupController( INotifier notifier, IOrchardHost orchardHost, - IShellSettingsLoader shellSettingsLoader, + ITenantManager tenantManager, IAppDataFolder appDataFolder) { _notifier = notifier; _orchardHost = orchardHost; - _shellSettingsLoader = shellSettingsLoader; + _tenantManager = tenantManager; _appDataFolder = appDataFolder; T = NullLocalizer.Instance; } @@ -134,7 +134,7 @@ namespace Orchard.Setup.Controllers { } } - _shellSettingsLoader.SaveSettings(shellSettings); + _tenantManager.SaveSettings(shellSettings); _orchardHost.Reinitialize(); diff --git a/src/Orchard/Environment/Configuration/DefaultTenantManager.cs b/src/Orchard/Environment/Configuration/DefaultTenantManager.cs index 237c36f87..05e4b61f0 100644 --- a/src/Orchard/Environment/Configuration/DefaultTenantManager.cs +++ b/src/Orchard/Environment/Configuration/DefaultTenantManager.cs @@ -44,6 +44,7 @@ namespace Orchard.Environment.Configuration { public string Name { get; set; } public string DataProvider { get; set; } public string DataConnectionString { get; set; } + public string DataPrefix { get; set; } } static IShellSettings ParseSettings(string text) { @@ -57,15 +58,16 @@ namespace Orchard.Environment.Configuration { }; } - static string ComposeSettings(IShellSettings shellSettings) { - if (shellSettings == null) + static string ComposeSettings(IShellSettings settings) { + if (settings == null) return ""; var ser = new YamlSerializer(); return ser.Serialize(new Content { - Name = shellSettings.Name, - DataProvider = shellSettings.DataProvider, - DataConnectionString = shellSettings.DataConnectionString + Name = settings.Name, + DataProvider = settings.DataProvider, + DataConnectionString = settings.DataConnectionString, + DataPrefix = settings.DataPrefix, }); } } diff --git a/src/Orchard/Environment/DefaultOrchardHost.cs b/src/Orchard/Environment/DefaultOrchardHost.cs index b90bf77fd..0dd3e0f90 100644 --- a/src/Orchard/Environment/DefaultOrchardHost.cs +++ b/src/Orchard/Environment/DefaultOrchardHost.cs @@ -15,17 +15,17 @@ namespace Orchard.Environment { private readonly ControllerBuilder _controllerBuilder; private readonly IEnumerable _shellContainerFactories; - private readonly IShellSettingsLoader _shellSettingsLoader; + private readonly ITenantManager _tenantManager; private IOrchardShell _current; public DefaultOrchardHost( IContainerProvider containerProvider, - IShellSettingsLoader shellSettingsLoader, + ITenantManager tenantManager, ControllerBuilder controllerBuilder, IEnumerable shellContainerFactories) { _containerProvider = containerProvider; - _shellSettingsLoader = shellSettingsLoader; + _tenantManager = tenantManager; _controllerBuilder = controllerBuilder; _shellContainerFactories = shellContainerFactories; } @@ -95,7 +95,7 @@ namespace Orchard.Environment { } public virtual ILifetimeScope CreateShellContainer() { - var settings = _shellSettingsLoader.LoadSettings(); + var settings = _tenantManager.LoadSettings(); if (settings.Any()) { //TEMP: multi-tenancy not implemented yet var shellContainer = CreateShellContainer(settings.Single()); diff --git a/src/Orchard/Environment/OrchardStarter.cs b/src/Orchard/Environment/OrchardStarter.cs index d4633a565..324687510 100644 --- a/src/Orchard/Environment/OrchardStarter.cs +++ b/src/Orchard/Environment/OrchardStarter.cs @@ -1,14 +1,11 @@ using System; using Autofac; -using Autofac.Builder; -using Autofac.Core; using Autofac.Integration.Web; using Orchard.Environment.AutofacUtil; using Orchard.Environment.Configuration; using Orchard.Environment.ShellBuilders; using Orchard.Extensions; using Orchard.Extensions.Loaders; -using Orchard.Mvc; namespace Orchard.Environment { public static class OrchardStarter { @@ -20,7 +17,7 @@ namespace Orchard.Environment { builder.RegisterType().As().SingleInstance(); builder.RegisterType().As().SingleInstance(); builder.RegisterType().As().SingleInstance(); - builder.RegisterType().As().SingleInstance(); + builder.RegisterType().As().SingleInstance(); builder.RegisterType().As().SingleInstance(); // The container provider gives you access to the lowest container at the time, diff --git a/src/Orchard/Orchard.Framework.csproj b/src/Orchard/Orchard.Framework.csproj index 70061f8f5..df360af74 100644 --- a/src/Orchard/Orchard.Framework.csproj +++ b/src/Orchard/Orchard.Framework.csproj @@ -158,7 +158,8 @@ - + + From 95152b379b71f0ecaa6e09ff0a51cb58f51c45d0 Mon Sep 17 00:00:00 2001 From: Suha Can Date: Wed, 7 Apr 2010 16:46:29 -0700 Subject: [PATCH 3/9] - Adding ExtensionRecord to hold module state. - Modifying ExtensionManager to use it for active extensions. - Starting to move ExtensionManager and Composition Strategy etc from Host to Shell containers. Shells are going to be per tenant. --HG-- branch : dev --- .../Environment/DefaultCompositionStrategy.cs | 2 ++ src/Orchard/Extensions/ExtensionManager.cs | 16 ++++++++++++++-- .../Extensions/Records/ExtensionRecord.cs | 13 +++++++++++++ src/Orchard/Orchard.Framework.csproj | 1 + 4 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 src/Orchard/Extensions/Records/ExtensionRecord.cs diff --git a/src/Orchard/Environment/DefaultCompositionStrategy.cs b/src/Orchard/Environment/DefaultCompositionStrategy.cs index c36de5e0f..9bd078646 100644 --- a/src/Orchard/Environment/DefaultCompositionStrategy.cs +++ b/src/Orchard/Environment/DefaultCompositionStrategy.cs @@ -7,6 +7,7 @@ using Orchard.ContentManagement; using Orchard.ContentManagement.Records; using Orchard.Extensions; using Orchard.Utility.Extensions; +using Orchard.Extensions.Records; namespace Orchard.Environment { //TEMP: This will be replaced by packaging system @@ -42,6 +43,7 @@ namespace Orchard.Environment { new RecordDescriptor { Prefix = "Core", Type = typeof (ContentTypeRecord)}, new RecordDescriptor { Prefix = "Core", Type = typeof (ContentItemRecord)}, new RecordDescriptor { Prefix = "Core", Type = typeof (ContentItemVersionRecord)}, + new RecordDescriptor { Prefix = "Core", Type = typeof (ExtensionRecord)}, }; foreach (var extension in _extensionManager.ActiveExtensions()) { diff --git a/src/Orchard/Extensions/ExtensionManager.cs b/src/Orchard/Extensions/ExtensionManager.cs index e6331cb54..b265a6911 100644 --- a/src/Orchard/Extensions/ExtensionManager.cs +++ b/src/Orchard/Extensions/ExtensionManager.cs @@ -16,15 +16,19 @@ namespace Orchard.Extensions { private readonly IEnumerable _folders; private readonly IEnumerable _loaders; private IEnumerable _activeExtensions; + //private readonly IRepository _extensionRepository; public Localizer T { get; set; } public ILogger Logger { get; set; } public ExtensionManager( IEnumerable folders, - IEnumerable loaders) { + IEnumerable loaders + //IRepository extensionRepository + ) { _folders = folders; _loaders = loaders.OrderBy(x => x.Order); + //_extensionRepository = extensionRepository; T = NullLocalizer.Instance; Logger = NullLogger.Instance; } @@ -163,8 +167,8 @@ namespace Orchard.Extensions { } private IEnumerable BuildActiveExtensions() { - //TODO: this component needs access to some "current settings" to know which are active foreach (var descriptor in AvailableExtensions()) { + //_extensionRepository.Create(new ExtensionRecord { Name = descriptor.Name }); // Extensions that are Themes don't have buildable components. if (String.Equals(descriptor.ExtensionType, "Module", StringComparison.OrdinalIgnoreCase)) { yield return BuildEntry(descriptor); @@ -172,7 +176,15 @@ namespace Orchard.Extensions { } } + private bool IsExtensionEnabled(string name) { + //ExtensionRecord extensionRecord = _extensionRepository.Get(x => x.Name == name); + //if (extensionRecord.Enabled) return true; + //return false; + return true; + } + private ExtensionEntry BuildEntry(ExtensionDescriptor descriptor) { + if (!IsExtensionEnabled(descriptor.Name)) return null; foreach (var loader in _loaders) { var entry = loader.Load(descriptor); if (entry != null) diff --git a/src/Orchard/Extensions/Records/ExtensionRecord.cs b/src/Orchard/Extensions/Records/ExtensionRecord.cs new file mode 100644 index 000000000..5057562b1 --- /dev/null +++ b/src/Orchard/Extensions/Records/ExtensionRecord.cs @@ -0,0 +1,13 @@ +namespace Orchard.Extensions.Records { + public class ExtensionRecord { + public ExtensionRecord() { +// ReSharper disable DoNotCallOverridableMethodsInConstructor + Enabled = true; +// ReSharper restore DoNotCallOverridableMethodsInConstructor + } + + public virtual int Id { get; set; } + public virtual string Name { get; set; } + public virtual bool Enabled { get; set; } + } +} \ No newline at end of file diff --git a/src/Orchard/Orchard.Framework.csproj b/src/Orchard/Orchard.Framework.csproj index d3f00c208..f8b46aa03 100644 --- a/src/Orchard/Orchard.Framework.csproj +++ b/src/Orchard/Orchard.Framework.csproj @@ -165,6 +165,7 @@ + From 0856fce9a41ad4d94abf95e5f3c66942af3c106e Mon Sep 17 00:00:00 2001 From: Louis DeJardin Date: Wed, 7 Apr 2010 16:59:21 -0700 Subject: [PATCH 4/9] Adding file-based configurability optional ~/App_Data/Host.config file will modify root container registrations not implemented stub for azure tenant storage added --HG-- branch : dev --- src/Orchard.Web/Orchard.Web.csproj | 2 +- src/Orchard.Web/Web.config | 6 +++--- .../Configuration/AzureBlobTenantManager.cs | 20 +++++++++++++++++++ src/Orchard/Environment/OrchardStarter.cs | 13 ++++++++++++ src/Orchard/Orchard.Framework.csproj | 5 +++++ 5 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 src/Orchard/Environment/Configuration/AzureBlobTenantManager.cs diff --git a/src/Orchard.Web/Orchard.Web.csproj b/src/Orchard.Web/Orchard.Web.csproj index 743a29cca..d8d6d64b7 100644 --- a/src/Orchard.Web/Orchard.Web.csproj +++ b/src/Orchard.Web/Orchard.Web.csproj @@ -164,6 +164,7 @@ + @@ -341,7 +342,6 @@ - diff --git a/src/Orchard.Web/Web.config b/src/Orchard.Web/Web.config index f773df541..f1524c319 100644 --- a/src/Orchard.Web/Web.config +++ b/src/Orchard.Web/Web.config @@ -25,7 +25,7 @@ - + - @@ -102,7 +102,7 @@ - + diff --git a/src/Orchard/Environment/Configuration/AzureBlobTenantManager.cs b/src/Orchard/Environment/Configuration/AzureBlobTenantManager.cs new file mode 100644 index 000000000..778339afd --- /dev/null +++ b/src/Orchard/Environment/Configuration/AzureBlobTenantManager.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; + +namespace Orchard.Environment.Configuration { + public class AzureBlobTenantManager : ITenantManager{ + public AzureBlobTenantManager(string foo) { + int x = 5; + } + + public string Foo { get; set; } + + public IEnumerable LoadSettings() { + throw new NotImplementedException(); + } + + public void SaveSettings(IShellSettings settings) { + throw new NotImplementedException(); + } + } +} diff --git a/src/Orchard/Environment/OrchardStarter.cs b/src/Orchard/Environment/OrchardStarter.cs index 324687510..d413c5119 100644 --- a/src/Orchard/Environment/OrchardStarter.cs +++ b/src/Orchard/Environment/OrchardStarter.cs @@ -1,5 +1,9 @@ using System; +using System.Configuration; +using System.IO; +using System.Web.Hosting; using Autofac; +using Autofac.Configuration; using Autofac.Integration.Web; using Orchard.Environment.AutofacUtil; using Orchard.Environment.Configuration; @@ -44,6 +48,15 @@ namespace Orchard.Environment { registrations(builder); + + var autofacSection = ConfigurationManager.GetSection(ConfigurationSettingsReader.DefaultSectionName); + if (autofacSection != null) + builder.RegisterModule(new ConfigurationSettingsReader()); + + var optionalHostConfig = HostingEnvironment.MapPath("~/App_Data/Host.config"); + if (File.Exists(optionalHostConfig)) + builder.RegisterModule(new ConfigurationSettingsReader(ConfigurationSettingsReader.DefaultSectionName, optionalHostConfig)); + return builder.Build(); } diff --git a/src/Orchard/Orchard.Framework.csproj b/src/Orchard/Orchard.Framework.csproj index df360af74..2b5c39d1c 100644 --- a/src/Orchard/Orchard.Framework.csproj +++ b/src/Orchard/Orchard.Framework.csproj @@ -35,6 +35,10 @@ False ..\..\lib\autofac\Autofac.dll + + False + ..\..\lib\autofac\Autofac.Configuration.dll + False ..\..\lib\autofac\Autofac.Integration.Web.dll @@ -158,6 +162,7 @@ + From 36622bb303fd65d021dfa97cdf0a502ab2f7cb1d Mon Sep 17 00:00:00 2001 From: Louis DeJardin Date: Wed, 7 Apr 2010 17:03:45 -0700 Subject: [PATCH 5/9] Renaming Host.config to avoid collisions with user files --HG-- branch : dev --- src/Orchard.Web/Orchard.Web.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Orchard.Web/Orchard.Web.csproj b/src/Orchard.Web/Orchard.Web.csproj index d8d6d64b7..bb5f3d4fa 100644 --- a/src/Orchard.Web/Orchard.Web.csproj +++ b/src/Orchard.Web/Orchard.Web.csproj @@ -164,7 +164,7 @@ - + From ef50916694a45b9aa0c4dd908dc32080813a593f Mon Sep 17 00:00:00 2001 From: Louis DeJardin Date: Wed, 7 Apr 2010 17:29:24 -0700 Subject: [PATCH 6/9] Forcing Hg to add Sample.Host.config in App_Data --HG-- branch : dev --- src/Orchard.Web/App_Data/Sample.Host.config | 25 +++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/Orchard.Web/App_Data/Sample.Host.config diff --git a/src/Orchard.Web/App_Data/Sample.Host.config b/src/Orchard.Web/App_Data/Sample.Host.config new file mode 100644 index 000000000..acce66e1a --- /dev/null +++ b/src/Orchard.Web/App_Data/Sample.Host.config @@ -0,0 +1,25 @@ + + + + +

+ + + + + + + + + + + + + + + + + + From d77526259bf1717afe5037f7eafe4497ac525175 Mon Sep 17 00:00:00 2001 From: Louis DeJardin Date: Wed, 7 Apr 2010 17:32:34 -0700 Subject: [PATCH 7/9] Moving Host.config over to ~/Config instead of ~/App_Data Assumes you may want to consider it's settings not quite as portable as tenant info --HG-- branch : dev --- src/Orchard.Web/{App_Data => Config}/Sample.Host.config | 0 src/Orchard/Environment/OrchardStarter.cs | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) rename src/Orchard.Web/{App_Data => Config}/Sample.Host.config (100%) diff --git a/src/Orchard.Web/App_Data/Sample.Host.config b/src/Orchard.Web/Config/Sample.Host.config similarity index 100% rename from src/Orchard.Web/App_Data/Sample.Host.config rename to src/Orchard.Web/Config/Sample.Host.config diff --git a/src/Orchard/Environment/OrchardStarter.cs b/src/Orchard/Environment/OrchardStarter.cs index d413c5119..67496ce84 100644 --- a/src/Orchard/Environment/OrchardStarter.cs +++ b/src/Orchard/Environment/OrchardStarter.cs @@ -52,8 +52,8 @@ namespace Orchard.Environment { var autofacSection = ConfigurationManager.GetSection(ConfigurationSettingsReader.DefaultSectionName); if (autofacSection != null) builder.RegisterModule(new ConfigurationSettingsReader()); - - var optionalHostConfig = HostingEnvironment.MapPath("~/App_Data/Host.config"); + + var optionalHostConfig = HostingEnvironment.MapPath("~/Config/Host.config"); if (File.Exists(optionalHostConfig)) builder.RegisterModule(new ConfigurationSettingsReader(ConfigurationSettingsReader.DefaultSectionName, optionalHostConfig)); From 26add7877952bc45798ca0c05ed01317ae3c1653 Mon Sep 17 00:00:00 2001 From: Louis DeJardin Date: Wed, 7 Apr 2010 17:55:38 -0700 Subject: [PATCH 8/9] Adjusting registration of dependencies to avoid duplications Types are registered once and multiple interfaces result in several services being associated with that component. Any singleton or transient interfaces will adjust the lifecycle of the entire component. --HG-- branch : dev --- src/Orchard.Web/Orchard.Web.csproj | 3 ++- .../ShellBuilders/DefaultShellContainerFactory.cs | 13 +++++++------ .../ShellBuilders/SafeModeShellContainerFactory.cs | 10 ++++------ 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/Orchard.Web/Orchard.Web.csproj b/src/Orchard.Web/Orchard.Web.csproj index bb5f3d4fa..5128a4a58 100644 --- a/src/Orchard.Web/Orchard.Web.csproj +++ b/src/Orchard.Web/Orchard.Web.csproj @@ -164,7 +164,7 @@ - + @@ -342,6 +342,7 @@ + diff --git a/src/Orchard/Environment/ShellBuilders/DefaultShellContainerFactory.cs b/src/Orchard/Environment/ShellBuilders/DefaultShellContainerFactory.cs index 2af7bd087..88991f8ab 100644 --- a/src/Orchard/Environment/ShellBuilders/DefaultShellContainerFactory.cs +++ b/src/Orchard/Environment/ShellBuilders/DefaultShellContainerFactory.cs @@ -35,17 +35,18 @@ namespace Orchard.Environment.ShellBuilders { // add components by the IDependency interfaces they expose foreach (var serviceType in _compositionStrategy.GetDependencyTypes()) { + var registrar = addingModulesAndServices.RegisterType(serviceType) + .EnableDynamicProxy(dynamicProxyContext) + .InstancePerLifetimeScope(); + foreach (var interfaceType in serviceType.GetInterfaces()) { if (typeof(IDependency).IsAssignableFrom(interfaceType)) { - var registrar = addingModulesAndServices.RegisterType(serviceType).As(interfaceType).EnableDynamicProxy(dynamicProxyContext); + registrar = registrar.As(interfaceType); if (typeof(ISingletonDependency).IsAssignableFrom(interfaceType)) { - registrar.SingleInstance(); + registrar = registrar.SingleInstance(); } else if (typeof(ITransientDependency).IsAssignableFrom(interfaceType)) { - registrar.InstancePerDependency(); - } - else { - registrar.InstancePerLifetimeScope(); + registrar = registrar.InstancePerDependency(); } } } diff --git a/src/Orchard/Environment/ShellBuilders/SafeModeShellContainerFactory.cs b/src/Orchard/Environment/ShellBuilders/SafeModeShellContainerFactory.cs index 7eef7c180..cc79d536b 100644 --- a/src/Orchard/Environment/ShellBuilders/SafeModeShellContainerFactory.cs +++ b/src/Orchard/Environment/ShellBuilders/SafeModeShellContainerFactory.cs @@ -70,17 +70,15 @@ namespace Orchard.Environment.ShellBuilders { .GetExportedTypes() .Where(type => type.IsClass && !type.IsAbstract && typeof(IDependency).IsAssignableFrom(type)); foreach (var serviceType in dependencies) { + var registrar = builder.RegisterType(serviceType).EnableDynamicProxy(dynamicProxyContext).InstancePerLifetimeScope(); foreach (var interfaceType in serviceType.GetInterfaces()) { if (typeof(IDependency).IsAssignableFrom(interfaceType)) { - var registrar = builder.RegisterType(serviceType).As(interfaceType).EnableDynamicProxy(dynamicProxyContext); + registrar = registrar.As(interfaceType); if (typeof(ISingletonDependency).IsAssignableFrom(interfaceType)) { - registrar.SingleInstance(); + registrar = registrar.SingleInstance(); } else if (typeof(ITransientDependency).IsAssignableFrom(interfaceType)) { - registrar.InstancePerDependency(); - } - else { - registrar.InstancePerLifetimeScope(); + registrar = registrar.InstancePerDependency(); } } } From 0e3352c560e7f19ba46fa1b0ccee56286100875d Mon Sep 17 00:00:00 2001 From: Suha Can Date: Wed, 7 Apr 2010 18:01:15 -0700 Subject: [PATCH 9/9] - ShellTopology to be returned from ExtensionsManager. It contains types from active extensions. - Modifying some unit tests accordingly. --HG-- branch : dev --- src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs | 2 +- src/Orchard.Tests/Extensions/ExtensionManagerTests.cs | 4 ++-- .../Mvc/Routes/StandardExtensionRouteProviderTests.cs | 2 +- src/Orchard/Environment/DefaultCompositionStrategy.cs | 4 ++-- src/Orchard/Extensions/ExtensionManager.cs | 4 ++-- src/Orchard/Extensions/IExtensionManager.cs | 5 ++--- src/Orchard/Extensions/ShellTopology.cs | 8 ++++++++ src/Orchard/Orchard.Framework.csproj | 1 + 8 files changed, 19 insertions(+), 11 deletions(-) create mode 100644 src/Orchard/Extensions/ShellTopology.cs diff --git a/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs b/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs index 3b7ab07f8..bd92425da 100644 --- a/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs +++ b/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs @@ -77,7 +77,7 @@ namespace Orchard.Tests.Environment { return Enumerable.Empty(); } - public IEnumerable GetExtensionsTopology() { + public ShellTopology GetExtensionsTopology() { throw new NotImplementedException(); } diff --git a/src/Orchard.Tests/Extensions/ExtensionManagerTests.cs b/src/Orchard.Tests/Extensions/ExtensionManagerTests.cs index b16bf13f1..a92225d89 100644 --- a/src/Orchard.Tests/Extensions/ExtensionManagerTests.cs +++ b/src/Orchard.Tests/Extensions/ExtensionManagerTests.cs @@ -178,14 +178,14 @@ features: public void ExtensionManagerShouldReturnTopology() { var topology = _manager.GetExtensionsTopology(); - Assert.That(topology.Count(), Is.Not.EqualTo(0)); + Assert.That(topology.Types.Count(), Is.Not.EqualTo(0)); } [Test] public void ExtensionManagerTopologyShouldContainNonAbstractClasses() { var topology = _manager.GetExtensionsTopology(); - foreach (var type in topology) { + foreach (var type in topology.Types) { Assert.That(type.IsClass); Assert.That(!type.IsAbstract); } diff --git a/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs b/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs index 0ce1436e8..a61b70ad7 100644 --- a/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs +++ b/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs @@ -54,7 +54,7 @@ namespace Orchard.Tests.Mvc.Routes { }; } - public IEnumerable GetExtensionsTopology() { + public ShellTopology GetExtensionsTopology() { throw new NotImplementedException(); } diff --git a/src/Orchard/Environment/DefaultCompositionStrategy.cs b/src/Orchard/Environment/DefaultCompositionStrategy.cs index 9bd078646..230f279b8 100644 --- a/src/Orchard/Environment/DefaultCompositionStrategy.cs +++ b/src/Orchard/Environment/DefaultCompositionStrategy.cs @@ -31,11 +31,11 @@ namespace Orchard.Environment { } public IEnumerable GetModuleTypes() { - return _extensionManager.GetExtensionsTopology().Where(t => typeof(IModule).IsAssignableFrom(t)); + return _extensionManager.GetExtensionsTopology().Types.Where(t => typeof(IModule).IsAssignableFrom(t)); } public IEnumerable GetDependencyTypes() { - return _extensionManager.GetExtensionsTopology().Where(t => typeof(IDependency).IsAssignableFrom(t)); + return _extensionManager.GetExtensionsTopology().Types.Where(t => typeof(IDependency).IsAssignableFrom(t)); } public IEnumerable GetRecordDescriptors() { diff --git a/src/Orchard/Extensions/ExtensionManager.cs b/src/Orchard/Extensions/ExtensionManager.cs index b265a6911..f9a031ec3 100644 --- a/src/Orchard/Extensions/ExtensionManager.cs +++ b/src/Orchard/Extensions/ExtensionManager.cs @@ -101,10 +101,10 @@ namespace Orchard.Extensions { return _activeExtensions; } - public IEnumerable GetExtensionsTopology() { + public ShellTopology GetExtensionsTopology() { var types = ActiveExtensions().SelectMany(x => x.ExportedTypes); types = types.Concat(typeof(IOrchardHost).Assembly.GetExportedTypes()); - return types.Where(t => t.IsClass && !t.IsAbstract); + return new ShellTopology { Types = types.Where(t => t.IsClass && !t.IsAbstract) }; } public void InstallExtension(string extensionType, HttpPostedFileBase extensionBundle) { diff --git a/src/Orchard/Extensions/IExtensionManager.cs b/src/Orchard/Extensions/IExtensionManager.cs index 6cf496c1b..2d6c5a3ca 100644 --- a/src/Orchard/Extensions/IExtensionManager.cs +++ b/src/Orchard/Extensions/IExtensionManager.cs @@ -1,12 +1,11 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Web; namespace Orchard.Extensions { public interface IExtensionManager { IEnumerable AvailableExtensions(); IEnumerable ActiveExtensions(); - IEnumerable GetExtensionsTopology(); + ShellTopology GetExtensionsTopology(); void InstallExtension(string extensionType, HttpPostedFileBase extensionBundle); void UninstallExtension(string extensionType, string extensionName); } diff --git a/src/Orchard/Extensions/ShellTopology.cs b/src/Orchard/Extensions/ShellTopology.cs new file mode 100644 index 000000000..eba9328db --- /dev/null +++ b/src/Orchard/Extensions/ShellTopology.cs @@ -0,0 +1,8 @@ +using System; +using System.Collections.Generic; + +namespace Orchard.Extensions { + public class ShellTopology { + public IEnumerable Types { get; set; } + } +} diff --git a/src/Orchard/Orchard.Framework.csproj b/src/Orchard/Orchard.Framework.csproj index 3a0fa6faf..e13daffff 100644 --- a/src/Orchard/Orchard.Framework.csproj +++ b/src/Orchard/Orchard.Framework.csproj @@ -176,6 +176,7 @@ +