From: <ste...@us...> - 2010-04-29 21:01:18
|
Revision: 4975 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4975&view=rev Author: steverstrong Date: 2010-04-29 21:01:11 +0000 (Thu, 29 Apr 2010) Log Message: ----------- Updated to latest version of ANTLR (ANTLRWorks 3.2 for code generation, 3.1.3 C# runtime) Modified Paths: -------------- trunk/nhibernate/lib/net/3.5/Antlr3.Runtime.dll trunk/nhibernate/lib/net/3.5/antlr.runtime.dll trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlLexer.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlParser.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlSqlWalker.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/SqlGenerator.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/ASTNode.cs Modified: trunk/nhibernate/lib/net/3.5/Antlr3.Runtime.dll =================================================================== (Binary files differ) Modified: trunk/nhibernate/lib/net/3.5/antlr.runtime.dll =================================================================== (Binary files differ) Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlLexer.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlLexer.cs 2010-04-27 16:54:44 UTC (rev 4974) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlLexer.cs 2010-04-29 21:01:11 UTC (rev 4975) @@ -1,4729 +1,4729 @@ -// $ANTLR 3.1.2 /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g 2009-08-19 15:39:23 - -// The variable 'variable' is assigned but its value is never used. -#pragma warning disable 168, 219 -// Unreachable code detected. -#pragma warning disable 162 -namespace NHibernate.Hql.Ast.ANTLR -{ - -using System; -using Antlr.Runtime; -using IList = System.Collections.IList; -using ArrayList = System.Collections.ArrayList; -using Stack = Antlr.Runtime.Collections.StackList; - -using IDictionary = System.Collections.IDictionary; -using Hashtable = System.Collections.Hashtable; - -public partial class HqlLexer : Lexer { - public const int EXPR_LIST = 73; - public const int EXISTS = 19; - public const int COMMA = 99; - public const int FETCH = 21; - public const int MINUS = 115; - public const int AS = 7; - public const int END = 56; - public const int INTO = 30; - public const int FALSE = 20; - public const int ELEMENTS = 17; - public const int THEN = 58; - public const int ALIAS = 70; - public const int BOR = 111; - public const int ON = 60; - public const int DOT = 15; - public const int ORDER = 41; - public const int AND = 6; - public const int CONSTANT = 92; - public const int UNARY_MINUS = 88; - public const int METHOD_CALL = 79; - public const int RIGHT = 44; - public const int CONCAT = 109; - public const int PROPERTIES = 43; - public const int SELECT = 45; - public const int LE = 107; - public const int BETWEEN = 10; - public const int NUM_INT = 93; - public const int BOTH = 62; - public const int PLUS = 114; - public const int VERSIONED = 52; - public const int MEMBER = 65; - public const int NUM_DECIMAL = 95; - public const int UNION = 50; - public const int DISTINCT = 16; - public const int RANGE = 85; - public const int FILTER_ENTITY = 74; - public const int IDENT = 123; - public const int WHEN = 59; - public const int DESCENDING = 14; - public const int WS = 127; - public const int EQ = 100; - public const int NEW = 37; - public const int LT = 105; - public const int ESCqs = 126; - public const int OF = 67; - public const int UPDATE = 51; - public const int SELECT_FROM = 87; - public const int LITERAL_by = 54; - public const int FLOAT_SUFFIX = 129; - public const int ANY = 5; - public const int UNARY_PLUS = 89; - public const int NUM_FLOAT = 96; - public const int GE = 108; - public const int CASE = 55; - public const int OPEN_BRACKET = 118; - public const int ELSE = 57; - public const int OPEN = 101; - public const int COUNT = 12; - public const int NULL = 39; - public const int T__132 = 132; - public const int COLON = 120; - public const int DIV = 117; - public const int HAVING = 25; - public const int ALL = 4; - public const int SET = 46; - public const int T__131 = 131; - public const int INSERT = 29; - public const int TRUE = 49; - public const int CASE2 = 72; - public const int IS_NOT_NULL = 77; - public const int WHERE = 53; - public const int AGGREGATE = 69; - public const int VECTOR_EXPR = 90; - public const int BNOT = 110; - public const int LEADING = 64; - public const int CLOSE_BRACKET = 119; - public const int NUM_DOUBLE = 94; - public const int INNER = 28; - public const int QUERY = 84; - public const int ORDER_ELEMENT = 83; - public const int OR = 40; - public const int FULL = 23; - public const int INDICES = 27; - public const int IS_NULL = 78; - public const int GROUP = 24; - public const int ESCAPE = 18; - public const int PARAM = 121; - public const int INDEX_OP = 76; - public const int ID_LETTER = 125; - public const int HEX_DIGIT = 130; - public const int LEFT = 33; - public const int TRAILING = 68; - public const int JOIN = 32; - public const int NOT_BETWEEN = 80; - public const int SUM = 48; - public const int BAND = 113; - public const int ROW_STAR = 86; - public const int OUTER = 42; - public const int NOT_IN = 81; - public const int FROM = 22; - public const int DELETE = 13; - public const int OBJECT = 66; - public const int MAX = 35; - public const int NOT_LIKE = 82; - public const int EMPTY = 63; - public const int QUOTED_String = 122; - public const int ASCENDING = 8; - public const int NUM_LONG = 97; - public const int IS = 31; - public const int SQL_NE = 104; - public const int IN_LIST = 75; - public const int WEIRD_IDENT = 91; - public const int NE = 103; - public const int GT = 106; - public const int MIN = 36; - public const int LIKE = 34; - public const int WITH = 61; - public const int IN = 26; - public const int CONSTRUCTOR = 71; - public const int SOME = 47; - public const int CLASS = 11; - public const int EXPONENT = 128; - public const int ID_START_LETTER = 124; - public const int EOF = -1; - public const int CLOSE = 102; - public const int AVG = 9; - public const int BXOR = 112; - public const int STAR = 116; - public const int NOT = 38; - public const int JAVA_CONSTANT = 98; - - // delegates - // delegators - - public HqlLexer() - { - InitializeCyclicDFAs(); - } - public HqlLexer(ICharStream input) - : this(input, null) { - } - public HqlLexer(ICharStream input, RecognizerSharedState state) - : base(input, state) { - InitializeCyclicDFAs(); - - } - - override public string GrammarFileName - { - get { return "/Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g";} - } - - // $ANTLR start "ALL" - public void mALL() // throws RecognitionException [2] - { - try - { - int _type = ALL; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:9:5: ( 'all' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:9:7: 'all' - { - Match("all"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ALL" - - // $ANTLR start "ANY" - public void mANY() // throws RecognitionException [2] - { - try - { - int _type = ANY; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:10:5: ( 'any' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:10:7: 'any' - { - Match("any"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ANY" - - // $ANTLR start "AND" - public void mAND() // throws RecognitionException [2] - { - try - { - int _type = AND; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:11:5: ( 'and' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:11:7: 'and' - { - Match("and"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "AND" - - // $ANTLR start "AS" - public void mAS() // throws RecognitionException [2] - { - try - { - int _type = AS; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:12:4: ( 'as' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:12:6: 'as' - { - Match("as"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "AS" - - // $ANTLR start "ASCENDING" - public void mASCENDING() // throws RecognitionException [2] - { - try - { - int _type = ASCENDING; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:13:11: ( 'asc' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:13:13: 'asc' - { - Match("asc"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ASCENDING" - - // $ANTLR start "AVG" - public void mAVG() // throws RecognitionException [2] - { - try - { - int _type = AVG; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:14:5: ( 'avg' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:14:7: 'avg' - { - Match("avg"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "AVG" - - // $ANTLR start "BETWEEN" - public void mBETWEEN() // throws RecognitionException [2] - { - try - { - int _type = BETWEEN; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:15:9: ( 'between' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:15:11: 'between' - { - Match("between"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "BETWEEN" - - // $ANTLR start "CLASS" - public void mCLASS() // throws RecognitionException [2] - { - try - { - int _type = CLASS; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:16:7: ( 'class' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:16:9: 'class' - { - Match("class"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "CLASS" - - // $ANTLR start "COUNT" - public void mCOUNT() // throws RecognitionException [2] - { - try - { - int _type = COUNT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:17:7: ( 'count' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:17:9: 'count' - { - Match("count"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "COUNT" - - // $ANTLR start "DELETE" - public void mDELETE() // throws RecognitionException [2] - { - try - { - int _type = DELETE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:18:8: ( 'delete' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:18:10: 'delete' - { - Match("delete"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "DELETE" - - // $ANTLR start "DESCENDING" - public void mDESCENDING() // throws RecognitionException [2] - { - try - { - int _type = DESCENDING; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:19:12: ( 'desc' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:19:14: 'desc' - { - Match("desc"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "DESCENDING" - - // $ANTLR start "DISTINCT" - public void mDISTINCT() // throws RecognitionException [2] - { - try - { - int _type = DISTINCT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:20:10: ( 'distinct' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:20:12: 'distinct' - { - Match("distinct"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "DISTINCT" - - // $ANTLR start "ELEMENTS" - public void mELEMENTS() // throws RecognitionException [2] - { - try - { - int _type = ELEMENTS; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:21:10: ( 'elements' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:21:12: 'elements' - { - Match("elements"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ELEMENTS" - - // $ANTLR start "ESCAPE" - public void mESCAPE() // throws RecognitionException [2] - { - try - { - int _type = ESCAPE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:22:8: ( 'escape' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:22:10: 'escape' - { - Match("escape"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ESCAPE" - - // $ANTLR start "EXISTS" - public void mEXISTS() // throws RecognitionException [2] - { - try - { - int _type = EXISTS; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:23:8: ( 'exists' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:23:10: 'exists' - { - Match("exists"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "EXISTS" - - // $ANTLR start "FALSE" - public void mFALSE() // throws RecognitionException [2] - { - try - { - int _type = FALSE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:24:7: ( 'false' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:24:9: 'false' - { - Match("false"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "FALSE" - - // $ANTLR start "FETCH" - public void mFETCH() // throws RecognitionException [2] - { - try - { - int _type = FETCH; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:25:7: ( 'fetch' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:25:9: 'fetch' - { - Match("fetch"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "FETCH" - - // $ANTLR start "FROM" - public void mFROM() // throws RecognitionException [2] - { - try - { - int _type = FROM; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:26:6: ( 'from' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:26:8: 'from' - { - Match("from"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "FROM" - - // $ANTLR start "FULL" - public void mFULL() // throws RecognitionException [2] - { - try - { - int _type = FULL; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:27:6: ( 'full' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:27:8: 'full' - { - Match("full"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "FULL" - - // $ANTLR start "GROUP" - public void mGROUP() // throws RecognitionException [2] - { - try - { - int _type = GROUP; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:28:7: ( 'group' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:28:9: 'group' - { - Match("group"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "GROUP" - - // $ANTLR start "HAVING" - public void mHAVING() // throws RecognitionException [2] - { - try - { - int _type = HAVING; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:29:8: ( 'having' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:29:10: 'having' - { - Match("having"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "HAVING" - - // $ANTLR start "IN" - public void mIN() // throws RecognitionException [2] - { - try - { - int _type = IN; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:30:4: ( 'in' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:30:6: 'in' - { - Match("in"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "IN" - - // $ANTLR start "INDICES" - public void mINDICES() // throws RecognitionException [2] - { - try - { - int _type = INDICES; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:31:9: ( 'indices' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:31:11: 'indices' - { - Match("indices"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "INDICES" - - // $ANTLR start "INNER" - public void mINNER() // throws RecognitionException [2] - { - try - { - int _type = INNER; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:32:7: ( 'inner' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:32:9: 'inner' - { - Match("inner"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "INNER" - - // $ANTLR start "INSERT" - public void mINSERT() // throws RecognitionException [2] - { - try - { - int _type = INSERT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:33:8: ( 'insert' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:33:10: 'insert' - { - Match("insert"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "INSERT" - - // $ANTLR start "INTO" - public void mINTO() // throws RecognitionException [2] - { - try - { - int _type = INTO; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:34:6: ( 'into' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:34:8: 'into' - { - Match("into"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "INTO" - - // $ANTLR start "IS" - public void mIS() // throws RecognitionException [2] - { - try - { - int _type = IS; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:35:4: ( 'is' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:35:6: 'is' - { - Match("is"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "IS" - - // $ANTLR start "JOIN" - public void mJOIN() // throws RecognitionException [2] - { - try - { - int _type = JOIN; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:36:6: ( 'join' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:36:8: 'join' - { - Match("join"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "JOIN" - - // $ANTLR start "LEFT" - public void mLEFT() // throws RecognitionException [2] - { - try - { - int _type = LEFT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:37:6: ( 'left' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:37:8: 'left' - { - Match("left"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "LEFT" - - // $ANTLR start "LIKE" - public void mLIKE() // throws RecognitionException [2] - { - try - { - int _type = LIKE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:38:6: ( 'like' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:38:8: 'like' - { - Match("like"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "LIKE" - - // $ANTLR start "MAX" - public void mMAX() // throws RecognitionException [2] - { - try - { - int _type = MAX; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:39:5: ( 'max' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:39:7: 'max' - { - Match("max"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "MAX" - - // $ANTLR start "MIN" - public void mMIN() // throws RecognitionException [2] - { - try - { - int _type = MIN; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:40:5: ( 'min' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:40:7: 'min' - { - Match("min"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "MIN" - - // $ANTLR start "NEW" - public void mNEW() // throws RecognitionException [2] - { - try - { - int _type = NEW; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:41:5: ( 'new' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:41:7: 'new' - { - Match("new"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "NEW" - - // $ANTLR start "NOT" - public void mNOT() // throws RecognitionException [2] - { - try - { - int _type = NOT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:42:5: ( 'not' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:42:7: 'not' - { - Match("not"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "NOT" - - // $ANTLR start "NULL" - public void mNULL() // throws RecognitionException [2] - { - try - { - int _type = NULL; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:43:6: ( 'null' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:43:8: 'null' - { - Match("null"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "NULL" - - // $ANTLR start "OR" - public void mOR() // throws RecognitionException [2] - { - try - { - int _type = OR; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:44:4: ( 'or' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:44:6: 'or' - { - Match("or"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "OR" - - // $ANTLR start "ORDER" - public void mORDER() // throws RecognitionException [2] - { - try - { - int _type = ORDER; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:45:7: ( 'order' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:45:9: 'order' - { - Match("order"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ORDER" - - // $ANTLR start "OUTER" - public void mOUTER() // throws RecognitionException [2] - { - try - { - int _type = OUTER; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:46:7: ( 'outer' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:46:9: 'outer' - { - Match("outer"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "OUTER" - - // $ANTLR start "PROPERTIES" - public void mPROPERTIES() // throws RecognitionException [2] - { - try - { - int _type = PROPERTIES; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:47:12: ( 'properties' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:47:14: 'properties' - { - Match("properties"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "PROPERTIES" - - // $ANTLR start "RIGHT" - public void mRIGHT() // throws RecognitionException [2] - { - try - { - int _type = RIGHT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:48:7: ( 'right' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:48:9: 'right' - { - Match("right"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "RIGHT" - - // $ANTLR start "SELECT" - public void mSELECT() // throws RecognitionException [2] - { - try - { - int _type = SELECT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:49:8: ( 'select' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:49:10: 'select' - { - Match("select"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "SELECT" - - // $ANTLR start "SET" - public void mSET() // throws RecognitionException [2] - { - try - { - int _type = SET; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:50:5: ( 'set' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:50:7: 'set' - { - Match("set"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "SET" - - // $ANTLR start "SOME" - public void mSOME() // throws RecognitionException [2] - { - try - { - int _type = SOME; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:51:6: ( 'some' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:51:8: 'some' - { - Match("some"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "SOME" - - // $ANTLR start "SUM" - public void mSUM() // throws RecognitionException [2] - { - try - { - int _type = SUM; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:52:5: ( 'sum' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:52:7: 'sum' - { - Match("sum"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "SUM" - - // $ANTLR start "TRUE" - public void mTRUE() // throws RecognitionException [2] - { - try - { - int _type = TRUE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:53:6: ( 'true' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:53:8: 'true' - { - Match("true"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "TRUE" - - // $ANTLR start "UNION" - public void mUNION() // throws RecognitionException [2] - { - try - { - int _type = UNION; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:54:7: ( 'union' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:54:9: 'union' - { - Match("union"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "UNION" - - // $ANTLR start "UPDATE" - public void mUPDATE() // throws RecognitionException [2] - { - try - { - int _type = UPDATE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:55:8: ( 'update' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:55:10: 'update' - { - Match("update"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "UPDATE" - - // $ANTLR start "VERSIONED" - public void mVERSIONED() // throws RecognitionException [2] - { - try - { - int _type = VERSIONED; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:56:11: ( 'versioned' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:56:13: 'versioned' - { - Match("versioned"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "VERSIONED" - - // $ANTLR start "WHERE" - public void mWHERE() // throws RecognitionException [2] - { - try - { - int _type = WHERE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:57:7: ( 'where' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:57:9: 'where' - { - Match("where"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "WHERE" - - // $ANTLR start "LITERAL_by" - public void mLITERAL_by() // throws RecognitionException [2] - { - try - { - int _type = LITERAL_by; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:58:12: ( 'by' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:58:14: 'by' - { - Match("by"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "LITERAL_by" - - // $ANTLR start "CASE" - public void mCASE() // throws RecognitionException [2] - { - try - { - int _type = CASE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:59:6: ( 'case' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:59:8: 'case' - { - Match("case"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "CASE" - - // $ANTLR start "END" - public void mEND() // throws RecognitionException [2] - { - try - { - int _type = END; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:60:5: ( 'end' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:60:7: 'end' - { - Match("end"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "END" - - // $ANTLR start "ELSE" - public void mELSE() // throws RecognitionException [2] - { - try - { - int _type = ELSE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:61:6: ( 'else' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:61:8: 'else' - { - Match("else"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ELSE" - - // $ANTLR start "THEN" - public void mTHEN() // throws RecognitionException [2] - { - try - { - int _type = THEN; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:62:6: ( 'then' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:62:8: 'then' - { - Match("then"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "THEN" - - // $ANTLR start "WHEN" - public void mWHEN() // throws RecognitionException [2] - { - try - { - int _type = WHEN; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:63:6: ( 'when' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:63:8: 'when' - { - Match("when"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "WHEN" - - // $ANTLR start "ON" - public void mON() // throws RecognitionException [2] - { - try - { - int _type = ON; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:64:4: ( 'on' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:64:6: 'on' - { - Match("on"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ON" - - // $ANTLR start "WITH" - public void mWITH() // throws RecognitionException [2] - { - try - { - int _type = WITH; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:65:6: ( 'with' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:65:8: 'with' - { - Match("with"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "WITH" - - // $ANTLR start "BOTH" - public void mBOTH() // throws RecognitionException [2] - { - try - { - int _type = BOTH; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:66:6: ( 'both' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:66:8: 'both' - { - Match("both"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "BOTH" - - // $ANTLR start "EMPTY" - public void mEMPTY() // throws RecognitionException [2] - { - try - { - int _type = EMPTY; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:67:7: ( 'empty' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:67:9: 'empty' - { - Match("empty"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "EMPTY" - - // $ANTLR start "LEADING" - public void mLEADING() // throws RecognitionException [2] - { - try - { - int _type = LEADING; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:68:9: ( 'leading' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:68:11: 'leading' - { - Match("leading"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "LEADING" - - // $ANTLR start "MEMBER" - public void mMEMBER() // throws RecognitionException [2] - { - try - { - int _type = MEMBER; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:69:8: ( 'member' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:69:10: 'member' - { - Match("member"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "MEMBER" - - // $ANTLR start "OBJECT" - public void mOBJECT() // throws RecognitionException [2] - { - try - { - int _type = OBJECT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:70:8: ( 'object' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:70:10: 'object' - { - Match("object"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "OBJECT" - - // $ANTLR start "OF" - public void mOF() // throws RecognitionException [2] - { - try - { - int _type = OF; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:71:4: ( 'of' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:71:6: 'of' - { - Match("of"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "OF" - - // $ANTLR start "TRAILING" - public void mTRAILING() // throws RecognitionException [2] - { - try - { - int _type = TRAILING; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:72:10: ( 'trailing' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:72:12: 'trailing' - { - Match("trailing"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "TRAILING" - - // $ANTLR start "T__131" - public void mT__131() // throws RecognitionException [2] - { - try - { - int _type = T__131; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:73:8: ( 'ascending' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:73:10: 'ascending' - { - Match("ascending"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "T__131" - - // $ANTLR start "T__132" - public void mT__132() // throws RecognitionException [2] - { - try - { - int _type = T__132; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:74:8: ( 'descending' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:74:10: 'descending' - { - Match("descending"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "T__132" - - // $ANTLR start "EQ" - public void mEQ() // throws RecognitionException [2] - { - try - { - int _type = EQ; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:672:3: ( '=' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:672:5: '=' - { - Match('='); if (state.failed) return ; - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "EQ" - - // $ANTLR start "LT" - public void mLT() // throws RecognitionException [2] - { - try - { - int _type = LT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:673:3: ( '<' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:673:5: '<' - { - Match('<'); if (state.failed) return ; - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "LT" - - // $ANTLR start "GT" - public void mGT() // throws RecognitionException [2] - { - try - { - int _type = GT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:674:3: ( '>' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:674:5: '>' - { - Match('>'); if (state.failed) return ; - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "GT" - - // $ANTLR start "SQL_NE" - public void mSQL_NE() // throws RecognitionException [2] - { - try - { - int _type = SQL_NE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:675:7: ( '<>' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:675:9: '<>' - { - Match("<>"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "SQL_NE" - - // $ANTLR start "NE" - public void mNE() // throws RecognitionException [2] - { - try - { - int _type = NE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:676:3: ( '!=' | '^=' ) - int alt1 = 2; - int LA1_0 = input.LA(1); - - if ( (LA1_0 == '!') ) - { - alt1 = 1; - } - else if ( (LA1_0 == '^') ) - { - alt1 = 2; - } - else - { - if ( state.backtracking > 0 ) {state.failed = true; return ;} - NoViableAltException nvae_d1s0 = - new NoViableAltException("", 1, 0, input); - - throw nvae_d1s0; - } - switch (alt1) - { - case 1 : - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:676:5: '!=' - { - Match("!="); if (state.failed) return ; - - - } - break; - case 2 : - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:676:12: '^=' - { - Match("^="); if (state.failed) return ; - - - } - break; - - } - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "NE" - - // $ANTLR start "LE" - public void mLE() // throws RecognitionException [2] - { - try - { - int _type = LE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:677:3: ( '<=' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:677:5: '<=' - { - Match("<="); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "LE" - - // $ANTLR start "GE" - public void mGE() // throws RecognitionException [2] - { - try - { - int _type = GE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:678:3: ( '>=' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:678:5: '>=' - { - Match(">="); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "GE" - - // $ANTLR start "BOR" - public void mBOR() // throws RecognitionException [2] - { - try - { - int _type = BOR; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:680:5: ( '|' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:680:8: '|' - { - Match('|'); if (state.failed) return ; - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "BOR" - - // $ANTLR start "BXOR" - public void mBXOR() // throws RecognitionException [2] - { - try - { - int _type = BXOR; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:681:6: ( '^' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:681:8: '^' - { - Match('^'); if (state.failed) return ; - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "BXOR" - - // $ANTLR start "BAND" - public void mBAND() // throws RecognitionException [2] - { - try - { - int _type = BAND; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:682:6: ( '&' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:682:8: '&' - { - Match('&'); if (state.failed) return ; - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "BAND" - - // $ANTLR start "BNOT" - public void mBNOT() // throws RecognitionException [2] - { - try - { - int _type = BNOT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:683:6: ( '!' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:683:8: '!' - { - Match('!'); if (state.failed) return ; - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "BNOT" - - // $ANTLR start "COMMA" - public void mCOMMA() // throws RecognitionException [2] - { - try - { - int _type = COMMA; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:685:6: ( ',' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:685:8: ',' - { - Match(','); if (state.failed) return ; - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "COMMA" - - // $ANTLR start "OPEN" - public void mOPEN() // throws RecognitionException [2] - ... [truncated message content] |
From: <ste...@us...> - 2010-04-29 21:49:20
|
Revision: 4976 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4976&view=rev Author: steverstrong Date: 2010-04-29 21:49:12 +0000 (Thu, 29 Apr 2010) Log Message: ----------- Reverted the ANTLR update Modified Paths: -------------- trunk/nhibernate/lib/net/3.5/Antlr3.Runtime.dll trunk/nhibernate/lib/net/3.5/antlr.runtime.dll trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlLexer.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlParser.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlSqlWalker.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/SqlGenerator.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/ASTNode.cs Modified: trunk/nhibernate/lib/net/3.5/Antlr3.Runtime.dll =================================================================== (Binary files differ) Modified: trunk/nhibernate/lib/net/3.5/antlr.runtime.dll =================================================================== (Binary files differ) Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlLexer.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlLexer.cs 2010-04-29 21:01:11 UTC (rev 4975) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlLexer.cs 2010-04-29 21:49:12 UTC (rev 4976) @@ -1,4729 +1,4729 @@ -// $ANTLR 3.2 Sep 23, 2009 12:02:23 C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g 2010-04-29 22:45:03 - -// The variable 'variable' is assigned but its value is never used. -#pragma warning disable 168, 219 -// Unreachable code detected. -#pragma warning disable 162 - - -using System; -using Antlr.Runtime; -using IList = System.Collections.IList; -using ArrayList = System.Collections.ArrayList; -using Stack = Antlr.Runtime.Collections.StackList; - -using IDictionary = System.Collections.IDictionary; -using Hashtable = System.Collections.Hashtable; -namespace NHibernate.Hql.Ast.ANTLR -{ -public partial class HqlLexer : Lexer { - public const int LT = 105; - public const int EXPONENT = 128; - public const int STAR = 116; - public const int FLOAT_SUFFIX = 129; - public const int LITERAL_by = 54; - public const int CASE = 55; - public const int NEW = 37; - public const int FILTER_ENTITY = 74; - public const int PARAM = 121; - public const int COUNT = 12; - public const int NOT = 38; - public const int EOF = -1; - public const int UNARY_PLUS = 89; - public const int QUOTED_String = 122; - public const int ESCqs = 126; - public const int WEIRD_IDENT = 91; - public const int OPEN_BRACKET = 118; - public const int FULL = 23; - public const int ORDER_ELEMENT = 83; - public const int IS_NULL = 78; - public const int ESCAPE = 18; - public const int INSERT = 29; - public const int BOTH = 62; - public const int NUM_DECIMAL = 95; - public const int VERSIONED = 52; - public const int EQ = 100; - public const int SELECT = 45; - public const int INTO = 30; - public const int NE = 103; - public const int GE = 108; - public const int CONCAT = 109; - public const int ID_LETTER = 125; - public const int NULL = 39; - public const int ELSE = 57; - public const int SELECT_FROM = 87; - public const int TRAILING = 68; - public const int ON = 60; - public const int NUM_LONG = 97; - public const int NUM_DOUBLE = 94; - public const int UNARY_MINUS = 88; - public const int DELETE = 13; - public const int INDICES = 27; - public const int OF = 67; - public const int METHOD_CALL = 79; - public const int LEADING = 64; - public const int EMPTY = 63; - public const int GROUP = 24; - public const int WS = 127; - public const int FETCH = 21; - public const int VECTOR_EXPR = 90; - public const int NOT_IN = 81; - public const int NUM_INT = 93; - public const int OR = 40; - public const int ALIAS = 70; - public const int JAVA_CONSTANT = 98; - public const int CONSTANT = 92; - public const int GT = 106; - public const int QUERY = 84; - public const int BNOT = 110; - public const int INDEX_OP = 76; - public const int NUM_FLOAT = 96; - public const int FROM = 22; - public const int END = 56; - public const int FALSE = 20; - public const int DISTINCT = 16; - public const int T__131 = 131; - public const int CONSTRUCTOR = 71; - public const int T__132 = 132; - public const int CLOSE_BRACKET = 119; - public const int WHERE = 53; - public const int CLASS = 11; - public const int MEMBER = 65; - public const int INNER = 28; - public const int PROPERTIES = 43; - public const int ORDER = 41; - public const int MAX = 35; - public const int UPDATE = 51; - public const int SQL_NE = 104; - public const int AND = 6; - public const int SUM = 48; - public const int ASCENDING = 8; - public const int EXPR_LIST = 73; - public const int AS = 7; - public const int IN = 26; - public const int THEN = 58; - public const int OBJECT = 66; - public const int COMMA = 99; - public const int IS = 31; - public const int AVG = 9; - public const int LEFT = 33; - public const int SOME = 47; - public const int ALL = 4; - public const int BOR = 111; - public const int IDENT = 123; - public const int CASE2 = 72; - public const int BXOR = 112; - public const int PLUS = 114; - public const int EXISTS = 19; - public const int DOT = 15; - public const int WITH = 61; - public const int LIKE = 34; - public const int OUTER = 42; - public const int ID_START_LETTER = 124; - public const int ROW_STAR = 86; - public const int NOT_LIKE = 82; - public const int RANGE = 85; - public const int NOT_BETWEEN = 80; - public const int HEX_DIGIT = 130; - public const int SET = 46; - public const int RIGHT = 44; - public const int HAVING = 25; - public const int MIN = 36; - public const int IS_NOT_NULL = 77; - public const int MINUS = 115; - public const int ELEMENTS = 17; - public const int BAND = 113; - public const int TRUE = 49; - public const int JOIN = 32; - public const int IN_LIST = 75; - public const int UNION = 50; - public const int OPEN = 101; - public const int COLON = 120; - public const int ANY = 5; - public const int CLOSE = 102; - public const int WHEN = 59; - public const int DIV = 117; - public const int DESCENDING = 14; - public const int AGGREGATE = 69; - public const int BETWEEN = 10; - public const int LE = 107; - - // delegates - // delegators - - public HqlLexer() - { - InitializeCyclicDFAs(); - } - public HqlLexer(ICharStream input) - : this(input, null) { - } - public HqlLexer(ICharStream input, RecognizerSharedState state) - : base(input, state) { - InitializeCyclicDFAs(); - - } - - override public string GrammarFileName - { - get { return "C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g";} - } - - // $ANTLR start "ALL" - public void mALL() // throws RecognitionException [2] - { - try - { - int _type = ALL; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:9:5: ( 'all' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:9:7: 'all' - { - Match("all"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ALL" - - // $ANTLR start "ANY" - public void mANY() // throws RecognitionException [2] - { - try - { - int _type = ANY; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:10:5: ( 'any' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:10:7: 'any' - { - Match("any"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ANY" - - // $ANTLR start "AND" - public void mAND() // throws RecognitionException [2] - { - try - { - int _type = AND; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:11:5: ( 'and' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:11:7: 'and' - { - Match("and"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "AND" - - // $ANTLR start "AS" - public void mAS() // throws RecognitionException [2] - { - try - { - int _type = AS; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:12:4: ( 'as' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:12:6: 'as' - { - Match("as"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "AS" - - // $ANTLR start "ASCENDING" - public void mASCENDING() // throws RecognitionException [2] - { - try - { - int _type = ASCENDING; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:13:11: ( 'asc' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:13:13: 'asc' - { - Match("asc"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ASCENDING" - - // $ANTLR start "AVG" - public void mAVG() // throws RecognitionException [2] - { - try - { - int _type = AVG; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:14:5: ( 'avg' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:14:7: 'avg' - { - Match("avg"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "AVG" - - // $ANTLR start "BETWEEN" - public void mBETWEEN() // throws RecognitionException [2] - { - try - { - int _type = BETWEEN; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:15:9: ( 'between' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:15:11: 'between' - { - Match("between"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "BETWEEN" - - // $ANTLR start "CLASS" - public void mCLASS() // throws RecognitionException [2] - { - try - { - int _type = CLASS; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:16:7: ( 'class' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:16:9: 'class' - { - Match("class"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "CLASS" - - // $ANTLR start "COUNT" - public void mCOUNT() // throws RecognitionException [2] - { - try - { - int _type = COUNT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:17:7: ( 'count' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:17:9: 'count' - { - Match("count"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "COUNT" - - // $ANTLR start "DELETE" - public void mDELETE() // throws RecognitionException [2] - { - try - { - int _type = DELETE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:18:8: ( 'delete' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:18:10: 'delete' - { - Match("delete"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "DELETE" - - // $ANTLR start "DESCENDING" - public void mDESCENDING() // throws RecognitionException [2] - { - try - { - int _type = DESCENDING; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:19:12: ( 'desc' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:19:14: 'desc' - { - Match("desc"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "DESCENDING" - - // $ANTLR start "DISTINCT" - public void mDISTINCT() // throws RecognitionException [2] - { - try - { - int _type = DISTINCT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:20:10: ( 'distinct' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:20:12: 'distinct' - { - Match("distinct"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "DISTINCT" - - // $ANTLR start "ELEMENTS" - public void mELEMENTS() // throws RecognitionException [2] - { - try - { - int _type = ELEMENTS; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:21:10: ( 'elements' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:21:12: 'elements' - { - Match("elements"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ELEMENTS" - - // $ANTLR start "ESCAPE" - public void mESCAPE() // throws RecognitionException [2] - { - try - { - int _type = ESCAPE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:22:8: ( 'escape' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:22:10: 'escape' - { - Match("escape"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ESCAPE" - - // $ANTLR start "EXISTS" - public void mEXISTS() // throws RecognitionException [2] - { - try - { - int _type = EXISTS; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:23:8: ( 'exists' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:23:10: 'exists' - { - Match("exists"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "EXISTS" - - // $ANTLR start "FALSE" - public void mFALSE() // throws RecognitionException [2] - { - try - { - int _type = FALSE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:24:7: ( 'false' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:24:9: 'false' - { - Match("false"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "FALSE" - - // $ANTLR start "FETCH" - public void mFETCH() // throws RecognitionException [2] - { - try - { - int _type = FETCH; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:25:7: ( 'fetch' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:25:9: 'fetch' - { - Match("fetch"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "FETCH" - - // $ANTLR start "FROM" - public void mFROM() // throws RecognitionException [2] - { - try - { - int _type = FROM; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:26:6: ( 'from' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:26:8: 'from' - { - Match("from"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "FROM" - - // $ANTLR start "FULL" - public void mFULL() // throws RecognitionException [2] - { - try - { - int _type = FULL; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:27:6: ( 'full' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:27:8: 'full' - { - Match("full"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "FULL" - - // $ANTLR start "GROUP" - public void mGROUP() // throws RecognitionException [2] - { - try - { - int _type = GROUP; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:28:7: ( 'group' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:28:9: 'group' - { - Match("group"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "GROUP" - - // $ANTLR start "HAVING" - public void mHAVING() // throws RecognitionException [2] - { - try - { - int _type = HAVING; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:29:8: ( 'having' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:29:10: 'having' - { - Match("having"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "HAVING" - - // $ANTLR start "IN" - public void mIN() // throws RecognitionException [2] - { - try - { - int _type = IN; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:30:4: ( 'in' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:30:6: 'in' - { - Match("in"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "IN" - - // $ANTLR start "INDICES" - public void mINDICES() // throws RecognitionException [2] - { - try - { - int _type = INDICES; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:31:9: ( 'indices' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:31:11: 'indices' - { - Match("indices"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "INDICES" - - // $ANTLR start "INNER" - public void mINNER() // throws RecognitionException [2] - { - try - { - int _type = INNER; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:32:7: ( 'inner' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:32:9: 'inner' - { - Match("inner"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "INNER" - - // $ANTLR start "INSERT" - public void mINSERT() // throws RecognitionException [2] - { - try - { - int _type = INSERT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:33:8: ( 'insert' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:33:10: 'insert' - { - Match("insert"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "INSERT" - - // $ANTLR start "INTO" - public void mINTO() // throws RecognitionException [2] - { - try - { - int _type = INTO; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:34:6: ( 'into' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:34:8: 'into' - { - Match("into"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "INTO" - - // $ANTLR start "IS" - public void mIS() // throws RecognitionException [2] - { - try - { - int _type = IS; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:35:4: ( 'is' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:35:6: 'is' - { - Match("is"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "IS" - - // $ANTLR start "JOIN" - public void mJOIN() // throws RecognitionException [2] - { - try - { - int _type = JOIN; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:36:6: ( 'join' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:36:8: 'join' - { - Match("join"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "JOIN" - - // $ANTLR start "LEFT" - public void mLEFT() // throws RecognitionException [2] - { - try - { - int _type = LEFT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:37:6: ( 'left' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:37:8: 'left' - { - Match("left"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "LEFT" - - // $ANTLR start "LIKE" - public void mLIKE() // throws RecognitionException [2] - { - try - { - int _type = LIKE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:38:6: ( 'like' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:38:8: 'like' - { - Match("like"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "LIKE" - - // $ANTLR start "MAX" - public void mMAX() // throws RecognitionException [2] - { - try - { - int _type = MAX; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:39:5: ( 'max' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:39:7: 'max' - { - Match("max"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "MAX" - - // $ANTLR start "MIN" - public void mMIN() // throws RecognitionException [2] - { - try - { - int _type = MIN; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:40:5: ( 'min' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:40:7: 'min' - { - Match("min"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "MIN" - - // $ANTLR start "NEW" - public void mNEW() // throws RecognitionException [2] - { - try - { - int _type = NEW; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:41:5: ( 'new' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:41:7: 'new' - { - Match("new"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "NEW" - - // $ANTLR start "NOT" - public void mNOT() // throws RecognitionException [2] - { - try - { - int _type = NOT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:42:5: ( 'not' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:42:7: 'not' - { - Match("not"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "NOT" - - // $ANTLR start "NULL" - public void mNULL() // throws RecognitionException [2] - { - try - { - int _type = NULL; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:43:6: ( 'null' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:43:8: 'null' - { - Match("null"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "NULL" - - // $ANTLR start "OR" - public void mOR() // throws RecognitionException [2] - { - try - { - int _type = OR; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:44:4: ( 'or' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:44:6: 'or' - { - Match("or"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "OR" - - // $ANTLR start "ORDER" - public void mORDER() // throws RecognitionException [2] - { - try - { - int _type = ORDER; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:45:7: ( 'order' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:45:9: 'order' - { - Match("order"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ORDER" - - // $ANTLR start "OUTER" - public void mOUTER() // throws RecognitionException [2] - { - try - { - int _type = OUTER; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:46:7: ( 'outer' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:46:9: 'outer' - { - Match("outer"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "OUTER" - - // $ANTLR start "PROPERTIES" - public void mPROPERTIES() // throws RecognitionException [2] - { - try - { - int _type = PROPERTIES; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:47:12: ( 'properties' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:47:14: 'properties' - { - Match("properties"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "PROPERTIES" - - // $ANTLR start "RIGHT" - public void mRIGHT() // throws RecognitionException [2] - { - try - { - int _type = RIGHT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:48:7: ( 'right' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:48:9: 'right' - { - Match("right"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "RIGHT" - - // $ANTLR start "SELECT" - public void mSELECT() // throws RecognitionException [2] - { - try - { - int _type = SELECT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:49:8: ( 'select' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:49:10: 'select' - { - Match("select"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "SELECT" - - // $ANTLR start "SET" - public void mSET() // throws RecognitionException [2] - { - try - { - int _type = SET; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:50:5: ( 'set' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:50:7: 'set' - { - Match("set"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "SET" - - // $ANTLR start "SOME" - public void mSOME() // throws RecognitionException [2] - { - try - { - int _type = SOME; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:51:6: ( 'some' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:51:8: 'some' - { - Match("some"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "SOME" - - // $ANTLR start "SUM" - public void mSUM() // throws RecognitionException [2] - { - try - { - int _type = SUM; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:52:5: ( 'sum' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:52:7: 'sum' - { - Match("sum"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "SUM" - - // $ANTLR start "TRUE" - public void mTRUE() // throws RecognitionException [2] - { - try - { - int _type = TRUE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:53:6: ( 'true' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:53:8: 'true' - { - Match("true"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "TRUE" - - // $ANTLR start "UNION" - public void mUNION() // throws RecognitionException [2] - { - try - { - int _type = UNION; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:54:7: ( 'union' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:54:9: 'union' - { - Match("union"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "UNION" - - // $ANTLR start "UPDATE" - public void mUPDATE() // throws RecognitionException [2] - { - try - { - int _type = UPDATE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:55:8: ( 'update' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:55:10: 'update' - { - Match("update"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "UPDATE" - - // $ANTLR start "VERSIONED" - public void mVERSIONED() // throws RecognitionException [2] - { - try - { - int _type = VERSIONED; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:56:11: ( 'versioned' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:56:13: 'versioned' - { - Match("versioned"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "VERSIONED" - - // $ANTLR start "WHERE" - public void mWHERE() // throws RecognitionException [2] - { - try - { - int _type = WHERE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:57:7: ( 'where' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:57:9: 'where' - { - Match("where"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "WHERE" - - // $ANTLR start "LITERAL_by" - public void mLITERAL_by() // throws RecognitionException [2] - { - try - { - int _type = LITERAL_by; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:58:12: ( 'by' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:58:14: 'by' - { - Match("by"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "LITERAL_by" - - // $ANTLR start "CASE" - public void mCASE() // throws RecognitionException [2] - { - try - { - int _type = CASE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:59:6: ( 'case' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:59:8: 'case' - { - Match("case"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "CASE" - - // $ANTLR start "END" - public void mEND() // throws RecognitionException [2] - { - try - { - int _type = END; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:60:5: ( 'end' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:60:7: 'end' - { - Match("end"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "END" - - // $ANTLR start "ELSE" - public void mELSE() // throws RecognitionException [2] - { - try - { - int _type = ELSE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:61:6: ( 'else' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:61:8: 'else' - { - Match("else"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ELSE" - - // $ANTLR start "THEN" - public void mTHEN() // throws RecognitionException [2] - { - try - { - int _type = THEN; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:62:6: ( 'then' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:62:8: 'then' - { - Match("then"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "THEN" - - // $ANTLR start "WHEN" - public void mWHEN() // throws RecognitionException [2] - { - try - { - int _type = WHEN; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:63:6: ( 'when' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:63:8: 'when' - { - Match("when"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "WHEN" - - // $ANTLR start "ON" - public void mON() // throws RecognitionException [2] - { - try - { - int _type = ON; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:64:4: ( 'on' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:64:6: 'on' - { - Match("on"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ON" - - // $ANTLR start "WITH" - public void mWITH() // throws RecognitionException [2] - { - try - { - int _type = WITH; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:65:6: ( 'with' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:65:8: 'with' - { - Match("with"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "WITH" - - // $ANTLR start "BOTH" - public void mBOTH() // throws RecognitionException [2] - { - try - { - int _type = BOTH; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:66:6: ( 'both' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:66:8: 'both' - { - Match("both"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "BOTH" - - // $ANTLR start "EMPTY" - public void mEMPTY() // throws RecognitionException [2] - { - try - { - int _type = EMPTY; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:67:7: ( 'empty' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:67:9: 'empty' - { - Match("empty"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "EMPTY" - - // $ANTLR start "LEADING" - public void mLEADING() // throws RecognitionException [2] - { - try - { - int _type = LEADING; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:68:9: ( 'leading' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:68:11: 'leading' - { - Match("leading"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "LEADING" - - // $ANTLR start "MEMBER" - public void mMEMBER() // throws RecognitionException [2] - { - try - { - int _type = MEMBER; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:69:8: ( 'member' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:69:10: 'member' - { - Match("member"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "MEMBER" - - // $ANTLR start "OBJECT" - public void mOBJECT() // throws RecognitionException [2] - { - try - { - int _type = OBJECT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:70:8: ( 'object' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:70:10: 'object' - { - Match("object"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "OBJECT" - - // $ANTLR start "OF" - public void mOF() // throws RecognitionException [2] - { - try - { - int _type = OF; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:71:4: ( 'of' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:71:6: 'of' - { - Match("of"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "OF" - - // $ANTLR start "TRAILING" - public void mTRAILING() // throws RecognitionException [2] - { - try - { - int _type = TRAILING; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:72:10: ( 'trailing' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:72:12: 'trailing' - { - Match("trailing"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "TRAILING" - - // $ANTLR start "T__131" - public void mT__131() // throws RecognitionException [2] - { - try - { - int _type = T__131; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:73:8: ( 'ascending' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:73:10: 'ascending' - { - Match("ascending"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "T__131" - - // $ANTLR start "T__132" - public void mT__132() // throws RecognitionException [2] - { - try - { - int _type = T__132; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:74:8: ( 'descending' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:74:10: 'descending' - { - Match("descending"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "T__132" - - // $ANTLR start "EQ" - public void mEQ() // throws RecognitionException [2] - { - try - { - int _type = EQ; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:672:3: ( '=' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:672:5: '=' - { - Match('='); if (state.failed) return ; - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "EQ" - - // $ANTLR start "LT" - public void mLT() // throws RecognitionException [2] - { - try - { - int _type = LT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:673:3: ( '<' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:673:5: '<' - { - Match('<'); if (state.failed) return ; - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "LT" - - // $ANTLR start "GT" - public void mGT() // throws RecognitionException [2] - { - try - { - int _type = GT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:674:3: ( '>' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:674:5: '>' - { - Match('>'); if (state.failed) return ; - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "GT" - - // $ANTLR start "SQL_NE" - public void mSQL_NE() // throws RecognitionException [2] - { - try - { - int _type = SQL_NE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:675:7: ( '<>' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:675:9: '<>' - { - Match("<>"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "SQL_NE" - - // $ANTLR start "NE" - public void mNE() // throws RecognitionException [2] - { - try - { - int _type = NE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:676:3: ( '!=' | '^=' ) - int alt1 = 2; - int LA1_0 = input.LA(1); - - if ( (LA1_0 == '!') ) - { - alt1 = 1; - } - else if ( (LA1_0 == '^') ) - { - alt1 = 2; - } - else - { - if ( state.backtracking > 0 ) {state.failed = true; return ;} - NoViableAltException nvae_d1s0 = - new NoViableAltException("", 1, 0, input); - - throw nvae_d1s0; - } - switch (alt1) - { - case 1 : - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:676:5: '!=' - { - Match("!="); if (state.failed) return ; - - - } - break; - case 2 : - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:676:12: '^=' - { - Match("^="); if (state.failed) return ; - - - } - break; - - } - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "NE" - - // $ANTLR start "LE" - public void mLE() // throws RecognitionException [2] - { - try - { - int _type = LE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:677:3: ( '<=' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:677:5: '<=' - { - Match("<="); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "LE" - - // $ANTLR start "GE" - public void mGE() // throws RecognitionException [2] - { - try - { - int _type = GE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:678:3: ( '>=' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:678:5: '>=' - { - Match(">="); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "GE" - - // $ANTLR start "BOR" - public void mBOR() // throws RecognitionException [2] - { - try - { - int _type = BOR; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:680:5: ( '|' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:680:8: '|' - { - Match('|'); if (state.failed) return ; - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "BOR" - - // $ANTLR start "BXOR" - public void mBXOR() // throws RecognitionException [2] - { - try - { - int _type = BXOR; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:681:6: ( '^' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:681:8: '^' - { - Match('^'); if (state.failed) return ; - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "BXOR" - - // $ANTLR start "BAND" - public void mBAND() // throws RecognitionException [2] - { - try - { - int _type = BAND; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:682:6: ( '&' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:682:8: '&' - { - Match('&'); if (state.failed) return ; - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "BAND" - - // $ANTLR start "BNOT" - public void mBNOT() // throws RecognitionException [2] - { - try - { - int _type = BNOT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\St... [truncated message content] |
From: <ste...@us...> - 2010-05-01 22:22:13
|
Revision: 4978 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4978&view=rev Author: steverstrong Date: 2010-05-01 22:22:06 +0000 (Sat, 01 May 2010) Log Message: ----------- Updated to latest version of ANTLR (ANTLRWorks 3.2 for code generation, 3.1.3 C# runtime) Modified Paths: -------------- trunk/nhibernate/lib/net/3.5/Antlr3.Runtime.dll trunk/nhibernate/lib/net/3.5/antlr.runtime.dll trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlLexer.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlParser.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlSqlWalker.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/SqlGenerator.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlParser.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/ASTNode.cs Modified: trunk/nhibernate/lib/net/3.5/Antlr3.Runtime.dll =================================================================== (Binary files differ) Modified: trunk/nhibernate/lib/net/3.5/antlr.runtime.dll =================================================================== (Binary files differ) Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlLexer.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlLexer.cs 2010-05-01 18:38:21 UTC (rev 4977) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlLexer.cs 2010-05-01 22:22:06 UTC (rev 4978) @@ -1,4729 +1,4729 @@ -// $ANTLR 3.1.2 /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g 2009-08-19 15:39:23 - -// The variable 'variable' is assigned but its value is never used. -#pragma warning disable 168, 219 -// Unreachable code detected. -#pragma warning disable 162 -namespace NHibernate.Hql.Ast.ANTLR -{ - -using System; -using Antlr.Runtime; -using IList = System.Collections.IList; -using ArrayList = System.Collections.ArrayList; -using Stack = Antlr.Runtime.Collections.StackList; - -using IDictionary = System.Collections.IDictionary; -using Hashtable = System.Collections.Hashtable; - -public partial class HqlLexer : Lexer { - public const int EXPR_LIST = 73; - public const int EXISTS = 19; - public const int COMMA = 99; - public const int FETCH = 21; - public const int MINUS = 115; - public const int AS = 7; - public const int END = 56; - public const int INTO = 30; - public const int FALSE = 20; - public const int ELEMENTS = 17; - public const int THEN = 58; - public const int ALIAS = 70; - public const int BOR = 111; - public const int ON = 60; - public const int DOT = 15; - public const int ORDER = 41; - public const int AND = 6; - public const int CONSTANT = 92; - public const int UNARY_MINUS = 88; - public const int METHOD_CALL = 79; - public const int RIGHT = 44; - public const int CONCAT = 109; - public const int PROPERTIES = 43; - public const int SELECT = 45; - public const int LE = 107; - public const int BETWEEN = 10; - public const int NUM_INT = 93; - public const int BOTH = 62; - public const int PLUS = 114; - public const int VERSIONED = 52; - public const int MEMBER = 65; - public const int NUM_DECIMAL = 95; - public const int UNION = 50; - public const int DISTINCT = 16; - public const int RANGE = 85; - public const int FILTER_ENTITY = 74; - public const int IDENT = 123; - public const int WHEN = 59; - public const int DESCENDING = 14; - public const int WS = 127; - public const int EQ = 100; - public const int NEW = 37; - public const int LT = 105; - public const int ESCqs = 126; - public const int OF = 67; - public const int UPDATE = 51; - public const int SELECT_FROM = 87; - public const int LITERAL_by = 54; - public const int FLOAT_SUFFIX = 129; - public const int ANY = 5; - public const int UNARY_PLUS = 89; - public const int NUM_FLOAT = 96; - public const int GE = 108; - public const int CASE = 55; - public const int OPEN_BRACKET = 118; - public const int ELSE = 57; - public const int OPEN = 101; - public const int COUNT = 12; - public const int NULL = 39; - public const int T__132 = 132; - public const int COLON = 120; - public const int DIV = 117; - public const int HAVING = 25; - public const int ALL = 4; - public const int SET = 46; - public const int T__131 = 131; - public const int INSERT = 29; - public const int TRUE = 49; - public const int CASE2 = 72; - public const int IS_NOT_NULL = 77; - public const int WHERE = 53; - public const int AGGREGATE = 69; - public const int VECTOR_EXPR = 90; - public const int BNOT = 110; - public const int LEADING = 64; - public const int CLOSE_BRACKET = 119; - public const int NUM_DOUBLE = 94; - public const int INNER = 28; - public const int QUERY = 84; - public const int ORDER_ELEMENT = 83; - public const int OR = 40; - public const int FULL = 23; - public const int INDICES = 27; - public const int IS_NULL = 78; - public const int GROUP = 24; - public const int ESCAPE = 18; - public const int PARAM = 121; - public const int INDEX_OP = 76; - public const int ID_LETTER = 125; - public const int HEX_DIGIT = 130; - public const int LEFT = 33; - public const int TRAILING = 68; - public const int JOIN = 32; - public const int NOT_BETWEEN = 80; - public const int SUM = 48; - public const int BAND = 113; - public const int ROW_STAR = 86; - public const int OUTER = 42; - public const int NOT_IN = 81; - public const int FROM = 22; - public const int DELETE = 13; - public const int OBJECT = 66; - public const int MAX = 35; - public const int NOT_LIKE = 82; - public const int EMPTY = 63; - public const int QUOTED_String = 122; - public const int ASCENDING = 8; - public const int NUM_LONG = 97; - public const int IS = 31; - public const int SQL_NE = 104; - public const int IN_LIST = 75; - public const int WEIRD_IDENT = 91; - public const int NE = 103; - public const int GT = 106; - public const int MIN = 36; - public const int LIKE = 34; - public const int WITH = 61; - public const int IN = 26; - public const int CONSTRUCTOR = 71; - public const int SOME = 47; - public const int CLASS = 11; - public const int EXPONENT = 128; - public const int ID_START_LETTER = 124; - public const int EOF = -1; - public const int CLOSE = 102; - public const int AVG = 9; - public const int BXOR = 112; - public const int STAR = 116; - public const int NOT = 38; - public const int JAVA_CONSTANT = 98; - - // delegates - // delegators - - public HqlLexer() - { - InitializeCyclicDFAs(); - } - public HqlLexer(ICharStream input) - : this(input, null) { - } - public HqlLexer(ICharStream input, RecognizerSharedState state) - : base(input, state) { - InitializeCyclicDFAs(); - - } - - override public string GrammarFileName - { - get { return "/Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g";} - } - - // $ANTLR start "ALL" - public void mALL() // throws RecognitionException [2] - { - try - { - int _type = ALL; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:9:5: ( 'all' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:9:7: 'all' - { - Match("all"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ALL" - - // $ANTLR start "ANY" - public void mANY() // throws RecognitionException [2] - { - try - { - int _type = ANY; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:10:5: ( 'any' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:10:7: 'any' - { - Match("any"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ANY" - - // $ANTLR start "AND" - public void mAND() // throws RecognitionException [2] - { - try - { - int _type = AND; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:11:5: ( 'and' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:11:7: 'and' - { - Match("and"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "AND" - - // $ANTLR start "AS" - public void mAS() // throws RecognitionException [2] - { - try - { - int _type = AS; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:12:4: ( 'as' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:12:6: 'as' - { - Match("as"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "AS" - - // $ANTLR start "ASCENDING" - public void mASCENDING() // throws RecognitionException [2] - { - try - { - int _type = ASCENDING; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:13:11: ( 'asc' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:13:13: 'asc' - { - Match("asc"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ASCENDING" - - // $ANTLR start "AVG" - public void mAVG() // throws RecognitionException [2] - { - try - { - int _type = AVG; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:14:5: ( 'avg' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:14:7: 'avg' - { - Match("avg"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "AVG" - - // $ANTLR start "BETWEEN" - public void mBETWEEN() // throws RecognitionException [2] - { - try - { - int _type = BETWEEN; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:15:9: ( 'between' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:15:11: 'between' - { - Match("between"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "BETWEEN" - - // $ANTLR start "CLASS" - public void mCLASS() // throws RecognitionException [2] - { - try - { - int _type = CLASS; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:16:7: ( 'class' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:16:9: 'class' - { - Match("class"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "CLASS" - - // $ANTLR start "COUNT" - public void mCOUNT() // throws RecognitionException [2] - { - try - { - int _type = COUNT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:17:7: ( 'count' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:17:9: 'count' - { - Match("count"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "COUNT" - - // $ANTLR start "DELETE" - public void mDELETE() // throws RecognitionException [2] - { - try - { - int _type = DELETE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:18:8: ( 'delete' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:18:10: 'delete' - { - Match("delete"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "DELETE" - - // $ANTLR start "DESCENDING" - public void mDESCENDING() // throws RecognitionException [2] - { - try - { - int _type = DESCENDING; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:19:12: ( 'desc' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:19:14: 'desc' - { - Match("desc"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "DESCENDING" - - // $ANTLR start "DISTINCT" - public void mDISTINCT() // throws RecognitionException [2] - { - try - { - int _type = DISTINCT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:20:10: ( 'distinct' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:20:12: 'distinct' - { - Match("distinct"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "DISTINCT" - - // $ANTLR start "ELEMENTS" - public void mELEMENTS() // throws RecognitionException [2] - { - try - { - int _type = ELEMENTS; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:21:10: ( 'elements' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:21:12: 'elements' - { - Match("elements"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ELEMENTS" - - // $ANTLR start "ESCAPE" - public void mESCAPE() // throws RecognitionException [2] - { - try - { - int _type = ESCAPE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:22:8: ( 'escape' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:22:10: 'escape' - { - Match("escape"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ESCAPE" - - // $ANTLR start "EXISTS" - public void mEXISTS() // throws RecognitionException [2] - { - try - { - int _type = EXISTS; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:23:8: ( 'exists' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:23:10: 'exists' - { - Match("exists"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "EXISTS" - - // $ANTLR start "FALSE" - public void mFALSE() // throws RecognitionException [2] - { - try - { - int _type = FALSE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:24:7: ( 'false' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:24:9: 'false' - { - Match("false"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "FALSE" - - // $ANTLR start "FETCH" - public void mFETCH() // throws RecognitionException [2] - { - try - { - int _type = FETCH; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:25:7: ( 'fetch' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:25:9: 'fetch' - { - Match("fetch"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "FETCH" - - // $ANTLR start "FROM" - public void mFROM() // throws RecognitionException [2] - { - try - { - int _type = FROM; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:26:6: ( 'from' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:26:8: 'from' - { - Match("from"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "FROM" - - // $ANTLR start "FULL" - public void mFULL() // throws RecognitionException [2] - { - try - { - int _type = FULL; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:27:6: ( 'full' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:27:8: 'full' - { - Match("full"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "FULL" - - // $ANTLR start "GROUP" - public void mGROUP() // throws RecognitionException [2] - { - try - { - int _type = GROUP; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:28:7: ( 'group' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:28:9: 'group' - { - Match("group"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "GROUP" - - // $ANTLR start "HAVING" - public void mHAVING() // throws RecognitionException [2] - { - try - { - int _type = HAVING; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:29:8: ( 'having' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:29:10: 'having' - { - Match("having"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "HAVING" - - // $ANTLR start "IN" - public void mIN() // throws RecognitionException [2] - { - try - { - int _type = IN; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:30:4: ( 'in' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:30:6: 'in' - { - Match("in"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "IN" - - // $ANTLR start "INDICES" - public void mINDICES() // throws RecognitionException [2] - { - try - { - int _type = INDICES; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:31:9: ( 'indices' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:31:11: 'indices' - { - Match("indices"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "INDICES" - - // $ANTLR start "INNER" - public void mINNER() // throws RecognitionException [2] - { - try - { - int _type = INNER; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:32:7: ( 'inner' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:32:9: 'inner' - { - Match("inner"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "INNER" - - // $ANTLR start "INSERT" - public void mINSERT() // throws RecognitionException [2] - { - try - { - int _type = INSERT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:33:8: ( 'insert' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:33:10: 'insert' - { - Match("insert"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "INSERT" - - // $ANTLR start "INTO" - public void mINTO() // throws RecognitionException [2] - { - try - { - int _type = INTO; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:34:6: ( 'into' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:34:8: 'into' - { - Match("into"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "INTO" - - // $ANTLR start "IS" - public void mIS() // throws RecognitionException [2] - { - try - { - int _type = IS; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:35:4: ( 'is' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:35:6: 'is' - { - Match("is"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "IS" - - // $ANTLR start "JOIN" - public void mJOIN() // throws RecognitionException [2] - { - try - { - int _type = JOIN; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:36:6: ( 'join' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:36:8: 'join' - { - Match("join"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "JOIN" - - // $ANTLR start "LEFT" - public void mLEFT() // throws RecognitionException [2] - { - try - { - int _type = LEFT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:37:6: ( 'left' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:37:8: 'left' - { - Match("left"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "LEFT" - - // $ANTLR start "LIKE" - public void mLIKE() // throws RecognitionException [2] - { - try - { - int _type = LIKE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:38:6: ( 'like' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:38:8: 'like' - { - Match("like"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "LIKE" - - // $ANTLR start "MAX" - public void mMAX() // throws RecognitionException [2] - { - try - { - int _type = MAX; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:39:5: ( 'max' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:39:7: 'max' - { - Match("max"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "MAX" - - // $ANTLR start "MIN" - public void mMIN() // throws RecognitionException [2] - { - try - { - int _type = MIN; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:40:5: ( 'min' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:40:7: 'min' - { - Match("min"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "MIN" - - // $ANTLR start "NEW" - public void mNEW() // throws RecognitionException [2] - { - try - { - int _type = NEW; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:41:5: ( 'new' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:41:7: 'new' - { - Match("new"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "NEW" - - // $ANTLR start "NOT" - public void mNOT() // throws RecognitionException [2] - { - try - { - int _type = NOT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:42:5: ( 'not' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:42:7: 'not' - { - Match("not"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "NOT" - - // $ANTLR start "NULL" - public void mNULL() // throws RecognitionException [2] - { - try - { - int _type = NULL; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:43:6: ( 'null' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:43:8: 'null' - { - Match("null"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "NULL" - - // $ANTLR start "OR" - public void mOR() // throws RecognitionException [2] - { - try - { - int _type = OR; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:44:4: ( 'or' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:44:6: 'or' - { - Match("or"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "OR" - - // $ANTLR start "ORDER" - public void mORDER() // throws RecognitionException [2] - { - try - { - int _type = ORDER; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:45:7: ( 'order' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:45:9: 'order' - { - Match("order"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ORDER" - - // $ANTLR start "OUTER" - public void mOUTER() // throws RecognitionException [2] - { - try - { - int _type = OUTER; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:46:7: ( 'outer' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:46:9: 'outer' - { - Match("outer"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "OUTER" - - // $ANTLR start "PROPERTIES" - public void mPROPERTIES() // throws RecognitionException [2] - { - try - { - int _type = PROPERTIES; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:47:12: ( 'properties' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:47:14: 'properties' - { - Match("properties"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "PROPERTIES" - - // $ANTLR start "RIGHT" - public void mRIGHT() // throws RecognitionException [2] - { - try - { - int _type = RIGHT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:48:7: ( 'right' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:48:9: 'right' - { - Match("right"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "RIGHT" - - // $ANTLR start "SELECT" - public void mSELECT() // throws RecognitionException [2] - { - try - { - int _type = SELECT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:49:8: ( 'select' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:49:10: 'select' - { - Match("select"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "SELECT" - - // $ANTLR start "SET" - public void mSET() // throws RecognitionException [2] - { - try - { - int _type = SET; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:50:5: ( 'set' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:50:7: 'set' - { - Match("set"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "SET" - - // $ANTLR start "SOME" - public void mSOME() // throws RecognitionException [2] - { - try - { - int _type = SOME; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:51:6: ( 'some' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:51:8: 'some' - { - Match("some"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "SOME" - - // $ANTLR start "SUM" - public void mSUM() // throws RecognitionException [2] - { - try - { - int _type = SUM; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:52:5: ( 'sum' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:52:7: 'sum' - { - Match("sum"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "SUM" - - // $ANTLR start "TRUE" - public void mTRUE() // throws RecognitionException [2] - { - try - { - int _type = TRUE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:53:6: ( 'true' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:53:8: 'true' - { - Match("true"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "TRUE" - - // $ANTLR start "UNION" - public void mUNION() // throws RecognitionException [2] - { - try - { - int _type = UNION; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:54:7: ( 'union' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:54:9: 'union' - { - Match("union"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "UNION" - - // $ANTLR start "UPDATE" - public void mUPDATE() // throws RecognitionException [2] - { - try - { - int _type = UPDATE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:55:8: ( 'update' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:55:10: 'update' - { - Match("update"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "UPDATE" - - // $ANTLR start "VERSIONED" - public void mVERSIONED() // throws RecognitionException [2] - { - try - { - int _type = VERSIONED; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:56:11: ( 'versioned' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:56:13: 'versioned' - { - Match("versioned"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "VERSIONED" - - // $ANTLR start "WHERE" - public void mWHERE() // throws RecognitionException [2] - { - try - { - int _type = WHERE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:57:7: ( 'where' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:57:9: 'where' - { - Match("where"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "WHERE" - - // $ANTLR start "LITERAL_by" - public void mLITERAL_by() // throws RecognitionException [2] - { - try - { - int _type = LITERAL_by; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:58:12: ( 'by' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:58:14: 'by' - { - Match("by"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "LITERAL_by" - - // $ANTLR start "CASE" - public void mCASE() // throws RecognitionException [2] - { - try - { - int _type = CASE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:59:6: ( 'case' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:59:8: 'case' - { - Match("case"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "CASE" - - // $ANTLR start "END" - public void mEND() // throws RecognitionException [2] - { - try - { - int _type = END; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:60:5: ( 'end' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:60:7: 'end' - { - Match("end"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "END" - - // $ANTLR start "ELSE" - public void mELSE() // throws RecognitionException [2] - { - try - { - int _type = ELSE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:61:6: ( 'else' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:61:8: 'else' - { - Match("else"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ELSE" - - // $ANTLR start "THEN" - public void mTHEN() // throws RecognitionException [2] - { - try - { - int _type = THEN; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:62:6: ( 'then' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:62:8: 'then' - { - Match("then"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "THEN" - - // $ANTLR start "WHEN" - public void mWHEN() // throws RecognitionException [2] - { - try - { - int _type = WHEN; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:63:6: ( 'when' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:63:8: 'when' - { - Match("when"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "WHEN" - - // $ANTLR start "ON" - public void mON() // throws RecognitionException [2] - { - try - { - int _type = ON; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:64:4: ( 'on' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:64:6: 'on' - { - Match("on"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "ON" - - // $ANTLR start "WITH" - public void mWITH() // throws RecognitionException [2] - { - try - { - int _type = WITH; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:65:6: ( 'with' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:65:8: 'with' - { - Match("with"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "WITH" - - // $ANTLR start "BOTH" - public void mBOTH() // throws RecognitionException [2] - { - try - { - int _type = BOTH; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:66:6: ( 'both' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:66:8: 'both' - { - Match("both"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "BOTH" - - // $ANTLR start "EMPTY" - public void mEMPTY() // throws RecognitionException [2] - { - try - { - int _type = EMPTY; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:67:7: ( 'empty' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:67:9: 'empty' - { - Match("empty"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "EMPTY" - - // $ANTLR start "LEADING" - public void mLEADING() // throws RecognitionException [2] - { - try - { - int _type = LEADING; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:68:9: ( 'leading' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:68:11: 'leading' - { - Match("leading"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "LEADING" - - // $ANTLR start "MEMBER" - public void mMEMBER() // throws RecognitionException [2] - { - try - { - int _type = MEMBER; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:69:8: ( 'member' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:69:10: 'member' - { - Match("member"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "MEMBER" - - // $ANTLR start "OBJECT" - public void mOBJECT() // throws RecognitionException [2] - { - try - { - int _type = OBJECT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:70:8: ( 'object' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:70:10: 'object' - { - Match("object"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "OBJECT" - - // $ANTLR start "OF" - public void mOF() // throws RecognitionException [2] - { - try - { - int _type = OF; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:71:4: ( 'of' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:71:6: 'of' - { - Match("of"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "OF" - - // $ANTLR start "TRAILING" - public void mTRAILING() // throws RecognitionException [2] - { - try - { - int _type = TRAILING; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:72:10: ( 'trailing' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:72:12: 'trailing' - { - Match("trailing"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "TRAILING" - - // $ANTLR start "T__131" - public void mT__131() // throws RecognitionException [2] - { - try - { - int _type = T__131; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:73:8: ( 'ascending' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:73:10: 'ascending' - { - Match("ascending"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "T__131" - - // $ANTLR start "T__132" - public void mT__132() // throws RecognitionException [2] - { - try - { - int _type = T__132; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:74:8: ( 'descending' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:74:10: 'descending' - { - Match("descending"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "T__132" - - // $ANTLR start "EQ" - public void mEQ() // throws RecognitionException [2] - { - try - { - int _type = EQ; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:672:3: ( '=' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:672:5: '=' - { - Match('='); if (state.failed) return ; - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "EQ" - - // $ANTLR start "LT" - public void mLT() // throws RecognitionException [2] - { - try - { - int _type = LT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:673:3: ( '<' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:673:5: '<' - { - Match('<'); if (state.failed) return ; - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "LT" - - // $ANTLR start "GT" - public void mGT() // throws RecognitionException [2] - { - try - { - int _type = GT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:674:3: ( '>' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:674:5: '>' - { - Match('>'); if (state.failed) return ; - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "GT" - - // $ANTLR start "SQL_NE" - public void mSQL_NE() // throws RecognitionException [2] - { - try - { - int _type = SQL_NE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:675:7: ( '<>' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:675:9: '<>' - { - Match("<>"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "SQL_NE" - - // $ANTLR start "NE" - public void mNE() // throws RecognitionException [2] - { - try - { - int _type = NE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:676:3: ( '!=' | '^=' ) - int alt1 = 2; - int LA1_0 = input.LA(1); - - if ( (LA1_0 == '!') ) - { - alt1 = 1; - } - else if ( (LA1_0 == '^') ) - { - alt1 = 2; - } - else - { - if ( state.backtracking > 0 ) {state.failed = true; return ;} - NoViableAltException nvae_d1s0 = - new NoViableAltException("", 1, 0, input); - - throw nvae_d1s0; - } - switch (alt1) - { - case 1 : - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:676:5: '!=' - { - Match("!="); if (state.failed) return ; - - - } - break; - case 2 : - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:676:12: '^=' - { - Match("^="); if (state.failed) return ; - - - } - break; - - } - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "NE" - - // $ANTLR start "LE" - public void mLE() // throws RecognitionException [2] - { - try - { - int _type = LE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:677:3: ( '<=' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:677:5: '<=' - { - Match("<="); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "LE" - - // $ANTLR start "GE" - public void mGE() // throws RecognitionException [2] - { - try - { - int _type = GE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:678:3: ( '>=' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:678:5: '>=' - { - Match(">="); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "GE" - - // $ANTLR start "BOR" - public void mBOR() // throws RecognitionException [2] - { - try - { - int _type = BOR; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:680:5: ( '|' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:680:8: '|' - { - Match('|'); if (state.failed) return ; - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "BOR" - - // $ANTLR start "BXOR" - public void mBXOR() // throws RecognitionException [2] - { - try - { - int _type = BXOR; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:681:6: ( '^' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:681:8: '^' - { - Match('^'); if (state.failed) return ; - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "BXOR" - - // $ANTLR start "BAND" - public void mBAND() // throws RecognitionException [2] - { - try - { - int _type = BAND; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:682:6: ( '&' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:682:8: '&' - { - Match('&'); if (state.failed) return ; - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "BAND" - - // $ANTLR start "BNOT" - public void mBNOT() // throws RecognitionException [2] - { - try - { - int _type = BNOT; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:683:6: ( '!' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:683:8: '!' - { - Match('!'); if (state.failed) return ; - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "BNOT" - - // $ANTLR start "COMMA" - public void mCOMMA() // throws RecognitionException [2] - { - try - { - int _type = COMMA; - int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:685:6: ( ',' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:685:8: ',' - { - Match(','); if (state.failed) return ; - - } - - state.type = _type; - state.channel = _channel; - } - finally - { - } - } - // $ANTLR end "COMMA" - - // $ANTLR start "OPEN" ... [truncated message content] |
From: <ric...@us...> - 2010-05-27 09:19:43
|
Revision: 4982 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4982&view=rev Author: ricbrown Date: 2010-05-27 09:19:36 +0000 (Thu, 27 May 2010) Log Message: ----------- Fix NH-2199 (Map with element doesn't support nullable types) Modified Paths: -------------- trunk/nhibernate/releasenotes.txt trunk/nhibernate/src/NHibernate/Collection/Generic/PersistentGenericMap.cs trunk/nhibernate/src/NHibernate/Collection/PersistentMap.cs trunk/nhibernate/src/NHibernate.DomainModel/Baz.cs trunk/nhibernate/src/NHibernate.Test/Legacy/FooBarTest.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/CollectionTest/NullableValueTypeElementMapFixture.cs trunk/nhibernate/src/NHibernate.Test/CollectionTest/NullableValueTypeElementMapFixture.hbm.xml trunk/nhibernate/src/NHibernate.Test/CollectionTest/Parent.cs Modified: trunk/nhibernate/releasenotes.txt =================================================================== --- trunk/nhibernate/releasenotes.txt 2010-05-24 20:02:27 UTC (rev 4981) +++ trunk/nhibernate/releasenotes.txt 2010-05-27 09:19:36 UTC (rev 4982) @@ -1,3 +1,10 @@ +Build 3.0.0.Alpha1 +============================= +** Known BREAKING CHANGES from NH2.1.1.GA to NH3.0.0.Alpha1 + ##### Run time ##### + * (NH-2199) - null values in maps/dictionaries are no longer silenty ignored/deleted + + Build 2.1.1.GA (rev4814) ============================= Modified: trunk/nhibernate/src/NHibernate/Collection/Generic/PersistentGenericMap.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Collection/Generic/PersistentGenericMap.cs 2010-05-24 20:02:27 UTC (rev 4981) +++ trunk/nhibernate/src/NHibernate/Collection/Generic/PersistentGenericMap.cs 2010-05-27 09:19:36 UTC (rev 4982) @@ -54,7 +54,7 @@ IDictionary<TKey, TValue> sn = (IDictionary<TKey, TValue>)GetSnapshot(); foreach (KeyValuePair<TKey, TValue> e in sn) { - if (e.Value != null && !gmap.ContainsKey(e.Key)) + if (!gmap.ContainsKey(e.Key)) { object key = e.Key; deletes.Add(indexIsFormula ? e.Value : key); @@ -67,7 +67,7 @@ { IDictionary sn = (IDictionary)GetSnapshot(); KeyValuePair<TKey, TValue> e = (KeyValuePair<TKey, TValue>)entry; - return e.Value != null && sn[e.Key] == null; + return !sn.Contains(e.Key); } public override bool NeedsUpdating(object entry, int i, IType elemType) @@ -75,7 +75,9 @@ IDictionary sn = (IDictionary)GetSnapshot(); KeyValuePair<TKey, TValue> e = (KeyValuePair<TKey, TValue>)entry; object snValue = sn[e.Key]; - return e.Value != null && snValue != null && elemType.IsDirty(snValue, e.Value, Session); + bool isNew = !sn.Contains(e.Key); + return e.Value != null && snValue != null && elemType.IsDirty(snValue, e.Value, Session) + || (!isNew && ((e.Value == null) != (snValue == null))); } public override object GetIndex(object entry, int i, ICollectionPersister persister) @@ -96,9 +98,14 @@ public override bool EntryExists(object entry, int i) { - return ((KeyValuePair<TKey, TValue>)entry).Value != null; + return gmap.ContainsKey(((KeyValuePair<TKey, TValue>)entry).Key); } + protected override void AddDuringInitialize(object index, object element) + { + gmap[(TKey)index] = (TValue)element; + } + #region IDictionary<TKey,TValue> Members bool IDictionary<TKey, TValue>.ContainsKey(TKey key) Modified: trunk/nhibernate/src/NHibernate/Collection/PersistentMap.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Collection/PersistentMap.cs 2010-05-24 20:02:27 UTC (rev 4981) +++ trunk/nhibernate/src/NHibernate/Collection/PersistentMap.cs 2010-05-27 09:19:36 UTC (rev 4982) @@ -109,13 +109,15 @@ object element = role.ReadElement(rs, owner, descriptor.SuffixedElementAliases, Session); object index = role.ReadIndex(rs, descriptor.SuffixedIndexAliases, Session); - if (element != null) - { - map[index] = element; - } + AddDuringInitialize(index, element); return element; } + protected virtual void AddDuringInitialize(object index, object element) + { + map[index] = element; + } + public override IEnumerable Entries(ICollectionPersister persister) { return map; @@ -158,7 +160,7 @@ foreach (DictionaryEntry e in sn) { object key = e.Key; - if (e.Value != null && map[key] == null) + if (!map.Contains(key)) { deletes.Add(indexIsFormula ? e.Value : key); } @@ -170,7 +172,7 @@ { IDictionary sn = (IDictionary) GetSnapshot(); DictionaryEntry e = (DictionaryEntry) entry; - return e.Value != null && sn[e.Key] == null; + return !sn.Contains(e.Key); } public override bool NeedsUpdating(object entry, int i, IType elemType) @@ -178,7 +180,9 @@ IDictionary sn = (IDictionary) GetSnapshot(); DictionaryEntry e = (DictionaryEntry) entry; object snValue = sn[e.Key]; - return e.Value != null && snValue != null && elemType.IsDirty(snValue, e.Value, Session); + bool isNew = !sn.Contains(e.Key); + return e.Value != null && snValue != null && elemType.IsDirty(snValue, e.Value, Session) + || (!isNew && ((e.Value == null) != (snValue == null))); } public override object GetIndex(object entry, int i, ICollectionPersister persister) @@ -216,7 +220,7 @@ public override bool EntryExists(object entry, int i) { - return ((DictionaryEntry) entry).Value != null; + return map.Contains(((DictionaryEntry) entry).Key); } #region IDictionary Members Modified: trunk/nhibernate/src/NHibernate.DomainModel/Baz.cs =================================================================== --- trunk/nhibernate/src/NHibernate.DomainModel/Baz.cs 2010-05-24 20:02:27 UTC (rev 4981) +++ trunk/nhibernate/src/NHibernate.DomainModel/Baz.cs 2010-05-27 09:19:36 UTC (rev 4982) @@ -391,7 +391,7 @@ StringDateMap = new SortedList(); StringDateMap.Add("now", DateTime.Now); - StringDateMap.Add("never", null); + StringDateMap.Add("never", null); // value is persisted since NH-2199 // according to SQL Server the big bag happened in 1753 ;) StringDateMap.Add("big bang", new DateTime(1753, 01, 01)); //StringDateMap.Add( "millenium", new DateTime( 2000, 01, 01 ) ); Added: trunk/nhibernate/src/NHibernate.Test/CollectionTest/NullableValueTypeElementMapFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/CollectionTest/NullableValueTypeElementMapFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/CollectionTest/NullableValueTypeElementMapFixture.cs 2010-05-27 09:19:36 UTC (rev 4982) @@ -0,0 +1,227 @@ +using System; +using System.Collections; +using NUnit.Framework; + +namespace NHibernate.Test.CollectionTest +{ + [TestFixture] + public class NullableValueTypeElementMapFixture : TestCase + { + protected override IList Mappings + { + get { return new[] {"CollectionTest.NullableValueTypeElementMapFixture.hbm.xml"}; } + } + + protected override string MappingsAssembly + { + get { return "NHibernate.Test"; } + } + + protected override void OnTearDown() + { + using (var s = sessions.OpenSession()) + { + s.Delete("from Parent"); + s.Flush(); + } + } + + [Test] + public void ShouldOverwriteElementValueWithNull() + { + Guid parentId; + var date = new DateTime(2010, 09, 08); + + using (var s = OpenSession()) + using (var tx = s.BeginTransaction()) + { + var parent = new Parent(); + parent.TypedDates[0] = date; + + s.Save(parent); + parentId = parent.Id; + tx.Commit(); + } + + using (var s = OpenSession()) + using (var tx = s.BeginTransaction()) + { + var parent = s.Load<Parent>(parentId); + + Assert.That(parent.TypedDates.Count, Is.EqualTo(1), + "Should have one child on first reload"); + + Assert.That(parent.TypedDates[0], Is.Not.Null, + "Should have value in map for 0 on first reload"); + + Assert.That(parent.TypedDates[0].Value, Is.EqualTo(date), + "Should have same date as saved in map for 0 on first reload"); + + parent.TypedDates[0] = null; + tx.Commit(); + } + + using (var s = OpenSession()) + using (var tx = s.BeginTransaction()) + { + var parent = s.Load<Parent>(parentId); + + Assert.That(parent.TypedDates.Count, Is.EqualTo(1), + "Should have one child on reload after nulling"); + + Assert.That(parent.TypedDates[0], Is.Null, + "Should have null value for child on reload after nulling"); + } + } + + [Test] + public void ShouldOverwriteNullElementWithValue() + { + Guid parentId; + var date = new DateTime(2010, 09, 08); + + using (var s = OpenSession()) + using (var tx = s.BeginTransaction()) + { + var parent = new Parent(); + parent.TypedDates[0] = null; + + s.Save(parent); + parentId = parent.Id; + tx.Commit(); + } + + using (var s = OpenSession()) + using (var tx = s.BeginTransaction()) + { + var parent = s.Load<Parent>(parentId); + + Assert.That(parent.TypedDates.Count, Is.EqualTo(1), + "Should have 1 child after first reload"); + + Assert.That(parent.TypedDates[0], Is.Null, + "Should have null value after first reload"); + + parent.TypedDates[0] = date; + tx.Commit(); + } + + using (var s = OpenSession()) + using (var tx = s.BeginTransaction()) + { + var parent = s.Load<Parent>(parentId); + + Assert.That(parent.TypedDates.Count, Is.EqualTo(1), + "Should have 1 child on reload after setting value"); + + Assert.That(parent.TypedDates[0], Is.Not.Null, + "Should have child with value on reload after setting value"); + + Assert.That(parent.TypedDates[0].Value, Is.EqualTo(date)); + } + } + + [Test] + public void ShouldAddAndRemoveNullElements() + { + Guid parentId; + var date = new DateTime(2010, 09, 08); + + using (var s = OpenSession()) + using (var tx = s.BeginTransaction()) + { + var parent = new Parent(); + parent.TypedDates[0] = null; + parent.TypedDates[1] = date; + + s.Save(parent); + parentId = parent.Id; + tx.Commit(); + } + + using (var s = OpenSession()) + using (var tx = s.BeginTransaction()) + { + var parent = s.Load<Parent>(parentId); + + Assert.That(parent.TypedDates.Count, Is.EqualTo(2)); + Assert.That(parent.TypedDates[0], Is.Null); + Assert.That(parent.TypedDates[1], Is.EqualTo(date)); + + parent.TypedDates.Remove(0); + parent.TypedDates[2] = null; + tx.Commit(); + } + + using (var s = OpenSession()) + using (var tx = s.BeginTransaction()) + { + var parent = s.Load<Parent>(parentId); + + Assert.That(parent.TypedDates.Count, Is.EqualTo(2)); + Assert.That(parent.TypedDates[1], Is.EqualTo(date)); + Assert.That(parent.TypedDates[2], Is.Null); + } + } + + [Test] + public void AddRemoveUntypedElements() + { + Guid parentId; + var date = new DateTime(2010, 09, 08); + + int toBeRemoved = 0; + int toBeUpdatedToNull = 1; + int toRemainNull = 2; + int toBeUpdatedFromNull = 3; + int toBeAddedNull = 4; + int toBeAddedNotNull = 5; + + using (var s = OpenSession()) + using (var tx = s.BeginTransaction()) + { + var parent = new Parent(); + parent.UntypedDates[toBeRemoved] = null; + parent.UntypedDates[toBeUpdatedToNull] = date; + parent.UntypedDates[toRemainNull] = null; + parent.UntypedDates[toBeUpdatedFromNull] = null; + + s.Save(parent); + parentId = parent.Id; + tx.Commit(); + } + + using (var s = OpenSession()) + using (var tx = s.BeginTransaction()) + { + var parent = s.Load<Parent>(parentId); + + Assert.That(parent.UntypedDates.Count, Is.EqualTo(4)); + Assert.That(parent.UntypedDates[toBeRemoved], Is.Null); + Assert.That(parent.UntypedDates[toBeUpdatedToNull], Is.EqualTo(date)); + Assert.That(parent.UntypedDates[toRemainNull], Is.Null); + Assert.That(parent.UntypedDates[toBeUpdatedFromNull], Is.Null); + + parent.UntypedDates.Remove(toBeRemoved); + parent.UntypedDates[toBeUpdatedToNull] = null; + parent.UntypedDates[toBeUpdatedFromNull] = date; + parent.UntypedDates[toBeAddedNull] = null; + parent.UntypedDates[toBeAddedNotNull] = date; + tx.Commit(); + } + + using (var s = OpenSession()) + using (var tx = s.BeginTransaction()) + { + var parent = s.Load<Parent>(parentId); + + Assert.That(parent.UntypedDates.Count, Is.EqualTo(5)); + Assert.That(parent.UntypedDates[toBeUpdatedToNull], Is.Null); + Assert.That(parent.UntypedDates[toRemainNull], Is.Null); + Assert.That(parent.UntypedDates[toBeUpdatedFromNull], Is.EqualTo(date)); + Assert.That(parent.UntypedDates[toBeAddedNull], Is.Null); + Assert.That(parent.UntypedDates[toBeAddedNotNull], Is.EqualTo(date)); + } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/CollectionTest/NullableValueTypeElementMapFixture.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/CollectionTest/NullableValueTypeElementMapFixture.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/CollectionTest/NullableValueTypeElementMapFixture.hbm.xml 2010-05-27 09:19:36 UTC (rev 4982) @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" namespace="NHibernate.Test.CollectionTest"> + <class name="Parent"> + <id name="Id"> + <generator class="guid.comb" /> + </id> + <map name="TypedDates"> + <key column="ParentId" /> + <index column="Idx" type="int" /> + <element column="Value" /> + </map> + <map name="UntypedDates"> + <key column="ParentId" /> + <index column="Idx" type="int" /> + <element column="Value" type="System.Nullable`1[[System.DateTime, mscorlib]]" /> + </map> + </class> +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/CollectionTest/Parent.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/CollectionTest/Parent.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/CollectionTest/Parent.cs 2010-05-27 09:19:36 UTC (rev 4982) @@ -0,0 +1,19 @@ +using System; +using System.Collections; +using System.Collections.Generic; + +namespace NHibernate.Test.CollectionTest +{ + public class Parent + { + public virtual Guid Id { get; set; } + public virtual IDictionary<int, DateTime?> TypedDates { get; set; } + public virtual IDictionary UntypedDates { get; set; } + + public Parent() + { + TypedDates = new Dictionary<int, DateTime?>(); + UntypedDates = new Hashtable(); + } + } +} Modified: trunk/nhibernate/src/NHibernate.Test/Legacy/FooBarTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Legacy/FooBarTest.cs 2010-05-24 20:02:27 UTC (rev 4981) +++ trunk/nhibernate/src/NHibernate.Test/Legacy/FooBarTest.cs 2010-05-27 09:19:36 UTC (rev 4982) @@ -825,7 +825,7 @@ list = s.CreateQuery("select index(date) from Baz baz join baz.StringDateMap date").List(); Console.WriteLine(list); - Assert.AreEqual(2, list.Count); + Assert.AreEqual(3, list.Count); s.CreateQuery( "from foo in class Foo where foo.Integer not between 1 and 5 and foo.String not in ('cde', 'abc') and foo.String is not null and foo.Integer<=3") Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-05-24 20:02:27 UTC (rev 4981) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-05-27 09:19:36 UTC (rev 4982) @@ -126,6 +126,8 @@ <Compile Include="Classic\Video.cs" /> <Compile Include="CollectionTest\A.cs" /> <Compile Include="CollectionTest\IdBagFixture.cs" /> + <Compile Include="CollectionTest\NullableValueTypeElementMapFixture.cs" /> + <Compile Include="CollectionTest\Parent.cs" /> <Compile Include="CompositeCollection\BaseClassA.cs" /> <Compile Include="CompositeCollection\BaseClassB.cs" /> <Compile Include="CompositeCollection\ChildClassA.cs" /> @@ -2135,6 +2137,7 @@ <EmbeddedResource Include="Criteria\Lambda\Mappings.hbm.xml" /> <EmbeddedResource Include="CfgTest\Loquacious\EntityToCache.hbm.xml" /> <EmbeddedResource Include="DriverTest\SqlServerCeEntity.hbm.xml" /> + <EmbeddedResource Include="CollectionTest\NullableValueTypeElementMapFixture.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> <EmbeddedResource Include="NHSpecificTest\NH2201\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2192\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ric...@us...> - 2010-06-19 15:00:26
|
Revision: 4992 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4992&view=rev Author: ricbrown Date: 2010-06-19 15:00:19 +0000 (Sat, 19 Jun 2010) Log Message: ----------- Changed defaults for command-line build to Sql2008 dialect, and updated NorthwindDbCreator to use static date expected in tests. Modified Paths: -------------- trunk/nhibernate/build-common/nhibernate-properties.xml trunk/nhibernate/src/NHibernate.Test/Linq/NorthwindDbCreator.cs Modified: trunk/nhibernate/build-common/nhibernate-properties.xml =================================================================== --- trunk/nhibernate/build-common/nhibernate-properties.xml 2010-06-18 05:20:34 UTC (rev 4991) +++ trunk/nhibernate/build-common/nhibernate-properties.xml 2010-06-19 15:00:19 UTC (rev 4992) @@ -1,6 +1,6 @@ <?xml version="1.0" ?> <project xmlns="http://nant.sf.net/release/0.85-rc3/nant.xsd"> - <property name="nhibernate.dialect" value="NHibernate.Dialect.MsSql2005Dialect" overwrite="false"/> + <property name="nhibernate.dialect" value="NHibernate.Dialect.MsSql2008Dialect" overwrite="false"/> <property name="nhibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver" overwrite="false"/> <property name="nhibernate.connection.connection_string" value="Server=(local);initial catalog=nhibernate;Integrated Security=SSPI" overwrite="false"/> </project> Modified: trunk/nhibernate/src/NHibernate.Test/Linq/NorthwindDbCreator.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Linq/NorthwindDbCreator.cs 2010-06-18 05:20:34 UTC (rev 4991) +++ trunk/nhibernate/src/NHibernate.Test/Linq/NorthwindDbCreator.cs 2010-06-19 15:00:19 UTC (rev 4992) @@ -8,6 +8,8 @@ { public static class NorthwindDbCreator { + private static readonly DateTime KnownDate = new DateTime(2010, 06, 17); + public static void CreateMiscTestData(ISession session) { var roles = new[] @@ -30,7 +32,7 @@ var users = new[] { - new User("ayende", DateTime.Today) + new User("ayende", KnownDate) { Role = roles[0], InvalidLoginAttempts = 4, @@ -68,24 +70,24 @@ { new Timesheet { - SubmittedDate = DateTime.Today, + SubmittedDate = KnownDate, Submitted = true }, new Timesheet { - SubmittedDate = DateTime.Today.AddDays(-1), + SubmittedDate = KnownDate.AddDays(-1), Submitted = false, Entries = new List<TimesheetEntry> { new TimesheetEntry { - EntryDate = DateTime.Today, + EntryDate = KnownDate, NumberOfHours = 6, Comments = "testing 123" }, new TimesheetEntry { - EntryDate = DateTime.Today.AddDays(1), + EntryDate = KnownDate.AddDays(1), NumberOfHours = 14 } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2010-06-28 12:11:33
|
Revision: 4996 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4996&view=rev Author: fabiomaulo Date: 2010-06-28 12:11:26 +0000 (Mon, 28 Jun 2010) Log Message: ----------- - actualized nunit.framework to last released - added SharpTestsEx - Fix NH-2230 (<parent> tag does not allow any accessor) Modified Paths: -------------- trunk/nhibernate/default.build trunk/nhibernate/lib/net/3.5/nunit.framework.dll trunk/nhibernate/src/NHibernate/Cfg/MappingSchema/Hbm.generated.cs trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ClassBinder.cs trunk/nhibernate/src/NHibernate/nhibernate-mapping.xsd trunk/nhibernate/src/NHibernate.Everything.sln trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.build trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/lib/net/3.5/SharpTestsEx.NUnit.dll trunk/nhibernate/lib/net/3.5/SharpTestsEx.NUnit.xml trunk/nhibernate/lib/net/3.5/SharpTestsEx_License.txt trunk/nhibernate/lib/net/3.5/nunit.framework.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2230/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2230/Domain.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2230/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2230/Mappings.hbm.xml Modified: trunk/nhibernate/default.build =================================================================== --- trunk/nhibernate/default.build 2010-06-28 10:32:18 UTC (rev 4995) +++ trunk/nhibernate/default.build 2010-06-28 12:11:26 UTC (rev 4996) @@ -331,7 +331,8 @@ <copy todir="${bin-pack.tests}"> <fileset basedir="${bin.dir}"> <include name="nunit*" /> - <include name="NHibernate.Domain*" /> + <include name="SharpTestsEx*" /> + <include name="NHibernate.Domain*" /> <include name="NHibernate.Test*" /> </fileset> </copy> Added: trunk/nhibernate/lib/net/3.5/SharpTestsEx.NUnit.dll =================================================================== (Binary files differ) Property changes on: trunk/nhibernate/lib/net/3.5/SharpTestsEx.NUnit.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/nhibernate/lib/net/3.5/SharpTestsEx.NUnit.xml =================================================================== --- trunk/nhibernate/lib/net/3.5/SharpTestsEx.NUnit.xml (rev 0) +++ trunk/nhibernate/lib/net/3.5/SharpTestsEx.NUnit.xml 2010-06-28 12:11:26 UTC (rev 4996) @@ -0,0 +1,772 @@ +<?xml version="1.0"?> +<doc> + <assembly> + <name>SharpTestsEx.NUnit</name> + </assembly> + <members> + <member name="T:SharpTestsEx.ActionAssert"> + <summary> + Assertion for <see cref="T:System.Action"/>. + </summary> + </member> + <member name="M:SharpTestsEx.ActionAssert.Throws``1(System.Action)"> + <summary> + Verifies that the given <see cref="T:System.Action"/> throws a specific <see cref="T:System.Exception"/>. + </summary> + <typeparam name="T">The specific expected <see cref="T:System.Exception"/>.</typeparam> + <param name="action">The given <see cref="T:System.Action"/> to execute.</param> + <returns>The <see cref="T:System.Exception"/>.</returns> + <exception cref="T:SharpTestsEx.AssertException">The <paramref name="action"/> does not throws the expected <see cref="T:System.Exception"/>. </exception> + </member> + <member name="M:SharpTestsEx.ActionAssert.Throws``1(System.Action,System.String)"> + <summary> + Verifies that the given <see cref="T:System.Action"/> throws a specific <see cref="T:System.Exception"/>. + </summary> + <typeparam name="T">The specific expected <see cref="T:System.Exception"/>.</typeparam> + <param name="action">The given <see cref="T:System.Action"/> to execute.</param> + <param name="customMessage">A message to display if the assertion fails. This message can be seen in the unit test results. </param> + <returns>The <see cref="T:System.Exception"/>.</returns> + <exception cref="T:SharpTestsEx.AssertException">The <paramref name="action"/> does not throws the expected <see cref="T:System.Exception"/>. </exception> + </member> + <member name="M:SharpTestsEx.ActionAssert.Throws(System.Action)"> + <summary> + Verifies that the given <see cref="T:System.Action"/> throws an <see cref="T:System.Exception"/>. + </summary> + <param name="action">The given <see cref="T:System.Action"/> to execute.</param> + <returns>The <see cref="T:System.Exception"/>.</returns> + <exception cref="T:SharpTestsEx.AssertException">The <paramref name="action"/> does not throws an <see cref="T:System.Exception"/>. </exception> + </member> + <member name="M:SharpTestsEx.ActionAssert.Throws(System.Action,System.String)"> + <summary> + Verifies that the given <see cref="T:System.Action"/> throws an <see cref="T:System.Exception"/>. + </summary> + <param name="action">The given <see cref="T:System.Action"/> to execute.</param> + <param name="customMessage">A message to display if the assertion fails. This message can be seen in the unit test results. </param> + <returns>The <see cref="T:System.Exception"/>.</returns> + <exception cref="T:SharpTestsEx.AssertException">The <paramref name="action"/> does not throws the expected <see cref="T:System.Exception"/>. </exception> + </member> + <member name="M:SharpTestsEx.ActionAssert.NotThrow(System.Action)"> + <summary> + Verifies that the given <see cref="T:System.Action"/> does not throw any <see cref="T:System.Exception"/>. + </summary> + <param name="action">The given <see cref="T:System.Action"/> to execute.</param> + </member> + <member name="M:SharpTestsEx.ActionAssert.NotThrow(System.Action,System.String)"> + <summary> + Verifies that the given <see cref="T:System.Action"/> does not throw any <see cref="T:System.Exception"/>. + </summary> + <param name="action">The given <see cref="T:System.Action"/> to execute.</param> + <param name="customMessage">A message to display if the assertion fails. This message can be seen in the unit test results. </param> + </member> + <member name="T:SharpTestsEx.Assertions.ExpressionStringBuilder"> + <summary> + The intention of <see cref="T:SharpTestsEx.Assertions.ExpressionStringBuilder"/> is to create a more readable + string representation for the failure message. + </summary> + </member> + <member name="T:SharpTestsEx.Assertions.NullAssertion`1"> + <summary> + Verifies that the specified object is null. The assertion fails if it is not null. + </summary> + <typeparam name="TA">Type of the actual value subject of the assertion.</typeparam> + </member> + <member name="T:SharpTestsEx.Assertions.Assertion`2"> + <summary> + Represent a Assertion template where the real logic is delegated. + </summary> + <typeparam name="TA">Type of the actual value.</typeparam> + <typeparam name="TE">Type of the expected value.</typeparam> + </member> + <member name="M:SharpTestsEx.Assertions.NullAssertion`1.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:SharpTestsEx.Assertions.NullAssertion`1"/> class. + </summary> + </member> + <member name="T:SharpTestsEx.Assertions.ObjectEqualsAssertion`2"> + <summary> + Verifies that two specified generic type data are equal. The assertion fails if they are not equal. + </summary> + <typeparam name="TA">Type of the actual value.</typeparam> + <typeparam name="TE">Type of the expected value.</typeparam> + <remarks> + The comparison is done ny the base <see cref="M:System.Object.Equals(System.Object,System.Object)"/>. + </remarks> + </member> + <member name="M:SharpTestsEx.Assertions.ObjectEqualsAssertion`2.#ctor(`1)"> + <summary> + Initializes a new instance of the <see cref="T:SharpTestsEx.Assertions.ObjectEqualsAssertion`2"/> class. + </summary> + <param name="expected">The value to compare.</param> + </member> + <member name="T:SharpTestsEx.Assertions.SameInstanceAssertion`2"> + <summary> + Verifies that two specified instances are the same object instance.. + </summary> + <typeparam name="TA">Type of the actual value.</typeparam> + <typeparam name="TE">Type of the expected value.</typeparam> + </member> + <member name="M:SharpTestsEx.Assertions.SameInstanceAssertion`2.#ctor(`1)"> + <summary> + Initializes a new instance of the <see cref="T:SharpTestsEx.Assertions.SameInstanceAssertion`2"/> class. + </summary> + <param name="expected">The value to compare.</param> + </member> + <member name="T:SharpTestsEx.ClassConstraintsExtensions"> + <summary> + Extensions for constraint over object instances. + </summary> + </member> + <member name="M:SharpTestsEx.ClassConstraintsExtensions.SameInstanceAs(SharpTestsEx.IClassBeConstraints,System.Object)"> + <summary> + Verifies that actual is the same instance than <paramref name="expected"/>. + </summary> + <param name="constraint">The <see cref="T:SharpTestsEx.IClassBeConstraints"/> extented.</param> + <param name="expected">The expected object instance.</param> + <returns>Chainable And constraint</returns> + </member> + <member name="M:SharpTestsEx.ClassConstraintsExtensions.InstanceOf``1(SharpTestsEx.IClassBeConstraints)"> + <summary> + Verifies that actual is an instance of <typeparamref name="T"/>. + </summary> + <typeparam name="T">The <see cref="T:System.Type"/> expected.</typeparam> + <param name="constraint">The <see cref="T:SharpTestsEx.IClassBeConstraints"/> extented.</param> + <returns>Chainable And constraint</returns> + </member> + <member name="M:SharpTestsEx.ClassConstraintsExtensions.AssignableFrom``1(SharpTestsEx.IClassBeConstraints)"> + <summary> + Verifies that actual instance is assignable from <typeparamref name="T"/>. + </summary> + <typeparam name="T">The <see cref="T:System.Type"/> expected.</typeparam> + <param name="constraint">The <see cref="T:SharpTestsEx.IClassBeConstraints"/> extented.</param> + <returns>Chainable And constraint</returns> + </member> + <member name="M:SharpTestsEx.ClassConstraintsExtensions.AssignableTo``1(SharpTestsEx.IClassBeConstraints)"> + <summary> + Verifies that actual instance is assignable to <typeparamref name="T"/>. + </summary> + <typeparam name="T">The <see cref="T:System.Type"/> expected.</typeparam> + <param name="constraint">The <see cref="T:SharpTestsEx.IClassBeConstraints"/> extented.</param> + <returns>Chainable And constraint</returns> + </member> + <member name="M:SharpTestsEx.ClassConstraintsExtensions.BinarySerializable(SharpTestsEx.IClassBeConstraints)"> + <summary> + Verifies that actual instance is serializable using <see cref="T:System.Runtime.Serialization.Formatters.Binary.BinaryFormatter"/>. + </summary> + <param name="constraint">The <see cref="T:SharpTestsEx.IClassBeConstraints"/> extented.</param> + <returns>Chainable And constraint</returns> + </member> + <member name="M:SharpTestsEx.ClassConstraintsExtensions.XmlSerializable(SharpTestsEx.IClassBeConstraints)"> + <summary> + Verifies that actual instance is serializable using <see cref="T:System.Xml.Serialization.XmlSerializer"/>. + </summary> + <param name="constraint">The <see cref="T:SharpTestsEx.IClassBeConstraints"/> extented.</param> + <returns>Chainable And constraint</returns> + </member> + <member name="T:SharpTestsEx.Executing"> + <summary> + Useful class to avoid the creation of new Action. + </summary> + <remarks> + This class can be used when the instance of the class under test is no available; + typically to test a constructor. + When you have an instance of the class under test the most appropite way to test an action + is the extension <see cref="M:SharpTestsEx.Extensions.Executing``1(``0,System.Linq.Expressions.Expression{System.Action{``0}})"/>. + </remarks> + <example> + <code> + Executing.This(() => new AClass(null)).Should().Throw(); + </code> + <code> + Executing.This(() => new AClass(null)).Should().Throw{ArgumentNullException}() + .And.ValueOf + .ParamName.Should().Be("obj"); + </code> + </example> + </member> + <member name="T:SharpTestsEx.IConstraints`1"> + <summary> + Basic contract for a generic constraint. + </summary> + <typeparam name="T">The type of the 'actual' value subject of the test.</typeparam> + </member> + <member name="M:SharpTestsEx.IExpressionActionConstraints`1.Throws``1"> + <summary> + Verifies that the <see cref="T:System.Action`1"/> throws a specific <see cref="T:System.Exception"/>. + </summary> + <typeparam name="TException">The specific <see cref="T:System.Exception"/> subclass expected. </typeparam> + <returns>Chainable And constraint</returns> + </member> + <member name="M:SharpTestsEx.IExpressionActionConstraints`1.Throws"> + <summary> + Verifies that the <see cref="T:System.Action"/> throws an <see cref="T:System.Exception"/>. + </summary> + <returns>Chainable And constraint</returns> + </member> + <member name="M:SharpTestsEx.IExpressionActionConstraints`1.NotThrows"> + <summary> + Verifies that the <see cref="T:System.Action"/> does not throw any <see cref="T:System.Exception"/>. + </summary> + </member> + <member name="T:SharpTestsEx.EnumerableExtensions"> + <summary> + <see cref="T:System.Collections.Generic.IEnumerable`1"/> etensions methods. + </summary> + </member> + <member name="M:SharpTestsEx.EnumerableExtensions.PositionOfFirstDifference``1(System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``0})"> + <summary> + Find the first position where two sequence differ + </summary> + <typeparam name="TSource">The type of the elements of the input sequences.</typeparam> + <param name="first">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> to compare to second</param> + <param name="second">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> to compare to the first sequence. </param> + <returns>The position of the first difference; otherwise -1 where the two sequences has the same sequence.</returns> + </member> + <member name="T:SharpTestsEx.ExceptionExtensions"> + <summary> + Useful extensions to test <see cref="T:System.Exception"/>s. + </summary> + </member> + <member name="M:SharpTestsEx.ExceptionExtensions.InnerExceptions(System.Exception)"> + <summary> + Returns a sequence of all Inner Exceptions. + </summary> + <param name="source">The root <see cref="T:System.Exception"/> </param> + <returns>A <see cref="T:System.Collections.Generic.IEnumerable`1"/> of all Inner Exceptions</returns> + </member> + <member name="M:SharpTestsEx.ExceptionExtensions.Exceptions(System.Exception)"> + <summary> + Returns a sequence of including the root <see cref="T:System.Exception"/> and all Inner Exceptions. + </summary> + <param name="source">The root <see cref="T:System.Exception"/> </param> + <returns>A <see cref="T:System.Collections.Generic.IEnumerable`1"/> of including the root <see cref="T:System.Exception"/> and all Inner Exceptions.</returns> + </member> + <member name="T:SharpTestsEx.IActionConstraints"> + <summary> + Constraints for <see cref="T:System.Action"/>. + </summary> + </member> + <member name="M:SharpTestsEx.IActionConstraints.Throw``1"> + <summary> + Verifies that the <see cref="T:System.Action"/> throws a specific <see cref="T:System.Exception"/>. + </summary> + <typeparam name="TException">The specific <see cref="T:System.Exception"/> subclass expected. </typeparam> + <returns>Chainable And constraint</returns> + </member> + <member name="M:SharpTestsEx.IActionConstraints.Throw"> + <summary> + Verifies that the <see cref="T:System.Action"/> throws an. + </summary> + <returns>Chainable And constraint</returns> + </member> + <member name="M:SharpTestsEx.IActionConstraints.NotThrow"> + <summary> + Verifies that the <see cref="T:System.Action"/> does not throw any <see cref="T:System.Exception"/>. + </summary> + </member> + <member name="P:SharpTestsEx.IActionAndConstraints`2.Exception"> + <summary> + The instance <see cref="P:SharpTestsEx.IActionAndConstraints`2.Exception"/> thrown. + </summary> + <remarks> + <example> + <code> + var ex = (new Action(() => new AClass(null))).Should().Throw().Exception; + </code> + </example> + </remarks> + </member> + <member name="T:SharpTestsEx.IThrowConstraints`1"> + <summary> + Chainable constraint for <see cref="P:SharpTestsEx.IThrowConstraints`1.Exception"/> + </summary> + <typeparam name="TException">The specific <see cref="P:SharpTestsEx.IThrowConstraints`1.Exception"/> subclass expected. </typeparam> + </member> + <member name="P:SharpTestsEx.IThrowConstraints`1.ValueOf"> + <summary> + The <see cref="P:SharpTestsEx.IThrowConstraints`1.Exception"/> thrown. + </summary> + <remarks> + Allow an readable chained way to begin a new assertion based on one of the properties + of the expected <see cref="P:SharpTestsEx.IThrowConstraints`1.Exception"/> + <example> + <code> + (new Action(() => new AClass(null))) + .Should().Throw{ArgumentNullException}() + .And.ValueOf.ParamName + .Should().Be.EqualTo("obj"); + </code> + </example> + </remarks> + </member> + <member name="P:SharpTestsEx.IThrowConstraints`1.Exception"> + <summary> + The instance <see cref="P:SharpTestsEx.IThrowConstraints`1.Exception"/> thrown. + </summary> + <remarks> + Allow an readable chained way to begin a new assertion based on the <see cref="P:SharpTestsEx.IThrowConstraints`1.Exception"/> itself. + <example> + <code> + (new Action(() => new AClass(null))) + .Should().Throw() + .And.Exception.Should().Be.InstanceOf{ArgumentException}(); + </code> + </example> + </remarks> + </member> + <member name="T:SharpTestsEx.IAssertionInfo`1"> + <summary> + Assertion information. + </summary> + <typeparam name="T">The type of the value subject of the assertion.</typeparam> + </member> + <member name="P:SharpTestsEx.IAssertionInfo`1.Actual"> + <summary> + Subject of the assertion. + </summary> + </member> + <member name="P:SharpTestsEx.IAssertionInfo`1.IsNegated"> + <summary> + The assertion is negated ? + </summary> + </member> + <member name="P:SharpTestsEx.IAssertionInfo`1.FailureMessage"> + <summary> + The title of the assertion ("message" in MsTests terminology) + </summary> + </member> + <member name="T:SharpTestsEx.IBooleanConstraints"> + <summary> + Constraint over boolean values. + </summary> + </member> + <member name="T:SharpTestsEx.IBooleanBeConstraints"> + <summary> + Constraints for boolean "Should Be" + </summary> + </member> + <member name="M:SharpTestsEx.IBooleanBeConstraints.True"> + <summary> + Verifies that actual is true. + </summary> + </member> + <member name="M:SharpTestsEx.IBooleanBeConstraints.False"> + <summary> + Verifies that actual is false. + </summary> + </member> + <member name="P:SharpTestsEx.ExtensionsImpl.NegableConstraints`2.Not"> + <summary> + Negate next constraint. + </summary> + </member> + <member name="T:SharpTestsEx.IClassConstraints"> + <summary> + Constraint over object instances. + </summary> + </member> + <member name="T:SharpTestsEx.IClassConstraints`1"> + <summary> + Constraints for object instance of a specific gine <see cref="T:System.Type"/>. + </summary> + <typeparam name="TValue">The <see cref="T:System.Type"/> of the instance.</typeparam> + </member> + <member name="P:SharpTestsEx.IClassConstraints`1.ValueOf"> + <summary> + The actual value + </summary> + </member> + <member name="P:SharpTestsEx.IClassConstraints`1.Value"> + <summary> + The actual value + </summary> + </member> + <member name="T:SharpTestsEx.IClassBeConstraints"> + <summary> + Constraints for object instance "Should Be" + </summary> + </member> + <member name="M:SharpTestsEx.IClassBeConstraints.EqualTo(System.Object)"> + <summary> + Verifies that actual is equal to <paramref name="expected"/>. + </summary> + <param name="expected">The expected instance</param> + <returns>Chainable And constraint</returns> + </member> + <member name="M:SharpTestsEx.IClassBeConstraints.Null"> + <summary> + Verifies that the <see cref="T:System.Object"/> is null. + </summary> + <returns>Chainable And constraint</returns> + </member> + <member name="M:SharpTestsEx.IClassBeConstraints.OfType``1"> + <summary> + Verifies that the actual is an instance of a specific type. + </summary> + <typeparam name="T">The expected <see cref="T:System.Type"/>.</typeparam> + <returns> + A <see cref="T:SharpTestsEx.IClassConstraints`1"/> for the instance converted to + the specified type to start a chained assertion. + </returns> + </member> + <member name="T:SharpTestsEx.IComparableConstraints`1"> + <summary> + Constraint over <see cref="T:System.IComparable"/> instances. + </summary> + <typeparam name="T">The concrete type of actual value.</typeparam> + </member> + <member name="T:SharpTestsEx.IComparableBeConstraints`1"> + <summary> + Constraints for <see cref="T:System.IComparable"/> instance ("Should Be") + </summary> + <typeparam name="T"></typeparam> + </member> + <member name="M:SharpTestsEx.IComparableBeConstraints`1.EqualTo(System.IComparable)"> + <summary> + Verifies that actual is equal to <paramref name="expected"/>. + </summary> + <param name="expected">The expected instance</param> + <returns>Chainable And constraint</returns> + </member> + <member name="M:SharpTestsEx.IComparableBeConstraints`1.GreaterThan(System.IComparable)"> + <summary> + Verifies that actual is greater than <paramref name="expected"/>. + </summary> + <param name="expected">The expected instance</param> + <returns>Chainable And constraint</returns> + </member> + <member name="M:SharpTestsEx.IComparableBeConstraints`1.LessThan(System.IComparable)"> + <summary> + Verifies that actual is less than <paramref name="expected"/>. + </summary> + <param name="expected">The expected instance</param> + <returns>Chainable And constraint</returns> + </member> + <member name="M:SharpTestsEx.IComparableBeConstraints`1.GreaterThanOrEqualTo(System.IComparable)"> + <summary> + Verifies that actual is greater than or equal to <paramref name="expected"/>. + </summary> + <param name="expected">The expected instance</param> + <returns>Chainable And constraint</returns> + </member> + <member name="M:SharpTestsEx.IComparableBeConstraints`1.LessThanOrEqualTo(System.IComparable)"> + <summary> + Verifies that actual is less than or equal to <paramref name="expected"/>. + </summary> + <param name="expected">The expected instance</param> + <returns>Chainable And constraint</returns> + </member> + <member name="M:SharpTestsEx.IComparableBeConstraints`1.IncludedIn(System.IComparable,System.IComparable)"> + <summary> + Verifies that actual is included in the range <paramref name="lowLimit"/>-<paramref name="highLimit"/>. + </summary> + <param name="lowLimit">The less aceptable value.</param> + <param name="highLimit">The higher aceptable value.</param> + <returns>Chainable And constraint</returns> + </member> + <member name="M:SharpTestsEx.ExtensionsImpl.EnumerableBeConstraints`1.Null"> + <summary> + Verifies that the <see cref="T:System.Collections.Generic.IEnumerable`1"/> instance is null. + </summary> + <returns>Chainable And constraint</returns> + </member> + <member name="M:SharpTestsEx.ExtensionsImpl.EnumerableBeConstraints`1.Empty"> + <summary> + Verifies that the <see cref="T:System.Collections.Generic.IEnumerable`1"/> is empty. + </summary> + <returns>Chainable And constraint</returns> + </member> + <member name="M:SharpTestsEx.ExtensionsImpl.StringBeConstraints.Null"> + <summary> + Verifies that the <see cref="T:System.String"/> is null. + </summary> + <returns>Chainable And constraint</returns> + </member> + <member name="M:SharpTestsEx.ExtensionsImpl.StringBeConstraints.Empty"> + <summary> + Verifies that the <see cref="T:System.String"/> is empty. + </summary> + <returns>Chainable And constraint</returns> + </member> + <member name="M:SharpTestsEx.ExtensionsImpl.TypeBeConstraints.Null"> + <summary> + Verifies that the <see cref="T:System.Type"/> instance is null. + </summary> + <returns>Chainable And constraint</returns> + </member> + <member name="T:SharpTestsEx.MessageBuilderInfo`2"> + <summary> + Collection information to build the failure message + </summary> + <typeparam name="TActual">Type of the actual value.</typeparam> + <typeparam name="TExpected">Type of the expected value.</typeparam> + </member> + <member name="P:SharpTestsEx.MessageBuilderInfo`2.Actual"> + <summary> + The actual value under test. + </summary> + </member> + <member name="P:SharpTestsEx.MessageBuilderInfo`2.Expected"> + <summary> + The expected value of the test. + </summary> + </member> + <member name="P:SharpTestsEx.MessageBuilderInfo`2.AssertionPredicate"> + <summary> + The name of the assertion + </summary> + <example> + "be EqualTo" + </example> + </member> + <member name="P:SharpTestsEx.MessageBuilderInfo`2.CustomMessage"> + <summary> + The user custom message. + </summary> + </member> + <member name="T:SharpTestsEx.ObjectExtensions"> + <summary> + Extensions for any System.Object. + </summary> + </member> + <member name="M:SharpTestsEx.ObjectExtensions.FieldValue``1(System.Object,System.String)"> + <summary> + Allow access to a private field of a class instance. + </summary> + <typeparam name="T">The <see cref="T:System.Type"/> of the field. </typeparam> + <param name="source">The class instance.</param> + <param name="fieldName">The field name.</param> + <returns>The value of the field.</returns> + </member> + <member name="T:SharpTestsEx.Properties.Resources"> + <summary> + A strongly-typed resource class, for looking up localized strings, etc. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.ResourceManager"> + <summary> + Returns the cached ResourceManager instance used by this class. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.Culture"> + <summary> + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.AssertionVerb"> + <summary> + Looks up a localized string similar to Should. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.Be"> + <summary> + Looks up a localized string similar to Be. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.EmptyEnumerable"> + <summary> + Looks up a localized string similar to <Empty>. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.ExceptionMsgAccessToField"> + <summary> + Looks up a localized string similar to Can't access to a field of a null value.. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.ExceptionMsgFieldNameTmpl"> + <summary> + Looks up a localized string similar to The class {0} does not contain a field named {1}.. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.ExceptionMsgInvalidCastTmpl"> + <summary> + Looks up a localized string similar to The class {0} does contain a field named {1} but its type is {2} and not {3}.. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.ExceptionMsgSerializableNull"> + <summary> + Looks up a localized string similar to Can't check serialization for (null) value.. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.ExpectedTmpl"> + <summary> + Looks up a localized string similar to Expected: {0}. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.FailureMsgDifferences"> + <summary> + Looks up a localized string similar to Differences :. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.FailureMsgEnumerableDiffPosTmpl"> + <summary> + Looks up a localized string similar to Values differ at position {0}.. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.FailureMsgNotThrow"> + <summary> + Looks up a localized string similar to Not expected exception message:. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.FailureMsgStringDiffPosTmpl"> + <summary> + Looks up a localized string similar to Strings differ at position {0}.. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.FoundTmpl"> + <summary> + Looks up a localized string similar to Found : {0}. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.Negation"> + <summary> + Looks up a localized string similar to Not. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.NullValue"> + <summary> + Looks up a localized string similar to (null). + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateBeAssignableFrom"> + <summary> + Looks up a localized string similar to Be Assignable From. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateBeAssignableTo"> + <summary> + Looks up a localized string similar to Be Assignable To. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateBeBinarySerializable"> + <summary> + Looks up a localized string similar to Be Binary Serializable. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateBeEmpty"> + <summary> + Looks up a localized string similar to Be Empty. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateBeEqualTo"> + <summary> + Looks up a localized string similar to Be Equal To. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateBeGreaterThan"> + <summary> + Looks up a localized string similar to Be Greater Than. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateBeGreaterThanOrEquaTo"> + <summary> + Looks up a localized string similar to Be Greater than Or Equal to. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateBeInRange"> + <summary> + Looks up a localized string similar to Be in Range. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateBeInstanceOf"> + <summary> + Looks up a localized string similar to Be Instance Of. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateBeLessThan"> + <summary> + Looks up a localized string similar to Be Less Than. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateBeLessThanOrEqualTo"> + <summary> + Looks up a localized string similar to Be Less than Or Equal to. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateBeNull"> + <summary> + Looks up a localized string similar to Be Null. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateBeOrdered"> + <summary> + Looks up a localized string similar to Be Ordered. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateBeOrderedAscending"> + <summary> + Looks up a localized string similar to Be Ordered ascending. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateBeOrderedBy"> + <summary> + Looks up a localized string similar to Be Ordered By ({0}). + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateBeSameAs"> + <summary> + Looks up a localized string similar to Be Same instance As. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateBeSubClassOf"> + <summary> + Looks up a localized string similar to Be SubClass Of. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateBeSubsetOf"> + <summary> + Looks up a localized string similar to Be Subset Of. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateBeXmlSerializable"> + <summary> + Looks up a localized string similar to Be Xml Serializable. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateContain"> + <summary> + Looks up a localized string similar to Contain. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateDoesNotThrow"> + <summary> + Looks up a localized string similar to Not throw. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateHaveAttribute"> + <summary> + Looks up a localized string similar to Have Attribute. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateHaveSameSequenceAs"> + <summary> + Looks up a localized string similar to Have Same Sequence As. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateHaveSameValuesAs"> + <summary> + Looks up a localized string similar to Have Same Values As. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateHaveUniqueValues"> + <summary> + Looks up a localized string similar to Have Unique Values. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateHaveValue"> + <summary> + Looks up a localized string similar to Have Value. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateThrow"> + <summary> + Looks up a localized string similar to Throw. + </summary> + </member> + <member name="P:SharpTestsEx.Properties.Resources.PredicateThrows"> + <summary> + Looks up a localized string similar to Throws an exception. + </summary> + </member> + </members> +</doc> Added: trunk/nhibernate/lib/net/3.5/SharpTestsEx_License.txt =================================================================== --- trunk/nhibernate/lib/net/3.5/SharpTestsEx_License.txt (rev 0) +++ trunk/nhibernate/lib/net/3.5/SharpTestsEx_License.txt 2010-06-28 12:11:26 UTC (rev 4996) @@ -0,0 +1,31 @@ +Microsoft Public License (Ms-PL) + +This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software. + +1. Definitions + +The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law. + +A "contribution" is the original software, or any additions or changes to the software. + +A "contributor" is any person that distributes its contribution under this license. + +"Licensed patents" are a contributor's patent claims that read directly on its contribution. + +2. Grant of Rights + +(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create. + +(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software. + +3. Conditions and Limitations + +(A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks. + +(B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically. + +(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software. + +(D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license. + +(E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement. \ No newline at end of file Modified: trunk/nhibernate/lib/net/3.5/nunit.framework.dll =================================================================== (Binary files differ) Added: trunk/nhibernate/lib/net/3.5/nunit.framework.xml =================================================================== --- trunk/nhibernate/lib/net/3.5/nunit.framework.xml (rev 0) +++ trunk/nhibernate/lib/net/3.5/nunit.framework.xml 2010-06-28 12:11:26 UTC (rev 4996) @@ -0,0 +1,10113 @@ +<?xml version="1.0"?> +<doc> + <assembly> + <name>nunit.framework</name> + </assembly> + <members> + <member name="T:NUnit.Framework.Constraints.BinaryConstraint"> + <summary> + BinaryConstraint is the abstract base of all constraints + that combine two other constraints in some fashion. + </summary> + </member> + <member name="T:NUnit.Framework.Constraints.Constraint"> + <summary> + The Constraint class is the base of all built-in constraints + within NUnit. It provides the operator overloads used to combine + constraints. + </summary> + </member> + <member name="T:NUnit.Framework.Constraints.IResolveConstraint"> + <summary> + The IConstraintExpression interface is implemented by all + complete and resolvable constraints and expressions. + </summary> + </member> + <member name="M:NUnit.Framework.Constraints.IResolveConstraint.Resolve"> + <summary> + Return the top-level constraint for this expression + </summary> + <returns></returns> + </member> + <member name="F:NUnit.Framework.Constraints.Constraint.UNSET"> + <summary> + Static UnsetObject used to detect derived constraints + failing to set the actual value. + </summary> + </member> + <member name="F:NUnit.Framework.Constraints.Constraint.actual"> + <summary> + The actual value being tested against a constraint + </summary> + </member> + <member name="F:NUnit.Framework.Constraints.Constraint.displayName"> + <summary> + The display name of this Constraint for use by ToString() + </summary> + </member> + <member name="F:NUnit.Framework.Constraints.Constraint.argcnt"> + <summary> + Argument fields used by ToString(); + </summary> + </member> + <member name="F:NUnit.Framework.Constraints.Constraint.builder"> + <summary> + The builder holding this constraint + </summary> + </member> + <member name="M:NUnit.Framework.Constraints.Constraint.#ctor"> + <summary> + Construct a constraint with no arguments + </summary> + </member> + <member name="M:NUnit.Framework.Constraints.Constraint.#ctor(System.Object)"> + <summary> + Construct a constraint with one argument + </summary> + </member> + <member name="M:NUnit.Framework.Constraints.Constraint.#ctor(System.Object,System.Object)"> + <summary> + Construct a constraint with two arguments + </summary> + </member> + <member name="M:NUnit.Framework.Constraints.Constraint.SetBuilder(NUnit.Framework.Constraints.ConstraintBuilder)"> + <summary> + Sets the ConstraintBuilder holding this constraint + </summary> + </member> + <member name="M:NUnit.Framework.Constraints.Constraint.WriteMessageTo(NUnit.Framework.Constraints.MessageWriter)"> + <summary> + Write the failure message to the MessageWriter provided + as an argument. The default implementation simply passes + the constraint and the actual value to the writer, which + then displays the constraint description and the value. + + Constraints that need to provide additional details, + such as where the error occured can override this. + </summary> + <param name="writer">The MessageWriter on which to display the message</param> + </member> + <member name="M:NUnit.Framework.Constraints.Constraint.Matches(System.Object)"> + <summary> + Test whether the constraint is satisfied by a given value + </summary> + <param name="actual">The value to be tested</param> + <returns>True for success, false for failure</returns> + </member> + <member name="M:NUnit.Framework.Constraints.Constraint.Matches(NUnit.Framework.Constraints.ActualValueDelegate)"> + <summary> + Test whether the constraint is satisfied by an + ActualValueDelegate that returns the value to be tested. + The default implementation simply evaluates the delegate + but derived classes may override it to provide for delayed + processing. + </summary> + <param name="del">An ActualValueDelegate</param> + <returns>True for success, false for failure</returns> + </member> + <member name="M:NUnit.Framework.Constraints.Constraint.Matches``1(``0@)"> + <summary> + Test whether the constraint is satisfied by a given reference. + The default implementation simply dereferences the value but + derived classes may override it to provide for delayed processing. + </summary> + <param name="actual">A reference to the value to be tested</param> + <returns>True for success, false for failure</returns> + </member> + <member name="M:NUnit.Framework.Constraints.Constraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)"> + <summary> + Write the constraint description to a MessageWriter + </summary> + <param name="writer">The writer on which the description is displayed</param> + </member> + <member name="M:NUnit.Framework.Constraints.Constraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)"> + <summary> + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + </summary> + <param name="writer">The writer on which the actual value is displayed</param> + </member> + <member name="M:NUnit.Framework.Constraints.Constraint.ToString"> + <summary> + Default override of ToString returns the constraint DisplayName + followed by any arguments within angle brackets. + </summary> + <returns></returns> + </member> + <member name="M:NUnit.Framework.Constraints.Constraint.op_BitwiseAnd(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)"> + <summary> + This operator creates a constraint that is satisfied only if both + argument constraints are satisfied. + </summary> + </member> + <member name="M:NUnit.Framework.Constraints.Constraint.op_BitwiseOr(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)"> + <summary> + This operator creates a constraint that is satisfied if either + of the argument constraints is satisfied. + </summary> + </member> + <member name="M:NUnit.Framework.Constraints.Constraint.op_LogicalNot(NUnit.Framework.Constraints.Constraint)"> + <summary> + This operator creates a constraint that is satisfied if the + argument constraint is not satisfied. + </summary> + </member> + <member name="M:NUnit.Framework.Constraints.Constraint.After(System.Int32)"> + <summary> + Returns a DelayedConstraint with the specified delay time. + </summary> + <param name="delayInMilliseconds">The delay in milliseconds.</param> + <returns></returns> + </member> + <member name="M:NUnit.Framework.Constraints.Constraint.After(System.Int32,System.Int32)"> + <summary> + Returns a DelayedConstraint with the specified delay time + and polling interval. + </summary> + <param name="delayInMilliseconds">The delay in milliseconds.</param> + <param name="pollingInterval">The interval at which to test the constraint.</param> + <returns></returns> + </member> + <member name="P:NUnit.Framework.Constraints.Constraint.DisplayName"> + <summary> + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. + </summary> + </member> + <member name="P:NUnit.Framework.Constraints.Constraint.And"> + <summary> + Returns a ConstraintExpression by appending And + to the current constraint. + </summary> + </member> + <member name="P:NUnit.Framework.Constraints.Constraint.With"> + <summary> + Returns a ConstraintExpression by appending And + to the current constraint. + </summary> + </member> + <member name="P:NUnit.Framework.Constraints.Constraint.Or"> + <summary> + Returns a ConstraintExpression by appending Or + to the current constraint. + </summary> + </member> + <member name="T:NUnit.Framework.Constraints.Constraint.UnsetObject"> + <summary> + Class used to detect any derived constraints + that fail to set the actual value in their + Matches override. + </summary> + </member> + <member name="F:NUnit.Framework.Constraints.BinaryConstraint.left"> + <summary> + The first constraint being combined + </summary> + </member> + <member name="F:NUnit.Framework.Constraints.BinaryConstraint.right"> + <summary> + The second constraint being combined + </summary> + </member> + <member name="M:NUnit.Framework.Constraints.BinaryConstraint.#ctor(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)"> + <summary> + Construct a BinaryConstraint from two other constraints + </summary> + <param name="left">The first constraint</param> + <param name="right">The second constraint</param> + </member> + <member name="T:NUnit.Framework.Constraints.AndConstraint"> + <summary> + AndConstraint succeeds only if both members succeed. + </summary> + </member> + <member name="M:NUnit.Framework.Constraints.AndConstraint.#ctor(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)"> + <summary> + Create an AndConstraint from two other constraints + </summary> + <param name="left">The first constraint</param> + <param name="right">The second constraint</param> + </member> + <member name="M:NUnit.Framework.Constraints.AndConstraint.Matches(System.Object)"> + <summary> + Apply both member constraints to an actual value, succeeding + succeeding only if both of them succeed. + </summary> + <param name="actual">The actual value</param> + <returns>True if the constraints both succeeded</returns> + </member> + <member name="M:NUnit.Framework.Constraints.AndConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)"> + <summary> + Write a description for this contraint to a MessageWriter + </summary> + <param name="writer">The MessageWriter to receive the description</param> + </member> + <member name="M:NUnit.Framework.Constraints.AndConstraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)"> + <summary> + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + </summary> + <param name="writer">The writer on which the actual value is displayed</param> + </member> + <member name="T:NUnit.Framework.Constraints.OrConstraint"> + <summary> + OrConstraint succeeds if either member succeeds + </summary> + </member> + <member name="M:NUnit.Framework.Constraints.OrConstraint.#ctor(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)"> + <summary> + Create an OrConstraint from two other constraints + </summary> + <param name="left">The first constraint</param> + <param name="right">The second constraint</param> + </member> + <member name="M:NUnit.Framework.Constraints.OrConstraint.Matches(System.Object)"> + <summary> + Apply the member constraints to an actual value, succeeding + succeeding as soon as one of them succeeds. + </summary> + <param name="actual">The actual value</param> + <returns>True if either constraint succeeded</returns> + </member> + <member name="M:NUnit.Framework.Constraints.OrConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)"> + <summary> + Write a description for this contraint to a MessageWriter + </summary> + <param name="writer">The MessageWriter to receive the description</param> + </member> + <member name="T:NUnit.Framework.Constraints.CollectionConstraint"> + <summary> + CollectionConstraint is the abstract base class for + constraints that operate on collections. + </summary> + </member> + <member name="M:NUnit.Framework.Constraints.CollectionConstraint.#ctor"> + <summary> + Construct an empty CollectionConstraint + </summary> + </member> + <member name="M:NUnit.Framework.Constraints.CollectionConstraint.#ctor(System.Object)"> + <summary> + Construct a CollectionConstraint + </summary> + <param name="arg"></param> + </member> + <member name="M:NUnit.Framework.Constraints.CollectionConstraint.IsEmpty(System.Collections.IEnumerable)"> + <summary> + Determines whether the specified enumerable is empty. + </summary> + <param name="enumerable">The enumerable.</param> + <returns> + <c>true</c> if the specified enumerable is empty; otherwise, <c>false</c>. + </returns> + </member> + <member name="M:NUnit.Framework.Constraints.CollectionConstraint.Matches(System.Object)"> + <summary> + Test whether the constraint is satisfied by a given value + </summary> + <param name="actual">The value to be tested</param> + <returns>True for success, false for failure</returns> + </member> + <member name="M:NUnit.Framework.Constraints.CollectionConstraint.doMatch(System.Collections.IEnumerable)"> + <summary> + Protected method to be implemented by derived classes + </summary> + <param name="collection"></param> + <returns></returns> + </member> + <member name="T:NUnit.Framework.Constraints.CollectionItemsEqualConstraint"> + <summary> + CollectionItemsEqualConstraint is the abstract base class for all + collection constraints that apply some notion of item equality + as a part of their operation. + </summary> + </member> + <member name="M:NUnit.Framework.Constraints.CollectionItemsEqualConstraint.#ctor"> + <summary> + Construct an empty CollectionConstraint + </summary> + </member> + <member name="M:NUnit.Framework.Constraints.CollectionItemsEqualConstraint.#ctor(System.Object)"> + <summary> +... [truncated message content] |
From: <fab...@us...> - 2010-08-02 18:37:59
|
Revision: 5096 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5096&view=rev Author: fabiomaulo Date: 2010-08-02 18:37:53 +0000 (Mon, 02 Aug 2010) Log Message: ----------- Fixed test problem and actualized releasenotes to documents the breaking-change Modified Paths: -------------- trunk/nhibernate/releasenotes.txt trunk/nhibernate/src/NHibernate.Test/App.config Modified: trunk/nhibernate/releasenotes.txt =================================================================== --- trunk/nhibernate/releasenotes.txt 2010-08-02 17:56:21 UTC (rev 5095) +++ trunk/nhibernate/releasenotes.txt 2010-08-02 18:37:53 UTC (rev 5096) @@ -3,6 +3,8 @@ ** Known BREAKING CHANGES from NH2.1.1.GA to NH3.0.0.Alpha1 ##### Run time ##### * (NH-2199) - null values in maps/dictionaries are no longer silenty ignored/deleted + * (NH-2263) - removed the reference to System.Data.OracleClient, now you have to configure the assemblyBinding to resolve the partial name + (example available in App.conf of out NHibernate.Test project) Build 3.0.0.Alpha1 (rev5056) ============================= Modified: trunk/nhibernate/src/NHibernate.Test/App.config =================================================================== --- trunk/nhibernate/src/NHibernate.Test/App.config 2010-08-02 17:56:21 UTC (rev 5095) +++ trunk/nhibernate/src/NHibernate.Test/App.config 2010-08-02 18:37:53 UTC (rev 5096) @@ -29,8 +29,12 @@ <qualifyAssembly partialName="FirebirdSql.Data.FirebirdClient" fullName="FirebirdSql.Data.FirebirdClient, Version=2.1.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c" /> </assemblyBinding> <!-- --> + + <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> + <qualifyAssembly partialName="System.Data.OracleClient" fullName="System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> + </assemblyBinding> - </runtime> + </runtime> <!-- hibernate-configuration section This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2010-08-02 19:14:57
|
Revision: 5097 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5097&view=rev Author: fabiomaulo Date: 2010-08-02 19:14:47 +0000 (Mon, 02 Aug 2010) Log Message: ----------- Removed unneeded breaking change (thanks to my personal advisor Fiamma) Modified Paths: -------------- trunk/nhibernate/releasenotes.txt trunk/nhibernate/src/NHibernate/Driver/OracleClientDriver.cs trunk/nhibernate/src/NHibernate.Test/App.config Modified: trunk/nhibernate/releasenotes.txt =================================================================== --- trunk/nhibernate/releasenotes.txt 2010-08-02 18:37:53 UTC (rev 5096) +++ trunk/nhibernate/releasenotes.txt 2010-08-02 19:14:47 UTC (rev 5097) @@ -3,8 +3,6 @@ ** Known BREAKING CHANGES from NH2.1.1.GA to NH3.0.0.Alpha1 ##### Run time ##### * (NH-2199) - null values in maps/dictionaries are no longer silenty ignored/deleted - * (NH-2263) - removed the reference to System.Data.OracleClient, now you have to configure the assemblyBinding to resolve the partial name - (example available in App.conf of out NHibernate.Test project) Build 3.0.0.Alpha1 (rev5056) ============================= Modified: trunk/nhibernate/src/NHibernate/Driver/OracleClientDriver.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Driver/OracleClientDriver.cs 2010-08-02 18:37:53 UTC (rev 5096) +++ trunk/nhibernate/src/NHibernate/Driver/OracleClientDriver.cs 2010-08-02 19:14:47 UTC (rev 5097) @@ -12,7 +12,9 @@ private static readonly SqlType GuidSqlType = new SqlType(DbType.Binary, 16); public OracleClientDriver() : - base("System.Data.OracleClient", "System.Data.OracleClient.OracleConnection", "System.Data.OracleClient.OracleCommand") { } + base("System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "System.Data.OracleClient.OracleConnection", + "System.Data.OracleClient.OracleCommand") { } public override bool UseNamedPrefixInSql { Modified: trunk/nhibernate/src/NHibernate.Test/App.config =================================================================== --- trunk/nhibernate/src/NHibernate.Test/App.config 2010-08-02 18:37:53 UTC (rev 5096) +++ trunk/nhibernate/src/NHibernate.Test/App.config 2010-08-02 19:14:47 UTC (rev 5097) @@ -29,10 +29,6 @@ <qualifyAssembly partialName="FirebirdSql.Data.FirebirdClient" fullName="FirebirdSql.Data.FirebirdClient, Version=2.1.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c" /> </assemblyBinding> <!-- --> - - <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> - <qualifyAssembly partialName="System.Data.OracleClient" fullName="System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> - </assemblyBinding> </runtime> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2010-08-06 13:56:22
|
Revision: 5117 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5117&view=rev Author: fabiomaulo Date: 2010-08-06 13:56:15 +0000 (Fri, 06 Aug 2010) Log Message: ----------- Apply NH-1135 with modifications to avoid breaking changes Modified Paths: -------------- trunk/nhibernate/doc/reference/modules/basic_mapping.xml trunk/nhibernate/src/NHibernate/NHibernate.csproj trunk/nhibernate/src/NHibernate/NHibernateUtil.cs trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeTypeFixture.cs Added Paths: ----------- trunk/nhibernate/src/NHibernate/Type/AbstractDateTimeSpecificKindType.cs trunk/nhibernate/src/NHibernate/Type/LocalDateTimeType.cs trunk/nhibernate/src/NHibernate/Type/UtcDateTimeType.cs trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeClass.cs trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeClass.hbm.xml trunk/nhibernate/src/NHibernate.Test/TypesTest/LocalDateTimeTypeFixture.cs trunk/nhibernate/src/NHibernate.Test/TypesTest/UtcDateTimeTypeFixture.cs Modified: trunk/nhibernate/doc/reference/modules/basic_mapping.xml =================================================================== --- trunk/nhibernate/doc/reference/modules/basic_mapping.xml 2010-08-05 16:11:15 UTC (rev 5116) +++ trunk/nhibernate/doc/reference/modules/basic_mapping.xml 2010-08-06 13:56:15 UTC (rev 5117) @@ -2283,7 +2283,19 @@ <entry><literal>DbType.DateTime</literal> - ignores the milliseconds</entry> <entry>Default when no <literal>type</literal> attribute specified.</entry> </row> - <row> + <row> + <entry><literal>LocalDateTime</literal></entry> + <entry><literal>System.DateTime</literal></entry> + <entry><literal>DbType.DateTime</literal> - ignores the milliseconds</entry> + <entry>Ensures the <literal>DateTimeKind</literal> is set to <literal>DateTimeKind.Local</literal></entry> + </row> + <row> + <entry><literal>UtcDateTime</literal></entry> + <entry><literal>System.DateTime</literal></entry> + <entry><literal>DbType.DateTime</literal> - ignores the milliseconds</entry> + <entry>Ensures the <literal>DateTimeKind</literal> is set to <literal>DateTimeKind.Utc</literal></entry> + </row> + <row> <entry><literal>Decimal</literal></entry> <entry><literal>System.Decimal</literal></entry> <entry><literal>DbType.Decimal</literal></entry> Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj =================================================================== --- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2010-08-05 16:11:15 UTC (rev 5116) +++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2010-08-06 13:56:15 UTC (rev 5117) @@ -851,9 +851,12 @@ <Compile Include="Tool\hbm2ddl\ScriptSplitter.cs" /> <Compile Include="Transaction\AdoNetWithDistrubtedTransactionFactory.cs" /> <Compile Include="Transform\ToListResultTransformer.cs" /> + <Compile Include="Type\AbstractDateTimeSpecificKindType.cs" /> <Compile Include="Type\DbTimestampType.cs" /> <Compile Include="Type\DefaultCollectionTypeFactory.cs" /> <Compile Include="Bytecode\ICollectionTypeFactory.cs" /> + <Compile Include="Type\LocalDateTimeType.cs" /> + <Compile Include="Type\UtcDateTimeType.cs" /> <Compile Include="Util\ExpressionsHelper.cs" /> <Compile Include="Util\NullableDictionary.cs" /> <Compile Include="Hql\Ast\ANTLR\Util\PathHelper.cs" /> Modified: trunk/nhibernate/src/NHibernate/NHibernateUtil.cs =================================================================== --- trunk/nhibernate/src/NHibernate/NHibernateUtil.cs 2010-08-05 16:11:15 UTC (rev 5116) +++ trunk/nhibernate/src/NHibernate/NHibernateUtil.cs 2010-08-06 13:56:15 UTC (rev 5117) @@ -121,6 +121,16 @@ public static readonly NullableType DateTime2 = new DateTime2Type(); /// <summary> + /// NHibernate local date type + /// </summary> + public static readonly NullableType LocalDateTime = new LocalDateTimeType(); + + /// <summary> + /// NHibernate utc date type + /// </summary> + public static readonly NullableType UtcDateTime = new UtcDateTimeType(); + + /// <summary> /// NHibernate date type /// </summary> public static readonly NullableType DateTimeOffset = new DateTimeOffsetType(); Added: trunk/nhibernate/src/NHibernate/Type/AbstractDateTimeSpecificKindType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/AbstractDateTimeSpecificKindType.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Type/AbstractDateTimeSpecificKindType.cs 2010-08-06 13:56:15 UTC (rev 5117) @@ -0,0 +1,65 @@ +using System; +using System.Data; + +namespace NHibernate.Type +{ + [Serializable] + public abstract class AbstractDateTimeSpecificKindType : DateTimeType + { + protected abstract DateTimeKind DateTimeKind { get; } + + protected virtual DateTime CreateDateTime(DateTime dateValue) + { + return new DateTime(dateValue.Year, dateValue.Month, dateValue.Day, dateValue.Hour, dateValue.Minute, dateValue.Second, DateTimeKind); + } + + public override object FromStringValue(string xml) + { + return DateTime.SpecifyKind(DateTime.Parse(xml), DateTimeKind); + } + + public override int GetHashCode(object x, EntityMode entityMode) + { + int hashCode = base.GetHashCode(x, entityMode); + unchecked + { + hashCode = 31*hashCode + ((DateTime) x).Kind.GetHashCode(); + } + return hashCode; + } + + public override bool IsEqual(object x, object y) + { + if (x == y) + { + return true; + } + + if (x == null || y == null) + { + return false; + } + + return base.IsEqual(x, y) && ((DateTime) x).Kind == ((DateTime) y).Kind; + } + + public override void Set(IDbCommand st, object value, int index) + { + var dateValue = (DateTime) value; + ((IDataParameter) st.Parameters[index]).Value = CreateDateTime(dateValue); + } + + public override object Get(IDataReader rs, int index) + { + try + { + DateTime dbValue = Convert.ToDateTime(rs[index]); + return CreateDateTime(dbValue); + } + catch (Exception ex) + { + throw new FormatException(string.Format("Input string '{0}' was not in the correct format.", rs[index]), ex); + } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Type/LocalDateTimeType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/LocalDateTimeType.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Type/LocalDateTimeType.cs 2010-08-06 13:56:15 UTC (rev 5117) @@ -0,0 +1,18 @@ +using System; + +namespace NHibernate.Type +{ + [Serializable] + public class LocalDateTimeType : AbstractDateTimeSpecificKindType + { + protected override DateTimeKind DateTimeKind + { + get { return DateTimeKind.Local; } + } + + public override string Name + { + get { return "LocalDateTime"; } + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2010-08-05 16:11:15 UTC (rev 5116) +++ trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2010-08-06 13:56:15 UTC (rev 5117) @@ -238,6 +238,8 @@ RegisterType(NHibernateUtil.YesNo, new[] { "yes_no" }); RegisterType(NHibernateUtil.Ticks, new[] { "ticks" }); RegisterType(NHibernateUtil.TimeAsTimeSpan, EmptyAliases); + RegisterType(NHibernateUtil.LocalDateTime, new[] { "localdatetime" }); + RegisterType(NHibernateUtil.UtcDateTime, new[] { "utcdatetime" }); RegisterType(NHibernateUtil.Currency, new[] { "currency" }, (p, s) => GetType(NHibernateUtil.Currency, p, s, st => new CurrencyType(st))); Added: trunk/nhibernate/src/NHibernate/Type/UtcDateTimeType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/UtcDateTimeType.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Type/UtcDateTimeType.cs 2010-08-06 13:56:15 UTC (rev 5117) @@ -0,0 +1,18 @@ +using System; + +namespace NHibernate.Type +{ + [Serializable] + public class UtcDateTimeType : AbstractDateTimeSpecificKindType + { + protected override DateTimeKind DateTimeKind + { + get { return DateTimeKind.Utc; } + } + + public override string Name + { + get { return "UtcDateTime"; } + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-08-05 16:11:15 UTC (rev 5116) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-08-06 13:56:15 UTC (rev 5117) @@ -451,6 +451,9 @@ <Compile Include="NHSpecificTest\NH2148\Domain.cs" /> <Compile Include="NHSpecificTest\NH2245\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2245\Model.cs" /> + <Compile Include="TypesTest\DateTimeClass.cs" /> + <Compile Include="TypesTest\LocalDateTimeTypeFixture.cs" /> + <Compile Include="TypesTest\UtcDateTimeTypeFixture.cs" /> <Compile Include="UtilityTest\ReflectionHelperIsMethodOfTests.cs" /> <Compile Include="UtilityTest\ReflectionHelperTest.cs" /> <Compile Include="Linq\RegresstionTests.cs" /> @@ -2232,6 +2235,7 @@ <EmbeddedResource Include="CollectionTest\NullableValueTypeElementMapFixture.hbm.xml" /> <EmbeddedResource Include="DriverTest\EntityForMs2008.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="TypesTest\DateTimeClass.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1421\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2148\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2245\Mappings.hbm.xml" /> Added: trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeClass.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeClass.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeClass.cs 2010-08-06 13:56:15 UTC (rev 5117) @@ -0,0 +1,38 @@ +using System; + +namespace NHibernate.Test.TypesTest +{ + /// <summary> + /// Summary description for GuidClass. + /// </summary> + public class DateTimeClass + { + private int _id; + private DateTime? _utcDateTimeValue; + private DateTime? _localDateTimeValue; + public DateTimeClass() + { + NormalDateTimeValue = DateTime.Today; + } + + public int Id + { + get { return _id; } + set { _id = value; } + } + + public DateTime? UtcDateTimeValue + { + get { return _utcDateTimeValue; } + set { _utcDateTimeValue = value; } + } + + public DateTime? LocalDateTimeValue + { + get { return _localDateTimeValue; } + set { _localDateTimeValue = value; } + } + + public DateTime NormalDateTimeValue { get; set; } + } +} Added: trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeClass.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeClass.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeClass.hbm.xml 2010-08-06 13:56:15 UTC (rev 5117) @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" ?> + +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-lazy="false"> + + <class + name="NHibernate.Test.TypesTest.DateTimeClass, NHibernate.Test" + table="bc_datetime" + > + + <id name="Id" column="id"> + <generator class="assigned" /> + </id> + + <property name="UtcDateTimeValue" type="UtcDateTime" column="utcdatec"/> + <property name="LocalDateTimeValue" type="LocalDateTime" column="localdatec"/> + <property name="NormalDateTimeValue" /> + </class> +</hibernate-mapping> Modified: trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeTypeFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeTypeFixture.cs 2010-08-05 16:11:15 UTC (rev 5116) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeTypeFixture.cs 2010-08-06 13:56:15 UTC (rev 5117) @@ -1,6 +1,7 @@ using System; using NHibernate.Type; using NUnit.Framework; +using SharpTestsEx; namespace NHibernate.Test.TypesTest { @@ -43,5 +44,15 @@ value2 = ((DateTime)value2).AddHours(2); Assert.IsFalse(value1 == value2, "value2 was changed, value1 should not have changed also."); } + + [Test] + public void EqualityShouldIgnoreKindAndMillisecond() + { + var type = (DateTimeType)NHibernateUtil.DateTime; + var localTime = DateTime.Now; + var unspecifiedKid = new DateTime(localTime.Year, localTime.Month, localTime.Day, localTime.Hour, localTime.Minute, localTime.Second, 0, DateTimeKind.Unspecified); + type.Satisfy(t => t.IsEqual(localTime, unspecifiedKid)); + type.Satisfy(t => t.IsEqual(localTime, unspecifiedKid, EntityMode.Poco)); + } } } \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/TypesTest/LocalDateTimeTypeFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/LocalDateTimeTypeFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/LocalDateTimeTypeFixture.cs 2010-08-06 13:56:15 UTC (rev 5117) @@ -0,0 +1,43 @@ +using System; +using NUnit.Framework; + +namespace NHibernate.Test.TypesTest +{ + /// <summary> + /// The Unit Tests for the UtcDateTimeType. + /// </summary> + [TestFixture] + public class LocalDateTimeTypeFixture : TypeFixtureBase + { + protected override string TypeName + { + get { return "DateTime"; } + } + + [Test] + public void ReadWrite() + { + DateTime val = DateTime.UtcNow; + DateTime expected = new DateTime(val.Year, val.Month, val.Day, val.Hour, val.Minute, val.Second, DateTimeKind.Local); + + DateTimeClass basic = new DateTimeClass(); + basic.Id = 1; + basic.LocalDateTimeValue = val; + + ISession s = OpenSession(); + s.Save(basic); + s.Flush(); + s.Close(); + + s = OpenSession(); + basic = (DateTimeClass) s.Load(typeof (DateTimeClass), 1); + + Assert.AreEqual(DateTimeKind.Local, basic.LocalDateTimeValue.Value.Kind); + Assert.AreEqual(expected, basic.LocalDateTimeValue.Value); + + s.Delete(basic); + s.Flush(); + s.Close(); + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/TypesTest/UtcDateTimeTypeFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/UtcDateTimeTypeFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/UtcDateTimeTypeFixture.cs 2010-08-06 13:56:15 UTC (rev 5117) @@ -0,0 +1,43 @@ +using System; +using NUnit.Framework; + +namespace NHibernate.Test.TypesTest +{ + /// <summary> + /// The Unit Tests for the UtcDateTimeType. + /// </summary> + [TestFixture] + public class UtcDateTimeTypeFixture : TypeFixtureBase + { + protected override string TypeName + { + get { return "DateTime"; } + } + + [Test] + public void ReadWrite() + { + DateTime val = DateTime.UtcNow; + DateTime expected = new DateTime(val.Year, val.Month, val.Day, val.Hour, val.Minute, val.Second, DateTimeKind.Utc); + + DateTimeClass basic = new DateTimeClass(); + basic.Id = 1; + basic.UtcDateTimeValue = val; + + ISession s = OpenSession(); + s.Save(basic); + s.Flush(); + s.Close(); + + s = OpenSession(); + basic = (DateTimeClass) s.Load(typeof (DateTimeClass), 1); + + Assert.AreEqual(DateTimeKind.Utc, basic.UtcDateTimeValue.Value.Kind); + Assert.AreEqual(expected, basic.UtcDateTimeValue.Value); + + s.Delete(basic); + s.Flush(); + s.Close(); + } + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ric...@us...> - 2010-08-06 19:57:17
|
Revision: 5118 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5118&view=rev Author: ricbrown Date: 2010-08-06 19:57:08 +0000 (Fri, 06 Aug 2010) Log Message: ----------- Fix NH-2251 (System.FormatException mixing Future and Skip/Take) Fixed naming and position of parameters for dialects supporting parameters for limits. Modified Paths: -------------- trunk/nhibernate/releasenotes.txt trunk/nhibernate/src/NHibernate/Criterion/ICriteriaQuery.cs trunk/nhibernate/src/NHibernate/Criterion/SubqueryExpression.cs trunk/nhibernate/src/NHibernate/Dialect/DB2Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs trunk/nhibernate/src/NHibernate/Dialect/Oracle8iDialect.cs trunk/nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs trunk/nhibernate/src/NHibernate/Engine/QueryParameters.cs trunk/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaQueryTranslator.cs trunk/nhibernate/src/NHibernate/Loader/Loader.cs trunk/nhibernate/src/NHibernate/SqlCommand/Parameter.cs trunk/nhibernate/src/NHibernate/SqlCommand/SqlString.cs trunk/nhibernate/src/NHibernate/SqlCommand/SqlStringBuilder.cs trunk/nhibernate/src/NHibernate.Test/DialectTest/DB2DialectFixture.cs trunk/nhibernate/src/NHibernate.Test/DialectTest/MsSql2005DialectFixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Domain.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Mappings.hbm.xml Modified: trunk/nhibernate/releasenotes.txt =================================================================== --- trunk/nhibernate/releasenotes.txt 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/releasenotes.txt 2010-08-06 19:57:08 UTC (rev 5118) @@ -1,9 +1,13 @@ -Build 3.0.0.Alpha1 +Build 3.0.0.Alpha2 ============================= -** Known BREAKING CHANGES from NH2.1.1.GA to NH3.0.0.Alpha1 +** Known BREAKING CHANGES from NH2.1.1.GA to NH3.0.0.Alpha2 ##### Run time ##### * (NH-2199) - null values in maps/dictionaries are no longer silenty ignored/deleted + ##### Possible Breaking Changes ##### + * (NH-2251) - Signature change for GetLimitString in Dialect + + Build 3.0.0.Alpha1 (rev5056) ============================= Modified: trunk/nhibernate/src/NHibernate/Criterion/ICriteriaQuery.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/ICriteriaQuery.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Criterion/ICriteriaQuery.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -68,5 +68,11 @@ /// Do not report the same item multiple times as it will be assumed to be a separate parameter. /// </summary> void AddUsedTypedValues(TypedValue [] values); + + /// <summary> + /// Creates a dummy parameter index for the supplied paged value. + /// Returns null if the Dialect does not support limit parameters + /// </summary> + int? CreatePagingParameter(int value); } } Modified: trunk/nhibernate/src/NHibernate/Criterion/SubqueryExpression.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/SubqueryExpression.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Criterion/SubqueryExpression.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -68,7 +68,9 @@ if (criteriaImpl.FirstResult != 0 || criteriaImpl.MaxResults != RowSelection.NoValue) { - sql = factory.Dialect.GetLimitString(sql, criteriaImpl.FirstResult, criteriaImpl.MaxResults); + int? offsetParameterIndex = criteriaQuery.CreatePagingParameter(criteriaImpl.FirstResult); + int? limitParameterIndex = criteriaQuery.CreatePagingParameter(criteriaImpl.MaxResults); + sql = factory.Dialect.GetLimitString(sql, criteriaImpl.FirstResult, criteriaImpl.MaxResults, offsetParameterIndex, limitParameterIndex); } if (op != null) Modified: trunk/nhibernate/src/NHibernate/Dialect/DB2Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/DB2Dialect.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Dialect/DB2Dialect.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -212,7 +212,7 @@ /// <param name="querySqlString">A Query in the form of a SqlString.</param> /// <param name="hasOffset">Offset of the first row is not zero</param> /// <returns>A new SqlString that contains the <c>LIMIT</c> clause.</returns> - public override SqlString GetLimitString(SqlString querySqlString, bool hasOffset) + public override SqlString GetLimitString(SqlString querySqlString, int offset, int limit, int? offsetParameterIndex, int? limitParameterIndex) { /* * "select * from (select row_number() over(orderby_clause) as rownum, " @@ -228,19 +228,19 @@ .Add(querySqlString.Substring(7)) .Add(") as tempresult where rownum "); - if (hasOffset) + if (offset > 0) { pagingBuilder .Add("between ") - .Add(Parameter.Placeholder) + .Add(Parameter.WithIndex(offsetParameterIndex.Value)) .Add("+1 and ") - .Add(Parameter.Placeholder); + .Add(Parameter.WithIndex(limitParameterIndex.Value)); } else { pagingBuilder .Add("<= ") - .Add(Parameter.Placeholder); + .Add(Parameter.WithIndex(limitParameterIndex.Value)); } return pagingBuilder.ToSqlString(); Modified: trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -1409,11 +1409,30 @@ /// <summary> /// Add a <c>LIMIT</c> clause to the given SQL <c>SELECT</c> + /// when the dialect supports variable limits (i.e., parameters for the limit constraints) /// </summary> /// <param name="querySqlString">A Query in the form of a SqlString.</param> /// <param name="offset">Offset of the first row to be returned by the query (zero-based)</param> /// <param name="limit">Maximum number of rows to be returned by the query</param> /// <returns>A new SqlString that contains the <c>LIMIT</c> clause.</returns> + public virtual SqlString GetLimitString(SqlString querySqlString, int offset, int limit, int? offsetParameterIndex, int? limitParameterIndex) + { + if (!SupportsVariableLimit) + return GetLimitString(querySqlString, offset, limit); + + if ((offsetParameterIndex == null) && (limitParameterIndex == null)) + return GetLimitString(querySqlString, offset, limit); + + throw new NotSupportedException("Override to support limits passed as parameters"); + } + + /// <summary> + /// Add a <c>LIMIT</c> clause to the given SQL <c>SELECT</c> + /// </summary> + /// <param name="querySqlString">A Query in the form of a SqlString.</param> + /// <param name="offset">Offset of the first row to be returned by the query (zero-based)</param> + /// <param name="limit">Maximum number of rows to be returned by the query</param> + /// <returns>A new SqlString that contains the <c>LIMIT</c> clause.</returns> public virtual SqlString GetLimitString(SqlString querySqlString, int offset, int limit) { return GetLimitString(querySqlString, offset > 0); Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -42,7 +42,7 @@ /// Note that we need to add explicitly specify the columns, because we need to be able to use them /// in a paged subselect. NH-1155 /// </remarks> - public override SqlString GetLimitString(SqlString querySqlString, int offset, int last) + public override SqlString GetLimitString(SqlString querySqlString, int offset, int last, int? offsetParameterIndex, int? limitParameterIndex) { //dont do this paging code if there is no offset, use the //sql 2000 dialect since it just uses a top statement @@ -76,16 +76,10 @@ sortExpressions = new[] {new SqlString("CURRENT_TIMESTAMP"),}; } - Parameter limitParameter = Parameter.Placeholder; - limitParameter.ParameterPosition = 0; - - Parameter offsetParameter = Parameter.Placeholder; - offsetParameter.ParameterPosition = 1; - SqlStringBuilder result = new SqlStringBuilder() .Add("SELECT TOP (") - .Add(limitParameter) + .Add(Parameter.WithIndex(limitParameterIndex.Value)) .Add(") ") .Add(StringHelper.Join(", ", columnsOrAliases)) .Add(" FROM (") @@ -98,7 +92,7 @@ .Add(") as __hibernate_sort_row ") .Add(from) .Add(") as query WHERE query.__hibernate_sort_row > ") - .Add(offsetParameter) + .Add(Parameter.WithIndex(offsetParameterIndex.Value)) .Add(" ORDER BY query.__hibernate_sort_row"); return result.ToSqlString(); Modified: trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -186,17 +186,17 @@ /// <param name="querySqlString"></param> /// <param name="hasOffset"></param> /// <returns></returns> - public override SqlString GetLimitString(SqlString querySqlString, bool hasOffset) + public override SqlString GetLimitString(SqlString querySqlString, int offset, int limit, int? offsetParameterIndex, int? limitParameterIndex) { var pagingBuilder = new SqlStringBuilder(); pagingBuilder.Add(querySqlString); pagingBuilder.Add(" limit "); - pagingBuilder.Add(Parameter.Placeholder); + pagingBuilder.Add(Parameter.WithIndex(limitParameterIndex.Value)); - if (hasOffset) + if (offset > 0) { pagingBuilder.Add(", "); - pagingBuilder.Add(Parameter.Placeholder); + pagingBuilder.Add(Parameter.WithIndex(offsetParameterIndex.Value)); } return pagingBuilder.ToSqlString(); } Modified: trunk/nhibernate/src/NHibernate/Dialect/Oracle8iDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/Oracle8iDialect.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Dialect/Oracle8iDialect.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -248,9 +248,10 @@ return new DecodeCaseFragment(this); } - public override SqlString GetLimitString(SqlString sql, bool hasOffset) + public override SqlString GetLimitString(SqlString sql, int offset, int limit, int? offsetParameterIndex, int? limitParameterIndex) { sql = sql.Trim(); + bool hasOffset = offset > 0; bool isForUpdate = false; if (sql.EndsWithCaseInsensitive(" for update")) { @@ -270,11 +271,11 @@ pagingSelect.Add(sql); if (hasOffset) { - pagingSelect.Add(" ) row_ where rownum <=").AddParameter().Add(") where rownum_ >").AddParameter(); + pagingSelect.Add(" ) row_ where rownum <=").AddParameter(limitParameterIndex.Value).Add(") where rownum_ >").AddParameter(offsetParameterIndex.Value); } else { - pagingSelect.Add(" ) where rownum <=").AddParameter(); + pagingSelect.Add(" ) where rownum <=").AddParameter(limitParameterIndex.Value); } if (isForUpdate) Modified: trunk/nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -133,17 +133,17 @@ /// <param name="querySqlString"></param> /// <param name="hasOffset">Offset of the first row to process in the result set is non-zero</param> /// <returns></returns> - public override SqlString GetLimitString(SqlString querySqlString, bool hasOffset) + public override SqlString GetLimitString(SqlString querySqlString, int offset, int limit, int? offsetParameterIndex, int? limitParameterIndex) { SqlStringBuilder pagingBuilder = new SqlStringBuilder(); pagingBuilder.Add(querySqlString); pagingBuilder.Add(" limit "); - pagingBuilder.Add(Parameter.Placeholder); + pagingBuilder.Add(Parameter.WithIndex(limitParameterIndex.Value)); - if (hasOffset) + if (offset > 0) { pagingBuilder.Add(" offset "); - pagingBuilder.Add(Parameter.Placeholder); + pagingBuilder.Add(Parameter.WithIndex(offsetParameterIndex.Value)); } return pagingBuilder.ToSqlString(); Modified: trunk/nhibernate/src/NHibernate/Engine/QueryParameters.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/QueryParameters.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Engine/QueryParameters.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -2,6 +2,7 @@ using System.Collections; using System.Collections.Generic; using System.Data; +using System.Linq; using log4net; using NHibernate.Hql.Classic; using NHibernate.Impl; @@ -40,7 +41,12 @@ private object _optionalId; private string _comment; private bool _readOnly; + private int? limitParameterIndex = null; + private int? offsetParameterIndex = null; + private int wildcardSubqueryLimitParameterIndex = -1; private IDictionary<int, int> _adjustedParameterLocations; + private IDictionary<int, int> _tempPagingParameterIndexes; + private IDictionary<int, int> _pagingParameterIndexMap; private SqlString processedSQL; @@ -61,7 +67,7 @@ } public QueryParameters(IType[] positionalParameterTypes, object[] postionalParameterValues) - : this(positionalParameterTypes, postionalParameterValues, null, null, false, null, null, false, null) {} + : this(positionalParameterTypes, postionalParameterValues, null, null, false, null, null, false, null, null) {} public QueryParameters(IType[] positionalParameterTypes, object[] postionalParameterValues, object[] collectionKeys) : this(positionalParameterTypes, postionalParameterValues, null, collectionKeys) {} @@ -74,12 +80,13 @@ public QueryParameters(IType[] positionalParameterTypes, object[] positionalParameterValues, IDictionary<string, LockMode> lockModes, RowSelection rowSelection, bool cacheable, - string cacheRegion, string comment, bool isLookupByNaturalKey, IResultTransformer transformer) + string cacheRegion, string comment, bool isLookupByNaturalKey, IResultTransformer transformer, IDictionary<int,int> tempPagingParameterIndexes) : this( positionalParameterTypes, positionalParameterValues, null, lockModes, rowSelection, false, cacheable, cacheRegion, comment, null, transformer) { NaturalKeyLookup = isLookupByNaturalKey; + _tempPagingParameterIndexes = tempPagingParameterIndexes; } public QueryParameters(IType[] positionalParameterTypes, object[] positionalParameterValues, @@ -125,6 +132,16 @@ get { return _rowSelection != null; } } + public int? LimitParameterIndex + { + get { return limitParameterIndex; } + } + + public int? OffsetParameterIndex + { + get { return offsetParameterIndex; } + } + /// <summary> /// Named parameters. /// </summary> @@ -401,7 +418,11 @@ { if (sqlParameter is Parameter) { - sqlParameters.Add((Parameter)sqlParameter); + var parameter = (Parameter) sqlParameter; + if (!parameter.ParameterPosition.HasValue || (parameter.ParameterPosition >= 0)) + { + sqlParameters.Add(parameter); + } } } @@ -497,25 +518,61 @@ } } + if (_tempPagingParameterIndexes != null) + { + _pagingParameterIndexMap = new Dictionary<int, int>(); + + var pagingParameters = + sqlString.Parts + .Cast<object>() + .Where(p => p is Parameter) + .Cast<Parameter>() + .Where(p => p.ParameterPosition.HasValue && p.ParameterPosition < 0) + .ToList(); + + foreach (Parameter pagingParameter in pagingParameters) + { + int pagingValue = _tempPagingParameterIndexes[pagingParameter.ParameterPosition.Value]; + int position = parameterIndex + startParameterIndex; + _pagingParameterIndexMap.Add(position, pagingValue); + pagingParameter.ParameterPosition = position; + paramTypeList.Add(NHibernateUtil.Int32); + parameterIndex++; + totalSpan++; + } + } + if (addLimit && factory.Dialect.SupportsVariableLimit) { if (factory.Dialect.BindLimitParametersFirst) { paramTypeList.Insert(0, NHibernateUtil.Int32); + limitParameterIndex = startParameterIndex - 1; if (addOffset) { paramTypeList.Insert(0, NHibernateUtil.Int32); + offsetParameterIndex = startParameterIndex - 2; } } else { paramTypeList.Add(NHibernateUtil.Int32); + limitParameterIndex = totalSpan; if (addOffset) { paramTypeList.Add(NHibernateUtil.Int32); + offsetParameterIndex = totalSpan; + limitParameterIndex = totalSpan + 1; } } + if (addOffset && factory.Dialect.BindLimitParametersInReverseOrder) + { + int? temp = limitParameterIndex; + limitParameterIndex = offsetParameterIndex; + offsetParameterIndex = temp; + } + totalSpan += addOffset ? 2 : 1; } @@ -562,6 +619,16 @@ } } + if (_pagingParameterIndexMap != null) + { + foreach (int pagingParameterIndex in _pagingParameterIndexMap.Keys) + { + ArrayHelper.SafeSetValue(values, pagingParameterIndex, _pagingParameterIndexMap[pagingParameterIndex]); + ArrayHelper.SafeSetValue(types, pagingParameterIndex, NHibernateUtil.Int32); + ArrayHelper.SafeSetValue(sources, pagingParameterIndex, "limit_" + pagingParameterIndex); + } + } + int span = 0; for (int i = start; i < values.Count; i++) { Modified: trunk/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -315,47 +315,41 @@ { int colIndex = 0; - colIndex = BindLimitParametersFirstIfNeccesary(command, colIndex); - colIndex = BindQueryParameters(command, colIndex); - - BindLimitParametersLastIfNeccesary(command, colIndex); + for (int queryIndex = 0; queryIndex < loaders.Count; queryIndex++) + { + int limitParameterSpan = BindLimitParametersFirstIfNeccesary(command, queryIndex, colIndex); + colIndex = BindQueryParameters(command, queryIndex, colIndex + limitParameterSpan); + BindLimitParametersLastIfNeccesary(command, queryIndex, colIndex); + } } - private void BindLimitParametersLastIfNeccesary(IDbCommand command, int colIndex) + private void BindLimitParametersLastIfNeccesary(IDbCommand command, int queryIndex, int colIndex) { - for (int i = 0; i < loaders.Count; i++) + QueryParameters parameter = parameters[queryIndex]; + RowSelection selection = parameter.RowSelection; + if (Loader.Loader.UseLimit(selection, dialect) && !dialect.BindLimitParametersFirst) { - QueryParameters parameter = parameters[i]; - RowSelection selection = parameter.RowSelection; - if (Loader.Loader.UseLimit(selection, dialect) && !dialect.BindLimitParametersFirst) - { - colIndex += Loader.Loader.BindLimitParameters(command, colIndex, selection, session); - } + Loader.Loader.BindLimitParameters(command, colIndex, selection, session); } } - private int BindQueryParameters(IDbCommand command, int colIndex) + private int BindQueryParameters(IDbCommand command, int queryIndex, int colIndex) { - for (int i = 0; i < loaders.Count; i++) - { - QueryParameters parameter = parameters[i]; - colIndex += parameter.BindParameters(command, colIndex, session); - } + QueryParameters parameter = parameters[queryIndex]; + colIndex += parameter.BindParameters(command, colIndex, session); return colIndex; } - private int BindLimitParametersFirstIfNeccesary(IDbCommand command, int colIndex) + private int BindLimitParametersFirstIfNeccesary(IDbCommand command, int queryIndex, int colIndex) { - for (int i = 0; i < loaders.Count; i++) + int limitParametersSpan = 0; + QueryParameters parameter = parameters[queryIndex]; + RowSelection selection = parameter.RowSelection; + if (Loader.Loader.UseLimit(selection, dialect) && dialect.BindLimitParametersFirst) { - QueryParameters parameter = parameters[i]; - RowSelection selection = parameter.RowSelection; - if (Loader.Loader.UseLimit(selection, dialect) && dialect.BindLimitParametersFirst) - { - colIndex += Loader.Loader.BindLimitParameters(command, colIndex, selection, session); - } + limitParametersSpan += Loader.Loader.BindLimitParameters(command, colIndex, selection, session); } - return colIndex; + return limitParametersSpan; } public IMultiCriteria Add(System.Type resultGenericListType, ICriteria criteria) Modified: trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -643,33 +643,29 @@ { int colIndex = 0; - colIndex = BindLimitParametersFirstIfNeccesary(command, colIndex); - colIndex = BindQueryParameters(command, colIndex); - - BindLimitParametersLastIfNeccesary(command, colIndex); + for (int queryIndex = 0; queryIndex < queries.Count; queryIndex++) + { + int limitParameterSpan = BindLimitParametersFirstIfNeccesary(command, queryIndex, colIndex); + colIndex = BindQueryParameters(command, queryIndex, colIndex + limitParameterSpan); + BindLimitParametersLastIfNeccesary(command, queryIndex, colIndex); + } } - private void BindLimitParametersLastIfNeccesary(IDbCommand command, int colIndex) + private void BindLimitParametersLastIfNeccesary(IDbCommand command, int queryIndex, int colIndex) { - for (int i = 0; i < queries.Count; i++) + QueryParameters parameter = parameters[queryIndex]; + RowSelection selection = parameter.RowSelection; + if (Loader.Loader.UseLimit(selection, dialect) && !dialect.BindLimitParametersFirst) { - QueryParameters parameter = parameters[i]; - RowSelection selection = parameter.RowSelection; - if (Loader.Loader.UseLimit(selection, dialect) && !dialect.BindLimitParametersFirst) - { - colIndex += Loader.Loader.BindLimitParameters(command, colIndex, selection, session); - } + Loader.Loader.BindLimitParameters(command, colIndex, selection, session); } } - private int BindQueryParameters(IDbCommand command, int colIndex) + private int BindQueryParameters(IDbCommand command, int queryIndex, int colIndex) { - for (int i = 0; i < queries.Count; i++) - { - IQueryTranslator translator = Translators[i]; - QueryParameters parameter = Parameters[i]; - colIndex += parameter.BindParameters(command, colIndex, session); - } + IQueryTranslator translator = Translators[queryIndex]; + QueryParameters parameter = Parameters[queryIndex]; + colIndex += parameter.BindParameters(command, colIndex, session); return colIndex; } @@ -688,18 +684,16 @@ return queryResults[criteriaResultPositions[key]]; } - private int BindLimitParametersFirstIfNeccesary(IDbCommand command, int colIndex) + private int BindLimitParametersFirstIfNeccesary(IDbCommand command, int queryIndex, int colIndex) { - for (int i = 0; i < queries.Count; i++) + int limitParameterSpan = 0; + QueryParameters parameter = Parameters[queryIndex]; + RowSelection selection = parameter.RowSelection; + if (Loader.Loader.UseLimit(selection, dialect) && dialect.BindLimitParametersFirst) { - QueryParameters parameter = Parameters[i]; - RowSelection selection = parameter.RowSelection; - if (Loader.Loader.UseLimit(selection, dialect) && dialect.BindLimitParametersFirst) - { - colIndex += Loader.Loader.BindLimitParameters(command, colIndex, selection, session); - } + limitParameterSpan += Loader.Loader.BindLimitParameters(command, colIndex, selection, session); } - return colIndex; + return limitParameterSpan; } public override string ToString() Modified: trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaQueryTranslator.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaQueryTranslator.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaQueryTranslator.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -26,6 +26,8 @@ private readonly string rootEntityName; private readonly string rootSQLAlias; private const int aliasCount = 0; + private int _tempPagingParameterIndex = -1; + private IDictionary<int, int> _tempPagingParameterIndexes = new Dictionary<int, int>(); private readonly IDictionary<ICriteria, ICriteriaInfoProvider> criteriaInfoMap = new Dictionary<ICriteria, ICriteriaInfoProvider>(); @@ -141,7 +143,7 @@ return new QueryParameters(typeArray, valueArray, lockModes, selection, rootCriteria.Cacheable, rootCriteria.CacheRegion, - rootCriteria.Comment, rootCriteria.LookupByNaturalKey, rootCriteria.ResultTransformer); + rootCriteria.Comment, rootCriteria.LookupByNaturalKey, rootCriteria.ResultTransformer, _tempPagingParameterIndexes); } public SqlString GetGroupBy() @@ -730,7 +732,15 @@ } } + public int? CreatePagingParameter(int value) + { + if (!Factory.Dialect.SupportsVariableLimit) + return null; + _tempPagingParameterIndexes.Add(_tempPagingParameterIndex, value); + return _tempPagingParameterIndex--; + } + public SqlString GetHavingCondition(IDictionary<string, IFilter> enabledFilters) { SqlStringBuilder condition = new SqlStringBuilder(30); Modified: trunk/nhibernate/src/NHibernate/Loader/Loader.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Loader/Loader.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Loader/Loader.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -1112,7 +1112,12 @@ if (useLimit) { sqlString = - dialect.GetLimitString(sqlString.Trim(), useOffset ? GetFirstRow(selection) : 0, GetMaxOrLimit(dialect, selection)); + dialect.GetLimitString( + sqlString.Trim(), + useOffset ? GetFirstRow(selection) : 0, + GetMaxOrLimit(dialect, selection), + queryParameters.OffsetParameterIndex, + queryParameters.LimitParameterIndex); } sqlString = PreprocessSQL(sqlString, queryParameters, dialect); @@ -1710,7 +1715,12 @@ if (useLimit) { sqlString = - dialect.GetLimitString(sqlString.Trim(), useOffset ? GetFirstRow(selection) : 0, GetMaxOrLimit(dialect, selection)); + dialect.GetLimitString( + sqlString.Trim(), + useOffset ? GetFirstRow(selection) : 0, + GetMaxOrLimit(dialect, selection), + parameters.OffsetParameterIndex, + parameters.LimitParameterIndex); } sqlString = PreprocessSQL(sqlString, parameters, dialect); Modified: trunk/nhibernate/src/NHibernate/SqlCommand/Parameter.cs =================================================================== --- trunk/nhibernate/src/NHibernate/SqlCommand/Parameter.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/SqlCommand/Parameter.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -26,6 +26,14 @@ get { return new Parameter(); } } + /// <summary> + /// Create a parameter with the specified position + /// </summary> + public static Parameter WithIndex(int position) + { + return new Parameter() { ParameterPosition = position }; + } + private Parameter() { } Modified: trunk/nhibernate/src/NHibernate/SqlCommand/SqlString.cs =================================================================== --- trunk/nhibernate/src/NHibernate/SqlCommand/SqlString.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/SqlCommand/SqlString.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -581,7 +581,18 @@ for (int i=0; i<clone.sqlParts.Length; i++) { if (clone.sqlParts[i] is Parameter) - clone.sqlParts[i] = SqlCommand.Parameter.Placeholder; + { + var originalParameter = (Parameter)clone.sqlParts[i]; + var copyParameter = SqlCommand.Parameter.Placeholder; + + if (originalParameter.ParameterPosition < 0) + { + // placeholder for sub-query parameter + copyParameter.ParameterPosition = originalParameter.ParameterPosition; + } + + clone.sqlParts[i] = copyParameter; + } } return clone; Modified: trunk/nhibernate/src/NHibernate/SqlCommand/SqlStringBuilder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/SqlCommand/SqlStringBuilder.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/SqlCommand/SqlStringBuilder.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -110,6 +110,11 @@ return Add(Parameter.Placeholder); } + public SqlStringBuilder AddParameter(int position) + { + return Add(Parameter.WithIndex(position)); + } + /// <summary> /// Attempts to discover what type of object this is and calls the appropriate /// method. Modified: trunk/nhibernate/src/NHibernate.Test/DialectTest/DB2DialectFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/DialectTest/DB2DialectFixture.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate.Test/DialectTest/DB2DialectFixture.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -24,7 +24,7 @@ " order by a, x" }); - SqlString limited = dialect.GetLimitString(sql, true); + SqlString limited = dialect.GetLimitString(sql, 1, 2, -1, -2); Assert.AreEqual( "select * from (select rownumber() over(order by a, x) as rownum, a, b, c from d where X = ? and Z = ? order by a, x) as tempresult where rownum between ?+1 and ?", limited.ToString()); Modified: trunk/nhibernate/src/NHibernate.Test/DialectTest/MsSql2005DialectFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/DialectTest/MsSql2005DialectFixture.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate.Test/DialectTest/MsSql2005DialectFixture.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -16,37 +16,37 @@ { MsSql2005Dialect d = new MsSql2005Dialect(); - SqlString str = d.GetLimitString(new SqlString("select distinct c.Contact_Id as Contact1_19_0_, c._Rating as Rating2_19_0_ from dbo.Contact c where COALESCE(c.Rating, 0) > 0 order by c.Rating desc , c.Last_Name , c.First_Name"), 1, 10); + SqlString str = d.GetLimitString(new SqlString("select distinct c.Contact_Id as Contact1_19_0_, c._Rating as Rating2_19_0_ from dbo.Contact c where COALESCE(c.Rating, 0) > 0 order by c.Rating desc , c.Last_Name , c.First_Name"), 1, 10, -1, -2); System.Console.WriteLine(str); Assert.AreEqual( "SELECT TOP (?) Contact1_19_0_, Rating2_19_0_ FROM (select distinct c.Contact_Id as Contact1_19_0_, c._Rating as Rating2_19_0_, ROW_NUMBER() OVER(ORDER BY c.Rating DESC, c.Last_Name, c.First_Name) as __hibernate_sort_row from dbo.Contact c where COALESCE(c.Rating, 0) > 0) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", str.ToString()); - str = d.GetLimitString(new SqlString("SELECT fish.id FROM fish"), 1, 10); + str = d.GetLimitString(new SqlString("SELECT fish.id FROM fish"), 1, 10, -1, -2); System.Console.WriteLine(str); Assert.AreEqual( "SELECT TOP (?) id FROM (SELECT fish.id, ROW_NUMBER() OVER(ORDER BY CURRENT_TIMESTAMP) as __hibernate_sort_row FROM fish) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", str.ToString()); - str = d.GetLimitString(new SqlString("SELECT DISTINCT fish_.id FROM fish fish_"), 1, 10); + str = d.GetLimitString(new SqlString("SELECT DISTINCT fish_.id FROM fish fish_"), 1, 10, -1, -2); System.Console.WriteLine(str); Assert.AreEqual( "SELECT TOP (?) id FROM (SELECT DISTINCT fish_.id, ROW_NUMBER() OVER(ORDER BY CURRENT_TIMESTAMP) as __hibernate_sort_row FROM fish fish_) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", str.ToString()); - str = d.GetLimitString(new SqlString("SELECT DISTINCT fish_.id as ixx9_ FROM fish fish_"), 1, 10); + str = d.GetLimitString(new SqlString("SELECT DISTINCT fish_.id as ixx9_ FROM fish fish_"), 1, 10, -1, -2); System.Console.WriteLine(str); Assert.AreEqual( "SELECT TOP (?) ixx9_ FROM (SELECT DISTINCT fish_.id as ixx9_, ROW_NUMBER() OVER(ORDER BY CURRENT_TIMESTAMP) as __hibernate_sort_row FROM fish fish_) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", str.ToString()); - str = d.GetLimitString(new SqlString("SELECT * FROM fish ORDER BY name"), 5, 15); + str = d.GetLimitString(new SqlString("SELECT * FROM fish ORDER BY name"), 5, 15, -1, -2); System.Console.WriteLine(str); Assert.AreEqual( "SELECT TOP (?) * FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY name) as __hibernate_sort_row FROM fish) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", str.ToString()); - str = d.GetLimitString(new SqlString("SELECT fish.id, fish.name FROM fish ORDER BY name DESC"), 7, 28); + str = d.GetLimitString(new SqlString("SELECT fish.id, fish.name FROM fish ORDER BY name DESC"), 7, 28, -1, -2); System.Console.WriteLine(str); Assert.AreEqual( "SELECT TOP (?) id, name FROM (SELECT fish.id, fish.name, ROW_NUMBER() OVER(ORDER BY fish.name DESC) as __hibernate_sort_row FROM fish) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", @@ -54,25 +54,25 @@ str = d.GetLimitString( - new SqlString("SELECT * FROM fish LEFT JOIN (SELECT * FROM meat ORDER BY weight) AS t ORDER BY name DESC"), 10, 20); + new SqlString("SELECT * FROM fish LEFT JOIN (SELECT * FROM meat ORDER BY weight) AS t ORDER BY name DESC"), 10, 20, -1, -2); System.Console.WriteLine(str); Assert.AreEqual( "SELECT TOP (?) * FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY name DESC) as __hibernate_sort_row FROM fish LEFT JOIN (SELECT * FROM meat ORDER BY weight) AS t) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", str.ToString()); - str = d.GetLimitString(new SqlString("SELECT *, (SELECT COUNT(1) FROM fowl WHERE fish_id = fish.id) AS some_count FROM fish"), 1, 10); + str = d.GetLimitString(new SqlString("SELECT *, (SELECT COUNT(1) FROM fowl WHERE fish_id = fish.id) AS some_count FROM fish"), 1, 10, -1, -2); System.Console.WriteLine(str); Assert.AreEqual( "SELECT TOP (?) *, some_count FROM (SELECT *, (SELECT COUNT(1) FROM fowl WHERE fish_id = fish.id) AS some_count, ROW_NUMBER() OVER(ORDER BY CURRENT_TIMESTAMP) as __hibernate_sort_row FROM fish) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", str.ToString()); - str = d.GetLimitString(new SqlString("SELECT * FROM fish WHERE scales = ", Parameter.Placeholder), 1, 10); + str = d.GetLimitString(new SqlString("SELECT * FROM fish WHERE scales = ", Parameter.Placeholder), 1, 10, -1, -2); System.Console.WriteLine(str); Assert.AreEqual( "SELECT TOP (?) * FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY CURRENT_TIMESTAMP) as __hibernate_sort_row FROM fish WHERE scales = ?) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", str.ToString()); - str = d.GetLimitString(new SqlString("SELECT f.Type, COUNT(DISTINCT f.Name) AS Name FROM Fish f GROUP BY f.Type ORDER BY COUNT(DISTINCT f.Name)"), 1, 10); + str = d.GetLimitString(new SqlString("SELECT f.Type, COUNT(DISTINCT f.Name) AS Name FROM Fish f GROUP BY f.Type ORDER BY COUNT(DISTINCT f.Name)"), 1, 10, -1, -2); System.Console.WriteLine(str); Assert.AreEqual( "SELECT TOP (?) Type, Name FROM (SELECT f.Type, COUNT(DISTINCT f.Name) AS Name, ROW_NUMBER() OVER(ORDER BY COUNT(DISTINCT f.Name)) as __hibernate_sort_row FROM Fish f GROUP BY f.Type) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", @@ -95,13 +95,13 @@ { MsSql2005Dialect d = new MsSql2005Dialect(); SqlString result = - d.GetLimitString(new SqlString("select concat(a.Description,', ', a.Description) as desc from Animal a"), 1, 10); + d.GetLimitString(new SqlString("select concat(a.Description,', ', a.Description) as desc from Animal a"), 1, 10, -1, -2); System.Console.WriteLine(result); Assert.AreEqual("SELECT TOP (?) desc FROM (select concat(a.Description,', ', a.Description) as desc, ROW_NUMBER() OVER(ORDER BY CURRENT_TIMESTAMP) as __hibernate_sort_row from Animal a) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", result.ToString()); // The test use the function "cast" because cast need the keyWork "as" too SqlString str = - d.GetLimitString(new SqlString("SELECT fish.id, cast('astring, with,comma' as string) as bar FROM fish"), 1, 10); + d.GetLimitString(new SqlString("SELECT fish.id, cast('astring, with,comma' as string) as bar FROM fish"), 1, 10, -1, -2); System.Console.WriteLine(str); Assert.AreEqual( "SELECT TOP (?) id, bar FROM (SELECT fish.id, cast('astring, with,comma' as string) as bar, ROW_NUMBER() OVER(ORDER BY CURRENT_TIMESTAMP) as __hibernate_sort_row FROM fish) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Domain.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Domain.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Domain.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -6,5 +6,6 @@ { public virtual Guid Id { get; set; } public virtual string Name { get; set; } + public virtual int Ord { get; set; } } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Fixture.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Fixture.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -1,12 +1,13 @@ using System.Linq; using NUnit.Framework; using SharpTestsEx; +using NHibernate.Criterion; namespace NHibernate.Test.NHSpecificTest.NH2251 { public class Fixture : BugTestCase { - [Test, Ignore("Executing FutureValue before Future cause the mix of parameters in SQL.")] + [Test] public void WhenUseFutureSkipTakeThenNotThrow() { using (var session = OpenSession()) @@ -47,5 +48,109 @@ ).Should().NotThrow(); } } + + [Test] + public void HqlWithOffsetAndLimit() + { + using (var session = OpenSession()) + using (var transaction = session.BeginTransaction()) + { + session.Save(new Foo() { Name = "name1" }); + session.Save(new Foo() { Name = "name2" }); + session.Save(new Foo() { Name = "name3" }); + session.Save(new Foo() { Name = "name4" }); + + string stringParam = "name%"; + var list = + session.CreateQuery("from Foo f where f.Name like :stringParam order by f.Name") + .SetParameter("stringParam", stringParam) + .SetFirstResult(1) + .SetMaxResults(2) + .List<Foo>(); + + Assert.That(list.Count(), Is.EqualTo(2)); + Assert.That(list[0].Name, Is.EqualTo("name2")); + Assert.That(list[1].Name, Is.EqualTo("name3")); + } + } + + [Test] + public void FuturePagedHql() + { + using (var session = OpenSession()) + using (var transaction = session.BeginTransaction()) + { + session.Save(new Foo() { Name = "name1" }); + session.Save(new Foo() { Name = "name2" }); + session.Save(new Foo() { Name = "name3" }); + session.Save(new Foo() { Name = "name4" }); + + string stringParam = "name%"; + var list1 = + session.CreateQuery("from Foo f where f.Name like :stringParam order by f.Name") + .SetParameter("stringParam", stringParam) + .SetFirstResult(1) + .SetMaxResults(2) + .Future<Foo>(); + + var list2 = + session.CreateQuery("from Foo f where f.Name like :stringParam order by f.Name") + .SetParameter("stringParam", stringParam) + .SetFirstResult(1) + .SetMaxResults(2) + .Future<Foo>(); + + Assert.That(list1.Count(), Is.EqualTo(2)); + Assert.That(list1.ElementAt(0).Name, Is.EqualTo("name2")); + Assert.That(list1.ElementAt(1).Name, Is.EqualTo("name3")); + + Assert.That(list2.Count(), Is.EqualTo(2)); + Assert.That(list2.ElementAt(0).Name, Is.EqualTo("name2")); + Assert.That(list2.ElementAt(1).Name, Is.EqualTo("name3")); + } + } + + [Test] + public void MultiplePagingParametersInSingleQuery() + { + using (var session = OpenSession()) + using (var transaction = session.BeginTransaction()) + { + session.Save(new Foo() { Ord = 0, Name = "00" }); + session.Save(new Foo() { Ord = 1, Name = "10" }); + session.Save(new Foo() { Ord = 2, Name = "10" }); + session.Save(new Foo() { Ord = 3, Name = "11" }); + session.Save(new Foo() { Ord = 4, Name = "10" }); + session.Save(new Foo() { Ord = 5, Name = "10" }); + session.Save(new Foo() { Ord = 6, Name = "10" }); + session.Save(new Foo() { Ord = 7, Name = "10" }); + session.Save(new Foo() { Ord = 8, Name = "10" }); + session.Save(new Foo() { Ord = 9, Name = "10" }); + + // returns 2, 3, 4, 5, 6, 7, 8 + DetachedCriteria pagedSubquery = + DetachedCriteria.For<Foo>() + .Add(Restrictions.Like("Name", "1%")) + .AddOrder(Order.Asc("Ord")) + .SetFirstResult(1) + .SetMaxResults(7) + .SetProjection(Projections.Property("Id")); + + var query = + session.CreateCriteria<Foo>() + .Add(Subqueries.PropertyIn("Id", pagedSubquery)) + .Add(Restrictions.Like("Name", "%0")) // excludes 3 + .AddOrder(Order.Asc("Ord")) + .SetFirstResult(2) + .SetMaxResults(3); + + var list = query.List<Foo>(); + + Assert.That(list.Count, Is.EqualTo(3)); + Assert.That(list[0].Ord, Is.EqualTo(5)); + Assert.That(list[1].Ord, Is.EqualTo(6)); + Assert.That(list[2].Ord, Is.EqualTo(7)); + } + } } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Mappings.hbm.xml 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Mappings.hbm.xml 2010-08-06 19:57:08 UTC (rev 5118) @@ -7,6 +7,7 @@ <id name="Id"> <generator class="guid" /> </id> - <property name="Name"/> - </class> + <property name="Name"/> + <property name="Ord"/> + </class> </hibernate-mapping> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2010-08-25 11:59:59
|
Revision: 5167 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5167&view=rev Author: fabiomaulo Date: 2010-08-25 11:59:51 +0000 (Wed, 25 Aug 2010) Log Message: ----------- Fix NH-2301 (Castle Bytecode with last released 2.5) Modified Paths: -------------- trunk/nhibernate/lib/net/3.5/Castle.Core.dll trunk/nhibernate/lib/net/3.5/Castle.Core.xml trunk/nhibernate/src/NHibernate.ByteCode.Castle/LazyFieldInterceptor.cs trunk/nhibernate/src/NHibernate.ByteCode.Castle/LazyInitializer.cs trunk/nhibernate/src/NHibernate.ByteCode.Castle/NHibernate.ByteCode.Castle.csproj trunk/nhibernate/src/NHibernate.ByteCode.Castle.Tests/NHibernate.ByteCode.Castle.Tests.csproj trunk/nhibernate/src/NHibernate.ByteCode.Castle.Tests/ProxyInterface/CustomProxyFixture.cs Added Paths: ----------- trunk/nhibernate/lib/net/3.5/Castle.Core.pdb Removed Paths: ------------- trunk/nhibernate/lib/net/3.5/Castle.DynamicProxy.license.txt trunk/nhibernate/lib/net/3.5/Castle.DynamicProxy2.dll trunk/nhibernate/lib/net/3.5/Castle.DynamicProxy2.xml Modified: trunk/nhibernate/lib/net/3.5/Castle.Core.dll =================================================================== (Binary files differ) Added: trunk/nhibernate/lib/net/3.5/Castle.Core.pdb =================================================================== (Binary files differ) Property changes on: trunk/nhibernate/lib/net/3.5/Castle.Core.pdb ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/nhibernate/lib/net/3.5/Castle.Core.xml =================================================================== --- trunk/nhibernate/lib/net/3.5/Castle.Core.xml 2010-08-24 21:37:17 UTC (rev 5166) +++ trunk/nhibernate/lib/net/3.5/Castle.Core.xml 2010-08-25 11:59:51 UTC (rev 5167) @@ -4,307 +4,1033 @@ <name>Castle.Core</name> </assembly> <members> - <member name="T:Castle.Core.CastleComponentAttribute"> + <member name="T:Castle.Components.DictionaryAdapter.DictionaryBehaviorAttribute"> <summary> - This attribute is usefull only when you want to register all components - on an assembly as a batch process. - By doing so, the batch register will look - for this attribute to distinguish components from other classes. + Assignes a specific dictionary key. </summary> </member> - <member name="T:Castle.Core.LifestyleAttribute"> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryBehavior"> <summary> - Base for Attributes that want to express lifestyle - chosen by the component. + Defines the contract for customizing dictionary access. </summary> </member> - <member name="M:Castle.Core.LifestyleAttribute.#ctor(Castle.Core.LifestyleType)"> + <member name="P:Castle.Components.DictionaryAdapter.IDictionaryBehavior.ExecutionOrder"> <summary> - Initializes a new instance of the <see cref="T:Castle.Core.LifestyleAttribute"/> class. + Determines relative order to apply related behaviors. </summary> - <param name="type">The type.</param> </member> - <member name="P:Castle.Core.LifestyleAttribute.Lifestyle"> + <member name="P:Castle.Components.DictionaryAdapter.DictionaryBehaviorAttribute.ExecutionOrder"> <summary> - Gets or sets the lifestyle. + Determines relative order to apply related behaviors. </summary> - <value>The lifestyle.</value> </member> - <member name="M:Castle.Core.CastleComponentAttribute.#ctor(System.String)"> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryPropertySetter"> <summary> - Initializes a new instance of the <see cref="T:Castle.Core.CastleComponentAttribute"/> class. + Defines the contract for updating dictionary values. </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryPropertySetter.SetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object@,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Sets the stored dictionary value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> <param name="key">The key.</param> + <param name="value">The stored value.</param> + <param name="property">The property.</param> + <returns>true if the property should be stored.</returns> </member> - <member name="M:Castle.Core.CastleComponentAttribute.#ctor(System.String,System.Type)"> + <member name="T:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter"> <summary> - Initializes a new instance of the <see cref="T:Castle.Core.CastleComponentAttribute"/> class. + Abstract adapter for the <see cref="T:System.Collections.IDictionary"/> support + needed by the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory"/> </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Add(System.Object,System.Object)"> + <summary> + Adds an element with the provided key and value to the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <param name="key">The <see cref="T:System.Object"></see> to use as the key of the element to add.</param> + <param name="value">The <see cref="T:System.Object"></see> to use as the value of the element to add.</param> + <exception cref="T:System.ArgumentException">An element with the same key already exists in the <see cref="T:System.Collections.IDictionary"></see> object. </exception> + <exception cref="T:System.ArgumentNullException">key is null. </exception> + <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> is read-only.-or- The <see cref="T:System.Collections.IDictionary"></see> has a fixed size. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Clear"> + <summary> + Removes all elements from the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> object is read-only. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Contains(System.Object)"> + <summary> + Determines whether the <see cref="T:System.Collections.IDictionary"></see> object contains an element with the specified key. + </summary> + <param name="key">The key to locate in the <see cref="T:System.Collections.IDictionary"></see> object.</param> + <returns> + true if the <see cref="T:System.Collections.IDictionary"></see> contains an element with the key; otherwise, false. + </returns> + <exception cref="T:System.ArgumentNullException">key is null. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.GetEnumerator"> + <summary> + Returns an <see cref="T:System.Collections.IDictionaryEnumerator"></see> object for the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <returns> + An <see cref="T:System.Collections.IDictionaryEnumerator"></see> object for the <see cref="T:System.Collections.IDictionary"></see> object. + </returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Remove(System.Object)"> + <summary> + Removes the element with the specified key from the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <param name="key">The key of the element to remove.</param> + <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> object is read-only.-or- The <see cref="T:System.Collections.IDictionary"></see> has a fixed size. </exception> + <exception cref="T:System.ArgumentNullException">key is null. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.CopyTo(System.Array,System.Int32)"> + <summary> + Copies the elements of the <see cref="T:System.Collections.ICollection"></see> to an <see cref="T:System.Array"></see>, starting at a particular <see cref="T:System.Array"></see> index. + </summary> + <param name="array">The one-dimensional <see cref="T:System.Array"></see> that is the destination of the elements copied from <see cref="T:System.Collections.ICollection"></see>. The <see cref="T:System.Array"></see> must have zero-based indexing.</param> + <param name="index">The zero-based index in array at which copying begins.</param> + <exception cref="T:System.ArgumentNullException">array is null. </exception> + <exception cref="T:System.ArgumentException">The type of the source <see cref="T:System.Collections.ICollection"></see> cannot be cast automatically to the type of the destination array. </exception> + <exception cref="T:System.ArgumentOutOfRangeException">index is less than zero. </exception> + <exception cref="T:System.ArgumentException">array is multidimensional.-or- index is equal to or greater than the length of array.-or- The number of elements in the source <see cref="T:System.Collections.ICollection"></see> is greater than the available space from index to the end of the destination array. </exception> + </member> + <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.System#Collections#IEnumerable#GetEnumerator"> + <summary> + Returns an enumerator that iterates through a collection. + </summary> + <returns> + An <see cref="T:System.Collections.IEnumerator"></see> object that can be used to iterate through the collection. + </returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsFixedSize"> + <summary> + Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"></see> object has a fixed size. + </summary> + <value></value> + <returns>true if the <see cref="T:System.Collections.IDictionary"></see> object has a fixed size; otherwise, false.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsReadOnly"> + <summary> + Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"></see> object is read-only. + </summary> + <value></value> + <returns>true if the <see cref="T:System.Collections.IDictionary"></see> object is read-only; otherwise, false.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Keys"> + <summary> + Gets an <see cref="T:System.Collections.ICollection"></see> object containing the keys of the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <value></value> + <returns>An <see cref="T:System.Collections.ICollection"></see> object containing the keys of the <see cref="T:System.Collections.IDictionary"></see> object.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Values"> + <summary> + Gets an <see cref="T:System.Collections.ICollection"></see> object containing the values in the <see cref="T:System.Collections.IDictionary"></see> object. + </summary> + <value></value> + <returns>An <see cref="T:System.Collections.ICollection"></see> object containing the values in the <see cref="T:System.Collections.IDictionary"></see> object.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Item(System.Object)"> + <summary> + Gets or sets the <see cref="T:System.Object"/> with the specified key. + </summary> + <value></value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Count"> + <summary> + Gets the number of elements contained in the <see cref="T:System.Collections.ICollection"></see>. + </summary> + <value></value> + <returns>The number of elements contained in the <see cref="T:System.Collections.ICollection"></see>.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsSynchronized"> + <summary> + Gets a value indicating whether access to the <see cref="T:System.Collections.ICollection"></see> is synchronized (thread safe). + </summary> + <value></value> + <returns>true if access to the <see cref="T:System.Collections.ICollection"></see> is synchronized (thread safe); otherwise, false.</returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.SyncRoot"> + <summary> + Gets an object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"></see>. + </summary> + <value></value> + <returns>An object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"></see>.</returns> + </member> + <member name="T:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapterVisitor"> + <summary> + Abstract implementation of <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterVisitor"/>. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterVisitor"> + <summary> + Conract for traversing a <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/>. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.ComponentAttribute"> + <summary> + Identifies a property should be represented as a nested component. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder"> + <summary> + Defines the contract for building typed dictionary keys. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder.GetKey(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Builds the specified key. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The current key.</param> + <param name="property">The property.</param> + <returns>The updated key</returns> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter"> + <summary> + Defines the contract for retrieving dictionary values. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> + <summary> + Gets the effective dictionary value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> <param name="key">The key.</param> - <param name="service">The service.</param> + <param name="storedValue">The stored value.</param> + <param name="property">The property.</param> + <param name="ifExists">true if return only existing.</param> + <returns>The effective property value.</returns> </member> - <member name="M:Castle.Core.CastleComponentAttribute.#ctor(System.String,System.Type,Castle.Core.LifestyleType)"> + <member name="P:Castle.Components.DictionaryAdapter.ComponentAttribute.NoPrefix"> <summary> - Initializes a new instance of the <see cref="T:Castle.Core.CastleComponentAttribute"/> class. + Applies no prefix. </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.ComponentAttribute.Prefix"> + <summary> + Gets or sets the prefix. + </summary> + <value>The prefix.</value> + </member> + <member name="T:Castle.Components.DictionaryAdapter.DictionaryAdapterAttribute"> + <summary> + Identifies the dictionary adapter types. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.FetchAttribute"> + <summary> + Identifies an interface or property to be pre-feteched. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.FetchAttribute.#ctor"> + <summary> + Instructs fetching to occur. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.FetchAttribute.#ctor(System.Boolean)"> + <summary> + Instructs fetching according to <paramref name="fetch"/> + </summary> + <param name="fetch"></param> + </member> + <member name="P:Castle.Components.DictionaryAdapter.FetchAttribute.Fetch"> + <summary> + Gets whether or not fetching should occur. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.GroupAttribute"> + <summary> + Assigns a property to a group. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.GroupAttribute.#ctor(System.Object)"> + <summary> + Constructs a group assignment. + </summary> + <param name="group">The group name.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.GroupAttribute.#ctor(System.Object[])"> + <summary> + Constructs a group assignment. + </summary> + <param name="group">The group name.</param> + </member> + <member name="P:Castle.Components.DictionaryAdapter.GroupAttribute.Group"> + <summary> + Gets the group the property is assigned to. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.KeyAttribute"> + <summary> + Assigns a specific dictionary key. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.KeyAttribute.#ctor(System.String)"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyAttribute"/> class. + </summary> <param name="key">The key.</param> - <param name="service">The service.</param> - <param name="lifestyle">The lifestyle.</param> </member> - <member name="P:Castle.Core.CastleComponentAttribute.Service"> + <member name="M:Castle.Components.DictionaryAdapter.KeyAttribute.#ctor(System.String[])"> <summary> - Gets the service. + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyAttribute"/> class. </summary> - <value>The service.</value> + <param name="keys">The compound key.</param> </member> - <member name="P:Castle.Core.CastleComponentAttribute.Key"> + <member name="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute"> <summary> - Gets the key. + Assigns a prefix to the keyed properties of an interface. </summary> - <value>The key.</value> </member> - <member name="T:Castle.Core.ComponentActivatorAttribute"> + <member name="M:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.#ctor"> <summary> - Associates a custom component with a component + Initializes a default instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute"/> class. </summary> </member> - <member name="M:Castle.Core.ComponentActivatorAttribute.#ctor(System.Type)"> + <member name="M:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.#ctor(System.String)"> <summary> - Initializes a new instance of the <see cref="T:Castle.Core.ComponentActivatorAttribute"/> class. + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute"/> class. </summary> - <param name="componentActivatorType">Type of the component activator.</param> + <param name="keyPrefix">The prefix for the keyed properties of the interface.</param> </member> - <member name="P:Castle.Core.ComponentActivatorAttribute.ComponentActivatorType"> + <member name="P:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.KeyPrefix"> <summary> - Gets the type of the component activator. + Gets the prefix key added to the properties of the interface. </summary> - <value>The type of the component activator.</value> </member> - <member name="T:Castle.Core.ComponentProxyBehaviorAttribute"> + <member name="T:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute"> <summary> - Specifies the proxying behavior for a component. + Substitutes part of key with another string. </summary> </member> - <member name="M:Castle.Core.ComponentProxyBehaviorAttribute.#ctor"> + <member name="M:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute.#ctor(System.String,System.String)"> <summary> - Initializes a new instance of the <see cref="T:Castle.Core.ComponentProxyBehaviorAttribute"/> class. + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute"/> class. </summary> + <param name="oldValue">The old value.</param> + <param name="newValue">The new value.</param> </member> - <member name="P:Castle.Core.ComponentProxyBehaviorAttribute.UseMarshalByRefProxy"> + <member name="T:Castle.Components.DictionaryAdapter.MultiLevelEditAttribute"> <summary> - Gets or sets a value indicating whether the generated - interface proxy should inherit from <see cref="T:System.MarshalByRefObject"/>. + Requests support for multi-level editing. </summary> </member> - <member name="P:Castle.Core.ComponentProxyBehaviorAttribute.UseSingleInterfaceProxy"> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryInitializer"> <summary> - Determines if the component requires a single interface proxy. + Contract for dictionary initialization. </summary> - <value><c>true</c> if the component requires a single interface proxy.</value> </member> - <member name="P:Castle.Core.ComponentProxyBehaviorAttribute.AdditionalInterfaces"> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryInitializer.Initialize(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.Object[])"> <summary> - Gets or sets the additional interfaces used during proxy generation. + Performs any initialization of the <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/> </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="behaviors">The dictionary behaviors.</param> </member> - <member name="T:Castle.Core.DoNotWireAttribute"> + <member name="T:Castle.Components.DictionaryAdapter.NewGuidAttribute"> <summary> - Marks as property to be skipped and not be wired - by the IoC container + Generates a new GUID on demand. </summary> </member> - <member name="T:Castle.Core.InterceptorAttribute"> + <member name="T:Castle.Components.DictionaryAdapter.OnDemandAttribute"> <summary> - Used to declare that a component wants interceptors acting on it. + Support for on-demand value resolution. </summary> </member> - <member name="M:Castle.Core.InterceptorAttribute.#ctor(System.String)"> + <member name="T:Castle.Components.DictionaryAdapter.PropagateNotificationsAttribute"> <summary> - Constructs the InterceptorAttribute pointing to - a key to a interceptor + Suppress property change notifications. </summary> - <param name="componentKey"></param> </member> - <member name="M:Castle.Core.InterceptorAttribute.#ctor(System.Type)"> + <member name="T:Castle.Components.DictionaryAdapter.StringFormatAttribute"> <summary> - Constructs the InterceptorAttribute pointing to - a service + Provides simple string formatting from existing properties. </summary> - <param name="interceptorType"></param> </member> - <member name="T:Castle.Core.SingletonAttribute"> + <member name="P:Castle.Components.DictionaryAdapter.StringFormatAttribute.Format"> <summary> - Indicates that the target components wants a - singleton lifestyle. + Gets the string format. </summary> </member> - <member name="M:Castle.Core.SingletonAttribute.#ctor"> + <member name="P:Castle.Components.DictionaryAdapter.StringFormatAttribute.Properties"> <summary> - Initializes a new instance of the <see cref="T:Castle.Core.SingletonAttribute"/> class. + Gets the format properties. </summary> </member> - <member name="T:Castle.Core.TransientAttribute"> + <member name="T:Castle.Components.DictionaryAdapter.StringListAttribute"> <summary> - Indicates that the target components wants a - transient lifestyle. + Identifies a property should be represented as a delimited string value. </summary> </member> - <member name="M:Castle.Core.TransientAttribute.#ctor"> + <member name="P:Castle.Components.DictionaryAdapter.StringListAttribute.Separator"> <summary> - Initializes a new instance of the <see cref="T:Castle.Core.TransientAttribute"/> class. + Gets the separator. </summary> </member> - <member name="T:Castle.Core.PerThreadAttribute"> + <member name="T:Castle.Components.DictionaryAdapter.StringValuesAttribute"> <summary> - Indicates that the target components wants a - per thread lifestyle. + Converts all properties to strings. </summary> </member> - <member name="M:Castle.Core.PerThreadAttribute.#ctor"> + <member name="P:Castle.Components.DictionaryAdapter.StringValuesAttribute.Format"> <summary> - Initializes a new instance of the <see cref="T:Castle.Core.PerThreadAttribute"/> class. + Gets or sets the format. </summary> + <value>The format.</value> </member> - <member name="T:Castle.Core.PerWebRequestAttribute"> + <member name="T:Castle.Components.DictionaryAdapter.SuppressNotificationsAttribute"> <summary> - Indicates that the target components wants a - per web request lifestyle. + Suppress property change notifications. </summary> </member> - <member name="T:Castle.Core.PooledAttribute"> + <member name="T:Castle.Components.DictionaryAdapter.IPropertyDescriptorInitializer"> <summary> - Indicates that the target components wants a - pooled lifestyle. + Contract for property descriptor initialization. </summary> </member> - <member name="M:Castle.Core.PooledAttribute.#ctor"> + <member name="M:Castle.Components.DictionaryAdapter.IPropertyDescriptorInitializer.Initialize(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Object[])"> <summary> - Initializes a new instance of the <see cref="T:Castle.Core.PooledAttribute"/> class - using the default initial pool size (5) and the max pool size (15). + Performs any initialization of the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> </summary> + <param name="propertyDescriptor">The property descriptor.</param> + <param name="behaviors">The property behaviors.</param> </member> - <member name="M:Castle.Core.PooledAttribute.#ctor(System.Int32,System.Int32)"> + <member name="T:Castle.Components.DictionaryAdapter.TypeKeyPrefixAttribute"> <summary> - Initializes a new instance of the <see cref="T:Castle.Core.PooledAttribute"/> class. + Assigns a prefix to the keyed properties using the interface name. </summary> - <param name="initialPoolSize">Initial size of the pool.</param> - <param name="maxPoolSize">Max pool size.</param> </member> - <member name="P:Castle.Core.PooledAttribute.InitialPoolSize"> + <member name="T:Castle.Components.DictionaryAdapter.DefaultPropertyGetter"> <summary> - Gets the initial size of the pool. + Manages conversion between property values. </summary> - <value>The initial size of the pool.</value> </member> - <member name="P:Castle.Core.PooledAttribute.MaxPoolSize"> + <member name="M:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.#ctor(System.ComponentModel.TypeConverter)"> <summary> - Gets the maximum pool size. + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.DefaultPropertyGetter"/> class. </summary> - <value>The size of the max pool.</value> + <param name="converter">The converter.</param> </member> - <member name="T:Castle.Core.CustomLifestyleAttribute"> + <member name="M:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> <summary> - Indicates that the target components wants a - custom lifestyle. + Gets the effective dictionary value. </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="storedValue">The stored value.</param> + <param name="property">The property.</param> + <param name="ifExists">true if return only existing.</param> + <returns>The effective property value.</returns> </member> - <member name="M:Castle.Core.CustomLifestyleAttribute.#ctor(System.Type)"> + <member name="P:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.ExecutionOrder"> <summary> - Initializes a new instance of the <see cref="T:Castle.Core.CustomLifestyleAttribute"/> class. + </summary> - <param name="lifestyleHandlerType">The lifestyle handler.</param> </member> - <member name="P:Castle.Core.CustomLifestyleAttribute.LifestyleHandlerType"> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryCreate"> <summary> - Gets the type of the lifestyle handler. + Contract for creating additional Dictionary adapters. </summary> - <value>The type of the lifestyle handler.</value> </member> - <member name="T:Castle.DynamicProxy.IAttributeDisassembler"> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"> <summary> - Provides functionality for disassembling instances of attributes to CustomAttributeBuilder form, during the process of emiting new types by Dynamic Proxy. + Contract for manipulating the Dictionary adapter. </summary> </member> - <member name="M:Castle.DynamicProxy.IAttributeDisassembler.Disassemble(System.Attribute)"> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryEdit"> <summary> - Disassembles given attribute instance back to corresponding CustomAttributeBuilder. + Contract for editing the Dictionary adapter. </summary> - <param name="attribute">An instance of attribute to disassemble</param> - <returns><see cref="T:System.Reflection.Emit.CustomAttributeBuilder"/> corresponding 1 to 1 to given attribute instance, or null reference.</returns> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryNotify"> + <summary> + Contract for managing Dictionary adapter notifications. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryValidate"> + <summary> + Contract for validating Dictionary adapter. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory"> + <summary> + Uses Reflection.Emit to expose the properties of a dictionary + through a dynamic implementation of a typed interface. + </summary> + </member> + <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory"> + <summary> + Defines the contract for building typed dictionary adapters. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter``1(System.Collections.IDictionary)"> + <summary> + Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>. + </summary> + <typeparam name="T">The typed interface.</typeparam> + <param name="dictionary">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the dictionary.</returns> <remarks> - Implementers should return <see cref="T:System.Reflection.Emit.CustomAttributeBuilder"/> that corresponds to given attribute instance 1 to 1, - that is after calling specified constructor with specified arguments, and setting specified properties and fields with values specified - we should be able to get an attribute instance identical to the one passed in <paramref name="attribute"/>. Implementer can return null - if it wishes to opt out of replicating the attribute. Notice however, that for some cases, like attributes passed explicitly by the user - it is illegal to return null, and doing so will result in exception. + The type represented by T must be an interface with properties. </remarks> </member> - <member name="T:Castle.Core.Interceptor.IChangeProxyTarget"> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary)"> <summary> - Exposes means to change target objects of proxies and invocations + Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>. </summary> + <param name="type">The typed interface.</param> + <param name="dictionary">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the dictionary.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> </member> - <member name="M:Castle.Core.Interceptor.IChangeProxyTarget.ChangeInvocationTarget(System.Object)"> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> <summary> - Changes the target object (<see cref="P:Castle.Core.Interceptor.IInvocation.InvocationTarget"/>) of current <see cref="T:Castle.Core.Interceptor.IInvocation"/>. + Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>. </summary> - <param name="target">The new value of target of invocation.</param> + <param name="type">The typed interface.</param> + <param name="dictionary">The underlying source of properties.</param> + <param name="descriptor">The property descriptor.</param> + <returns>An implementation of the typed interface bound to the dictionary.</returns> <remarks> - Although the method takes <see cref="T:System.Object"/> the actual instance must be of type assignable to <see cref="P:Castle.Core.Interceptor.IInvocation.TargetType"/>, otherwise an <see cref="T:System.InvalidCastException"/> will be thrown. - Also while it's technically legal to pass null reference (Nothing in Visual Basic) as <paramref name="target"/>, for obvious reasons Dynamic Proxy will not be able to call the intercepted method on such target. - In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.Core.Interceptor.IInvocation.Proceed"/> or a <see cref="T:System.NotImplementedException"/> will be throws. - Also while it's technically legal to pass proxy itself as <paramref name="target"/>, this would create stack overflow. - In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.Core.Interceptor.IInvocation.Proceed"/> or a <see cref="T:System.InvalidOperationException"/> will be throws. + The type represented by T must be an interface with properties. </remarks> - <exception cref="T:System.InvalidCastException">Thrown when <paramref name="target"/> is not assignable to the proxied type.</exception> </member> - <member name="M:Castle.Core.Interceptor.IChangeProxyTarget.ChangeProxyTarget(System.Object)"> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter``1(System.Collections.Specialized.NameValueCollection)"> <summary> - Permanently changes the target object of the proxy. This does not affect target of the current invocation. + Gets a typed adapter bound to the <see cref="T:System.Collections.Specialized.NameValueCollection"/>. </summary> - <param name="target">The new value of target of the proxy.</param> + <typeparam name="T">The typed interface.</typeparam> + <param name="nameValues">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the namedValues.</returns> <remarks> - Although the method takes <see cref="T:System.Object"/> the actual instance must be of type assignable to proxy's target type, otherwise an <see cref="T:System.InvalidCastException"/> will be thrown. - Also while it's technically legal to pass null reference (Nothing in Visual Basic) as <paramref name="target"/>, for obvious reasons Dynamic Proxy will not be able to call the intercepted method on such target. - In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.Core.Interceptor.IInvocation.Proceed"/> or a <see cref="T:System.NotImplementedException"/> will be throws. - Also while it's technically legal to pass proxy itself as <paramref name="target"/>, this would create stack overflow. - In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.Core.Interceptor.IInvocation.Proceed"/> or a <see cref="T:System.InvalidOperationException"/> will be throws. + The type represented by T must be an interface with properties. </remarks> - <exception cref="T:System.InvalidCastException">Thrown when <paramref name="target"/> is not assignable to the proxied type.</exception> </member> - <member name="T:Castle.Core.Interceptor.IInterceptor"> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.Specialized.NameValueCollection)"> <summary> - New interface that is going to be used by DynamicProxy 2 + Gets a typed adapter bound to the <see cref="T:System.Collections.Specialized.NameValueCollection"/>. </summary> + <param name="type">The typed interface.</param> + <param name="nameValues">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the namedValues.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> </member> - <member name="T:Castle.Core.Interceptor.IInterceptorSelector"> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter``1(System.Xml.XPath.IXPathNavigable)"> <summary> - Provides an extension point that allows proxies to choose specific interceptors on - a per method basis. + Gets a typed adapter bound to the <see cref="T:System.Xml.XPath.IXPathNavigable"/>. </summary> + <typeparam name="T">The typed interface.</typeparam> + <param name="xpathNavigable">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the xpath navigable.</returns> + <remarks> + The type represented by T must be an interface with properties. + </remarks> </member> - <member name="M:Castle.Core.Interceptor.IInterceptorSelector.SelectInterceptors(System.Type,System.Reflection.MethodInfo,Castle.Core.Interceptor.IInterceptor[])"> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Xml.XPath.IXPathNavigable)"> <summary> - Selects the interceptors that should intercept calls to the given <paramref name="method"/>. + Gets a typed adapter bound to the <see cref="T:System.Xml.XPath.IXPathNavigable"/>. </summary> - <param name="type">The type declaring the method to intercept.</param> - <param name="method">The method that will be intercepted.</param> - <param name="interceptors">All interceptors registered with the proxy.</param> - <returns>An array of interceptors to invoke upon calling the <paramref name="method"/>.</returns> + <param name="type">The typed interface.</param> + <param name="xpathNavigable">The underlying source of properties.</param> + <returns>An implementation of the typed interface bound to the xpath navigable.</returns> <remarks> - This method is called only once per proxy instance, upon the first call to the - <paramref name="method"/>. Either an empty array or null are valid return values to indicate - that no interceptor should intercept calls to the method. Although it is not advised, it is - legal to return other <see cref="T:Castle.Core.Interceptor.IInterceptor"/> implementations than these provided in - <paramref name="interceptors"/>. + The type represented by T must be an interface with properties. </remarks> </member> - <member name="T:Castle.Core.Interceptor.IInvocation"> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapterMeta(System.Type)"> <summary> + Gets the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> associated with the type. + </summary> + <param name="type">The typed interface.</param> + <returns>The adapter meta-data.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Gets the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> associated with the type. + </summary> + <param name="type">The typed interface.</param> + <param name="descriptor">The property descriptor.</param> + <returns>The adapter meta-data.</returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Collections.IDictionary)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``2(System.Collections.Generic.IDictionary{System.String,``1})"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Type,System.Collections.Generic.IDictionary{System.String,``0})"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Collections.Specialized.NameValueCollection)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.Specialized.NameValueCollection)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Xml.XPath.IXPathNavigable)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Xml.XPath.IXPathNavigable)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapterMeta(System.Type)"> + <inheritdoc /> + </member> + <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <inheritdoc /> + </member> + <member name="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"> + <summary> + Describes a dictionary property. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor"> + <summary> + Initializes an empty <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. + </summary> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor(System.Reflection.PropertyInfo,System.Object[])"> + <summary> + Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class. + </summary> + <param name="property">The property.</param> + <param name="behaviors">The property behaviors.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.GetKey(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Gets the key. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="descriptor">The descriptor.</param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddKeyBuilder(Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder[])"> + <summary> + Adds the key builder. + </summary> + <param name="builders">The builder.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddKeyBuilders(System.Collections.Generic.IEnumerable{Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder})"> + <summary> + Adds the key builders. + </summary> + <param name="builders">The builders.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyKeyBuilders(Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Copies the key builders to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> + </summary> + <param name="other"></param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyKeyBuilders(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Func{Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder,System.Boolean})"> + <summary> + Copies the selected key builders to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> + </summary> + <param name="other"></param> + <param name="selector"></param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)"> + <summary> + Gets the property value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="storedValue">The stored value.</param> + <param name="descriptor">The descriptor.</param> + <param name="ifExists">true if return only existing.</param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddGetter(Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter[])"> + <summary> + Adds the dictionary getter. + </summary> + <param name="getters">The getter.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddGetters(System.Collections.Generic.IEnumerable{Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter})"> + <summary> + Adds the dictionary getters. + </summary> + <param name="gets">The getters.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyGetters(Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Copies the property getters to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> + </summary> + <param name="other"></param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyGetters(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Func{Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter,System.Boolean})"> + <summary> + Copies the selected property getters to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> + </summary> + <param name="other"></param> + <param name="selector"></param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.SetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object@,Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Sets the property value. + </summary> + <param name="dictionaryAdapter">The dictionary adapter.</param> + <param name="key">The key.</param> + <param name="value">The value.</param> + <param name="descriptor">The descriptor.</param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddSetter(Castle.Components.DictionaryAdapter.IDictionaryPropertySetter[])"> + <summary> + Adds the dictionary setter. + </summary> + <param name="setters">The setter.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddSetters(System.Collections.Generic.IEnumerable{Castle.Components.DictionaryAdapter.IDictionaryPropertySetter})"> + <summary> + Adds the dictionary setters. + </summary> + <param name="sets">The setters.</param> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopySetters(Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Copies the property setters to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> + </summary> + <param name="other"></param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopySetters(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Func{Castle.Components.DictionaryAdapter.IDictionaryPropertySetter,System.Boolean})"> + <summary> + Copies the selected property setters to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> + </summary> + <param name="other"></param> + <param name="selector"></param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddBehavior(Castle.Components.DictionaryAdapter.IDictionaryBehavior[])"> + <summary> + Adds the behaviors. + </summary> + <param name="behaviors"></param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddBehaviors(System.Collections.Generic.IEnumerable{Castle.Components.DictionaryAdapter.IDictionaryBehavior})"> + <summary> + Adds the behaviors. + </summary> + <param name="behaviors"></param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyBehaviors(Castle.Components.DictionaryAdapter.PropertyDescriptor)"> + <summary> + Copies the behaviors to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> + </summary> + <param name="other"></param> + <returns></returns> + </member> + <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyBehaviors(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Func{Castle.Components.DictionaryAdapter.IDictionaryBehavior,System.Boolean})"> + <summary> + Copies the behaviors to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> + </summary> + <param name="other"></param> + <param name="selector"></param> + <returns></returns> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.ExecutionOrder"> + <summary> + + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.PropertyName"> + <summary> + Gets the property name. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.PropertyType"> + <summary> + Gets the property type. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Property"> + <summary> + Gets the property. + </summary> + <value>The property.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.IsDynamicProperty"> + <summary> + Returns true if the property is dynamic. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.State"> + <summary> + Gets additional state. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Fetch"> + <summary> + Determines if property should be fetched. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.SuppressNotifications"> + <summary> + Determines if notifications should occur. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Behaviors"> + <summary> + Gets the property behaviors. + </summary> + </member> + <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.TypeConverter"> + <summary> + Gets the type converter. + </summary> + <value>The type converter.</value> + </member> + <member name="P:Castle.Components.DictionaryAdapter... [truncated message content] |
From: <fab...@us...> - 2010-09-01 18:39:50
|
Revision: 5177 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5177&view=rev Author: fabiomaulo Date: 2010-09-01 18:39:43 +0000 (Wed, 01 Sep 2010) Log Message: ----------- additional tests of NH-2029 (does not fail) Modified Paths: -------------- trunk/nhibernate/doc/reference/modules/filters.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ManyToOneFilters20Behaviour/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ManyToOneFilters20Behaviour/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ManyToOneFilters20Behaviour/Model.cs Modified: trunk/nhibernate/doc/reference/modules/filters.xml =================================================================== --- trunk/nhibernate/doc/reference/modules/filters.xml 2010-09-01 17:44:35 UTC (rev 5176) +++ trunk/nhibernate/doc/reference/modules/filters.xml 2010-09-01 18:39:43 UTC (rev 5177) @@ -124,6 +124,14 @@ the operator. </para> + <para> + Default all filter definitions are applied to <literal><many-to-one/></literal> and + <literal><one-to-one/></literal> elements. You can turn off this behaviour by + using <literal>use-many-to-one</literal> attribute on <literal><filter-def/></literal> + element. + </para> + <programlisting><![CDATA[<filter-def name="effectiveDate" use-many-to-one="false"/>]]></programlisting> + </sect1> </chapter> Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ManyToOneFilters20Behaviour/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ManyToOneFilters20Behaviour/Fixture.cs 2010-09-01 17:44:35 UTC (rev 5176) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ManyToOneFilters20Behaviour/Fixture.cs 2010-09-01 18:39:43 UTC (rev 5177) @@ -16,12 +16,14 @@ private static IList<Parent> joinGraphUsingCriteria(ISession s) { - return s.CreateCriteria(typeof (Parent)).SetFetchMode("Child", FetchMode.Join).List<Parent>(); + return s.CreateCriteria(typeof(Parent)).SetFetchMode("Child", FetchMode.Join).List<Parent>(); } private static Parent createParent() { - return new Parent {Child = new Child()}; + var ret = new Parent { Child = new Child() }; + ret.Address = new Address { Parent = ret }; + return ret; } private static void enableFilters(ISession s) @@ -95,39 +97,125 @@ } } - [Test] - public void VerifyQueryWithWhereClause() - { - using (ISession s = OpenSession()) - { - using (ITransaction tx = s.BeginTransaction()) - { - var p = createParent(); - p.ParentString = "a"; - p.Child.ChildString = "b"; - s.Save(p); - tx.Commit(); - } - } - IList<Parent> resCriteria; - IList<Parent> resHql; - using (ISession s = OpenSession()) - { - enableFilters(s); - resCriteria = s.CreateCriteria(typeof(Parent), "p") - .CreateCriteria("Child", "c") - .SetFetchMode("Child", FetchMode.Join) - .Add(Restrictions.Eq("p.ParentString", "a")) - .Add(Restrictions.Eq("c.ChildString", "b")) - .List<Parent>(); - resHql = s.CreateQuery(@"select p from Parent p + [Test] + public void VerifyQueryWithWhereClause() + { + using (ISession s = OpenSession()) + { + using (ITransaction tx = s.BeginTransaction()) + { + var p = createParent(); + p.ParentString = "a"; + p.Child.ChildString = "b"; + s.Save(p); + tx.Commit(); + } + } + IList<Parent> resCriteria; + IList<Parent> resHql; + using (ISession s = OpenSession()) + { + enableFilters(s); + resCriteria = s.CreateCriteria(typeof(Parent), "p") + .CreateCriteria("Child", "c") + .SetFetchMode("Child", FetchMode.Join) + .Add(Restrictions.Eq("p.ParentString", "a")) + .Add(Restrictions.Eq("c.ChildString", "b")) + .List<Parent>(); + resHql = s.CreateQuery(@"select p from Parent p join fetch p.Child c where p.ParentString='a' and c.ChildString='b'").List<Parent>(); - } - Assert.AreEqual(1, resCriteria.Count); - Assert.IsNotNull(resCriteria[0].Child); - Assert.AreEqual(1, resHql.Count); - Assert.IsNotNull(resHql[0].Child); - } + } + Assert.AreEqual(1, resCriteria.Count); + Assert.IsNotNull(resCriteria[0].Child); + Assert.AreEqual(1, resHql.Count); + Assert.IsNotNull(resHql[0].Child); + } + + [Test] + public void VerifyAlwaysFiltersOnPropertyRef() + { + using (ISession s = OpenSession()) + { + using (ITransaction tx = s.BeginTransaction()) + { + Parent p = createParent(); + s.Save(p); + tx.Commit(); + } + } + + using (ISession s = OpenSession()) + { + enableFilters(s); + IList<Parent> resCriteria = joinGraphUsingCriteria(s); + IList<Parent> resHql = joinGraphUsingHql(s); + + Assert.IsNotNull(resCriteria[0].Address); + Assert.IsNotNull(resHql[0].Address); + } + } + + [Test] + public void ExplicitFiltersOnCollectionsShouldBeActive() + { + using (ISession s = OpenSession()) + { + using (ITransaction tx = s.BeginTransaction()) + { + Parent p = createParent(); + p.Children = new List<Child> + { + new Child {IsActive = true}, + new Child {IsActive = false}, + new Child {IsActive = true} + }; + s.Save(p); + tx.Commit(); + } + } + + using (ISession s = OpenSession()) + { + IFilter f = s.EnableFilter("active"); + f.SetParameter("active", 1); + IList<Parent> resCriteria = joinGraphUsingCriteria(s); + IList<Parent> resHql = joinGraphUsingHql(s); + + Assert.AreEqual(2, resCriteria[0].Children.Count); + Assert.AreEqual(2, resHql[0].Children.Count); + } + } + + [Test] + public void ExplicitFiltersOnCollectionsShouldBeActiveWithEagerLoad() + { + using (ISession s = OpenSession()) + { + using (ITransaction tx = s.BeginTransaction()) + { + Parent p = createParent(); + p.Children = new List<Child> + { + new Child {IsActive = true}, + new Child {IsActive = false}, + new Child {IsActive = true} + }; + s.Save(p); + tx.Commit(); + } + } + + using (ISession s = OpenSession()) + { + IFilter f = s.EnableFilter("active"); + f.SetParameter("active", 1); + IList<Parent> resCriteria = s.CreateCriteria(typeof(Parent)).SetFetchMode("Children", FetchMode.Join).List<Parent>(); + IList<Parent> resHql = s.CreateQuery("select p from Parent p join fetch p.Children").List<Parent>(); + + Assert.AreEqual(2, resCriteria[0].Children.Count); + Assert.AreEqual(2, resHql[0].Children.Count); + } + } } } Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ManyToOneFilters20Behaviour/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ManyToOneFilters20Behaviour/Mappings.hbm.xml 2010-09-01 17:44:35 UTC (rev 5176) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ManyToOneFilters20Behaviour/Mappings.hbm.xml 2010-09-01 18:39:43 UTC (rev 5177) @@ -10,6 +10,12 @@ <many-to-one name="Child" class="Child" cascade="all" not-null="true"/> <property name="ParentString"/> + <one-to-one name="Address" property-ref="Parent" cascade="all"/> + <bag name="Children" cascade="all"> + <key column="Parent" /> + <one-to-many class="Child"/> + <filter name="active" condition=":active = IsActive"/> + </bag> </class> <class name="Child"> @@ -20,13 +26,28 @@ <property name="Always"/> <property name="ChildString"/> <filter name="activeChild" condition=":active = IsActive" /> + <filter name="active" condition=":active = IsActive" /> <filter name="alwaysValid" condition=":always = Always" /> </class> + + <class name="Address"> + <id name="Id"> + <generator class="guid.comb"/> + </id> + <property name="IsActive"/> + <many-to-one name="Parent" /> + <filter name="active" condition=":active = IsActive" /> + </class> + <filter-def name="activeChild" use-many-to-one="false"> <filter-param name="active" type="int"/> </filter-def> + <filter-def name="active" use-many-to-one="false"> + <filter-param name="active" type="int"/> + </filter-def> + <filter-def name="alwaysValid"> <filter-param name="always" type="int"/> </filter-def> Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ManyToOneFilters20Behaviour/Model.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ManyToOneFilters20Behaviour/Model.cs 2010-09-01 17:44:35 UTC (rev 5176) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ManyToOneFilters20Behaviour/Model.cs 2010-09-01 18:39:43 UTC (rev 5177) @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; namespace NHibernate.Test.NHSpecificTest.ManyToOneFilters20Behaviour { @@ -6,7 +7,9 @@ { public virtual Guid Id { get; set; } public virtual Child Child { get; set; } - public virtual string ParentString { get; set; } + public virtual Address Address { get; set; } + public virtual IList<Child> Children { get; set; } + public virtual string ParentString { get; set; } } public class Child @@ -19,6 +22,13 @@ public virtual Guid Id { get; set; } public virtual bool IsActive { get; set; } public virtual bool Always { get; set; } - public virtual string ChildString { get; set; } + public virtual string ChildString { get; set; } } + + public class Address + { + public virtual Guid Id { get; set; } + public virtual Parent Parent { get; set; } + public virtual bool IsActive { get; set; } + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jul...@us...> - 2010-09-17 16:13:27
|
Revision: 5188 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5188&view=rev Author: julian-maughan Date: 2010-09-17 16:13:14 +0000 (Fri, 17 Sep 2010) Log Message: ----------- Removed Sybase ASE dialects and drivers (deemed badly named, and poorly implemented). SybaseAnywhereDialect code merged into SybaseASA9Dialect, and then deleted. Marked the SybaseASA10Dialect obsolete with a comment suggesting users switch to SybaseSQLAnywhere10Dialect. Modified Paths: -------------- trunk/nhibernate/releasenotes.txt trunk/nhibernate/src/NHibernate/Dialect/SybaseASA10Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/SybaseASA9Dialect.cs trunk/nhibernate/src/NHibernate/NHibernate.csproj trunk/nhibernate/src/NHibernate.Test/Legacy/FooBarTest.cs trunk/nhibernate/src/NHibernate.Test/Legacy/MasterDetailTest.cs trunk/nhibernate/src/NHibernate.Test/Legacy/MultiTableTest.cs trunk/nhibernate/src/NHibernate.Test/Legacy/SQLFunctionsTest.cs Removed Paths: ------------- trunk/nhibernate/src/NHibernate/Dialect/SybaseAdoNet12Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/SybaseAnywhereDialect.cs trunk/nhibernate/src/NHibernate/Dialect/SybaseDialect.cs trunk/nhibernate/src/NHibernate/Driver/SybaseAdoNet12ClientDriver.cs trunk/nhibernate/src/NHibernate/Driver/SybaseClientDriver.cs Modified: trunk/nhibernate/releasenotes.txt =================================================================== --- trunk/nhibernate/releasenotes.txt 2010-09-17 15:44:32 UTC (rev 5187) +++ trunk/nhibernate/releasenotes.txt 2010-09-17 16:13:14 UTC (rev 5188) @@ -1,8 +1,9 @@ -Build 3.0.0.Alpha2 +Build 3.0.0.Alpha3 ============================= -** Known BREAKING CHANGES from NH2.1.1.GA to NH3.0.0.Alpha2 +** Known BREAKING CHANGES from NH2.1.1.GA to NH3.0.0.Alpha3 ##### Run time ##### * (NH-2199) - null values in maps/dictionaries are no longer silenty ignored/deleted + * (NH-1894) - SybaseAnywhereDialect has been removed, and replaced with SybaseASA9Dialect ##### Possible Breaking Changes ##### * (NH-2251) - Signature change for GetLimitString in Dialect Modified: trunk/nhibernate/src/NHibernate/Dialect/SybaseASA10Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/SybaseASA10Dialect.cs 2010-09-17 15:44:32 UTC (rev 5187) +++ trunk/nhibernate/src/NHibernate/Dialect/SybaseASA10Dialect.cs 2010-09-17 16:13:14 UTC (rev 5188) @@ -1,7 +1,9 @@ -using System.Data; +using System; +using System.Data; namespace NHibernate.Dialect { + [Obsolete("Please use SybaseSQLAnywhere10Dialect instead. This dialect will be removed in a future release.")] public class SybaseASA10Dialect : SybaseASA9Dialect { public SybaseASA10Dialect() Modified: trunk/nhibernate/src/NHibernate/Dialect/SybaseASA9Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/SybaseASA9Dialect.cs 2010-09-17 15:44:32 UTC (rev 5187) +++ trunk/nhibernate/src/NHibernate/Dialect/SybaseASA9Dialect.cs 2010-09-17 16:13:14 UTC (rev 5188) @@ -1,15 +1,44 @@ using System.Data; using System.Data.Common; + +using NHibernate.Cfg; using NHibernate.Dialect.Function; using NHibernate.Dialect.Schema; using NHibernate.SqlCommand; namespace NHibernate.Dialect { - public class SybaseASA9Dialect : SybaseAnywhereDialect + /// <summary> + /// An SQL dialect for Sybase Adaptive Server Anywhere 9.0 + /// </summary> + /// <remarks> + /// <p> + /// This dialect probably will not work with schema-export. If anyone out there + /// can fill in the ctor with DbTypes to Strings that would be helpful. + /// </p> + /// The dialect defaults the following configuration properties: + /// <list type="table"> + /// <listheader> + /// <term>Property</term> + /// <description>Default Value</description> + /// </listheader> + /// <item> + /// <term>connection.driver_class</term> + /// <description><see cref="NHibernate.Driver.ASAClientDriver" /></description> + /// </item> + /// <item> + /// <term>prepare_sql</term> + /// <description><see langword="false" /></description> + /// </item> + /// </list> + /// </remarks> + public class SybaseASA9Dialect : Dialect { public SybaseASA9Dialect() { + DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.ASAClientDriver"; + DefaultProperties[Environment.PrepareSql] = "false"; + RegisterColumnType(DbType.AnsiStringFixedLength, 255, "CHAR($l)"); RegisterColumnType(DbType.AnsiString, "VARCHAR(255)"); RegisterColumnType(DbType.AnsiString, 255, "VARCHAR($l)"); @@ -48,8 +77,10 @@ RegisterFunction("nullif", new StandardSafeSQLFunction("nullif", 2)); RegisterFunction("lower", new StandardSafeSQLFunction("lower", NHibernateUtil.String, 1)); RegisterFunction("upper", new StandardSafeSQLFunction("upper", NHibernateUtil.String, 1)); - ; + RegisterFunction("now", new StandardSQLFunction("now")); + + RegisterKeyword("top"); } public override bool SupportsLimit @@ -73,7 +104,59 @@ { return new SybaseAnywhereDataBaseMetaData(connection); } + + public override string AddColumnString + { + get { return "add"; } + } + public override string NullColumnString + { + get { return " null"; } + } + + public override bool QualifyIndexName + { + get { return false; } + } + + public override string ForUpdateString + { + get { return string.Empty; } + } + + public override bool SupportsIdentityColumns + { + get { return true; } + } + + public override string IdentitySelectString + { + get { return "select @@identity"; } + } + + /// <summary></summary> + public override string IdentityColumnString + { + get { return "IDENTITY NOT NULL"; } + } + + /// <summary></summary> + public override string NoColumnsInsertString + { + get { return "DEFAULT VALUES"; } + } + + /// <summary> + /// ASA does not require to drop constraint before dropping tables, and DROP statement + /// syntax used by Hibernate to drop constraint is not compatible with ASA, so disable it. + /// Comments matchs SybaseAnywhereDialect from Hibernate-3.1 src + /// </summary> + public override bool DropConstraints + { + get { return false; } + } + private static int GetAfterSelectInsertPoint(SqlString sql) { string[] arrSelectStrings = {"select distinct", "select all", "select"}; Deleted: trunk/nhibernate/src/NHibernate/Dialect/SybaseAdoNet12Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/SybaseAdoNet12Dialect.cs 2010-09-17 15:44:32 UTC (rev 5187) +++ trunk/nhibernate/src/NHibernate/Dialect/SybaseAdoNet12Dialect.cs 2010-09-17 16:13:14 UTC (rev 5188) @@ -1,101 +0,0 @@ -using NHibernate.Cfg; - -namespace NHibernate.Dialect -{ - /// <summary> - /// An SQL dialect compatible with Sybase. - /// </summary> - /// <remarks> - /// <p> - /// This dialect probably will not work with schema-export. If anyone out there - /// can fill in the ctor with DbTypes to Strings that would be helpful. - /// </p> - /// The SybaseDialect defaults the following configuration properties: - /// <list type="table"> - /// <listheader> - /// <term>Property</term> - /// <description>Default Value</description> - /// </listheader> - /// <item> - /// <term>use_outer_join</term> - /// <description><see langword="true" /></description> - /// </item> - /// <item> - /// <term>connection.driver_class</term> - /// <description><see cref="NHibernate.Driver.SybaseClientDriver" /></description> - /// </item> - /// <item> - /// <term>prepare_sql</term> - /// <description><see langword="false" /></description> - /// </item> - /// </list> - /// </remarks> - public class SybaseAdoNet12Dialect : Dialect - { - /// <summary></summary> - public SybaseAdoNet12Dialect() - { - RegisterKeyword("top"); - - DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.SybaseAdoNet12ClientDriver"; - DefaultProperties[Environment.PrepareSql] = "true"; - } - - /// <summary></summary> - public override string AddColumnString - { - get { return "add"; } - } - - /// <summary></summary> - public override string NullColumnString - { - get { return " null"; } - } - - /// <summary></summary> - public override bool QualifyIndexName - { - get { return false; } - } - - /// <summary></summary> - public override string ForUpdateString - { - get { return string.Empty; } - } - - /// <summary></summary> - public override bool SupportsIdentityColumns - { - get { return true; } - } - - /// <summary></summary> - public override string IdentitySelectString - { - get { return "select @@identity"; } - } - - /// <summary></summary> - public override string IdentityColumnString - { - get { return "IDENTITY NOT NULL"; } - } - - /// <summary></summary> - public override string NoColumnsInsertString - { - get { return "DEFAULT VALUES"; } - } - - /// <remarks> - /// Sybase does not support quoted aliases, this function thus returns - /// <c>aliasName</c> as is. - /// </remarks> - public override string QuoteForAliasName(string aliasName) - { - return aliasName; - } - } -} \ No newline at end of file Deleted: trunk/nhibernate/src/NHibernate/Dialect/SybaseAnywhereDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/SybaseAnywhereDialect.cs 2010-09-17 15:44:32 UTC (rev 5187) +++ trunk/nhibernate/src/NHibernate/Dialect/SybaseAnywhereDialect.cs 2010-09-17 16:13:14 UTC (rev 5188) @@ -1,116 +0,0 @@ -using NHibernate.Cfg; - -namespace NHibernate.Dialect -{ - /// <summary> - /// An SQL dialect for Sybase Adaptive Server Anywhere 9.0/10.0 - /// </summary> - /// <remarks> - /// <p> - /// This dialect probably will not work with schema-export. If anyone out there - /// can fill in the ctor with DbTypes to Strings that would be helpful. - /// </p> - /// The SybaseAnywhereDialect defaults the following configuration properties: - /// <list type="table"> - /// <listheader> - /// <term>Property</term> - /// <description>Default Value</description> - /// </listheader> - /// <item> - /// <term>use_outer_join</term> - /// <description><see langword="true" /></description> - /// </item> - /// <item> - /// <term>connection.driver_class</term> - /// <description><see cref="NHibernate.Driver.SybaseClientDriver" /></description> - /// </item> - /// <item> - /// <term>prepare_sql</term> - /// <description><see langword="false" /></description> - /// </item> - /// </list> - /// </remarks> - public class SybaseAnywhereDialect : Dialect - { - /// <summary></summary> - public SybaseAnywhereDialect() : base() - { - /* Java mapping was: - - Types.BIT, "TINYINT" ); - Types.BIGINT, "NUMERIC(19,0)" ); - Types.SMALLINT, "SMALLINT" ); - Types.TINYINT, "TINYINT" ); - Types.INTEGER, "INT" ); - Types.CHAR, "CHAR(1)" ); - Types.VARCHAR, "VARCHAR($l)" ); - Types.FLOAT, "FLOAT" ); - Types.DOUBLE, "DOUBLE PRECISION" - Types.DATE, "DATETIME" ); - Types.TIME, "DATETIME" ); - Types.TIMESTAMP, "DATETIME" ); - Types.VARBINARY, "VARBINARY($l)" - Types.NUMERIC, "NUMERIC(19,$l)" - Types.BLOB, "IMAGE" ); - Types.CLOB, "TEXT" ); - */ - - RegisterKeyword("top"); - - DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.ASAClientDriver"; - DefaultProperties[Environment.PrepareSql] = "false"; - } - - public override string AddColumnString - { - get { return "add"; } - } - - public override string NullColumnString - { - get { return " null"; } - } - - public override bool QualifyIndexName - { - get { return false; } - } - - public override string ForUpdateString - { - get { return string.Empty; } - } - - public override bool SupportsIdentityColumns - { - get { return true; } - } - - public override string IdentitySelectString - { - get { return "select @@identity"; } - } - - /// <summary></summary> - public override string IdentityColumnString - { - get { return "IDENTITY NOT NULL"; } - } - - /// <summary></summary> - public override string NoColumnsInsertString - { - get { return "DEFAULT VALUES"; } - } - - /// <summary> - /// ASA does not require to drop constraint before dropping tables, and DROP statement - /// syntax used by Hibernate to drop constraint is not compatible with ASA, so disable it. - /// Comments matchs SybaseAnywhereDialect from Hibernate-3.1 src - /// </summary> - public override bool DropConstraints - { - get { return false; } - } - } -} Deleted: trunk/nhibernate/src/NHibernate/Dialect/SybaseDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/SybaseDialect.cs 2010-09-17 15:44:32 UTC (rev 5187) +++ trunk/nhibernate/src/NHibernate/Dialect/SybaseDialect.cs 2010-09-17 16:13:14 UTC (rev 5188) @@ -1,192 +0,0 @@ -using System.Data; -using NHibernate.Cfg; -using NHibernate.Dialect.Function; - -namespace NHibernate.Dialect -{ - /// <summary> - /// An SQL dialect compatible with Sybase. - /// </summary> - /// <remarks> - /// <p> - /// This dialect probably will not work with schema-export. If anyone out there - /// can fill in the ctor with DbTypes to Strings that would be helpful. - /// </p> - /// The SybaseDialect defaults the following configuration properties: - /// <list type="table"> - /// <listheader> - /// <term>Property</term> - /// <description>Default Value</description> - /// </listheader> - /// <item> - /// <term>use_outer_join</term> - /// <description><see langword="true" /></description> - /// </item> - /// <item> - /// <term>connection.driver_class</term> - /// <description><see cref="NHibernate.Driver.SybaseClientDriver" /></description> - /// </item> - /// <item> - /// <term>prepare_sql</term> - /// <description><see langword="false" /></description> - /// </item> - /// </list> - /// </remarks> - public class SybaseDialect : Dialect - { - /// <summary></summary> - public SybaseDialect() - { - RegisterColumnType(DbType.Boolean, "tinyint"); //Sybase BIT type does not support null values - RegisterColumnType(DbType.Int16, "smallint"); - RegisterColumnType(DbType.Int32, "int"); - RegisterColumnType(DbType.Int64, "numeric(19,0)"); - RegisterColumnType(DbType.UInt16, "smallint"); - RegisterColumnType(DbType.UInt32, "int"); - RegisterColumnType(DbType.UInt64, "numeric(19,0)"); - - RegisterColumnType(DbType.Byte, "tinyint"); - - RegisterColumnType(DbType.AnsiStringFixedLength, "char(255)"); - RegisterColumnType(DbType.AnsiStringFixedLength, 800, "char($l)"); - RegisterColumnType(DbType.AnsiString, "varchar(255)"); - RegisterColumnType(DbType.AnsiString, 8000, "varchar($l)"); - - RegisterColumnType(DbType.String, "varchar(255)"); - RegisterColumnType(DbType.String, 8000, "varchar($l)"); - RegisterColumnType(DbType.String, "text"); - - RegisterColumnType(DbType.Single, "float"); - RegisterColumnType(DbType.Double, "double precision"); - RegisterColumnType(DbType.Date, "datetime"); - RegisterColumnType(DbType.Time, "datetime"); - RegisterColumnType(DbType.DateTime, "datetime"); - - RegisterColumnType(DbType.Binary, 8000, "varbinary($l)"); - RegisterColumnType(DbType.Binary, "varbinary(8000)"); - RegisterColumnType(DbType.Binary, int.MaxValue, "image"); - - RegisterColumnType(DbType.Decimal, "numeric(19,6)"); - RegisterColumnType(DbType.Decimal, 19, "numeric($p,$s)"); - - RegisterFunction("ascii", new StandardSQLFunction("ascii", NHibernateUtil.Int32)); - RegisterFunction("char", new StandardSQLFunction("char", NHibernateUtil.Character)); - RegisterFunction("len", new StandardSQLFunction("len", NHibernateUtil.Int64)); - RegisterFunction("lower", new StandardSQLFunction("lower")); - RegisterFunction("upper", new StandardSQLFunction("upper")); - RegisterFunction("str", new StandardSQLFunction("str", NHibernateUtil.String)); - RegisterFunction("ltrim", new StandardSQLFunction("ltrim")); - RegisterFunction("rtrim", new StandardSQLFunction("rtrim")); - RegisterFunction("reverse", new StandardSQLFunction("reverse")); - RegisterFunction("space", new StandardSQLFunction("space", NHibernateUtil.String)); - - RegisterFunction("user", new NoArgSQLFunction("user", NHibernateUtil.String)); - - RegisterFunction("current_timestamp", new NoArgSQLFunction("getdate", NHibernateUtil.DateTime)); - RegisterFunction("current_time", new NoArgSQLFunction("getdate", NHibernateUtil.Time)); - RegisterFunction("current_date", new NoArgSQLFunction("getdate", NHibernateUtil.Date)); - - RegisterFunction("getdate", new NoArgSQLFunction("getdate", NHibernateUtil.Timestamp)); - RegisterFunction("getutcdate", new NoArgSQLFunction("getutcdate", NHibernateUtil.Timestamp)); - RegisterFunction("day", new StandardSQLFunction("day", NHibernateUtil.Int32)); - RegisterFunction("month", new StandardSQLFunction("month", NHibernateUtil.Int32)); - RegisterFunction("year", new StandardSQLFunction("year", NHibernateUtil.Int32)); - RegisterFunction("datename", new StandardSQLFunction("datename", NHibernateUtil.String)); - - RegisterFunction("abs", new StandardSQLFunction("abs")); - RegisterFunction("sign", new StandardSQLFunction("sign", NHibernateUtil.Int32)); - - RegisterFunction("acos", new StandardSQLFunction("acos", NHibernateUtil.Double)); - RegisterFunction("asin", new StandardSQLFunction("asin", NHibernateUtil.Double)); - RegisterFunction("atan", new StandardSQLFunction("atan", NHibernateUtil.Double)); - RegisterFunction("cos", new StandardSQLFunction("cos", NHibernateUtil.Double)); - RegisterFunction("cot", new StandardSQLFunction("cot", NHibernateUtil.Double)); - RegisterFunction("exp", new StandardSQLFunction("exp", NHibernateUtil.Double)); - RegisterFunction("log", new StandardSQLFunction("log", NHibernateUtil.Double)); - RegisterFunction("log10", new StandardSQLFunction("log10", NHibernateUtil.Double)); - RegisterFunction("sin", new StandardSQLFunction("sin", NHibernateUtil.Double)); - RegisterFunction("sqrt", new StandardSQLFunction("sqrt", NHibernateUtil.Double)); - RegisterFunction("tan", new StandardSQLFunction("tan", NHibernateUtil.Double)); - RegisterFunction("pi", new NoArgSQLFunction("pi", NHibernateUtil.Double)); - RegisterFunction("square", new StandardSQLFunction("square")); - RegisterFunction("rand", new StandardSQLFunction("rand", NHibernateUtil.Single)); - - RegisterFunction("radians", new StandardSQLFunction("radians", NHibernateUtil.Double)); - RegisterFunction("degrees", new StandardSQLFunction("degrees", NHibernateUtil.Double)); - - RegisterFunction("round", new StandardSQLFunction("round")); - RegisterFunction("ceiling", new StandardSQLFunction("ceiling")); - RegisterFunction("floor", new StandardSQLFunction("floor")); - - RegisterFunction("isnull", new StandardSQLFunction("isnull")); - - RegisterFunction("concat", new VarArgsSQLFunction(NHibernateUtil.String, "(", "+", ")")); - - RegisterFunction("length", new StandardSQLFunction("len", NHibernateUtil.Int32)); - RegisterFunction("trim", new SQLFunctionTemplate(NHibernateUtil.String, "ltrim(rtrim(?1))")); - RegisterFunction("locate", new CharIndexFunction()); - - RegisterKeyword("top"); - - DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.SybaseClientDriver"; - DefaultProperties[Environment.PrepareSql] = "false"; - } - - /// <summary></summary> - public override string AddColumnString - { - get { return "add"; } - } - - /// <summary></summary> - public override string NullColumnString - { - get { return " null"; } - } - - /// <summary></summary> - public override bool QualifyIndexName - { - get { return false; } - } - - /// <summary></summary> - public override string ForUpdateString - { - get { return string.Empty; } - } - - /// <summary></summary> - public override bool SupportsIdentityColumns - { - get { return true; } - } - - /// <summary></summary> - public override string IdentitySelectString - { - get { return "select @@identity"; } - } - - /// <summary></summary> - public override string IdentityColumnString - { - get { return "IDENTITY NOT NULL"; } - } - - /// <summary></summary> - public override string NoColumnsInsertString - { - get { return "DEFAULT VALUES"; } - } - - /// <remarks> - /// Sybase does not support quoted aliases, this function thus returns - /// <c>aliasName</c> as is. - /// </remarks> - public override string QuoteForAliasName(string aliasName) - { - return aliasName; - } - } -} Deleted: trunk/nhibernate/src/NHibernate/Driver/SybaseAdoNet12ClientDriver.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Driver/SybaseAdoNet12ClientDriver.cs 2010-09-17 15:44:32 UTC (rev 5187) +++ trunk/nhibernate/src/NHibernate/Driver/SybaseAdoNet12ClientDriver.cs 2010-09-17 16:13:14 UTC (rev 5188) @@ -1,50 +0,0 @@ -namespace NHibernate.Driver -{ - /// <summary> - /// The SybaseClientDriver Driver provides a database driver for Sybase. - /// </summary> - /// <remarks> - /// It has been reported to work with the <see cref="Dialect.MsSql2000Dialect"/>. - /// </remarks> - public class SybaseAdoNet12ClientDriver : ReflectionBasedDriver - { - /// <summary> - /// Initializes a new instance of the <see cref="SybaseClientDriver"/> class. - /// </summary> - /// <exception cref="HibernateException"> - /// Thrown when the Sybase.Data.AseClient assembly can not be loaded. - /// </exception> - public SybaseAdoNet12ClientDriver() - : base( - "Sybase.Data.AseClient", - "Sybase.AdoNet2.AseClient", - "Sybase.Data.AseClient.AseConnection", - "Sybase.Data.AseClient.AseCommand") - { - } - - /// <summary> - /// Sybase.Data.AseClient uses named parameters in the sql. - /// </summary> - /// <value><see langword="true" /> - Sybase uses <c>@</c> in the sql.</value> - public override bool UseNamedPrefixInSql - { - get { return true; } - } - - /// <summary></summary> - public override bool UseNamedPrefixInParameter - { - get { return true; } - } - - /// <summary> - /// Sybase.Data.AseClient use the <c>@</c> to locate parameters in sql. - /// </summary> - /// <value><c>@</c> is used to locate parameters in sql.</value> - public override string NamedPrefix - { - get { return "@"; } - } - } -} \ No newline at end of file Deleted: trunk/nhibernate/src/NHibernate/Driver/SybaseClientDriver.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Driver/SybaseClientDriver.cs 2010-09-17 15:44:32 UTC (rev 5187) +++ trunk/nhibernate/src/NHibernate/Driver/SybaseClientDriver.cs 2010-09-17 16:13:14 UTC (rev 5188) @@ -1,51 +0,0 @@ -using System; - -namespace NHibernate.Driver -{ - /// <summary> - /// The SybaseClientDriver Driver provides a database driver for Sybase. - /// </summary> - /// <remarks> - /// It has been reported to work with the <see cref="Dialect.MsSql2000Dialect"/>. - /// </remarks> - public class SybaseClientDriver : ReflectionBasedDriver - { - /// <summary> - /// Initializes a new instance of the <see cref="SybaseClientDriver"/> class. - /// </summary> - /// <exception cref="HibernateException"> - /// Thrown when the Sybase.Data.AseClient assembly can not be loaded. - /// </exception> - public SybaseClientDriver() : base( - "Sybase.Data.AseClient", - "Sybase.Data.AseClient", - "Sybase.Data.AseClient.AseConnection", - "Sybase.Data.AseClient.AseCommand") - { - } - - /// <summary> - /// Sybase.Data.AseClient uses named parameters in the sql. - /// </summary> - /// <value><see langword="true" /> - Sybase uses <c>@</c> in the sql.</value> - public override bool UseNamedPrefixInSql - { - get { return true; } - } - - /// <summary></summary> - public override bool UseNamedPrefixInParameter - { - get { return true; } - } - - /// <summary> - /// Sybase.Data.AseClient use the <c>@</c> to locate parameters in sql. - /// </summary> - /// <value><c>@</c> is used to locate parameters in sql.</value> - public override string NamedPrefix - { - get { return "@"; } - } - } -} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj =================================================================== --- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2010-09-17 15:44:32 UTC (rev 5187) +++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2010-09-17 16:13:14 UTC (rev 5188) @@ -118,7 +118,6 @@ <Compile Include="Dialect\MySQLDialect.cs" /> <Compile Include="Dialect\PostgreSQLDialect.cs" /> <Compile Include="Dialect\SQLiteDialect.cs" /> - <Compile Include="Dialect\SybaseDialect.cs" /> <Compile Include="Dialect\SybaseSQLAnywhere10Dialect.cs" /> <Compile Include="Dialect\SybaseSQLAnywhere11Dialect.cs" /> <Compile Include="Dialect\TypeNames.cs" /> @@ -136,7 +135,6 @@ <Compile Include="Driver\OracleDataClientDriver.cs" /> <Compile Include="Driver\SqlClientDriver.cs" /> <Compile Include="Driver\SQLiteDriver.cs" /> - <Compile Include="Driver\SybaseClientDriver.cs" /> <Compile Include="Engine\Cascade.cs" /> <Compile Include="Engine\IBatcher.cs" /> <Compile Include="Engine\IMapping.cs" /> @@ -1022,13 +1020,10 @@ <Compile Include="Dialect\Schema\ITableMetadata.cs" /> <Compile Include="Dialect\Schema\MsSqlMetaData.cs" /> <Compile Include="Dialect\Schema\OracleMetaData.cs" /> - <Compile Include="Dialect\Sybase11Dialect.cs" /> - <Compile Include="Dialect\SybaseAdoNet12Dialect.cs" /> <Compile Include="Driver\ASA10ClientDriver.cs" /> <Compile Include="Driver\ISqlParameterFormatter.cs" /> <Compile Include="Driver\SqlStringFormatter.cs" /> <Compile Include="Criterion\SubqueryProjection.cs" /> - <Compile Include="Driver\SybaseAdoNet12ClientDriver.cs" /> <Compile Include="EmptyInterceptor.cs" /> <Compile Include="Engine\ActionQueue.cs" /> <Compile Include="Engine\AssociationKey.cs" /> @@ -1290,7 +1285,6 @@ <Compile Include="Dialect\IngresDialect.cs" /> <Compile Include="Dialect\MsSql2005Dialect.cs" /> <Compile Include="Dialect\PostgreSQL81Dialect.cs" /> - <Compile Include="Dialect\SybaseAnywhereDialect.cs" /> <Compile Include="Driver\ASAClientDriver.cs" /> <Compile Include="Driver\DB2400Driver.cs" /> <Compile Include="Driver\FirebirdClientDriver.cs" /> Modified: trunk/nhibernate/src/NHibernate.Test/Legacy/FooBarTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Legacy/FooBarTest.cs 2010-09-17 15:44:32 UTC (rev 5187) +++ trunk/nhibernate/src/NHibernate.Test/Legacy/FooBarTest.cs 2010-09-17 16:13:14 UTC (rev 5188) @@ -473,7 +473,7 @@ .List(); } - if ((Dialect is SybaseDialect) || (Dialect is MsSql2000Dialect)) + if (Dialect is MsSql2000Dialect) { s.CreateQuery("select baz from Baz as baz join baz.FooArray foo group by baz order by sum(foo.Float)").Enumerable(); } Modified: trunk/nhibernate/src/NHibernate.Test/Legacy/MasterDetailTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Legacy/MasterDetailTest.cs 2010-09-17 15:44:32 UTC (rev 5187) +++ trunk/nhibernate/src/NHibernate.Test/Legacy/MasterDetailTest.cs 2010-09-17 16:13:14 UTC (rev 5188) @@ -656,7 +656,7 @@ d2.Master = (m); m.AddDetail(d1); m.AddDetail(d2); - if ((Dialect is SybaseDialect) || (Dialect is MsSql2000Dialect)) + if (Dialect is MsSql2000Dialect) { s.Save(d1); } @@ -748,7 +748,7 @@ d2.Master = m; m.AddDetail(d1); m.AddDetail(d2); - if ((Dialect is SybaseDialect) || (Dialect is MsSql2000Dialect)) + if (Dialect is MsSql2000Dialect) { s.Save(d1); s.Save(d2); Modified: trunk/nhibernate/src/NHibernate.Test/Legacy/MultiTableTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Legacy/MultiTableTest.cs 2010-09-17 15:44:32 UTC (rev 5187) +++ trunk/nhibernate/src/NHibernate.Test/Legacy/MultiTableTest.cs 2010-09-17 16:13:14 UTC (rev 5188) @@ -155,7 +155,7 @@ ISession s = OpenSession(); long id = 1L; - if ((Dialect is SybaseDialect) || (Dialect is MsSql2000Dialect)) + if (Dialect is MsSql2000Dialect) { id = (long) s.Save(new TrivialClass()); } @@ -198,7 +198,7 @@ ITransaction t = s.BeginTransaction(); SubMulti sm = new SubMulti(); sm.Amount = 66.5f; - if ((Dialect is SybaseDialect) || (Dialect is MsSql2000Dialect)) + if (Dialect is MsSql2000Dialect) { s.Save(sm); } @@ -229,7 +229,7 @@ simp.Name = "simp"; object mid; object sid; - if ((Dialect is SybaseDialect) || (Dialect is MsSql2000Dialect)) + if (Dialect is MsSql2000Dialect) { mid = s.Save(multi); sid = s.Save(simp); @@ -244,7 +244,7 @@ SubMulti sm = new SubMulti(); sm.Amount = 66.5f; object smid; - if ((Dialect is SybaseDialect) || (Dialect is MsSql2000Dialect)) + if (Dialect is MsSql2000Dialect) { smid = s.Save(sm); } @@ -493,7 +493,7 @@ simp.Name = "simp"; object mid; object sid; - if ((Dialect is SybaseDialect) || (Dialect is MsSql2000Dialect)) + if (Dialect is MsSql2000Dialect) { mid = s.Save(multi); sid = s.Save(simp); @@ -515,7 +515,7 @@ dict.Add(multi); dict.Add(simp); object id; - if ((Dialect is SybaseDialect) || (Dialect is MsSql2000Dialect)) + if (Dialect is MsSql2000Dialect) { id = s.Save(ls); } @@ -572,7 +572,7 @@ simp.Name = "simp"; object mid; - if ((Dialect is SybaseDialect) || (Dialect is MsSql2000Dialect)) + if (Dialect is MsSql2000Dialect) { mid = s.Save(multi); } @@ -587,7 +587,7 @@ ls.YetAnother = ls; ls.Name = "Less Simple"; object id; - if ((Dialect is SybaseDialect) || (Dialect is MsSql2000Dialect)) + if (Dialect is MsSql2000Dialect) { id = s.Save(ls); } Modified: trunk/nhibernate/src/NHibernate.Test/Legacy/SQLFunctionsTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Legacy/SQLFunctionsTest.cs 2010-09-17 15:44:32 UTC (rev 5187) +++ trunk/nhibernate/src/NHibernate.Test/Legacy/SQLFunctionsTest.cs 2010-09-17 16:13:14 UTC (rev 5188) @@ -434,7 +434,7 @@ "from s in class Simple where not( upper(s.Name)='yada' or 1=2 or 'foo'='bar' or not('foo'='foo') or 'foo' like 'bar')") .List().Count); - if (!(Dialect is MySQLDialect) && !(Dialect is SybaseDialect) && !(Dialect is MsSql2000Dialect)) + if (!(Dialect is MySQLDialect) && !(Dialect is MsSql2000Dialect)) { // Dialect.MckoiDialect and Dialect.InterbaseDialect also included // My Sql has a funny concatenation operator @@ -442,13 +442,6 @@ s.CreateQuery("from s in class Simple where lower(s.Name || ' foo')='simple 1 foo'").List().Count); } - if ((Dialect is SybaseDialect)) - { - Assert.AreEqual(1, - s.CreateQuery("from s in class Simple where lower( concat(s.Name, ' foo') ) = 'simple 1 foo'").List - ().Count); - } - if ((Dialect is MsSql2000Dialect)) { Assert.AreEqual(1, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2010-10-06 20:55:25
|
Revision: 5234 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5234&view=rev Author: fabiomaulo Date: 2010-10-06 20:55:15 +0000 (Wed, 06 Oct 2010) Log Message: ----------- Fix NH-2358 and related issues Modified Paths: -------------- trunk/nhibernate/releasenotes.txt trunk/nhibernate/src/NHibernate/Type/DateTimeOffSetType.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/Dates/DateTimeOffSetFixture.cs Modified: trunk/nhibernate/releasenotes.txt =================================================================== --- trunk/nhibernate/releasenotes.txt 2010-10-06 18:58:13 UTC (rev 5233) +++ trunk/nhibernate/releasenotes.txt 2010-10-06 20:55:15 UTC (rev 5234) @@ -9,6 +9,7 @@ ##### Possible Breaking Changes ##### * [NH-2251] - Signature change for GetLimitString in Dialect * [NH-2284] - Obsolete members removed + * Related to [NH-2358]: DateTimeOffset type now works as a DateTimeOffset instead a "surrogate" of DateTime Build 3.0.0.Alpha3 (rev5226) ============================= Modified: trunk/nhibernate/src/NHibernate/Type/DateTimeOffSetType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/DateTimeOffSetType.cs 2010-10-06 18:58:13 UTC (rev 5233) +++ trunk/nhibernate/src/NHibernate/Type/DateTimeOffSetType.cs 2010-10-06 20:55:15 UTC (rev 5234) @@ -2,6 +2,7 @@ using System.Collections; using System.Collections.Generic; using System.Data; +using NHibernate.Engine; using NHibernate.SqlTypes; namespace NHibernate.Type @@ -10,7 +11,7 @@ /// Maps a <see cref="System.DateTimeOffset" /> Property to a <see cref="DbType.DateTimeOffset"/> /// </summary> [Serializable] - public class DateTimeOffsetType : DateTimeType + public class DateTimeOffsetType : PrimitiveType, IIdentifierType, ILiteralType, IVersionType { /// <summary></summary> public DateTimeOffsetType() @@ -33,8 +34,13 @@ get { return typeof (DateTimeOffset); } } - public override IComparer Comparator + public override object DefaultValue { + get { throw new NotImplementedException(); } + } + + public IComparer Comparator + { get { return Comparer<DateTimeOffset>.Default; } } @@ -42,8 +48,7 @@ { var dateValue = (DateTimeOffset) value; ((IDataParameter) st.Parameters[index]).Value = - new DateTimeOffset(dateValue.Year, dateValue.Month, dateValue.Day, dateValue.Hour, dateValue.Minute, - dateValue.Second, dateValue.Offset); + new DateTimeOffset(dateValue.Ticks, dateValue.Offset); } public override object Get(IDataReader rs, int index) @@ -52,8 +57,7 @@ { var dbValue = (DateTimeOffset) rs[index]; ; - return new DateTimeOffset(dbValue.Year, dbValue.Month, dbValue.Day, dbValue.Hour, dbValue.Minute, dbValue.Second, - dbValue.Offset); + return new DateTimeOffset(dbValue.Ticks, dbValue.Offset); } catch (Exception ex) { @@ -61,6 +65,21 @@ } } + public override object Get(IDataReader rs, string name) + { + return Get(rs, rs.GetOrdinal(name)); + } + + public object Next(object current, ISessionImplementor session) + { + return Seed(session); + } + + public object Seed(ISessionImplementor session) + { + return DateTimeOffset.Now; + } + public override bool IsEqual(object x, object y) { if (x == y) @@ -76,34 +95,12 @@ var date1 = (DateTimeOffset) x; var date2 = (DateTimeOffset) y; - if (date1.Equals(date2)) - return true; - - return (date1.Year == date2.Year && - date1.Month == date2.Month && - date1.Day == date2.Day && - date1.Hour == date2.Hour && - date1.Minute == date2.Minute && - date1.Second == date2.Second && - date1.Offset == date2.Offset); + return date1.Equals(date2); } - public override int GetHashCode(object x, EntityMode entityMode) + public object StringToObject(string xml) { - // Custom hash code implementation because DateTimeType is only accurate - // up to seconds. - var date = (DateTimeOffset) x; - int hashCode = 1; - unchecked - { - hashCode = 31*hashCode + date.Second; - hashCode = 31*hashCode + date.Minute; - hashCode = 31*hashCode + date.Hour; - hashCode = 31*hashCode + date.Day; - hashCode = 31*hashCode + date.Month; - hashCode = 31*hashCode + date.Year; - } - return hashCode; + return string.IsNullOrEmpty(xml) ? null : FromStringValue(xml); } public override string ToString(object val) Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/Dates/DateTimeOffSetFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/Dates/DateTimeOffSetFixture.cs 2010-10-06 18:58:13 UTC (rev 5233) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/Dates/DateTimeOffSetFixture.cs 2010-10-06 20:55:15 UTC (rev 5234) @@ -1,7 +1,9 @@ using System; using System.Collections; using System.Data; +using NHibernate.Type; using NUnit.Framework; +using SharpTestsEx; namespace NHibernate.Test.NHSpecificTest.Dates { @@ -23,8 +25,72 @@ { DateTimeOffset NowOS = DateTimeOffset.Now; - SavingAndRetrievingAction(new AllDates {Sql_datetimeoffset = NowOS}, - entity => DateTimeAssert.AreEqual(entity.Sql_datetimeoffset, NowOS)); + AllDates dates = new AllDates { Sql_datetimeoffset = NowOS }; + + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.Save(dates); + tx.Commit(); + } + + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + var datesRecovered = s.CreateQuery("from AllDates").UniqueResult<AllDates>(); + datesRecovered.Sql_datetimeoffset.Should().Be(NowOS); + } + + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + var datesRecovered = s.CreateQuery("from AllDates").UniqueResult<AllDates>(); + s.Delete(datesRecovered); + tx.Commit(); + } } + + [Test] + public void WhenEqualTicksThenShouldMatchIsEqual() + { + var type = new DateTimeOffsetType(); + var now = DateTimeOffset.Now; + type.IsEqual(new DateTimeOffset(now.Ticks, now.Offset), new DateTimeOffset(now.Ticks, now.Offset)).Should().Be.True(); + } + + [Test] + public void WhenNotEqualTicksThenShouldNotMatchIsEqual() + { + var type = new DateTimeOffsetType(); + var now = DateTimeOffset.Now; + type.IsEqual(new DateTimeOffset(now.Ticks - 1, now.Offset), new DateTimeOffset(now.Ticks, now.Offset)).Should().Be.False(); + } + + [Test] + public void HashCodeShouldHaveSameBehaviorOfNetType() + { + var type = new DateTimeOffsetType(); + var now = DateTimeOffset.Now; + var exactClone = new DateTimeOffset(now.Ticks, now.Offset); + (now.GetHashCode() == exactClone.GetHashCode()).Should().Be.EqualTo(now.GetHashCode() == type.GetHashCode(exactClone, EntityMode.Poco)); + } + + [Test] + public void Next() + { + var type = (DateTimeOffsetType)NHibernateUtil.DateTimeOffset; + var current = DateTimeOffset.Now.AddTicks(-1); + object next = type.Next(current, null); + + next.Should().Be.OfType<DateTimeOffset>().And.ValueOf.Ticks.Should().Be.GreaterThan(current.Ticks); + } + + [Test] + public void Seed() + { + var type = (DateTimeOffsetType)NHibernateUtil.DateTimeOffset; + type.Seed(null).Should().Be.OfType<DateTimeOffset>(); + } + } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jul...@us...> - 2010-11-02 11:59:18
|
Revision: 5259 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5259&view=rev Author: julian-maughan Date: 2010-11-02 11:59:09 +0000 (Tue, 02 Nov 2010) Log Message: ----------- Change to ICompositeUserType.NullSafeSet to cater for cases where not all parameters should be set (such as dynamic-update). Contributed by Patrick Earl (ref. NH-2392) Modified Paths: -------------- trunk/nhibernate/releasenotes.txt trunk/nhibernate/src/NHibernate/Type/CompositeCustomType.cs trunk/nhibernate/src/NHibernate/UserTypes/ICompositeUserType.cs trunk/nhibernate/src/NHibernate.DomainModel/DoubleStringType.cs trunk/nhibernate/src/NHibernate.DomainModel/MultiplicityType.cs trunk/nhibernate/src/NHibernate.DomainModel/NHibernate.DomainModel.csproj trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1763/EmptyStringUserType.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/CompositeUserType.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2392/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2392/A.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2392/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2392/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2392/PhoneNumber.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2392/PhoneNumberUserType.cs Modified: trunk/nhibernate/releasenotes.txt =================================================================== --- trunk/nhibernate/releasenotes.txt 2010-11-02 11:48:40 UTC (rev 5258) +++ trunk/nhibernate/releasenotes.txt 2010-11-02 11:59:09 UTC (rev 5259) @@ -2,6 +2,9 @@ ============================= ** Known BREAKING CHANGES from NH2.1.1.GA to NH3.0.0.CR1 + ##### Design time ##### + * [NH-2392] - ICompositeUserType.NullSafeSet method signature changed + ##### Run time ##### * [NH-2199] - null values in maps/dictionaries are no longer silenty ignored/deleted * [NH-1894] - SybaseAnywhereDialect has been removed, and replaced with SybaseASA9Dialect. @@ -15,6 +18,8 @@ Build 3.0.0.CR1 ============================= +** Improvement + * [NH-2392] - ICompositeUserType support for cases where not all parameters should be set (such as dynamic-update) Build 3.0.0.Beta2 (rev5254) ============================= Modified: trunk/nhibernate/src/NHibernate/Type/CompositeCustomType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/CompositeCustomType.cs 2010-11-02 11:48:40 UTC (rev 5258) +++ trunk/nhibernate/src/NHibernate/Type/CompositeCustomType.cs 2010-11-02 11:59:09 UTC (rev 5259) @@ -1,6 +1,7 @@ using System; using System.Collections; using System.Data; +using System.Linq; using System.Reflection; using System.Xml; @@ -11,9 +12,6 @@ namespace NHibernate.Type { - /// <summary> - /// Summary description for CompositeCustomType. - /// </summary> [Serializable] public class CompositeCustomType : AbstractType, IAbstractComponentType { @@ -51,24 +49,16 @@ } } - /// <summary></summary> public virtual IType[] Subtypes { get { return userType.PropertyTypes; } } - /// <summary></summary> public virtual string[] PropertyNames { get { return userType.PropertyNames; } } - /// <summary> - /// - /// </summary> - /// <param name="component"></param> - /// <param name="session"></param> - /// <returns></returns> public virtual object[] GetPropertyValues(object component, ISessionImplementor session) { return GetPropertyValues(component, session.EntityMode); @@ -101,11 +91,6 @@ return userType.GetPropertyValue(component, i); } - /// <summary> - /// - /// </summary> - /// <param name="i"></param> - /// <returns></returns> public virtual CascadeStyle GetCascadeStyle(int i) { return CascadeStyle.None; @@ -121,21 +106,12 @@ get { return false; } } - /// <summary></summary> public override bool IsComponentType { get { return true; } } - /// <summary> - /// - /// </summary> - /// <param name="cached"></param> - /// <param name="session"></param> - /// <param name="owner"></param> - /// <returns></returns> - public override object Assemble(object cached, ISessionImplementor session, - object owner) + public override object Assemble(object cached, ISessionImplementor session, object owner) { return userType.Assemble(cached, session, owner); } @@ -150,11 +126,6 @@ return userType.Disassemble(value, session); } - /// <summary> - /// - /// </summary> - /// <param name="mapping"></param> - /// <returns></returns> public override int GetColumnSpan(IMapping mapping) { IType[] types = userType.PropertyTypes; @@ -166,45 +137,26 @@ return n; } - /// <summary></summary> public override string Name { get { return name; } } - /// <summary></summary> public override System.Type ReturnedClass { get { return userType.ReturnedClass; } } - /// <summary></summary> public override bool IsMutable { get { return userType.IsMutable; } } - /// <summary> - /// - /// </summary> - /// <param name="rs"></param> - /// <param name="name"></param> - /// <param name="session"></param> - /// <param name="owner"></param> - /// <returns></returns> public override object NullSafeGet(IDataReader rs, string name, ISessionImplementor session, object owner) { return userType.NullSafeGet(rs, new string[] {name}, session, owner); } - /// <summary> - /// - /// </summary> - /// <param name="rs"></param> - /// <param name="names"></param> - /// <param name="session"></param> - /// <param name="owner"></param> - /// <returns></returns> public override object NullSafeGet(IDataReader rs, string[] names, ISessionImplementor session, object owner) { return userType.NullSafeGet(rs, names, session, owner); @@ -212,19 +164,15 @@ public override void NullSafeSet(IDbCommand st, object value, int index, bool[] settable, ISessionImplementor session) { - userType.NullSafeSet(st, value, index, session); + userType.NullSafeSet(st, value, index, settable, session); } public override void NullSafeSet(IDbCommand cmd, object value, int index, ISessionImplementor session) { - userType.NullSafeSet(cmd, value, index, session); + bool[] settable = Enumerable.Repeat(true, GetColumnSpan(session.Factory)).ToArray(); + userType.NullSafeSet(cmd, value, index, settable, session); } - /// <summary> - /// - /// </summary> - /// <param name="mapping"></param> - /// <returns></returns> public override SqlType[] SqlTypes(IMapping mapping) { IType[] types = userType.PropertyTypes; @@ -241,12 +189,6 @@ return result; } - /// <summary> - /// - /// </summary> - /// <param name="value"></param> - /// <param name="factory"></param> - /// <returns></returns> public override string ToLoggableString(object value, ISessionFactoryImplementor factory) { return value == null ? "null" : value.ToString(); @@ -277,8 +219,7 @@ get { return null; } } - public override object Replace(object original, object current, ISessionImplementor session, object owner, - IDictionary copiedAlready) + public override object Replace(object original, object current, ISessionImplementor session, object owner, IDictionary copiedAlready) { return userType.Replace(original, current, session, owner); } Modified: trunk/nhibernate/src/NHibernate/UserTypes/ICompositeUserType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/UserTypes/ICompositeUserType.cs 2010-11-02 11:48:40 UTC (rev 5258) +++ trunk/nhibernate/src/NHibernate/UserTypes/ICompositeUserType.cs 2010-11-02 11:59:09 UTC (rev 5259) @@ -9,23 +9,23 @@ /// A UserType that may be dereferenced in a query. /// This interface allows a custom type to define "properties". /// These need not necessarily correspond to physical .NET style properties. - /// - /// A ICompositeUserType may be used in almost every way + /// + /// A ICompositeUserType may be used in almost every way /// that a component may be used. It may even contain many-to-one /// associations. - /// + /// /// Implementors must be immutable and must declare a public /// default constructor. - /// + /// /// Unlike UserType, cacheability does not depend upon - /// serializability. Instead, Assemble() and + /// serializability. Instead, Assemble() and /// Disassemble() provide conversion to/from a cacheable /// representation. /// </summary> public interface ICompositeUserType { /// <summary> - /// Get the "property names" that may be used in a query. + /// Get the "property names" that may be used in a query. /// </summary> string[] PropertyNames { get; } @@ -80,16 +80,18 @@ /// <returns></returns> object NullSafeGet(IDataReader dr, string[] names, ISessionImplementor session, object owner); - /// <summary> - /// Write an instance of the mapped class to a prepared statement. - /// Implementors should handle possibility of null values. - /// A multi-column type should be written to parameters starting from index. - /// </summary> - /// <param name="cmd"></param> - /// <param name="value"></param> - /// <param name="index"></param> - /// <param name="session"></param> - void NullSafeSet(IDbCommand cmd, object value, int index, ISessionImplementor session); + /// <summary> + /// Write an instance of the mapped class to a prepared statement. + /// Implementors should handle possibility of null values. + /// A multi-column type should be written to parameters starting from index. + /// If a property is not settable, skip it and don't increment the index. + /// </summary> + /// <param name="cmd"></param> + /// <param name="value"></param> + /// <param name="index"></param> + /// <param name="settable"></param> + /// <param name="session"></param> + void NullSafeSet(IDbCommand cmd, object value, int index, bool[] settable, ISessionImplementor session); /// <summary> /// Return a deep copy of the persistent state, stopping at entities and at collections. @@ -128,7 +130,7 @@ /// with a new (original) value from the detached entity we are merging. For immutable /// objects, or null values, it is safe to simply return the first parameter. For /// mutable objects, it is safe to return a copy of the first parameter. However, since - /// composite user types often define component values, it might make sense to recursively + /// composite user types often define component values, it might make sense to recursively /// replace component values in the target object. /// </summary> object Replace(object original, object target, ISessionImplementor session, object owner); Modified: trunk/nhibernate/src/NHibernate.DomainModel/DoubleStringType.cs =================================================================== --- trunk/nhibernate/src/NHibernate.DomainModel/DoubleStringType.cs 2010-11-02 11:48:40 UTC (rev 5258) +++ trunk/nhibernate/src/NHibernate.DomainModel/DoubleStringType.cs 2010-11-02 11:59:09 UTC (rev 5259) @@ -58,12 +58,12 @@ } - public void NullSafeSet(IDbCommand st, Object value, int index, ISessionImplementor session) + public void NullSafeSet(IDbCommand st, Object value, int index, bool[] settable, ISessionImplementor session) { string[] strings = (value == null) ? new string[2] : (string[]) value; - NHibernateUtil.String.NullSafeSet(st, strings[0], index, session); - NHibernateUtil.String.NullSafeSet(st, strings[1], index + 1, session); + if (settable[0]) NHibernateUtil.String.NullSafeSet(st, strings[0], index++, session); + if (settable[1]) NHibernateUtil.String.NullSafeSet(st, strings[1], index, session); } public string[] PropertyNames Modified: trunk/nhibernate/src/NHibernate.DomainModel/MultiplicityType.cs =================================================================== --- trunk/nhibernate/src/NHibernate.DomainModel/MultiplicityType.cs 2010-11-02 11:48:40 UTC (rev 5258) +++ trunk/nhibernate/src/NHibernate.DomainModel/MultiplicityType.cs 2010-11-02 11:59:09 UTC (rev 5259) @@ -1,6 +1,6 @@ using System; using System.Data; - +using System.Linq; using NHibernate.Engine; using NHibernate.Type; using NHibernate.UserTypes; @@ -84,7 +84,7 @@ return m; } - public void NullSafeSet(IDbCommand st, Object value, int index, ISessionImplementor session) + public void NullSafeSet(IDbCommand st, Object value, int index, bool[] settable, ISessionImplementor session) { Multiplicity o = (Multiplicity) value; GlarchProxy g; @@ -99,8 +99,8 @@ g = o.glarch; c = o.count; } - NHibernateUtil.Int32.NullSafeSet(st, c, index, session); - NHibernateUtil.Entity(typeof(Glarch)).NullSafeSet(st, g, index + 1, session); + if (settable[0]) NHibernateUtil.Int32.NullSafeSet(st, c, index, session); + NHibernateUtil.Entity(typeof(Glarch)).NullSafeSet(st, g, index + 1, settable.Skip(1).ToArray(), session); } public object DeepCopy(object value) Modified: trunk/nhibernate/src/NHibernate.DomainModel/NHibernate.DomainModel.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.DomainModel/NHibernate.DomainModel.csproj 2010-11-02 11:48:40 UTC (rev 5258) +++ trunk/nhibernate/src/NHibernate.DomainModel/NHibernate.DomainModel.csproj 2010-11-02 11:59:09 UTC (rev 5259) @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> @@ -40,6 +40,9 @@ </PropertyGroup> <ItemGroup> <Reference Include="System" /> + <Reference Include="System.Core"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> <Reference Include="System.Data" /> <Reference Include="System.Xml" /> <Reference Include="Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4"> Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1763/EmptyStringUserType.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1763/EmptyStringUserType.cs 2010-11-02 11:48:40 UTC (rev 5258) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1763/EmptyStringUserType.cs 2010-11-02 11:59:09 UTC (rev 5259) @@ -1,12 +1,10 @@ using System; +using System.Data; using NHibernate.Engine; using NHibernate.UserTypes; namespace NHibernate.Test.NHSpecificTest.NH1763 { - /// <summary> - /// Summary description for EmptyStringUserType - /// </summary> [Serializable] public class EmptyStringUserType : ICompositeUserType { @@ -65,18 +63,20 @@ return NHibernateUtil.String.NullSafeGet(rs, names[0], session, owner); } - public void NullSafeSet(System.Data.IDbCommand st, Object value, int index, NHibernate.Engine.ISessionImplementor session) + public void NullSafeSet(System.Data.IDbCommand st, Object value, int index, bool[] settable, NHibernate.Engine.ISessionImplementor session) { - string str = null; - if (value != null) str = value.ToString().Trim(); - if (str == String.Empty) + if (settable[0]) { - str = null; - NHibernateUtil.String.NullSafeSet(st, str, index, session); + string str = null; + if (value != null) str = value.ToString().Trim(); + if (str == String.Empty) + { + str = null; + NHibernateUtil.String.NullSafeSet(st, str, index, session); + } + else + NHibernateUtil.String.NullSafeSet(st, value, index, session); } - else - NHibernateUtil.String.NullSafeSet(st, value, index, session); - } public Object GetPropertyValue(Object component, int property) @@ -86,17 +86,13 @@ public void SetPropertyValue(Object object1, int i, Object object2) { - } - #region ICompositeUserType Members - public int GetHashCode(object x) { return x == null ? typeof(string).GetHashCode() : x.GetHashCode(); - } public object Replace(object original, object target, ISessionImplementor session, object owner) @@ -104,7 +100,6 @@ return DeepCopy(original); } - #endregion } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/CompositeUserType.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/CompositeUserType.cs 2010-11-02 11:48:40 UTC (rev 5258) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/CompositeUserType.cs 2010-11-02 11:59:09 UTC (rev 5259) @@ -23,8 +23,7 @@ { return true; } - else if (x == null || - y == null) + else if (x == null || y == null) { return false; } @@ -42,11 +41,7 @@ { get { - return new[] - { - "DataA", - "DataB" - }; + return new[] { "DataA", "DataB" }; } } @@ -59,10 +54,10 @@ get { return new IType[] - { - NHibernateUtil.DateTime, - NHibernateUtil.DateTime - }; + { + NHibernateUtil.DateTime, + NHibernateUtil.DateTime + }; } } @@ -141,19 +136,20 @@ /// <param name="cmd"></param> /// <param name="value"></param> /// <param name="index"></param> + /// <param name="settable"></param> /// <param name="session"></param> - public void NullSafeSet(IDbCommand cmd, object value, int index, ISessionImplementor session) + public void NullSafeSet(IDbCommand cmd, object value, int index, bool[] settable, ISessionImplementor session) { if (value == null) { - ((IDataParameter) cmd.Parameters[index]).Value = DBNull.Value; - ((IDataParameter) cmd.Parameters[index + 1]).Value = DBNull.Value; + if (settable[0]) ((IDataParameter) cmd.Parameters[index++]).Value = DBNull.Value; + if (settable[1]) ((IDataParameter) cmd.Parameters[index]).Value = DBNull.Value; } else { var data = (CompositeData) value; - NHibernateUtil.DateTime.Set(cmd, data.DataA, index); - NHibernateUtil.DateTime.Set(cmd, data.DataB, index + 1); + if (settable[0]) NHibernateUtil.DateTime.Set(cmd, data.DataA, index++); + if (settable[1]) NHibernateUtil.DateTime.Set(cmd, data.DataB, index); } } Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2392/A.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2392/A.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2392/A.cs 2010-11-02 11:59:09 UTC (rev 5259) @@ -0,0 +1,13 @@ +using System; +using System.Collections; + +namespace NHibernate.Test.NHSpecificTest.NH2392 +{ + public class A + { + public int? Id { get; set; } + public string StringData1 { get; set; } + public PhoneNumber MyPhone { get; set; } + public string StringData2 { get; set; } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2392/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2392/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2392/Fixture.cs 2010-11-02 11:59:09 UTC (rev 5259) @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using NHibernate.Criterion; +using NHibernate.Linq; +using NHibernate.Linq.Functions; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH2392 +{ + [TestFixture] + public class Fixture : BugTestCase + { + protected override void OnTearDown() + { + using (ISession s = sessions.OpenSession()) + { + s.Delete("from A"); + s.Flush(); + } + } + + [Test] + public void CompositeUserTypeSettability() + { + ISession s = OpenSession(); + try + { + s.Save(new A { StringData1 = "first", StringData2 = "second" }); + s.Flush(); + } + finally + { + s.Close(); + } + + s = OpenSession(); + try + { + A a = s.CreateCriteria<A>().List<A>().First(); + a.MyPhone = new PhoneNumber(1, null); + s.Save(a); + s.Flush(); + } + finally + { + s.Close(); + } + + s = OpenSession(); + try + { + A a = s.CreateCriteria<A>().List<A>().First(); + a.MyPhone = new PhoneNumber(1, "555-1234"); + s.Save(a); + s.Flush(); + } + finally + { + s.Close(); + } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2392/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2392/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2392/Mappings.hbm.xml 2010-11-02 11:59:09 UTC (rev 5259) @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" namespace="NHibernate.Test.NHSpecificTest.NH2392"> + <class name="A" table="a" lazy="false" optimistic-lock="dirty" dynamic-update="true"> + <id name="Id" column="id" unsaved-value="null"> + <generator class="native" /> + </id> + <property name="StringData1"/> + <property name="MyPhone" type="NHibernate.Test.NHSpecificTest.NH2392.PhoneNumberUserType, NHibernate.Test"> + <column name="MyPhoneCountryCode"/> + <column name="MyPhoneNumber"/> + </property> + <property name="StringData2"/> + </class> +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2392/PhoneNumber.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2392/PhoneNumber.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2392/PhoneNumber.cs 2010-11-02 11:59:09 UTC (rev 5259) @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.NH2392 +{ + public class PhoneNumber + { + public PhoneNumber(int countryCode, string number) + { + CountryCode = countryCode; + Number = number; + } + + public int CountryCode { get; private set; } + public string Number { get; private set; } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2392/PhoneNumberUserType.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2392/PhoneNumberUserType.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2392/PhoneNumberUserType.cs 2010-11-02 11:59:09 UTC (rev 5259) @@ -0,0 +1,106 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using NHibernate.Engine; +using NHibernate.Type; +using NHibernate.UserTypes; + +namespace NHibernate.Test.NHSpecificTest.NH2392 +{ + class PhoneNumberUserType : ICompositeUserType + { + public string[] PropertyNames + { + get { return new[] { "CountryCode", "Number" }; } + } + + public IType[] PropertyTypes + { + get { return new[] { NHibernateUtil.Int32, NHibernateUtil.String }; } + } + + public object GetPropertyValue(object component, int property) + { + PhoneNumber phone = (PhoneNumber)component; + + switch (property) + { + case 0: return phone.CountryCode; + case 1: return phone.Number; + default: throw new NotImplementedException(); + } + } + + public void SetPropertyValue(object component, int property, object value) + { + throw new NotImplementedException(); + } + + public System.Type ReturnedClass + { + get { return typeof(PhoneNumber); } + } + + public bool Equals(object x, object y) + { + if (ReferenceEquals(x, null) && ReferenceEquals(y, null)) + return true; + + if (ReferenceEquals(x, null) || ReferenceEquals(y, null)) + return false; + + return x.Equals(y); + } + + public int GetHashCode(object x) + { + return x.GetHashCode(); + } + + public object NullSafeGet(IDataReader dr, string[] names, ISessionImplementor session, object owner) + { + if (dr.IsDBNull(dr.GetOrdinal(names[0]))) + return null; + + return new PhoneNumber( + (int)NHibernateUtil.Int32.NullSafeGet(dr, names[0], session, owner), + (string)NHibernateUtil.String.NullSafeGet(dr, names[1], session, owner)); + } + + public void NullSafeSet(IDbCommand cmd, object value, int index, bool[] settable, ISessionImplementor session) + { + object countryCode = value == null ? null : (int?)((PhoneNumber)value).CountryCode; + object number = value == null ? null : ((PhoneNumber)value).Number; + + if (settable[0]) NHibernateUtil.Int32.NullSafeSet(cmd, countryCode, index++, session); + if (settable[1]) NHibernateUtil.String.NullSafeSet(cmd, number, index, session); + } + + public object DeepCopy(object value) + { + return value; + } + + public bool IsMutable + { + get { return false; } + } + + public object Disassemble(object value, ISessionImplementor session) + { + return value; + } + + public object Assemble(object cached, ISessionImplementor session, object owner) + { + return cached; + } + + public object Replace(object original, object target, ISessionImplementor session, object owner) + { + return original; + } + } +} Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-11-02 11:48:40 UTC (rev 5258) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-11-02 11:59:09 UTC (rev 5259) @@ -536,6 +536,10 @@ <Compile Include="NHSpecificTest\NH2378\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2378\TestEntity.cs" /> <Compile Include="NHSpecificTest\NH2378\TestEntityDto.cs" /> + <Compile Include="NHSpecificTest\NH2392\A.cs" /> + <Compile Include="NHSpecificTest\NH2392\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH2392\PhoneNumber.cs" /> + <Compile Include="NHSpecificTest\NH2392\PhoneNumberUserType.cs" /> <Compile Include="PolymorphicGetAndLoad\Domain.cs" /> <Compile Include="PolymorphicGetAndLoad\PolymorphicGetAndLoadTest.cs" /> <Compile Include="TypesTest\CharClass.cs" /> @@ -1827,6 +1831,7 @@ <EmbeddedResource Include="NHSpecificTest\NH1136\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2202\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1869\Mappings.hbm.xml" /> + <EmbeddedResource Include="NHSpecificTest\NH2392\Mappings.hbm.xml" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\NHibernate.ByteCode.Castle\NHibernate.ByteCode.Castle.csproj"> @@ -2691,6 +2696,7 @@ <EmbeddedResource Include="DynamicEntity\Tuplizer\Customer.hbm.xml" /> </ItemGroup> <ItemGroup> + <Folder Include="NHSpecificTest\NH2392" /> <Folder Include="Properties\" /> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2010-12-15 22:09:25
|
Revision: 5318 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5318&view=rev Author: fabiomaulo Date: 2010-12-15 22:09:18 +0000 (Wed, 15 Dec 2010) Log Message: ----------- Fix NH-2461 Modified Paths: -------------- trunk/nhibernate/releasenotes.txt trunk/nhibernate/src/NHibernate/Criterion/Restrictions.cs trunk/nhibernate/src/NHibernate/IQuery.cs trunk/nhibernate/src/NHibernate/Impl/AbstractQueryImpl.cs Modified: trunk/nhibernate/releasenotes.txt =================================================================== --- trunk/nhibernate/releasenotes.txt 2010-12-15 21:57:25 UTC (rev 5317) +++ trunk/nhibernate/releasenotes.txt 2010-12-15 22:09:18 UTC (rev 5318) @@ -1,3 +1,7 @@ +** Known BREAKING CHANGES from NH3.0.0.GA to NH3.0.1.GA + ##### Possible Breaking Changes ##### + * [NH-2461] - Signature change for IQuery.SetParameterList + ** Known BREAKING CHANGES from NH2.1.1.GA to NH3.0.0.GA ##### Design time ##### Modified: trunk/nhibernate/src/NHibernate/Criterion/Restrictions.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/Restrictions.cs 2010-12-15 21:57:25 UTC (rev 5317) +++ trunk/nhibernate/src/NHibernate/Criterion/Restrictions.cs 2010-12-15 22:09:18 UTC (rev 5318) @@ -1,6 +1,7 @@ using System; using System.Collections; using System.Collections.Generic; +using System.Linq; using System.Linq.Expressions; using NHibernate.Criterion.Lambda; using NHibernate.Impl; @@ -299,14 +300,14 @@ /// of <see cref="In(string, ICollection)" />, renamed to avoid ambiguity. /// </summary> /// <param name="propertyName">The name of the Property in the class.</param> - /// <param name="values">An <see cref="System.Collections.Generic.ICollection{T}" /> + /// <param name="values">An <see cref="System.Collections.Generic.IEnumerable{T}" /> /// of values.</param> /// <returns>An <see cref="InExpression" />.</returns> - public static AbstractCriterion InG<T>(string propertyName, ICollection<T> values) + public static AbstractCriterion InG<T>(string propertyName, IEnumerable<T> values) { - object[] array = new object[values.Count]; - int i = 0; - foreach (T item in values) + var array = new object[values.Count()]; + var i = 0; + foreach (var item in values) { array[i] = item; i++; @@ -320,14 +321,14 @@ /// </summary> /// <typeparam name="T"></typeparam> /// <param name="projection">The projection.</param> - /// <param name="values">An <see cref="System.Collections.Generic.ICollection{T}"/> + /// <param name="values">An <see cref="System.Collections.Generic.IEnumerable{T}"/> /// of values.</param> /// <returns>An <see cref="InExpression"/>.</returns> - public static AbstractCriterion InG<T>(IProjection projection, ICollection<T> values) + public static AbstractCriterion InG<T>(IProjection projection, IEnumerable<T> values) { - object[] array = new object[values.Count]; - int i = 0; - foreach (T item in values) + var array = new object[values.Count()]; + var i = 0; + foreach (var item in values) { array[i] = item; i++; Modified: trunk/nhibernate/src/NHibernate/IQuery.cs =================================================================== --- trunk/nhibernate/src/NHibernate/IQuery.cs 2010-12-15 21:57:25 UTC (rev 5317) +++ trunk/nhibernate/src/NHibernate/IQuery.cs 2010-12-15 22:09:18 UTC (rev 5318) @@ -255,7 +255,7 @@ /// <param name="name">The name of the parameter</param> /// <param name="vals">A collection of values to list</param> /// <param name="type">The NHibernate type of the values</param> - IQuery SetParameterList(string name, ICollection vals, IType type); + IQuery SetParameterList(string name, IEnumerable vals, IType type); /// <summary> /// Bind multiple values to a named query parameter, guessing the NHibernate @@ -264,28 +264,9 @@ /// </summary> /// <param name="name">The name of the parameter</param> /// <param name="vals">A collection of values to list</param> - IQuery SetParameterList(string name, ICollection vals); + IQuery SetParameterList(string name, IEnumerable vals); /// <summary> - /// Bind multiple values to a named query parameter. This is useful for binding - /// a list of values to an expression such as <tt>foo.bar in (:value_list)</tt>. - /// </summary> - /// <param name="name">the name of the parameter </param> - /// <param name="vals">a collection of values to list </param> - /// <param name="type">the NHibernate type of the values </param> - IQuery SetParameterList(string name, object[] vals, IType type); - - /// <summary> - /// Bind multiple values to a named query parameter. The NHibernate type of the parameter is - /// first detected via the usage/position in the query and if not sufficient secondly - /// guessed from the class of the first object in the array. This is useful for binding a list of values - /// to an expression such as <tt>foo.bar in (:value_list)</tt>. - /// </summary> - /// <param name="name">the name of the parameter </param> - /// <param name="vals">a collection of values to list </param> - IQuery SetParameterList(string name, object[] vals); - - /// <summary> /// Bind the property values of the given object to named parameters of the query, /// matching property names with parameter names and mapping property types to /// NHibernate types using heuristics. Modified: trunk/nhibernate/src/NHibernate/Impl/AbstractQueryImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/AbstractQueryImpl.cs 2010-12-15 21:57:25 UTC (rev 5317) +++ trunk/nhibernate/src/NHibernate/Impl/AbstractQueryImpl.cs 2010-12-15 22:09:18 UTC (rev 5318) @@ -648,7 +648,7 @@ return this; } - public IQuery SetParameterList(string name, ICollection vals, IType type) + public IQuery SetParameterList(string name, IEnumerable vals, IType type) { if (!parameterMetadata.NamedParameterNames.Contains(name)) { @@ -661,7 +661,7 @@ { throw new ArgumentNullException("type","Can't determine the type of parameter-list elements."); } - if(vals.Count == 0) + if(!vals.Any()) { throw new QueryException(string.Format("An empty parameter-list generate wrong SQL; parameter name '{0}'", name)); } @@ -669,7 +669,7 @@ return this; } - public IQuery SetParameterList(string name, ICollection vals) + public IQuery SetParameterList(string name, IEnumerable vals) { if (vals == null) { @@ -682,30 +682,11 @@ return this; } - if (vals.Count == 0) - { - SetParameterList(name, vals, GuessType(vals.GetCollectionElementType())); - } - else - { - IEnumerator iter = vals.GetEnumerator(); - iter.MoveNext(); - SetParameterList(name, vals, DetermineType(name, iter.Current)); - } + SetParameterList(name, vals, !vals.Any() ? GuessType(vals.GetCollectionElementType()) : DetermineType(name, vals.First())); return this; } - public IQuery SetParameterList(string name, object[] vals, IType type) - { - return SetParameterList(name, vals as ICollection, type); - } - - public IQuery SetParameterList(string name, object[] vals) - { - return SetParameterList(name, vals as ICollection); - } - #endregion #region Query properties This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pa...@us...> - 2011-01-13 17:55:26
|
Revision: 5345 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5345&view=rev Author: patearl Date: 2011-01-13 17:55:17 +0000 (Thu, 13 Jan 2011) Log Message: ----------- Added Antlr tool to regenerate lexer and parser from grammar. Regenerated from Hql.g with no other changes to clean up path to grammar file. Modified Paths: -------------- trunk/nhibernate/ShowBuildMenu.bat trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlLexer.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlParser.cs Added Paths: ----------- trunk/nhibernate/Tools/Antlr/ trunk/nhibernate/Tools/Antlr/AntlrHql.bat trunk/nhibernate/Tools/Antlr/antlr-3.2.jar Modified: trunk/nhibernate/ShowBuildMenu.bat =================================================================== --- trunk/nhibernate/ShowBuildMenu.bat 2011-01-13 01:12:33 UTC (rev 5344) +++ trunk/nhibernate/ShowBuildMenu.bat 2011-01-13 17:55:17 UTC (rev 5345) @@ -1,6 +1,5 @@ @echo off -set OLD_CD=%CD% -cd %~dp0 +pushd %~dp0 set NANT=Tools\nant\bin\NAnt.exe -t:net-3.5 @@ -16,15 +15,17 @@ echo E. Build NHibernate (Debug) echo F. Build NHibernate (Release) echo G. Build Release Package (Also runs tests and creates documentation) +echo H. Run Antlr on Hql.g to regenerate HqlParser.cs and HqlLexer.cs. echo. if exist %SYSTEMROOT%\System32\choice.exe ( goto prompt-choice ) goto prompt-set :prompt-choice -choice /C:abcdefg +choice /C:abcdefgh if errorlevel 255 goto end +if errorlevel 8 goto antlr-hql if errorlevel 7 goto build-release-package if errorlevel 6 goto build-release if errorlevel 5 goto build-debug @@ -35,7 +36,7 @@ if errorlevel 0 goto end :prompt-set -set /p OPT=[A, B, C, D, E, F, G]? +set /p OPT=[A, B, C, D, E, F, G, H]? if /I "%OPT%"=="A" goto build-visual-studio if /I "%OPT%"=="B" goto help-test-setup @@ -44,6 +45,7 @@ if /I "%OPT%"=="E" goto build-debug if /I "%OPT%"=="F" goto build-release if /I "%OPT%"=="G" goto build-release-package +if /I "%OPT%"=="H" goto antlr-hql goto prompt-set :help-test-setup @@ -105,6 +107,11 @@ %NANT% test goto end +:antlr-hql +rem NANT is 32-bit and refuses to run 64-bit Java, so we just use a batch file instead. :( +call Tools\Antlr\AntlrHql.bat +goto end + :end -cd %OLD_CD% +popd pause Property changes on: trunk/nhibernate/Tools/Antlr ___________________________________________________________________ Added: bugtraq:url + http://jira.nhibernate.org/browse/%BUGID% Added: bugtraq:logregex + NH-\d+ Added: trunk/nhibernate/Tools/Antlr/AntlrHql.bat =================================================================== --- trunk/nhibernate/Tools/Antlr/AntlrHql.bat (rev 0) +++ trunk/nhibernate/Tools/Antlr/AntlrHql.bat 2011-01-13 17:55:17 UTC (rev 5345) @@ -0,0 +1,4 @@ +@echo off +pushd %~dp0\..\..\src\NHibernate\Hql\Ast\ANTLR +java.exe -cp ..\..\..\..\..\Tools\Antlr\antlr-3.2.jar org.antlr.Tool -o Generated Hql.g +popd \ No newline at end of file Added: trunk/nhibernate/Tools/Antlr/antlr-3.2.jar =================================================================== (Binary files differ) Property changes on: trunk/nhibernate/Tools/Antlr/antlr-3.2.jar ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlLexer.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlLexer.cs 2011-01-13 01:12:33 UTC (rev 5344) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlLexer.cs 2011-01-13 17:55:17 UTC (rev 5345) @@ -1,4 +1,4 @@ -// $ANTLR 3.2 Sep 23, 2009 12:02:23 C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g 2010-05-01 20:41:02 +// $ANTLR 3.2 Sep 23, 2009 12:02:23 Hql.g 2011-01-13 10:47:55 // The variable 'variable' is assigned but its value is never used. #pragma warning disable 168, 219 @@ -166,7 +166,7 @@ override public string GrammarFileName { - get { return "C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g";} + get { return "Hql.g";} } // $ANTLR start "ALL" @@ -176,8 +176,8 @@ { int _type = ALL; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:9:5: ( 'all' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:9:7: 'all' + // Hql.g:9:5: ( 'all' ) + // Hql.g:9:7: 'all' { Match("all"); if (state.failed) return ; @@ -200,8 +200,8 @@ { int _type = ANY; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:10:5: ( 'any' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:10:7: 'any' + // Hql.g:10:5: ( 'any' ) + // Hql.g:10:7: 'any' { Match("any"); if (state.failed) return ; @@ -224,8 +224,8 @@ { int _type = AND; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:11:5: ( 'and' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:11:7: 'and' + // Hql.g:11:5: ( 'and' ) + // Hql.g:11:7: 'and' { Match("and"); if (state.failed) return ; @@ -248,8 +248,8 @@ { int _type = AS; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:12:4: ( 'as' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:12:6: 'as' + // Hql.g:12:4: ( 'as' ) + // Hql.g:12:6: 'as' { Match("as"); if (state.failed) return ; @@ -272,8 +272,8 @@ { int _type = ASCENDING; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:13:11: ( 'asc' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:13:13: 'asc' + // Hql.g:13:11: ( 'asc' ) + // Hql.g:13:13: 'asc' { Match("asc"); if (state.failed) return ; @@ -296,8 +296,8 @@ { int _type = AVG; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:14:5: ( 'avg' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:14:7: 'avg' + // Hql.g:14:5: ( 'avg' ) + // Hql.g:14:7: 'avg' { Match("avg"); if (state.failed) return ; @@ -320,8 +320,8 @@ { int _type = BETWEEN; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:15:9: ( 'between' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:15:11: 'between' + // Hql.g:15:9: ( 'between' ) + // Hql.g:15:11: 'between' { Match("between"); if (state.failed) return ; @@ -344,8 +344,8 @@ { int _type = CLASS; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:16:7: ( 'class' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:16:9: 'class' + // Hql.g:16:7: ( 'class' ) + // Hql.g:16:9: 'class' { Match("class"); if (state.failed) return ; @@ -368,8 +368,8 @@ { int _type = COUNT; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:17:7: ( 'count' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:17:9: 'count' + // Hql.g:17:7: ( 'count' ) + // Hql.g:17:9: 'count' { Match("count"); if (state.failed) return ; @@ -392,8 +392,8 @@ { int _type = DELETE; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:18:8: ( 'delete' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:18:10: 'delete' + // Hql.g:18:8: ( 'delete' ) + // Hql.g:18:10: 'delete' { Match("delete"); if (state.failed) return ; @@ -416,8 +416,8 @@ { int _type = DESCENDING; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:19:12: ( 'desc' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:19:14: 'desc' + // Hql.g:19:12: ( 'desc' ) + // Hql.g:19:14: 'desc' { Match("desc"); if (state.failed) return ; @@ -440,8 +440,8 @@ { int _type = DISTINCT; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:20:10: ( 'distinct' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:20:12: 'distinct' + // Hql.g:20:10: ( 'distinct' ) + // Hql.g:20:12: 'distinct' { Match("distinct"); if (state.failed) return ; @@ -464,8 +464,8 @@ { int _type = ELEMENTS; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:21:10: ( 'elements' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:21:12: 'elements' + // Hql.g:21:10: ( 'elements' ) + // Hql.g:21:12: 'elements' { Match("elements"); if (state.failed) return ; @@ -488,8 +488,8 @@ { int _type = ESCAPE; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:22:8: ( 'escape' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:22:10: 'escape' + // Hql.g:22:8: ( 'escape' ) + // Hql.g:22:10: 'escape' { Match("escape"); if (state.failed) return ; @@ -512,8 +512,8 @@ { int _type = EXISTS; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:23:8: ( 'exists' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:23:10: 'exists' + // Hql.g:23:8: ( 'exists' ) + // Hql.g:23:10: 'exists' { Match("exists"); if (state.failed) return ; @@ -536,8 +536,8 @@ { int _type = FALSE; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:24:7: ( 'false' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:24:9: 'false' + // Hql.g:24:7: ( 'false' ) + // Hql.g:24:9: 'false' { Match("false"); if (state.failed) return ; @@ -560,8 +560,8 @@ { int _type = FETCH; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:25:7: ( 'fetch' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:25:9: 'fetch' + // Hql.g:25:7: ( 'fetch' ) + // Hql.g:25:9: 'fetch' { Match("fetch"); if (state.failed) return ; @@ -584,8 +584,8 @@ { int _type = FROM; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:26:6: ( 'from' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:26:8: 'from' + // Hql.g:26:6: ( 'from' ) + // Hql.g:26:8: 'from' { Match("from"); if (state.failed) return ; @@ -608,8 +608,8 @@ { int _type = FULL; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:27:6: ( 'full' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:27:8: 'full' + // Hql.g:27:6: ( 'full' ) + // Hql.g:27:8: 'full' { Match("full"); if (state.failed) return ; @@ -632,8 +632,8 @@ { int _type = GROUP; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:28:7: ( 'group' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:28:9: 'group' + // Hql.g:28:7: ( 'group' ) + // Hql.g:28:9: 'group' { Match("group"); if (state.failed) return ; @@ -656,8 +656,8 @@ { int _type = HAVING; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:29:8: ( 'having' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:29:10: 'having' + // Hql.g:29:8: ( 'having' ) + // Hql.g:29:10: 'having' { Match("having"); if (state.failed) return ; @@ -680,8 +680,8 @@ { int _type = IN; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:30:4: ( 'in' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:30:6: 'in' + // Hql.g:30:4: ( 'in' ) + // Hql.g:30:6: 'in' { Match("in"); if (state.failed) return ; @@ -704,8 +704,8 @@ { int _type = INDICES; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:31:9: ( 'indices' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:31:11: 'indices' + // Hql.g:31:9: ( 'indices' ) + // Hql.g:31:11: 'indices' { Match("indices"); if (state.failed) return ; @@ -728,8 +728,8 @@ { int _type = INNER; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:32:7: ( 'inner' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:32:9: 'inner' + // Hql.g:32:7: ( 'inner' ) + // Hql.g:32:9: 'inner' { Match("inner"); if (state.failed) return ; @@ -752,8 +752,8 @@ { int _type = INSERT; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:33:8: ( 'insert' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:33:10: 'insert' + // Hql.g:33:8: ( 'insert' ) + // Hql.g:33:10: 'insert' { Match("insert"); if (state.failed) return ; @@ -776,8 +776,8 @@ { int _type = INTO; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:34:6: ( 'into' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:34:8: 'into' + // Hql.g:34:6: ( 'into' ) + // Hql.g:34:8: 'into' { Match("into"); if (state.failed) return ; @@ -800,8 +800,8 @@ { int _type = IS; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:35:4: ( 'is' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:35:6: 'is' + // Hql.g:35:4: ( 'is' ) + // Hql.g:35:6: 'is' { Match("is"); if (state.failed) return ; @@ -824,8 +824,8 @@ { int _type = JOIN; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:36:6: ( 'join' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:36:8: 'join' + // Hql.g:36:6: ( 'join' ) + // Hql.g:36:8: 'join' { Match("join"); if (state.failed) return ; @@ -848,8 +848,8 @@ { int _type = LEFT; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:37:6: ( 'left' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:37:8: 'left' + // Hql.g:37:6: ( 'left' ) + // Hql.g:37:8: 'left' { Match("left"); if (state.failed) return ; @@ -872,8 +872,8 @@ { int _type = LIKE; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:38:6: ( 'like' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:38:8: 'like' + // Hql.g:38:6: ( 'like' ) + // Hql.g:38:8: 'like' { Match("like"); if (state.failed) return ; @@ -896,8 +896,8 @@ { int _type = MAX; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:39:5: ( 'max' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:39:7: 'max' + // Hql.g:39:5: ( 'max' ) + // Hql.g:39:7: 'max' { Match("max"); if (state.failed) return ; @@ -920,8 +920,8 @@ { int _type = MIN; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:40:5: ( 'min' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:40:7: 'min' + // Hql.g:40:5: ( 'min' ) + // Hql.g:40:7: 'min' { Match("min"); if (state.failed) return ; @@ -944,8 +944,8 @@ { int _type = NEW; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:41:5: ( 'new' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:41:7: 'new' + // Hql.g:41:5: ( 'new' ) + // Hql.g:41:7: 'new' { Match("new"); if (state.failed) return ; @@ -968,8 +968,8 @@ { int _type = NOT; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:42:5: ( 'not' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:42:7: 'not' + // Hql.g:42:5: ( 'not' ) + // Hql.g:42:7: 'not' { Match("not"); if (state.failed) return ; @@ -992,8 +992,8 @@ { int _type = NULL; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:43:6: ( 'null' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:43:8: 'null' + // Hql.g:43:6: ( 'null' ) + // Hql.g:43:8: 'null' { Match("null"); if (state.failed) return ; @@ -1016,8 +1016,8 @@ { int _type = OR; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:44:4: ( 'or' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:44:6: 'or' + // Hql.g:44:4: ( 'or' ) + // Hql.g:44:6: 'or' { Match("or"); if (state.failed) return ; @@ -1040,8 +1040,8 @@ { int _type = ORDER; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:45:7: ( 'order' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:45:9: 'order' + // Hql.g:45:7: ( 'order' ) + // Hql.g:45:9: 'order' { Match("order"); if (state.failed) return ; @@ -1064,8 +1064,8 @@ { int _type = OUTER; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:46:7: ( 'outer' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:46:9: 'outer' + // Hql.g:46:7: ( 'outer' ) + // Hql.g:46:9: 'outer' { Match("outer"); if (state.failed) return ; @@ -1088,8 +1088,8 @@ { int _type = PROPERTIES; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:47:12: ( 'properties' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:47:14: 'properties' + // Hql.g:47:12: ( 'properties' ) + // Hql.g:47:14: 'properties' { Match("properties"); if (state.failed) return ; @@ -1112,8 +1112,8 @@ { int _type = RIGHT; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:48:7: ( 'right' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:48:9: 'right' + // Hql.g:48:7: ( 'right' ) + // Hql.g:48:9: 'right' { Match("right"); if (state.failed) return ; @@ -1136,8 +1136,8 @@ { int _type = SELECT; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:49:8: ( 'select' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:49:10: 'select' + // Hql.g:49:8: ( 'select' ) + // Hql.g:49:10: 'select' { Match("select"); if (state.failed) return ; @@ -1160,8 +1160,8 @@ { int _type = SET; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:50:5: ( 'set' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:50:7: 'set' + // Hql.g:50:5: ( 'set' ) + // Hql.g:50:7: 'set' { Match("set"); if (state.failed) return ; @@ -1184,8 +1184,8 @@ { int _type = SOME; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:51:6: ( 'some' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:51:8: 'some' + // Hql.g:51:6: ( 'some' ) + // Hql.g:51:8: 'some' { Match("some"); if (state.failed) return ; @@ -1208,8 +1208,8 @@ { int _type = SUM; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:52:5: ( 'sum' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:52:7: 'sum' + // Hql.g:52:5: ( 'sum' ) + // Hql.g:52:7: 'sum' { Match("sum"); if (state.failed) return ; @@ -1232,8 +1232,8 @@ { int _type = TRUE; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:53:6: ( 'true' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:53:8: 'true' + // Hql.g:53:6: ( 'true' ) + // Hql.g:53:8: 'true' { Match("true"); if (state.failed) return ; @@ -1256,8 +1256,8 @@ { int _type = UNION; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:54:7: ( 'union' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:54:9: 'union' + // Hql.g:54:7: ( 'union' ) + // Hql.g:54:9: 'union' { Match("union"); if (state.failed) return ; @@ -1280,8 +1280,8 @@ { int _type = UPDATE; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:55:8: ( 'update' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:55:10: 'update' + // Hql.g:55:8: ( 'update' ) + // Hql.g:55:10: 'update' { Match("update"); if (state.failed) return ; @@ -1304,8 +1304,8 @@ { int _type = VERSIONED; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:56:11: ( 'versioned' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:56:13: 'versioned' + // Hql.g:56:11: ( 'versioned' ) + // Hql.g:56:13: 'versioned' { Match("versioned"); if (state.failed) return ; @@ -1328,8 +1328,8 @@ { int _type = WHERE; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:57:7: ( 'where' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:57:9: 'where' + // Hql.g:57:7: ( 'where' ) + // Hql.g:57:9: 'where' { Match("where"); if (state.failed) return ; @@ -1352,8 +1352,8 @@ { int _type = LITERAL_by; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:58:12: ( 'by' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:58:14: 'by' + // Hql.g:58:12: ( 'by' ) + // Hql.g:58:14: 'by' { Match("by"); if (state.failed) return ; @@ -1376,8 +1376,8 @@ { int _type = CASE; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:59:6: ( 'case' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:59:8: 'case' + // Hql.g:59:6: ( 'case' ) + // Hql.g:59:8: 'case' { Match("case"); if (state.failed) return ; @@ -1400,8 +1400,8 @@ { int _type = END; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:60:5: ( 'end' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:60:7: 'end' + // Hql.g:60:5: ( 'end' ) + // Hql.g:60:7: 'end' { Match("end"); if (state.failed) return ; @@ -1424,8 +1424,8 @@ { int _type = ELSE; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:61:6: ( 'else' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:61:8: 'else' + // Hql.g:61:6: ( 'else' ) + // Hql.g:61:8: 'else' { Match("else"); if (state.failed) return ; @@ -1448,8 +1448,8 @@ { int _type = THEN; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:62:6: ( 'then' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:62:8: 'then' + // Hql.g:62:6: ( 'then' ) + // Hql.g:62:8: 'then' { Match("then"); if (state.failed) return ; @@ -1472,8 +1472,8 @@ { int _type = WHEN; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:63:6: ( 'when' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:63:8: 'when' + // Hql.g:63:6: ( 'when' ) + // Hql.g:63:8: 'when' { Match("when"); if (state.failed) return ; @@ -1496,8 +1496,8 @@ { int _type = ON; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:64:4: ( 'on' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:64:6: 'on' + // Hql.g:64:4: ( 'on' ) + // Hql.g:64:6: 'on' { Match("on"); if (state.failed) return ; @@ -1520,8 +1520,8 @@ { int _type = WITH; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:65:6: ( 'with' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:65:8: 'with' + // Hql.g:65:6: ( 'with' ) + // Hql.g:65:8: 'with' { Match("with"); if (state.failed) return ; @@ -1544,8 +1544,8 @@ { int _type = BOTH; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:66:6: ( 'both' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:66:8: 'both' + // Hql.g:66:6: ( 'both' ) + // Hql.g:66:8: 'both' { Match("both"); if (state.failed) return ; @@ -1568,8 +1568,8 @@ { int _type = EMPTY; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:67:7: ( 'empty' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:67:9: 'empty' + // Hql.g:67:7: ( 'empty' ) + // Hql.g:67:9: 'empty' { Match("empty"); if (state.failed) return ; @@ -1592,8 +1592,8 @@ { int _type = LEADING; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:68:9: ( 'leading' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:68:11: 'leading' + // Hql.g:68:9: ( 'leading' ) + // Hql.g:68:11: 'leading' { Match("leading"); if (state.failed) return ; @@ -1616,8 +1616,8 @@ { int _type = MEMBER; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:69:8: ( 'member' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:69:10: 'member' + // Hql.g:69:8: ( 'member' ) + // Hql.g:69:10: 'member' { Match("member"); if (state.failed) return ; @@ -1640,8 +1640,8 @@ { int _type = OBJECT; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:70:8: ( 'object' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:70:10: 'object' + // Hql.g:70:8: ( 'object' ) + // Hql.g:70:10: 'object' { Match("object"); if (state.failed) return ; @@ -1664,8 +1664,8 @@ { int _type = OF; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:71:4: ( 'of' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:71:6: 'of' + // Hql.g:71:4: ( 'of' ) + // Hql.g:71:6: 'of' { Match("of"); if (state.failed) return ; @@ -1688,8 +1688,8 @@ { int _type = TRAILING; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:72:10: ( 'trailing' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:72:12: 'trailing' + // Hql.g:72:10: ( 'trailing' ) + // Hql.g:72:12: 'trailing' { Match("trailing"); if (state.failed) return ; @@ -1712,8 +1712,8 @@ { int _type = T__131; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:73:8: ( 'ascending' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:73:10: 'ascending' + // Hql.g:73:8: ( 'ascending' ) + // Hql.g:73:10: 'ascending' { Match("ascending"); if (state.failed) return ; @@ -1736,8 +1736,8 @@ { int _type = T__132; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:74:8: ( 'descending' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:74:10: 'descending' + // Hql.g:74:8: ( 'descending' ) + // Hql.g:74:10: 'descending' { Match("descending"); if (state.failed) return ; @@ -1760,8 +1760,8 @@ { int _type = EQ; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:672:3: ( '=' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:672:5: '=' + // Hql.g:672:3: ( '=' ) + // Hql.g:672:5: '=' { Match('='); if (state.failed) return ; @@ -1783,8 +1783,8 @@ { int _type = LT; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:673:3: ( '<' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:673:5: '<' + // Hql.g:673:3: ( '<' ) + // Hql.g:673:5: '<' { Match('<'); if (state.failed) return ; @@ -1806,8 +1806,8 @@ { int _type = GT; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:674:3: ( '>' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:674:5: '>' + // Hql.g:674:3: ( '>' ) + // Hql.g:674:5: '>' { Match('>'); if (state.failed) return ; @@ -1829,8 +1829,8 @@ { int _type = SQL_NE; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:675:7: ( '<>' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:675:9: '<>' + // Hql.g:675:7: ( '<>' ) + // Hql.g:675:9: '<>' { Match("<>"); if (state.failed) return ; @@ -1853,7 +1853,7 @@ { int _type = NE; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:676:3: ( '!=' | '^=' ) + // Hql.g:676:3: ( '!=' | '^=' ) int alt1 = 2; int LA1_0 = input.LA(1); @@ -1876,7 +1876,7 @@ switch (alt1) { case 1 : - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:676:5: '!=' + // Hql.g:676:5: '!=' { Match("!="); if (state.failed) return ; @@ -1884,7 +1884,7 @@ } break; case 2 : - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:676:12: '^=' + // Hql.g:676:12: '^=' { Match("^="); if (state.failed) return ; @@ -1909,8 +1909,8 @@ { int _type = LE; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:677:3: ( '<=' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:677:5: '<=' + // Hql.g:677:3: ( '<=' ) + // Hql.g:677:5: '<=' { Match("<="); if (state.failed) return ; @@ -1933,8 +1933,8 @@ { int _type = GE; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:678:3: ( '>=' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:678:5: '>=' + // Hql.g:678:3: ( '>=' ) + // Hql.g:678:5: '>=' { Match(">="); if (state.failed) return ; @@ -1957,8 +1957,8 @@ { int _type = BOR; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:680:5: ( '|' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:680:8: '|' + // Hql.g:680:5: ( '|' ) + // Hql.g:680:8: '|' { Match('|'); if (state.failed) return ; @@ -1980,8 +1980,8 @@ { int _type = BXOR; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:681:6: ( '^' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:681:8: '^' + // Hql.g:681:6: ( '^' ) + // Hql.g:681:8: '^' { Match('^'); if (state.failed) return ; @@ -2003,8 +2003,8 @@ { int _type = BAND; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:682:6: ( '&' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:682:8: '&' + // Hql.g:682:6: ( '&' ) + // Hql.g:682:8: '&' { Match('&'); if (state.failed) return ; @@ -2026,8 +2026,8 @@ { int _type = BNOT; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:683:6: ( '!' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:683:8: '!' + // Hql.g:683:6: ( '!' ) + // Hql.g:683:8: '!' { Match('!'); if (state.failed) return ; @@ -2049,8 +2049,8 @@ { int _type = COMMA; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:685:6: ( ',' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:685:8: ',' + // Hql.g:685:6: ( ',' ) + // Hql.g:685:8: ',' { Match(','); if (state.failed) return ; @@ -2072,8 +2072,8 @@ { int _type = OPEN; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:687:5: ( '(' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:687:7: '(' + // Hql.g:687:5: ( '(' ) + // Hql.g:687:7: '(' { Match('('); if (state.failed) return ; @@ -2095,8 +2095,8 @@ { int _type = CLOSE; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:688:6: ( ')' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:688:8: ')' + // Hql.g:688:6: ( ')' ) + // Hql.g:688:8: ')' { Match(')'); if (state.failed) return ; @@ -2118,8 +2118,8 @@ { int _type = OPEN_BRACKET; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:689:13: ( '[' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:689:15: '[' + // Hql.g:689:13: ( '[' ) + // Hql.g:689:15: '[' { Match('['); if (state.failed) return ; @@ -2141,8 +2141,8 @@ { int _type = CLOSE_BRACKET; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:690:14: ( ']' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:690:16: ']' + // Hql.g:690:14: ( ']' ) + // Hql.g:690:16: ']' { Match(']'); if (state.failed) return ; @@ -2164,8 +2164,8 @@ { int _type = CONCAT; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:692:7: ( '||' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:692:9: '||' + // Hql.g:692:7: ( '||' ) + // Hql.g:692:9: '||' { Match("||"); if (state.failed) return ; @@ -2188,8 +2188,8 @@ { int _type = PLUS; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:693:5: ( '+' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:693:7: '+' + // Hql.g:693:5: ( '+' ) + // Hql.g:693:7: '+' { Match('+'); if (state.failed) return ; @@ -2211,8 +2211,8 @@ { int _type = MINUS; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:694:6: ( '-' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:694:8: '-' + // Hql.g:694:6: ( '-' ) + // Hql.g:694:8: '-' { Match('-'); if (state.failed) return ; @@ -2234,8 +2234,8 @@ { int _type = STAR; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:695:5: ( '*' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:695:7: '*' + // Hql.g:695:5: ( '*' ) + // Hql.g:695:7: '*' { Match('*'); if (state.failed) return ; @@ -2257,8 +2257,8 @@ { int _type = DIV; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:696:4: ( '/' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:696:6: '/' + // Hql.g:696:4: ( '/' ) + // Hql.g:696:6: '/' { Match('/'); if (state.failed) return ; @@ -2280,8 +2280,8 @@ { int _type = COLON; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:697:6: ( ':' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:697:8: ':' + // Hql.g:697:6: ( ':' ) + // Hql.g:697:8: ':' { Match(':'); if (state.failed) return ; @@ -2303,8 +2303,8 @@ { int _type = PARAM; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:698:6: ( '?' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:698:8: '?' + // Hql.g:698:6: ( '?' ) + // Hql.g:698:8: '?' { Match('?'); if (state.failed) return ; @@ -2326,11 +2326,11 @@ { int _type = IDENT; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:701:2: ( ID_START_LETTER ( ID_LETTER )* ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:701:4: ID_START_LETTER ( ID_LETTER )* + // Hql.g:701:2: ( ID_START_LETTER ( ID_LETTER )* ) + // Hql.g:701:4: ID_START_LETTER ( ID_LETTER )* { mID_START_LETTER(); if (state.failed) return ; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:701:20: ( ID_LETTER )* + // Hql.g:701:20: ( ID_LETTER )* do { int alt2 = 2; @@ -2345,7 +2345,7 @@ switch (alt2) { case 1 : - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:701:22: ID_LETTER + // Hql.g:701:22: ID_LETTER { mID_LETTER(); if (state.failed) return ; @@ -2377,8 +2377,8 @@ { try { - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:706:5: ( '_' | '$' | 'a' .. 'z' | 'A' .. 'Z' | '\\u0080' .. '\\ufffe' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g: + // Hql.g:706:5: ( '_' | '$' | 'a' .. 'z' | 'A' .. 'Z' | '\\u0080' .. '\\ufffe' ) + // Hql.g: { if ( input.LA(1) == '$' || (input.LA(1) >= 'A' && input.LA(1) <= 'Z') || input.LA(1) == '_' || (input.LA(1) >= 'a' && input.LA(1) <= 'z') || (input.LA(1) >= '\u0080' && input.LA(1) <= '\uFFFE') ) { @@ -2407,8 +2407,8 @@ { try { - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:715:5: ( ID_START_LETTER | '0' .. '9' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g: + // Hql.g:715:5: ( ID_START_LETTER | '0' .. '9' ) + // Hql.g: { if ( input.LA(1) == '$' || (input.LA(1) >= '0' && input.LA(1) <= '9') || (input.LA(1) >= 'A' && input.LA(1) <= 'Z') || input.LA(1) == '_' || (input.LA(1) >= 'a' && input.LA(1) <= 'z') || (input.LA(1) >= '\u0080' && input.LA(1) <= '\uFFFE') ) { @@ -2439,11 +2439,11 @@ { int _type = QUOTED_String; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:720:4: ( '\\'' ( ( ESCqs )=> ESCqs | ~ '\\'' )* '\\'' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:720:6: '\\'' ( ( ESCqs )=> ESCqs | ~ '\\'' )* '\\'' + // Hql.g:720:4: ( '\\'' ( ( ESCqs )=> ESCqs | ~ '\\'' )* '\\'' ) + // Hql.g:720:6: '\\'' ( ( ESCqs )=> ESCqs | ~ '\\'' )* '\\'' { Match('\''); if (state.failed) return ; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:720:11: ( ( ESCqs )=> ESCqs | ~ '\\'' )* + // Hql.g:720:11: ( ( ESCqs )=> ESCqs | ~ '\\'' )* do { int alt3 = 3; @@ -2469,14 +2469,14 @@ switch (alt3) { case 1 : - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:720:13: ( ESCqs )=> ESCqs + // Hql.g:720:13: ( ESCqs )=> ESCqs { mESCqs(); if (state.failed) return ; } break; case 2 : - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:720:31: ~ '\\'' + // Hql.g:720:31: ~ '\\'' { if ( (input.LA(1) >= '\u0000' && input.LA(1) <= '&') || (input.LA(1) >= '(' && input.LA(1) <= '\uFFFF') ) { @@ -2520,8 +2520,8 @@ { try { - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:725:2: ( '\\'' '\\'' ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:726:3: '\\'' '\\'' + // Hql.g:725:2: ( '\\'' '\\'' ) + // Hql.g:726:3: '\\'' '\\'' { Match('\''); if (state.failed) return ; Match('\''); if (state.failed) return ; @@ -2542,10 +2542,10 @@ { int _type = WS; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:729:5: ( ( ' ' | '\\t' | '\\r' '\\n' | '\\n' | '\\r' ) ) - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:729:9: ( ' ' | '\\t' | '\\r' '\\n' | '\\n' | '\\r' ) + // Hql.g:729:5: ( ( ' ' | '\\t' | '\\r' '\\n' | '\\n' | '\\r' ) ) + // Hql.g:729:9: ( ' ' | '\\t' | '\\r' '\\n' | '\\n' | '\\r' ) { - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:729:9: ( ' ' | '\\t' | '\\r' '\\n' | '\\n' | '\\r' ) + // Hql.g:729:9: ( ' ' | '\\t' | '\\r' '\\n' | '\\n' | '\\r' ) int alt4 = 5; switch ( input.LA(1) ) { @@ -2588,21 +2588,21 @@ switch (alt4) { case 1 : - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:729:13: ' ' + // Hql.g:729:13: ' ' { Match(' '); if (state.failed) return ; } break; case 2 : - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:730:7: '\\t' + // Hql.g:730:7: '\\t' { Match('\t'); if (state.failed) return ; } break; case 3 : - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:731:7: '\\r' '\\n' + // Hql.g:731:7: '\\r' '\\n' { Match('\r'); if (state.failed) return ; Match('\n'); if (state.failed) return ; @@ -2610,14 +2610,14 @@ } break; case 4 : - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:732:7: '\\n' + // Hql.g:732:7: '\\n' { Match('\n'); if (state.failed) return ; } break; case 5 : - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:733:7: '\\r' + // Hql.g:733:7: '\\r' { Match('\r'); if (state.failed) return ; @@ -2655,7 +2655,7 @@ IToken f4 = null; bool isDecimal=false; IToken t=null; - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:742:2: ( '.' ( ( '0' .. '9' )+ ( EXPONENT )? (f1= FLOAT_SUFFIX )? )? | ( '0' ( ( 'x' ) ( HEX_DIGIT )+ | ( '0' .. '7' )+ )? | ( '1' .. '9' ) ( '0' .. '9' )* ) ( ( 'l' ) | {...}? ( '.' ( '0' .. '9' )* ( EXPONENT )? (f2= FLOAT_SUFFIX )? | EXPONENT (f3= FLOAT_SUFFIX )? | f4= FLOAT_SUFFIX ) )? ) + // Hql.g:742:2: ( '.' ( ( '0' .. '9' )+ ( EXPONENT )? (f1= FLOAT_SUFFIX )? )? | ( '0' ( ( 'x' ) ( HEX_DIGIT )+ | ( '0' .. '7' )+ )? | ( '1' .. '9' ) ( '0' .. '9' )* ) ( ( 'l' ) | {...}? ( '.' ( '0' .. '9' )* ( EXPONENT )? (f2= FLOAT_SUFFIX )? | EXPONENT (f3= FLOAT_SUFFIX )? | f4= FLOAT_SUFFIX ) )? ) int alt20 = 2; int LA20_0 = input.LA(1); @@ -2678,14 +2678,14 @@ switch (alt20) { case 1 : - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:742:6: '.' ( ( '0' .. '9' )+ ( EXPONENT )? (f1= FLOAT_SUFFIX )? )? + // Hql.g:742:6: '.' ( ( '0' .. '9' )+ ( EXPONENT )? (f1= FLOAT_SUFFIX )? )? { Match('.'); if (state.failed) return ; if ( (state.backtracking==0) ) { _type = DOT; } - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:743:4: ( ( '0' .. '9' )+ ( EXPONENT )? (f1= FLOAT_SUFFIX )? )? + // Hql.g:743:4: ( ( '0' .. '9' )+ ( EXPONENT )? (f1= FLOAT_SUFFIX )? )? int alt8 = 2; int LA8_0 = input.LA(1); @@ -2696,9 +2696,9 @@ switch (alt8) { case 1 : - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:743:6: ( '0' .. '9' )+ ( EXPONENT )? (f1= FLOAT_SUFFIX )? + // Hql.g:743:6: ( '0' .. '9' )+ ( EXPONENT )? (f1= FLOAT_SUFFIX )? { - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:743:6: ( '0' .. '9' )+ + // Hql.g:743:6: ( '0' .. '9' )+ int cnt5 = 0; do { @@ -2714,7 +2714,7 @@ switch (alt5) { case 1 : - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:743:7: '0' .. '9' + // Hql.g:743:7: '0' .. '9' { MatchRange('0','9'); if (state.failed) return ; @@ -2734,7 +2734,7 @@ loop5: ; // Stops C# compiler whining that label 'loop5' has no statements - // C:\\Users\\Steve\\Documents\\NHibernate\\nhibernate\\src\\NHibernate\\Hql\\Ast\\ANTLR\\Hql.g:743:18: ( EXPONENT )? + // Hql.g:743:18: ( EXPONENT )? int alt6 = 2; int LA6_0 = input.LA(1); @@ -2745,7 +2745,7 @@ ... [truncated message content] |
From: <pa...@us...> - 2011-01-15 17:38:12
|
Revision: 5350 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5350&view=rev Author: patearl Date: 2011-01-15 17:38:05 +0000 (Sat, 15 Jan 2011) Log Message: ----------- Added more grammar build files, options, and instructions. Modified Paths: -------------- trunk/nhibernate/ShowBuildMenu.bat Added Paths: ----------- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/AntlrHql.bat trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/AntlrHqlDebug.bat trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/AntlrHqlSqlWalker.bat trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/AntlrHqlSqlWalkerDebug.bat Removed Paths: ------------- trunk/nhibernate/Tools/Antlr/AntlrHql.bat Modified: trunk/nhibernate/ShowBuildMenu.bat =================================================================== --- trunk/nhibernate/ShowBuildMenu.bat 2011-01-15 17:05:00 UTC (rev 5349) +++ trunk/nhibernate/ShowBuildMenu.bat 2011-01-15 17:38:05 UTC (rev 5350) @@ -15,8 +15,10 @@ echo E. Build NHibernate (Debug) echo F. Build NHibernate (Release) echo G. Build Release Package (Also runs tests and creates documentation) -echo H. Run Antlr on Hql.g to regenerate HqlParser.cs and HqlLexer.cs. echo. +echo --- GRAMMAR --- +echo H. Grammar operations (related to Hql.g and HqlSqlWalker.g) +echo. if exist %SYSTEMROOT%\System32\choice.exe ( goto prompt-choice ) goto prompt-set @@ -25,7 +27,7 @@ choice /C:abcdefgh if errorlevel 255 goto end -if errorlevel 8 goto antlr-hql +if errorlevel 8 goto grammar if errorlevel 7 goto build-release-package if errorlevel 6 goto build-release if errorlevel 5 goto build-debug @@ -45,7 +47,7 @@ if /I "%OPT%"=="E" goto build-debug if /I "%OPT%"=="F" goto build-release if /I "%OPT%"=="G" goto build-release-package -if /I "%OPT%"=="H" goto antlr-hql +if /I "%OPT%"=="H" goto grammar goto prompt-set :help-test-setup @@ -107,11 +109,65 @@ %NANT% test goto end +:grammar +echo. +echo --- GRAMMAR --- +echo A. Regenerate HqlLexer.cs and HqlParser.cs from Hql.g. +echo B. Regenerate HqlSqlWalker.cs from HqlSqlWalker.g. +echo C. Regenerate Hql.g in debug mode. +echo D. Regenerate HqlSqlWalker.g in debug mode. +echo E. Quick instructions on using debug mode. +echo. + +if exist %SYSTEMROOT%\System32\choice.exe ( goto grammar-prompt-choice ) +goto grammar-prompt-set + +:grammar-prompt-choice +choice /C:abcde + +if errorlevel 255 goto end +if errorlevel 5 goto antlr-debug +if errorlevel 4 goto antlr-hqlsqlwalker-debug +if errorlevel 3 goto antlr-hql-debug +if errorlevel 2 goto antlr-hqlsqlwalker +if errorlevel 1 goto antlr-hql +if errorlevel 0 goto end + +:grammar-prompt-set +set /p OPT=[A, B, C, D, E]? + +if /I "%OPT%"=="A" goto antlr-hql +if /I "%OPT%"=="B" goto antlr-hqlsqlwalker +if /I "%OPT%"=="C" goto antlr-hql-debug +if /I "%OPT%"=="D" goto antlr-hqlsqlwalker-debug +if /I "%OPT%"=="E" goto antlr-debug +goto grammar-prompt-set + :antlr-hql -rem NANT is 32-bit and refuses to run 64-bit Java, so we just use a batch file instead. :( -call Tools\Antlr\AntlrHql.bat +call src\NHibernate\Hql\Ast\ANTLR\AntlrHql.bat goto end +:antlr-hqlsqlwalker +call src\NHibernate\Hql\Ast\ANTLR\AntlrHqlSqlWalker.bat +goto end + +:antlr-hql-debug +call src\NHibernate\Hql\Ast\ANTLR\AntlrHqlDebug.bat +goto end + +:antlr-hqlsqlwalker-debug +call src\NHibernate\Hql\Ast\ANTLR\AntlrHqlSqlWalkerDebug.bat +goto end + +:antlr-debug +echo To use the debug grammar: +echo 1. Create a unit test that runs the hql parser on the input you're interested in. +echo 2. Run the unit test. It will appear to stall. +echo 3. Download and run AntlrWorks. +echo 4. Choose "Debug Remote" and allow the default ports. +echo 5. You should now be connected and able to step through your grammar. +goto end + :end popd pause Deleted: trunk/nhibernate/Tools/Antlr/AntlrHql.bat =================================================================== --- trunk/nhibernate/Tools/Antlr/AntlrHql.bat 2011-01-15 17:05:00 UTC (rev 5349) +++ trunk/nhibernate/Tools/Antlr/AntlrHql.bat 2011-01-15 17:38:05 UTC (rev 5350) @@ -1,4 +0,0 @@ -@echo off -pushd %~dp0\..\..\src\NHibernate\Hql\Ast\ANTLR -java.exe -cp ..\..\..\..\..\Tools\Antlr\antlr-3.2.jar org.antlr.Tool -o Generated Hql.g -popd \ No newline at end of file Copied: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/AntlrHql.bat (from rev 5345, trunk/nhibernate/Tools/Antlr/AntlrHql.bat) =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/AntlrHql.bat (rev 0) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/AntlrHql.bat 2011-01-15 17:38:05 UTC (rev 5350) @@ -0,0 +1,5 @@ +rem I wanted to put this in the nant build file, but I had very annoying problems with 64-bit java running from the 32-bit nant process. +@echo off +pushd %~dp0 +java.exe -cp ..\..\..\..\..\Tools\Antlr\antlr-3.2.jar org.antlr.Tool -o Generated Hql.g +popd \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/AntlrHqlDebug.bat =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/AntlrHqlDebug.bat (rev 0) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/AntlrHqlDebug.bat 2011-01-15 17:38:05 UTC (rev 5350) @@ -0,0 +1,5 @@ +rem I wanted to put this in the nant build file, but I had very annoying problems with 64-bit java running from the 32-bit nant process. +@echo off +pushd %~dp0 +java.exe -cp ..\..\..\..\..\Tools\Antlr\antlr-3.2.jar org.antlr.Tool -debug -o Generated Hql.g +popd \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/AntlrHqlSqlWalker.bat =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/AntlrHqlSqlWalker.bat (rev 0) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/AntlrHqlSqlWalker.bat 2011-01-15 17:38:05 UTC (rev 5350) @@ -0,0 +1,5 @@ +rem I wanted to put this in the nant build file, but I had very annoying problems with 64-bit java running from the 32-bit nant process. +@echo off +pushd %~dp0 +java.exe -cp ..\..\..\..\..\Tools\Antlr\antlr-3.2.jar org.antlr.Tool -o Generated HqlSqlWalker.g +popd \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/AntlrHqlSqlWalkerDebug.bat =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/AntlrHqlSqlWalkerDebug.bat (rev 0) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/AntlrHqlSqlWalkerDebug.bat 2011-01-15 17:38:05 UTC (rev 5350) @@ -0,0 +1,5 @@ +rem I wanted to put this in the nant build file, but I had very annoying problems with 64-bit java running from the 32-bit nant process. +@echo off +pushd %~dp0 +java.exe -cp ..\..\..\..\..\Tools\Antlr\antlr-3.2.jar org.antlr.Tool -debug -o Generated HqlSqlWalker.g +popd \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jul...@us...> - 2011-01-17 15:04:11
|
Revision: 5361 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5361&view=rev Author: julian-maughan Date: 2011-01-17 15:04:02 +0000 (Mon, 17 Jan 2011) Log Message: ----------- Fixed merge failure when there is a transient entity reachable by multiple paths and at least one path does not cascade on merge [ref. NH-2481]. Port from Hibernate. Modified Paths: -------------- trunk/nhibernate/releasenotes.txt trunk/nhibernate/src/NHibernate/Event/Default/DefaultMergeEventListener.cs trunk/nhibernate/src/NHibernate/NHibernate.csproj trunk/nhibernate/src/NHibernate/Type/EntityType.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH479/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate/Event/Default/EventCache.cs trunk/nhibernate/src/NHibernate.Test/Cascade/A.cs trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/ trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/CascadeMergeToChildBeforeParent.hbm.xml trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/CascadeMergeToChildBeforeParentTest.cs trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/MultiPathCircleCascade.hbm.xml trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/MultiPathCircleCascadeTest.cs trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/Node.cs trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/Route.cs trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/Tour.cs trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/Transport.cs trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/Vehicle.cs trunk/nhibernate/src/NHibernate.Test/Cascade/G.cs trunk/nhibernate/src/NHibernate.Test/Cascade/H.cs trunk/nhibernate/src/NHibernate.Test/Cascade/MultiPathCascade.hbm.xml trunk/nhibernate/src/NHibernate.Test/Cascade/MultiPathCascadeTest.cs Modified: trunk/nhibernate/releasenotes.txt =================================================================== --- trunk/nhibernate/releasenotes.txt 2011-01-17 05:55:48 UTC (rev 5360) +++ trunk/nhibernate/releasenotes.txt 2011-01-17 15:04:02 UTC (rev 5361) @@ -1,4 +1,8 @@ ** Known BREAKING CHANGES from NH3.0.0.GA to NH3.0.1.GA + + ##### Run time ##### + * [NH-2481] - An exception will now be thrown when an entity references a transient entity and cascade="merge|all" is not configured on the association + ##### Possible Breaking Changes ##### * [NH-2461] - Signature change for IQuery.SetParameterList @@ -10,7 +14,7 @@ ##### Run time ##### * [NH-2199] - null values in maps/dictionaries are no longer silenty ignored/deleted * [NH-1894] - SybaseAnywhereDialect has been removed, and replaced with SybaseASA9Dialect. - - Sybase Adaptive Server Enterprise (ASE) dialects removed. + - Sybase Adaptive Server Enterprise (ASE) dialects removed. ##### Possible Breaking Changes ##### * [NH-2251] - Signature change for GetLimitString in Dialect Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultMergeEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/DefaultMergeEventListener.cs 2011-01-17 05:55:48 UTC (rev 5360) +++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultMergeEventListener.cs 2011-01-17 15:04:02 UTC (rev 5361) @@ -1,6 +1,7 @@ using System; using System.Collections; +using Iesi.Collections.Generic; using NHibernate.Classic; using NHibernate.Engine; using NHibernate.Intercept; @@ -11,9 +12,8 @@ namespace NHibernate.Event.Default { - /// <summary> - /// Defines the default copy event listener used by hibernate for copying entities - /// in response to generated copy events. + /// <summary> + /// Defines the default event listener for handling of merge events generated from a session. /// </summary> [Serializable] public class DefaultMergeEventListener : AbstractSaveEventListener, IMergeEventListener @@ -32,16 +32,58 @@ protected override IDictionary GetMergeMap(object anything) { - return IdentityMap.Invert((IDictionary)anything); + return ((EventCache)anything).InvertMap(); } public virtual void OnMerge(MergeEvent @event) { - OnMerge(@event, IdentityMap.Instantiate(10)); + EventCache copyCache = new EventCache(); + + OnMerge(@event, copyCache); + + // TODO: iteratively get transient entities and retry merge until one of the following conditions: + // 1) transientCopyCache.size() == 0 + // 2) transientCopyCache.size() is not decreasing and copyCache.size() is not increasing + + // TODO: find out if retrying can add entities to copyCache (don't think it can...) + // For now, just retry once; throw TransientObjectException if there are still any transient entities + + IDictionary transientCopyCache = this.GetTransientCopyCache(@event, copyCache); + + if (transientCopyCache.Count > 0) + { + RetryMergeTransientEntities(@event, transientCopyCache, copyCache); + + // find any entities that are still transient after retry + transientCopyCache = this.GetTransientCopyCache(@event, copyCache); + + if (transientCopyCache.Count > 0) + { + ISet<string> transientEntityNames = new HashedSet<string>(); + + foreach (object transientEntity in transientCopyCache.Keys) + { + string transientEntityName = @event.Session.GuessEntityName(transientEntity); + + transientEntityNames.Add(transientEntityName); + + log.InfoFormat( + "transient instance could not be processed by merge: {0} [{1}]", + transientEntityName, + transientEntity.ToString()); + } + + throw new TransientObjectException("one or more objects is an unsaved transient instance - save transient instance(s) before merging: " + transientEntityNames); + } + } + + copyCache.Clear(); + copyCache = null; } - - public virtual void OnMerge(MergeEvent @event, IDictionary copyCache) + + public virtual void OnMerge(MergeEvent @event, IDictionary copiedAlready) { + EventCache copyCache = (EventCache)copiedAlready; IEventSource source = @event.Session; object original = @event.Original; @@ -54,7 +96,7 @@ if (li.IsUninitialized) { log.Debug("ignoring uninitialized proxy"); - @event.Result = source.Load(li.PersistentClass, li.Identifier); + @event.Result = source.Load(li.EntityName, li.Identifier); return; //EARLY EXIT! } else @@ -66,14 +108,20 @@ { entity = original; } - - if (copyCache.Contains(entity)) + + if (copyCache.Contains(entity) && copyCache.IsOperatedOn(entity)) { - log.Debug("already merged"); + log.Debug("already in merge process"); @event.Result = entity; } else { + if (copyCache.Contains(entity)) + { + log.Info("already in copyCache; setting in merge process"); + copyCache.SetOperatedOn(entity, true); + } + @event.Entity = entity; EntityState entityState = EntityState.Undefined; @@ -129,11 +177,12 @@ log.Debug("ignoring persistent instance"); //TODO: check that entry.getIdentifier().equals(requestedId) + object entity = @event.Entity; IEventSource source = @event.Session; IEntityPersister persister = source.GetEntityPersister(@event.EntityName, entity); - copyCache[entity] = entity; //before cascade! + ((EventCache)copyCache).Add(entity, entity, true); //before cascade! CascadeOnMerge(source, persister, entity, copyCache); CopyValues(persister, entity, entity, source, copyCache); @@ -143,45 +192,100 @@ protected virtual void EntityIsTransient(MergeEvent @event, IDictionary copyCache) { - log.Debug("merging transient instance"); + log.Info("merging transient instance"); object entity = @event.Entity; IEventSource source = @event.Session; IEntityPersister persister = source.GetEntityPersister(@event.EntityName, entity); string entityName = persister.EntityName; + + @event.Result = this.MergeTransientEntity(entity, entityName, @event.RequestedId, source, copyCache); + } + + private object MergeTransientEntity(object entity, string entityName, object requestedId, IEventSource source, IDictionary copyCache) + { + IEntityPersister persister = source.GetEntityPersister(entityName, entity); object id = persister.HasIdentifierProperty ? persister.GetIdentifier(entity, source.EntityMode) : null; + object copy = null; + + if (copyCache.Contains(entity)) + { + copy = copyCache[entity]; + persister.SetIdentifier(copy, id, source.EntityMode); + } + else + { + copy = source.Instantiate(persister, id); + ((EventCache)copyCache).Add(entity, copy, true); // before cascade! + } - object copy = persister.Instantiate(id, source.EntityMode); // should this be Session.instantiate(Persister, ...)? - copyCache[entity] = copy; //before cascade! - // cascade first, so that all unsaved objects get their // copy created before we actually copy //cascadeOnMerge(event, persister, entity, copyCache, Cascades.CASCADE_BEFORE_MERGE); base.CascadeBeforeSave(source, persister, entity, copyCache); CopyValues(persister, entity, copy, source, copyCache, ForeignKeyDirection.ForeignKeyFromParent); - //this bit is only *really* absolutely necessary for handling - //requestedId, but is also good if we merge multiple object - //graphs, since it helps ensure uniqueness - object requestedId = @event.RequestedId; - if (requestedId == null) + try { - SaveWithGeneratedId(copy, entityName, copyCache, source, false); + // try saving; check for non-nullable properties that are null or transient entities before saving + this.SaveTransientEntity(copy, entityName, requestedId, source, copyCache); } - else + catch (PropertyValueException ex) { - SaveWithRequestedId(copy, requestedId, entityName, copyCache, source); + string propertyName = ex.PropertyName; + object propertyFromCopy = persister.GetPropertyValue(copy, propertyName, source.EntityMode); + object propertyFromEntity = persister.GetPropertyValue(entity, propertyName, source.EntityMode); + IType propertyType = persister.GetPropertyType(propertyName); + EntityEntry copyEntry = source.PersistenceContext.GetEntry(copy); + + if (propertyFromCopy == null || !propertyType.IsEntityType) + { + log.InfoFormat("property '{0}.{1}' is null or not an entity; {1} =[{2}]", copyEntry.EntityName, propertyName, propertyFromCopy); + throw; + } + + if (!copyCache.Contains(propertyFromEntity)) + { + log.InfoFormat("property '{0}.{1}' from original entity is not in copyCache; {1} =[{2}]", copyEntry.EntityName, propertyName, propertyFromEntity); + throw; + } + + if (((EventCache)copyCache).IsOperatedOn(propertyFromEntity)) + { + log.InfoFormat("property '{0}.{1}' from original entity is in copyCache and is in the process of being merged; {1} =[{2}]", copyEntry.EntityName, propertyName, propertyFromEntity); + } + else + { + log.InfoFormat("property '{0}.{1}' from original entity is in copyCache and is not in the process of being merged; {1} =[{2}]", copyEntry.EntityName, propertyName, propertyFromEntity); + } + + // continue...; we'll find out if it ends up not getting saved later } - - // cascade first, so that all unsaved objects get their + + // cascade first, so that all unsaved objects get their // copy created before we actually copy base.CascadeAfterSave(source, persister, entity, copyCache); CopyValues(persister, entity, copy, source, copyCache, ForeignKeyDirection.ForeignKeyToParent); - @event.Result = copy; + return copy; } + + private void SaveTransientEntity(object entity, string entityName, object requestedId, IEventSource source, IDictionary copyCache) + { + // this bit is only *really* absolutely necessary for handling + // requestedId, but is also good if we merge multiple object + // graphs, since it helps ensure uniqueness + if (requestedId == null) + { + SaveWithGeneratedId(entity, entityName, copyCache, source, false); + } + else + { + SaveWithRequestedId(entity, requestedId, entityName, copyCache, source); + } + } protected virtual void EntityIsDetached(MergeEvent @event, IDictionary copyCache) { @@ -211,7 +315,7 @@ string previousFetchProfile = source.FetchProfile; source.FetchProfile = "merge"; - //we must clone embedded composite identifiers, or + //we must clone embedded composite identifiers, or //we will get back the same instance that we pass in object clonedIdentifier = persister.IdentifierType.DeepCopy(id, source.EntityMode, source.Factory); object result = source.Get(persister.EntityName, clonedIdentifier); @@ -220,7 +324,7 @@ if (result == null) { - //TODO: we should throw an exception if we really *know* for sure + //TODO: we should throw an exception if we really *know* for sure // that this is a detached instance, rather than just assuming //throw new StaleObjectStateException(entityName, id); @@ -237,7 +341,7 @@ return; } - copyCache[entity] = result; //before cascade! + ((EventCache)copyCache).Add(entity, result, true); //before cascade! object target = source.PersistenceContext.Unproxy(result); if (target == entity) @@ -258,7 +362,7 @@ throw new StaleObjectStateException(persister.EntityName, id); } - // cascade first, so that all unsaved objects get their + // cascade first, so that all unsaved objects get their // copy created before we actually copy CascadeOnMerge(source, persister, entity, copyCache); CopyValues(persister, entity, target, source, copyCache); @@ -357,8 +461,7 @@ persister.SetPropertyValues(target, copiedValues, source.EntityMode); } - protected virtual void CopyValues(IEntityPersister persister, object entity, object target, - ISessionImplementor source, IDictionary copyCache, ForeignKeyDirection foreignKeyDirection) + protected virtual void CopyValues(IEntityPersister persister, object entity, object target, ISessionImplementor source, IDictionary copyCache, ForeignKeyDirection foreignKeyDirection) { object[] copiedValues; @@ -383,7 +486,7 @@ persister.SetPropertyValues(target, copiedValues, source.EntityMode); } - /// <summary> + /// <summary> /// Perform any cascades needed as part of this copy event. /// </summary> /// <param name="source">The merge event being processed. </param> @@ -403,6 +506,92 @@ } } + /// <summary> + /// Determine which merged entities in the copyCache are transient. + /// </summary> + /// <param name="event"></param> + /// <param name="copyCache"></param> + /// <returns></returns> + /// <remarks>Should this method be on the EventCache class?</remarks> + protected EventCache GetTransientCopyCache(MergeEvent @event, EventCache copyCache) + { + EventCache transientCopyCache = new EventCache(); + + foreach(object entity in copyCache.Keys) + { + object entityCopy = copyCache[entity]; + + if (entityCopy is INHibernateProxy) + entityCopy = ((INHibernateProxy)entityCopy).HibernateLazyInitializer.GetImplementation(); + + // NH-specific: Disregard entities that implement ILifecycle and manage their own state - they + // don't have an EntityEntry, and we can't determine if they are transient or not + if (entityCopy is ILifecycle) + continue; + + EntityEntry copyEntry = @event.Session.PersistenceContext.GetEntry(entityCopy); + + if (copyEntry == null) + { + // entity name will not be available for non-POJO entities + // TODO: cache the entity name somewhere so that it is available to this exception + log.InfoFormat( + "transient instance could not be processed by merge: {0} [{1}]", + @event.Session.GuessEntityName(entityCopy), + entity); + + // merge did not cascade to this entity; it's in copyCache because a + // different entity has a non-nullable reference to it; + // this entity should not be put in transientCopyCache, because it was + // not included in the merge; + + throw new TransientObjectException( + "object is an unsaved transient instance - save the transient instance before merging: " + @event.Session.GuessEntityName(entityCopy)); + } + else if (copyEntry.Status == Status.Saving) + { + transientCopyCache.Add(entity, entityCopy, copyCache.IsOperatedOn(entity)); + } + else if (copyEntry.Status != Status.Loaded && copyEntry.Status != Status.ReadOnly) + { + throw new AssertionFailure( + String.Format( + "Merged entity does not have status set to MANAGED or READ_ONLY; {0} status = {1}", + entityCopy, + copyEntry.Status)); + } + } + return transientCopyCache; + } + + /// <summary> + /// Retry merging transient entities + /// </summary> + /// <param name="event"></param> + /// <param name="transientCopyCache"></param> + /// <param name="copyCache"></param> + protected void RetryMergeTransientEntities(MergeEvent @event, IDictionary transientCopyCache, EventCache copyCache) + { + // TODO: The order in which entities are saved may matter (e.g., a particular + // transient entity may need to be saved before other transient entities can + // be saved). + // Keep retrying the batch of transient entities until either: + // 1) there are no transient entities left in transientCopyCache + // or 2) no transient entities were saved in the last batch. + // For now, just run through the transient entities and retry the merge + + foreach(object entity in transientCopyCache.Keys) + { + object copy = transientCopyCache[entity]; + EntityEntry copyEntry = @event.Session.PersistenceContext.GetEntry(copy); + + if (entity == @event.Entity) + MergeTransientEntity(entity, copyEntry.EntityName, @event.RequestedId, @event.Session, copyCache); + else + MergeTransientEntity(entity, copyEntry.EntityName, copyEntry.Id, @event.Session, copyCache); + } + } + /// <summary> Cascade behavior is redefined by this subclass, disable superclass behavior</summary> protected override void CascadeAfterSave(IEventSource source, IEntityPersister persister, object entity, object anything) { Added: trunk/nhibernate/src/NHibernate/Event/Default/EventCache.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/EventCache.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Event/Default/EventCache.cs 2011-01-17 15:04:02 UTC (rev 5361) @@ -0,0 +1,186 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using Iesi.Collections; +using NHibernate.Util; + +namespace NHibernate.Event.Default +{ + public class EventCache : IDictionary + { + private IDictionary entityToCopyMap = IdentityMap.Instantiate(10); + // key is an entity involved with the operation performed by the listener; + // value can be either a copy of the entity or the entity itself + + private IDictionary entityToOperatedOnFlagMap = IdentityMap.Instantiate(10); + // key is an entity involved with the operation performed by the listener; + // value is a flag indicating if the listener explicitly operates on the entity + + #region ICollection Implementation + + /// <summary> + /// Returns the number of entity-copy mappings in this EventCache + /// </summary> + public int Count + { + get { return entityToCopyMap.Count; } + } + + public bool IsSynchronized + { + get { return false; } + } + + public object SyncRoot + { + get { return this; } + } + + public void CopyTo(Array array, int index) + { + if (array == null) + throw new ArgumentNullException("array"); + if (index < 0) + throw new ArgumentOutOfRangeException("arrayIndex is less than 0"); + if (entityToCopyMap.Count + index + 1 > array.Length) + throw new ArgumentException("The number of elements in the source ICollection<T> is greater than the available space from arrayIndex to the end of the destination array."); + + entityToCopyMap.CopyTo(array, index); + } + + #endregion + + #region IEnumerable implementation + + IEnumerator IEnumerable.GetEnumerator() + { + return ((IEnumerable)entityToCopyMap).GetEnumerator(); + } + + #endregion + + #region IDictionary implementation + + public object this[object key] + { + get + { + return entityToCopyMap[key]; + } + set + { + this.Add(key, value); + } + } + + public bool IsReadOnly + { + get { return false; } + } + + public bool IsFixedSize + { + get { return false; } + } + + public ICollection Keys + { + get { return entityToCopyMap.Keys; } + } + + public ICollection Values + { + get { return entityToCopyMap.Values; } + } + + public void Add(object key, object value) + { + if (key == null) + throw new ArgumentNullException("key"); + if (value == null) + throw new ArgumentNullException("value"); + + entityToCopyMap.Add(key, value); + entityToOperatedOnFlagMap.Add(key, false); + } + + public bool Contains(object key) + { + return entityToCopyMap.Contains(key); + } + + public void Remove(object key) + { + entityToCopyMap.Remove(key); + entityToOperatedOnFlagMap.Remove(key); + } + + public IDictionaryEnumerator GetEnumerator() + { + return entityToCopyMap.GetEnumerator(); + } + + public void Clear() + { + entityToCopyMap.Clear(); + entityToOperatedOnFlagMap.Clear(); + } + + #endregion + + /// <summary> + /// Associates the specified entity with the specified copy in this EventCache; + /// </summary> + /// <param name="entity"></param> + /// <param name="copy"></param> + /// <param name="isOperatedOn">indicates if the operation is performed on the entity</param> + public void Add(object entity, object copy, bool isOperatedOn) + { + if (entity == null) + throw new ArgumentNullException("null entities are not supported", "entity"); + if (copy == null) + throw new ArgumentNullException("null entity copies are not supported", "copy"); + + entityToCopyMap.Add(entity, copy); + entityToOperatedOnFlagMap.Add(entity, isOperatedOn); + } + + /// <summary> + /// Returns copy-entity mappings + /// </summary> + /// <returns></returns> + public IDictionary InvertMap() + { + return IdentityMap.Invert(entityToCopyMap); + } + + /// <summary> + /// Returns true if the listener is performing the operation on the specified entity. + /// </summary> + /// <param name="entity">Must be non-null and this EventCache must contain a mapping for this entity</param> + /// <returns></returns> + public bool IsOperatedOn(object entity) + { + if (entity == null) + throw new ArgumentNullException("null entities are not supported", "entity"); + + return (bool)entityToOperatedOnFlagMap[entity]; + } + + /// <summary> + /// Set flag to indicate if the listener is performing the operation on the specified entity. + /// </summary> + /// <param name="entity"></param> + /// <param name="isOperatedOn"></param> + public void SetOperatedOn(object entity, bool isOperatedOn) + { + if (entity == null) + throw new ArgumentNullException("null entities are not supported", "entity"); + + if (!entityToOperatedOnFlagMap.Contains(entity) || !entityToCopyMap.Contains(entity)) + throw new AssertionFailure("called EventCache.SetOperatedOn() for entity not found in EventCache"); + + entityToOperatedOnFlagMap[entity] = isOperatedOn; + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj =================================================================== --- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2011-01-17 05:55:48 UTC (rev 5360) +++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2011-01-17 15:04:02 UTC (rev 5361) @@ -165,6 +165,7 @@ <Compile Include="Engine\TypedValue.cs" /> <Compile Include="Engine\UnsavedValueFactory.cs" /> <Compile Include="Engine\Versioning.cs" /> + <Compile Include="Event\Default\EventCache.cs" /> <Compile Include="Exceptions\ADOExceptionHelper.cs" /> <Compile Include="Criterion\AbstractCriterion.cs" /> <Compile Include="Criterion\AndExpression.cs" /> Modified: trunk/nhibernate/src/NHibernate/Type/EntityType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/EntityType.cs 2011-01-17 05:55:48 UTC (rev 5360) +++ trunk/nhibernate/src/NHibernate/Type/EntityType.cs 2011-01-17 15:04:02 UTC (rev 5361) @@ -243,7 +243,6 @@ return value; //special case ... this is the leaf of the containment graph, even though not immutable } - /// <summary></summary> public override bool IsMutable { get { return false; } @@ -251,8 +250,7 @@ public abstract bool IsOneToOne { get; } - public override object Replace(object original, object target, ISessionImplementor session, object owner, - IDictionary copyCache) + public override object Replace(object original, object target, ISessionImplementor session, object owner, IDictionary copyCache) { if (original == null) { @@ -269,17 +267,26 @@ { return target; } - object id = GetIdentifier(original, session); - if (id == null) + if (session.GetContextEntityIdentifier(original) == null && ForeignKeys.IsTransient(associatedEntityName, original, false, session)) { - throw new AssertionFailure("cannot copy a reference to an object with a null id"); + object copy = session.Factory.GetEntityPersister(associatedEntityName).Instantiate(null, session.EntityMode); + //TODO: should this be Session.instantiate(Persister, ...)? + copyCache.Add(original, copy); + return copy; } - id = GetIdentifierOrUniqueKeyType(session.Factory).Replace(id, null, session, owner, copyCache); - return ResolveIdentifier(id, session, owner); + else + { + object id = GetIdentifier(original, session); + if (id == null) + { + throw new AssertionFailure("non-transient entity has a null id"); + } + id = GetIdentifierOrUniqueKeyType(session.Factory).Replace(id, null, session, owner, copyCache); + return ResolveIdentifier(id, session, owner); + } } } - /// <summary></summary> public override bool IsAssociationType { get { return true; } @@ -612,4 +619,4 @@ } } -} +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Cascade/A.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Cascade/A.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Cascade/A.cs 2011-01-17 15:04:02 UTC (rev 5361) @@ -0,0 +1,58 @@ +using System; +using Iesi.Collections.Generic; + +namespace NHibernate.Test.Cascade +{ + public class A + { + private long id; + private string data; + private ISet<H> hs; // A 1 - * H + private G g; // A 1 - 1 G + + public A() + { + hs = new HashedSet<H>(); + } + + public A(string data) : this() + { + this.data = data; + } + + public virtual long Id + { + get { return id; } + set { id = value; } + } + + public virtual string Data + { + get { return data; } + set { data = value; } + } + + public virtual G G + { + get { return g; } + set { g = value; } + } + + public virtual ISet<H> Hs + { + get { return hs; } + set { hs = value; } + } + + public virtual void AddH(H h) + { + hs.Add(h); + h.A = this; + } + + public override string ToString() + { + return "A[" + id + ", " + data + "]"; + } + } +} \ No newline at end of file Property changes on: trunk/nhibernate/src/NHibernate.Test/Cascade/Circle ___________________________________________________________________ Added: bugtraq:url + http://jira.nhibernate.org/browse/%BUGID% Added: bugtraq:logregex + NH-\d+ Added: trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/CascadeMergeToChildBeforeParent.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/CascadeMergeToChildBeforeParent.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/CascadeMergeToChildBeforeParent.hbm.xml 2011-01-17 15:04:02 UTC (rev 5361) @@ -0,0 +1,139 @@ +<?xml version="1.0"?> +<hibernate-mapping + xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.Cascade.Circle"> + + <class name="Route" table="HB2_Route"> + + <id name="RouteId" type="long"> + <generator class="native" /> + </id> + + <version name="Version" column="VERS" type="long" /> + + <property name="Name" type="string" not-null="true" /> + + <set name="Nodes" inverse="true" cascade="persist,merge,refresh"> + <key column="RouteId" /> + <one-to-many class="Node" /> + </set> + + <set name="Vehicles" inverse="true" cascade="persist,merge,refresh"> + <key column="routeId" /> + <one-to-many class="Vehicle" /> + </set> + + </class> + + <class name="Tour" table="HB2_Tour"> + + <id name="TourId" type="long"> + <generator class="native" /> + </id> + + <version name="Version" column="VERS" type="long" /> + + <property name="Name" type="string" not-null="true" /> + + <set name="Nodes" inverse="true" lazy="true" cascade="merge,refresh"> + <key column="TourId" /> + <one-to-many class="Node" /> + </set> + + </class> + + <class name="Transport" table="HB2_Transport"> + + <id name="TransportId" type="long"> + <generator class="native" /> + </id> + + <version name="Version" column="VERS" type="long" /> + + <property name="Name" type="string" not-null="true" /> + + <many-to-one name="PickupNode" + column="PickupNodeId" + unique="true" + not-null="true" + cascade="merge,refresh" + lazy="false" /> + + <many-to-one name="DeliveryNode" + column="DeliveryNodeId" + unique="true" + not-null="true" + cascade="merge,refresh" + lazy="false" /> + + <many-to-one name="Vehicle" + column="VehicleId" + unique="false" + not-null="true" + cascade="none" + lazy="false" /> + + </class> + + <class name="Vehicle" table="HB2_Vehicle"> + + <id name="VehicleId" type="long"> + <generator class="native" /> + </id> + + <version name="Version" column="VERS" type="long" /> + + <property name="Name" /> + + <set name="Transports" inverse="false" lazy="true" cascade="merge,refresh"> + <key column="VehicleId" /> + <one-to-many class="Transport" not-found="exception" /> + </set> + + <many-to-one name="Route" + column="RouteId" + unique="false" + not-null="true" + cascade="none" + lazy="false" /> + + </class> + + <class name="Node" table="HB2_Node"> + + <id name="NodeId" type="long"> + <generator class="native" /> + </id> + + <version name="Version" column="VERS" type="long" /> + + <property name="Name" type="string" not-null="true" /> + + <set name="DeliveryTransports" inverse="true" lazy="true" cascade="merge,refresh"> + <key column="DeliveryNodeId" /> + <one-to-many class="Transport" /> + </set> + + <set name="PickupTransports" inverse="true" lazy="true" cascade="merge,refresh"> + <key column="PickupNodeId" /> + <one-to-many class="Transport" /> + </set> + + <many-to-one name="Route" + column="RouteId" + unique="false" + not-null="true" + cascade="none" + lazy="false" /> + + <many-to-one name="Tour" + column="TourId" + unique="false" + not-null="false" + cascade="merge,refresh" + lazy="false" /> + + </class> + +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/CascadeMergeToChildBeforeParentTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/CascadeMergeToChildBeforeParentTest.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/CascadeMergeToChildBeforeParentTest.cs 2011-01-17 15:04:02 UTC (rev 5361) @@ -0,0 +1,261 @@ +using System; +using System.Collections; +using System.Linq; +using NHibernate.Engine; +using NHibernate.Test; +using NUnit.Framework; + +namespace NHibernate.Test.Cascade.Circle +{ + /** + * The test case uses the following model: + * + * <- -> + * -- (N : 0,1) -- Tour + * | <- -> + * | -- (1 : N) -- (pickup) ---- + * -> | | | + * Route -- (1 : N) - Node Transport + * | | <- -> | | + * | -- (1 : N) -- (delivery) -- | + * | | + * | -> -> | + * -------- (1 : N) ---- Vehicle--(1 : N)------------ + * + * Arrows indicate the direction of cascade-merge. + */ + + [TestFixture] + public class CascadeMergeToChildBeforeParentTest : TestCase + { + protected override string MappingsAssembly + { + get { return "NHibernate.Test"; } + } + + protected override IList Mappings + { + get { return new[] { "Cascade.Circle.CascadeMergeToChildBeforeParent.hbm.xml" }; } + } + + [Test] + public void Merge() + { + using (ISession session = base.OpenSession()) + using (ITransaction transaction = session.BeginTransaction()) + { + Route route = new Route(); + route.Name = "routeA"; + session.Save(route); + transaction.Commit(); + } + + using (ISession session = base.OpenSession()) + using (ITransaction transaction = session.BeginTransaction()) + { + Route route = session.Get<Route>(1L); + route.TransientField = "sfnaouisrbn"; + + Tour tour = new Tour(); + tour.Name = "tourB"; + + Node pickupNode = new Node(); + pickupNode.Name = "pickupNodeB"; + + Node deliveryNode = new Node(); + deliveryNode.Name = "deliveryNodeB"; + + pickupNode.Route = route; + pickupNode.Tour = tour; + pickupNode.TransientField = "pickup node aaaaaaaaaaa"; + + deliveryNode.Route = route; + deliveryNode.Tour = tour; + deliveryNode.TransientField = "delivery node aaaaaaaaa"; + + tour.Nodes.Add(pickupNode); + tour.Nodes.Add(deliveryNode); + + route.Nodes.Add(pickupNode); + route.Nodes.Add(deliveryNode); + + Route mergedRoute = (Route)session.Merge(route); + + transaction.Commit(); + } + } + + // This test fails because the merge algorithm tries to save a + // transient child (transport) before cascade-merge gets its + // transient parent (vehicle); merge does not cascade from the + // child to the parent. + [Test] + public void MergeTransientChildBeforeTransientParent() + { + Route route = null; + + using (ISession session = base.OpenSession()) + using (ITransaction transaction = session.BeginTransaction()) + { + route = new Route(); + route.Name = "routeA"; + session.Save(route); + transaction.Commit(); + } + + using (ISession session = base.OpenSession()) + using (ITransaction transaction = session.BeginTransaction()) + { + route = session.Get<Route>(route.RouteId); + route.TransientField = "sfnaouisrbn"; + + Tour tour = new Tour(); + tour.Name = "tourB"; + + Transport transport = new Transport(); + transport.Name = "transportB"; + + Node pickupNode = new Node(); + pickupNode.Name = "pickupNodeB"; + + Node deliveryNode = new Node(); + deliveryNode.Name = "deliveryNodeB"; + + Vehicle vehicle = new Vehicle(); + vehicle.Name = "vehicleB"; + + pickupNode.Route = route; + pickupNode.Tour = tour; + pickupNode.PickupTransports.Add(transport); + pickupNode.TransientField = "pickup node aaaaaaaaaaa"; + + deliveryNode.Route = route; + deliveryNode.Tour = tour; + deliveryNode.DeliveryTransports.Add(transport); + deliveryNode.TransientField = "delivery node aaaaaaaaa"; + + tour.Nodes.Add(pickupNode); + tour.Nodes.Add(deliveryNode); + + route.Nodes.Add(pickupNode); + route.Nodes.Add(deliveryNode); + route.Vehicles.Add(vehicle); + + transport.PickupNode = pickupNode; + transport.DeliveryNode = deliveryNode; + transport.Vehicle = vehicle; + transport.TransientField = "aaaaaaaaaaaaaa"; + + vehicle.Transports.Add(transport); + vehicle.TransientField = "anewvalue"; + vehicle.Route = route; + + Route mergedRoute = (Route)session.Merge(route); + + transaction.Commit(); + } + } + + [Test] + public void MergeData3Nodes() + { + Route route = null; + + using (ISession session = base.OpenSession()) + using (ITransaction transaction = session.BeginTransaction()) + { + route = new Route(); + route.Name = "routeA"; + session.Save(route); + transaction.Commit(); + } + + using (ISession session = base.OpenSession()) + using (ITransaction transaction = session.BeginTransaction()) + { + route = session.Get<Route>(route.RouteId); + route.TransientField = "sfnaouisrbn"; + + Tour tour = new Tour(); + tour.Name = "tourB"; + + Transport transport1 = new Transport(); + transport1.Name = "TRANSPORT1"; + + Transport transport2 = new Transport(); + transport2.Name = "TRANSPORT2"; + + Node node1 = new Node(); + node1.Name = "NODE1"; + + Node node2 = new Node(); + node2.Name = "NODE2"; + + Node node3 = new Node(); + node3.Name = "NODE3"; + + Vehicle vehicle = new Vehicle(); + vehicle.Name = "vehicleB"; + + node1.Route = route; + node1.Tour = tour; + node1.PickupTransports.Add(transport1); + node1.TransientField = "node 1"; + + node2.Route = route; + node2.Tour = tour; + node2.DeliveryTransports.Add(transport1); + node2.PickupTransports.Add(transport2); + node2.TransientField = "node 2"; + + node3.Route = route; + node3.Tour = tour; + node3.DeliveryTransports.Add(transport2); + node3.TransientField = "node 3"; + + tour.Nodes.Add(node1); + tour.Nodes.Add(node2); + tour.Nodes.Add(node3); + + route.Nodes.Add(node1); + route.Nodes.Add(node2); + route.Nodes.Add(node3); + route.Vehicles.Add(vehicle); + + transport1.PickupNode = node1; + transport1.DeliveryNode = node2; + transport1.Vehicle = vehicle; + transport1.TransientField = "aaaaaaaaaaaaaa"; + + transport2.PickupNode = node2; + transport2.DeliveryNode = node3; + transport2.Vehicle = vehicle; + transport2.TransientField = "bbbbbbbbbbbbb"; + + vehicle.Transports.Add(transport1); + vehicle.Transports.Add(transport2); + vehicle.TransientField = "anewvalue"; + vehicle.Route = route; + + Route mergedRoute = (Route)session.Merge(route); + + transaction.Commit(); + } + } + + protected override void OnTearDown() + { + using (ISession session = base.OpenSession()) + using (ITransaction transaction = session.BeginTransaction()) + { + session.CreateQuery("delete from Transport").ExecuteUpdate(); + session.CreateQuery("delete from Vehicle").ExecuteUpdate(); + session.CreateQuery("delete from Node").ExecuteUpdate(); + session.CreateQuery("delete from Route").ExecuteUpdate(); + session.CreateQuery("delete from Tour").ExecuteUpdate(); + transaction.Commit(); + } + base.OnTearDown(); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/MultiPathCircleCascade.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/MultiPathCircleCascade.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/MultiPathCircleCascade.hbm.xml 2011-01-17 15:04:02 UTC (rev 5361) @@ -0,0 +1,95 @@ +<?xml version="1.0"?> +<hibernate-mapping + xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.Cascade.Circle"> + + <class name="Route" table="HB_Route"> + + <id name="RouteId" type="long"> + <generator class="native" /> + </id> + + <property name="Name" type="string" not-null="true" /> + + <set name="Nodes" inverse="true" cascade="persist,merge,refresh"> + <key column="RouteId" /> + <one-to-many class="Node" /> + </set> + + </class> + + <class name="Tour" table="HB_Tour"> + + <id name="TourId" type="long"> + <generator class="native" /> + </id> + + <property name="Name" type="string" not-null="true" /> + + <set name="Nodes" inverse="true" lazy="true" cascade="merge,refresh"> + <key column="TourId" /> + <one-to-many class="Node" /> + </set> + + </class> + + <class name="Transport" table="HB_Transport"> + + <id name="TransportId" type="long"> + <generator class="native" /> + </id> + + <property name="Name" type="string" not-null="true" /> + + <many-to-one name="PickupNode" + column="PickupNodeId" + unique="true" + not-null="true" + cascade="merge,refresh" + lazy="false" /> + + <many-to-one name="DeliveryNode" + column="DeliveryNodeId" + unique="true" + not-null="true" + cascade="merge,refresh" + lazy="false" /> + + </class> + + <class name="Node" table="HB_Node"> + + <id name="NodeId" type="long"> + <generator class="native" /> + </id> + + <property name="Name" type="string" not-null="true" /> + + <set name="DeliveryTransports" inverse="true" lazy="true" cascade="merge,refresh"> + <key column="DeliveryNodeId" /> + <one-to-many class="Transport" /> + </set> + + <set name="PickupTransports" inverse="true" lazy="true" cascade="merge,refresh"> + <key column="PickupNodeId" /> + <one-to-many class="Transport" /> + </set> + + <many-to-one name="Route" + column="RouteId" + unique="false" + not-null="true" + cascade="none" + lazy="false" /> + + <many-to-one name="Tour" + column="TourId" + unique="false" + not-null="false" + cascade="merge,refresh" + lazy="false" /> + + </class> + +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/MultiPathCircleCascadeTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/MultiPathCircleCascadeTest.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/MultiPathCircleCascadeTest.cs 2011-01-17 15:04:02 UTC (rev 5361) @@ -0,0 +1,440 @@ +using System; +using System.Collections; +using System.Linq; +using NHibernate.Engine; +using NHibernate.Test; +using NUnit.Framework; + +namespace NHibernate.Test.Cascade.Circle +{ + + /** + * The test case uses the following model: + * + * <- -> + * -- (N : 0,1) -- Tour + * | <- -> + * | -- (1 : N) -- (pickup) ---- + * -> | | | + * Route -- (1 : N) -- Node Transport + * | <- -> | + * -- (1 : N) -- (delivery) -- + * + * Arrows indicate the direction of cascade-merge. + * + * It reproduced the following issues: + * http://opensource.atlassian.com/projects/hibernate/browse/HHH-3046 + * http://opensource.atlassian.com/projects/hibernate/browse/HHH-3810 + * + * This tests that merge is cascaded properly from each entity. + * + * @author Pavol Zibrita, Gail Badner + */ + + [TestFixture] + public class MultiPathCircleCascadeTest : TestCase + { + protected override string MappingsAssembly + { + get { return "NHibernate.Test"; } + } + + protected override IList Mappings + { + get { return new[] { "Cascade.Circle.MultiPathCircleCascade.hbm.xml" }; } + } + + protected override void Configure(NHibernate.Cfg.Configuration configuration) + { + base.Configure(configuration); + configuration.SetProperty(NHibernate.Cfg.Environment.GenerateStatistics, "true"); + configuration.SetProperty(NHibernate.Cfg.Environment.BatchSize, "0"); + } + + [Test] + public void MergeEntityWithNonNullableTransientEntity() + { + Route route = this.GetUpdatedDetachedEntity(); + + Node node = route.Nodes.First(); + route.Nodes.Remove(node); + + Route routeNew = new Route(); + routeNew.Name = "new route"; + routeNew.Nodes.Add(node); + node.Route = routeNew; + + using (ISession session = base.OpenSession()) + using (ITransaction transaction = session.BeginTransaction()) + { + try + { + session.Merge(node); + Assert.Fail("should have thrown an exception"); + } + catch (Exception ex) + { + Assert.That(ex, Is.TypeOf(typeof(TransientObjectException))); + +// if (((SessionImplementor)session).Factory.Settings.isCheckNullability() ) { +// assertTrue( ex instanceof TransientObjectException ); +// } +// else { +// assertTrue( ex instanceof JDBCException ); +// } + } + finally + { + transaction.Rollback(); + } + } + } + + [Test] + public void MergeEntityWithNonNullableEntityNull() + { + Route route = GetUpdatedDetachedEntity(); + Node node = route.Nodes.First(); + route.Nodes.Remove(node); + node.Route = null; + + using (ISession session = base.OpenSession()) + using (ITransaction transaction = session.BeginTransaction()) + { + try + { + session.Merge(node); + Assert.Fail("should have thrown an exception"); + } + catch (Exception ex) + { + Assert.That(ex, Is.TypeOf(typeof(PropertyValueException))); + +// if ( ( ( SessionImplementor ) s ).getFactory().getSettings().isCheckNullability() ) { +// assertTrue( ex instanceof PropertyValueException ); +// } +// else { +// assertTrue( ex instanceof JDBCException ); +// } + } + finally + { + transaction.Rollback(); + } + } + } + + public void MergeEntityWithNonNullablePropSetToNull() + { + Route route = GetUpdatedDetachedEntity(); + Node node = route.Nodes.First(); + node.Name = null; + + using (ISession session = base.OpenSession()) + using (ITransaction transaction = session.BeginTransaction()) + { + try + { + session.Merge(route); + Assert.Fail("should have thrown an exception"); + } + catch (Exception ex) + { + Assert.That(ex, Is.TypeOf(typeof(PropertyValueException))); + +// if ( ( ( SessionImplementor ) s ).getFactory().getSettings().isCheckNullability() ) { +// assertTrue( ex instanceof PropertyValueException ); +// } +// else { +// assertTrue( ex instanceof JDBCException ); +// } + } + finally + { + transaction.Rollback(); + } + } + } + + [Test] + public void MergeRoute() + { + Route route = this.GetUpdatedDetachedEntity(); + + ClearCounts(); + + ISession s = base.OpenSession(); + s.BeginTransaction(); + s.Merge(route); + s.Transaction.Commit(); + s.Close(); + + AssertInsertCount(4); + AssertUpdateCount(1); + + s = base.OpenSession(); + s.BeginTransaction(); + route = s.Get<Route>(route.RouteId); + CheckResults(route, true); + s.Transaction.Commit(); + s.Close(); + } + + [Test] + public void MergePickupNode() + { + Route route = GetUpdatedDetachedEntity(); + + ClearCounts(); + + ISession s = OpenSession(); + s.BeginTransaction(); + + Node pickupNode = route.Nodes.First(n => n.Name == "pickupNodeB"); + pickupNode = (Node)s.Merge(pickupNode); + + s.Transaction.Commit(); + s.Close(); + + AssertInsertCount(4); + AssertUpdateCount(0); + + s = OpenSession(); + s.BeginTransaction(); + route = s.Get<Route>(route.RouteId); + CheckResults(route, false); + s.Transaction.Commit(); + s.Close(); + } + + [Test] + public void MergeDeliveryNode() + { + Route route = GetUpdatedDetachedEntity(); + + ClearCounts(); + + ISession s = OpenSession(); + s.BeginTransaction(); + + Node deliveryNode = route.Nodes.First(n => n.Name == "deliveryNodeB"); + deliveryNode = (Node)s.Merge(deliveryNode); + + s.Transaction.Commit(); + s.Close(); + + AssertInsertCount(4); + AssertUpdateCount(0); + + s = OpenSession(); + s.BeginTransaction(); + route = s.Get<Route>(route.RouteId); + CheckResults(route, false); + s.Transaction.Commit(); + s.Close(); + } + + [Test] + public void MergeTour() + { + Route route = GetUpdatedDetachedEntity(); + + ClearCounts(); + + ISession s = OpenSession(); + s.BeginTransaction(); + Tour tour = (Tour)s.Merge(route.Nodes.First().Tour); + s.Transaction.Commit(); + s.Close(); + + AssertInsertCount(4); + AssertUpdateCount(0); + + s = OpenSession(); + s.BeginTransaction(); + route = s.Get<Route>(route.RouteId); + CheckResults(route, false); + s.Transaction.Commit(); + s.Close(); + } + + [Test] + public void MergeTransport() + { + Route route = GetUpdatedDetachedEntity(); + + ClearCounts(); + + ISession s = OpenSession(); + s.BeginTransaction(); + + Node node = route.Nodes.First(); + Transport transport = null; + + if (node.PickupTransports.Count == 1) + transport = node.PickupTransports.First(); + else + transport = node.DeliveryTransports.First(); + + transport = (Transport)s.Merge(transport); + + s.Transaction.Commit(); + s.Close(); + + AssertInsertCount(4); + AssertUpdateCount(0); + + s = OpenSession(); + s.BeginTransaction(); + route = s.Get<Route>(route.RouteId); + CheckResults(route, false); + s.Transaction.Commit(); + s.Close(); + } + + private Route GetUpdatedDetachedEntity() + { + ISession s = OpenSession(); + s.BeginTransaction(); + + Route route = new Route(); + route.Name = "routeA"; + + s.Save(route); + s.Transaction.Commit(); + s.Close(); + + route.Name = "new routeA"; + route.TransientField = "sfnaouisrbn"; + + Tour tour = new Tour(); + tour.Name = "tourB"; + + Transport transport = new Transport(); + transport.Name = "transportB"; + + Node pickupNode = new Node(); + pickupNode.Name = "pickupNodeB"; + + Node deliveryNode = new Node(); + deliveryNode.Name = "deliveryNodeB"; + + pickupNode.Route = route; + pickupNode.Tour = tour; + pickupNode.PickupTransports.Add(transport); + pickupNode.TransientField = "pickup node aaaaaaaaaaa"; + + deliveryNode.Route = route; + deliveryNode.Tour = tour; + deliveryNode.DeliveryTransports.Add(transport); + deliveryNode.TransientField = "delivery node aaaaaaaaa"; + + tour.Nodes.Add(pickupNode); + tour.Nodes.Add(deliveryNode); + + route.Nodes.Add(pickupNode); + route.Nodes.Add(deliveryNode); + + transport.PickupNode = pickupNode; + transport.DeliveryNode = deliveryNode; + transport.TransientField = "aaaaaaaaaaaaaa"; + + return route; + } + + private void CheckResults(Route route, bool isRouteUpdated) + { + // since merge is not cascaded to route, this method needs to + // know whether route is expected to be updated + if (isRouteUpdated) + { + Assert.That(route.Name, Is.EqualTo("new routeA")); + } + + Assert.That(route.Nodes.Count, Is.EqualTo(2)); + Node deliveryNode = null; + Node pickupNode = null; + + foreach(Node node in route.Nodes) + { + if ("deliveryNodeB".Equals(node.Name)) + { + deliveryNode = node; + } + else if ("pickupNodeB".Equals(node.Name)) + { + pickupNode = node; + } + else + { + Assert.Fail("unknown node"); + } + } + + Assert.That(deliveryNode, Is.Not.Null); + Assert.That(deliveryNode.Route, Is.SameAs(route)); + Assert.That(deliveryNode.DeliveryTransports.Count, Is.EqualTo(1)); + Assert.That(deliveryNode.PickupTransports.Count, Is.EqualTo(0)); + Assert.That(deliveryNode.Tour, Is.Not.Null); + Assert.That(deliveryNode.TransientField, Is.EqualTo("node original value")); + + Assert.That(pickupNode, Is.Not.Null); + Assert.That(pickupNode.Route, Is.SameAs(route)); + Assert.That(pickupNode.DeliveryTransports.Count, Is.EqualTo(0)); + Assert.That(pickupNode.PickupTransports.Count, Is.EqualTo(1)); + Assert.That(pickupNode.Tour, Is.Not.Null); + Assert.That(pickupNode.TransientField, Is.EqualTo("node original value")); + + Assert.That(deliveryNode.NodeId.Equals(pickupNode.NodeId), Is.False); + Assert.That(deliveryNode.Tour, Is.SameAs(pickupNode.Tour)); + Assert.That(deliveryNode.DeliveryTransports.First(), Is.SameAs(pickupNode.PickupTransports.First())); + + Tour tour = deliveryNode.Tour; + Transport transport = deliveryNode.DeliveryTransports.First(); + + Assert.That(tour.Name, Is.EqualTo("tourB")); + Assert.That(tour.Nodes.Count, Is.EqualTo(2)); + Assert.That(tour.Nodes.Contains(deliveryNode), Is.True); + Assert.That(tour.Nodes.Contains(pickupNode), Is.True); + + Assert.That(transport.Name, Is.EqualTo("transportB")); + Assert.That(transport.DeliveryNode, Is.SameAs(deliveryNode)); + Assert.That(transport.PickupNode, Is.SameAs(pickupNode)); + Assert.That(transport.TransientField, Is.EqualTo("transport original value")); + } + + protected override void OnTearDown() + { + using (ISession session = base.OpenSession()) + using (ITransaction transaction = session.BeginTransaction()) + { + session.CreateQuery("delete from Transport").ExecuteUpdate(); + session.CreateQuery("delete from Node").ExecuteUpdate(); + session.CreateQuery("delete from Tour").ExecuteUpdate(); + session.CreateQuery("delete from Route").ExecuteUpdate(); + transaction.Commit(); + } + base.OnTearDown(); + } + + protected void ClearCounts() + { + sessions.Statistics.Clear(); + } + + protected void AssertInsertCount(long expected) + { + Assert.That(sessions.Statistics.EntityInsertCount, Is.EqualTo(expected), "unexpected insert count"); + } + + protected void AssertUpdateCount(long expected) + { + Assert.That(sessions.Statistics.EntityUpdateCount, Is.EqualTo(expected), "unexpected update count"); + } + + protected void AssertDeleteCount(long expected) + { + Assert.That(sessions.Statistics.EntityDeleteCount, Is.EqualTo(expected), "unexpected delete count"); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/Node.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/Node.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/Node.cs 2011-01-17 15:04:02 UTC (rev 5361) @@ -0,0 +1,90 @@ +using System; +using System.Text; +using Iesi.Collections.Generic; + +namespace NHibernate.Test.Cascade.Circle +{ + public class Node + { + private long nodeId; + private long version; + private string name; + private ISet<Transport> deliveryTransports = new HashedSet<Transport>(); + private ISet<Transport> pickupTransports = new HashedSet<Transport>(); + private Route route = null; + private Tour tour; + private string transientField = "node original value"; + + public virtual long NodeId + { + get { return nodeId; } + set { nodeId = value; } + } + + public virtual long Version + { + get { return version; } + set { version = value; } + } + + public virtual string Name + { + get { return name; } + set { name = value; } + } + + public virtual ISet<Transport> DeliveryTransports + { + get { return deliveryTransports; } + set { deliveryTransports = value; } + } + + public virtual ISet<Transport> PickupTransports + { + get { return pickupTransports; } + set { pickupTransports = value; } + } + + public virtual Route Route + { + get { return route; } + set { route = value; } + } + + public virtual Tour Tour + { + get { return tour; } + set { tour = value; } + } + + public virtual string TransientField + { + get { return transientField; } + set { transientField = value; } + } + + public override string ToString() + { + var buffer = new StringBuilder(); + + buffer.AppendFormat("{0}, id: {1}", name, nodeId); + + if (route != null) + buffer.AppendFormat(" route name: {0}, tour name: {1}", route.Name, tour == null ? "null" : tour.Name); + + if (deliveryTransports != null) + { + foreach(Transport transport in deliveryTransports) + buffer.AppendFormat("Delivery Transports: {0}", transport.ToString()); + } + + if (route != null) + { + foreach(Transport transport in pickupTransports) + buffer.AppendFormat("Node: {0}", transport.ToString()); + } + + return buffer.ToString(); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/Route.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/Route.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/Route.cs 2011-01-17 15:04:02 UTC (rev 5361) @@ -0,0 +1,67 @@ +using System; +using System.Text; +using Iesi.Collections.Generic; + +namespace NHibernate.Test.Cascade.Circle +{ + public class Route + { + private long routeId; + private long version; + private ISet<Node> nodes = new HashedSet<Node>(); + private ISet<Vehicle> vehicles = new HashedSet<Vehicle>(); + private string name; + private string transientField = null; + + public virtual long RouteId + { + get { return routeId; } + set { routeId = value; } + } + + public virtual long Version + { + get { return version; } + set { version = value; } + } + + public virtual ISet<Node> Nodes + { + get { return nodes; } + set { nodes = value; } + } + + public virtual ISet<Vehicle> Vehicles + { + get { return vehicles; } + set { vehicles = value; } + } + + public virtual string Name + { + get { return name; } + set { name = value; } + } + + public virtual string TransientField + { + get { return transientField; } + set { transientField = value; } + } + + public override string ToString() + { + var buffer = new StringBuilder(); + + buffer.AppendFormat("Route name: {0}, id: {1}, transientField: {2}", name, routeId, transientField); + + foreach(Node node in nodes) + buffer.AppendFormat("Node: {0}", node.ToString()); + + foreach(Vehicle vehicle in vehicles) + buffer.AppendFormat("Vehicle: {0}", vehicle.ToString()); + + return buffer.ToString(); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/Tour.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/Tour.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/Tour.cs 2011-01-17 15:04:02 UTC (rev 5361) @@ -0,0 +1,37 @@ +using System; +using Iesi.Collections.Generic; + +namespace NHibernate.Test.Cascade.Circle +{ + public class Tour + { + private long tourId; + private long version; + private string name; + private ISet<Node> nodes = new HashedSet<Node>(); + + public virtual long TourId + { + get { return tourId; } + set { tourId = value; } + } + + public virtual long Version + { + get { return version; } + set { version = value; } + } + + public virtual string Name + { + get { return name; } + set { name = value; } + } + + public virtual ISet<Node> Nodes + { + get { return nodes; } + set { nodes = value; } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/Transport.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/Transport.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/Transport.cs 2011-01-17 15:04:02 UTC (rev 5361) @@ -0,0 +1,63 @@ +using System; +using Iesi.Collections.Generic; + +namespace NHibernate.Test.Cascade.Circle +{ + public class Transport + { + private long transportId; + private long version; + private string name; + private Node pickupNode = null; + private Node deliveryNode = null; + private Vehicle vehicle; + private string transientField = "transport original value"; + + public virtual long TransportId + { + get { return transportId; } + set { transportId = value; } + } + + public virtual long Version + { + get { return version; } + set { version = value; } + } + + publi... [truncated message content] |
From: <jul...@us...> - 2011-01-17 15:39:35
|
Revision: 5362 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5362&view=rev Author: julian-maughan Date: 2011-01-17 15:39:29 +0000 (Mon, 17 Jan 2011) Log Message: ----------- Deprecated ISession.SaveOrUpdateCopy methods - they are replaced by Merge methods which are functionally identical [ref. NH-2508] Modified Paths: -------------- trunk/nhibernate/doc/reference/modules/manipulating_data.xml trunk/nhibernate/doc/reference/modules/performance.xml trunk/nhibernate/releasenotes.txt trunk/nhibernate/src/NHibernate/Engine/CascadeStyle.cs trunk/nhibernate/src/NHibernate/Engine/CascadingAction.cs trunk/nhibernate/src/NHibernate/Event/IEventSource.cs trunk/nhibernate/src/NHibernate/ISession.cs trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs Modified: trunk/nhibernate/doc/reference/modules/manipulating_data.xml =================================================================== --- trunk/nhibernate/doc/reference/modules/manipulating_data.xml 2011-01-17 15:04:02 UTC (rev 5361) +++ trunk/nhibernate/doc/reference/modules/manipulating_data.xml 2011-01-17 15:39:29 UTC (rev 5362) @@ -633,14 +633,14 @@ </itemizedlist> <para> - The last case can be avoided by using <literal>SaveOrUpdateCopy(Object o)</literal>. This method + The last case can be avoided by using <literal>Merge(Object o)</literal>. This method copies the state of the given object onto the persistent object with the same identifier. If there is no persistent instance currently associated with the session, it will be loaded. The method returns the persistent instance. If the given instance is unsaved or does not exist in the database, NHibernate will save it and return it as a newly persistent instance. Otherwise, the given instance does not become associated with the session. In most applications with detached objects, you need both methods, <literal>SaveOrUpdate()</literal> - and <literal>SaveOrUpdateCopy()</literal>. + and <literal>Merge()</literal>. </para> </sect2> Modified: trunk/nhibernate/doc/reference/modules/performance.xml =================================================================== --- trunk/nhibernate/doc/reference/modules/performance.xml 2011-01-17 15:04:02 UTC (rev 5361) +++ trunk/nhibernate/doc/reference/modules/performance.xml 2011-01-17 15:39:29 UTC (rev 5362) @@ -481,7 +481,7 @@ <listitem> <para> You may also attach a previously loaded object to a new <literal>ISession</literal> - with <literal>SaveOrUpdateCopy()</literal> or <literal>Lock()</literal> before + with <literal>Merge()</literal> or <literal>Lock()</literal> before accessing uninitialized collections (or other proxies). No, NHibernate does not, and certainly <emphasis>should</emphasis> not do this automatically, since it would introduce ad hoc transaction semantics! Modified: trunk/nhibernate/releasenotes.txt =================================================================== --- trunk/nhibernate/releasenotes.txt 2011-01-17 15:04:02 UTC (rev 5361) +++ trunk/nhibernate/releasenotes.txt 2011-01-17 15:39:29 UTC (rev 5362) @@ -1,5 +1,8 @@ ** Known BREAKING CHANGES from NH3.0.0.GA to NH3.0.1.GA + ##### Design time ##### + * [NH-2481] - Deprecated: ISession.SaveOrUpdateCopy methods - use ISession.Merge methods instead + ##### Run time ##### * [NH-2481] - An exception will now be thrown when an entity references a transient entity and cascade="merge|all" is not configured on the association Modified: trunk/nhibernate/src/NHibernate/Engine/CascadeStyle.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/CascadeStyle.cs 2011-01-17 15:04:02 UTC (rev 5361) +++ trunk/nhibernate/src/NHibernate/Engine/CascadeStyle.cs 2011-01-17 15:39:29 UTC (rev 5362) @@ -153,7 +153,7 @@ { public override bool DoCascade(CascadingAction action) { - return action == CascadingAction.Merge; + return action == CascadingAction.Merge || action == CascadingAction.SaveUpdateCopy; } } Modified: trunk/nhibernate/src/NHibernate/Engine/CascadingAction.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/CascadingAction.cs 2011-01-17 15:04:02 UTC (rev 5361) +++ trunk/nhibernate/src/NHibernate/Engine/CascadingAction.cs 2011-01-17 15:39:29 UTC (rev 5362) @@ -1,3 +1,4 @@ +using System; using System.Collections; using Iesi.Collections; @@ -286,6 +287,7 @@ } } + [Obsolete("Replaced by MergeCascadingAction")] private class SaveUpdateCopyCascadingAction : CascadingAction { // for deprecated saveOrUpdateCopy() Modified: trunk/nhibernate/src/NHibernate/Event/IEventSource.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/IEventSource.cs 2011-01-17 15:04:02 UTC (rev 5361) +++ trunk/nhibernate/src/NHibernate/Event/IEventSource.cs 2011-01-17 15:39:29 UTC (rev 5362) @@ -1,3 +1,4 @@ +using System; using System.Collections; using Iesi.Collections; using NHibernate.Engine; @@ -32,10 +33,10 @@ void Refresh(object obj, IDictionary refreshedAlready); /// <summary> Cascade copy an entity instance</summary> + [Obsolete("Use Merge(string, object, IDictionary) instead")] void SaveOrUpdateCopy(string entityName, object obj, IDictionary copiedAlready); /// <summary> Cascade delete an entity instance</summary> void Delete(string entityName, object child, bool isCascadeDeleteEnabled, ISet transientEntities); } - } Modified: trunk/nhibernate/src/NHibernate/ISession.cs =================================================================== --- trunk/nhibernate/src/NHibernate/ISession.cs 2011-01-17 15:04:02 UTC (rev 5361) +++ trunk/nhibernate/src/NHibernate/ISession.cs 2011-01-17 15:39:29 UTC (rev 5362) @@ -420,7 +420,7 @@ /// The semantics of this method are defined by JSR-220. /// <param name="entityName">Name of the entity.</param> /// <param name="obj">a detached instance with state to be copied </param> - /// <returns> an updated persistent instance </returns> + /// <returns> an updated persistent instance </returns> /// </summary> /// <returns></returns> object Merge(string entityName, object obj); @@ -452,6 +452,7 @@ /// </summary> /// <param name="obj">a transient instance with state to be copied</param> /// <returns>an updated persistent instance</returns> + [Obsolete("Use Merge(object) instead")] object SaveOrUpdateCopy(object obj); /// <summary> @@ -465,6 +466,7 @@ /// <param name="obj">a persistent or transient instance with state to be copied</param> /// <param name="id">the identifier of the instance to copy to</param> /// <returns>an updated persistent instance</returns> + [Obsolete("No direct replacement. Use Merge instead.")] object SaveOrUpdateCopy(object obj, object id); /// <summary> Modified: trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs 2011-01-17 15:04:02 UTC (rev 5361) +++ trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs 2011-01-17 15:39:29 UTC (rev 5362) @@ -956,6 +956,7 @@ } /// <summary> Cascade copy an entity instance</summary> + [Obsolete("Use Merge(string, object, IDictionary) instead")] public void SaveOrUpdateCopy(string entityName, object obj, IDictionary copiedAlready) { using (new SessionIdLoggingContext(SessionId)) @@ -2103,11 +2104,7 @@ } } - /// <summary> - /// - /// </summary> - /// <param name="obj"></param> - /// <returns></returns> + [Obsolete("Use Merge(object) instead")] public object SaveOrUpdateCopy(object obj) { using (new SessionIdLoggingContext(SessionId)) @@ -2116,6 +2113,7 @@ } } + [Obsolete("No direct replacement. Use Merge instead.")] public object SaveOrUpdateCopy(object obj, object id) { using (new SessionIdLoggingContext(SessionId)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jul...@us...> - 2011-02-16 16:33:10
|
Revision: 5381 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5381&view=rev Author: julian-maughan Date: 2011-02-16 16:33:03 +0000 (Wed, 16 Feb 2011) Log Message: ----------- Added support for 'field.camelcase-m-underscore' field naming strategy (NH-2357) Modified Paths: -------------- trunk/nhibernate/doc/reference/modules/basic_mapping.xml trunk/nhibernate/src/NHibernate/NHibernate.csproj trunk/nhibernate/src/NHibernate/Properties/PropertyAccessorFactory.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldClass.cs trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldGetterFixture.cs trunk/nhibernate/src/NHibernate.Test/PropertyTest/NoSetterAccessorFixture.cs Added Paths: ----------- trunk/nhibernate/src/NHibernate/Properties/CamelCaseMUnderscoreStrategy.cs trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldCamelCaseMUnderscoreFixture.cs trunk/nhibernate/src/NHibernate.Test/PropertyTest/NoSetterCamelCaseMUnderscoreFixture.cs Modified: trunk/nhibernate/doc/reference/modules/basic_mapping.xml =================================================================== --- trunk/nhibernate/doc/reference/modules/basic_mapping.xml 2011-02-11 16:07:38 UTC (rev 5380) +++ trunk/nhibernate/doc/reference/modules/basic_mapping.xml 2011-02-16 16:33:03 UTC (rev 5381) @@ -1295,7 +1295,7 @@ <entry> <para> The <literal>name</literal> attribute is converted to camel case to find the field. - <literal><property name="Foo" ... ></literal> uses the field <literal>foo</literal>. + <literal><property name="FooBar" ... ></literal> uses the field <literal>fooBar</literal>. </para> </entry> </row> @@ -1305,18 +1305,28 @@ <para> The <literal>name</literal> attribute is converted to camel case and prefixed with an underscore to find the field. - <literal><property name="Foo" ... ></literal> uses the field <literal>_foo</literal>. + <literal><property name="FooBar" ... ></literal> uses the field <literal>_fooBar</literal>. </para> - </entry> + </entry> </row> <row> + <entry><literal>camelcase-m-underscore</literal></entry> + <entry> + <para> + The <literal>name</literal> attribute is converted to camel case and prefixed with + the character <literal>m</literal> and an underscore to find the field. + <literal><property name="FooBar" ... ></literal> uses the field <literal>m_fooBar</literal>. + </para> + </entry> + </row> + <row> <entry><literal>lowercase</literal></entry> <entry> <para> The <literal>name</literal> attribute is converted to lower case to find the Field. <literal><property name="FooBar" ... ></literal> uses the field <literal>foobar</literal>. </para> - </entry> + </entry> </row> <row> <entry><literal>lowercase-underscore</literal></entry> @@ -1333,7 +1343,7 @@ <entry> <para> The <literal>name</literal> attribute is prefixed with an underscore to find the field. - <literal><property name="Foo" ... ></literal> uses the field <literal>_Foo</literal>. + <literal><property name="FooBar" ... ></literal> uses the field <literal>_FooBar</literal>. </para> </entry> </row> @@ -1343,7 +1353,7 @@ <para> The <literal>name</literal> attribute is prefixed with the character <literal>m</literal> to find the field. - <literal><property name="Foo" ... ></literal> uses the field <literal>mFoo</literal>. + <literal><property name="FooBar" ... ></literal> uses the field <literal>mFooBar</literal>. </para> </entry> </row> @@ -1353,7 +1363,7 @@ <para> The <literal>name</literal> attribute is prefixed with the character <literal>m</literal> and an underscore to find the field. - <literal><property name="Foo" ... ></literal> uses the field <literal>m_Foo</literal>. + <literal><property name="FooBar" ... ></literal> uses the field <literal>m_FooBar</literal>. </para> </entry> </row> Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj =================================================================== --- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2011-02-11 16:07:38 UTC (rev 5380) +++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2011-02-16 16:33:03 UTC (rev 5381) @@ -307,6 +307,7 @@ <Compile Include="ObjectNotFoundException.cs" /> <Compile Include="PersistentObjectException.cs" /> <Compile Include="Persister\PersisterFactory.cs" /> + <Compile Include="Properties\CamelCaseMUnderscoreStrategy.cs" /> <Compile Include="PropertyAccessException.cs" /> <Compile Include="PropertyNotFoundException.cs" /> <Compile Include="PropertyValueException.cs" /> Added: trunk/nhibernate/src/NHibernate/Properties/CamelCaseMUnderscoreStrategy.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Properties/CamelCaseMUnderscoreStrategy.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Properties/CamelCaseMUnderscoreStrategy.cs 2011-02-16 16:33:03 UTC (rev 5381) @@ -0,0 +1,25 @@ +namespace NHibernate.Properties +{ + /// <summary> + /// Implementation of <see cref="IFieldNamingStrategy"/> for fields that are prefixed with + /// an <c>m_</c> and the PropertyName is changed to camelCase. + /// </summary> + public class CamelCaseMUnderscoreStrategy : IFieldNamingStrategy + { + #region IFieldNamingStrategy Members + + /// <summary> + /// Converts the Property's name into a Field name by making the first character + /// of the <c>propertyName</c> lowercase and prefixing it with the letter 'm' + /// and an underscore. + /// </summary> + /// <param name="propertyName">The name of the mapped property.</param> + /// <returns>The name of the Field in CamelCase format prefixed with an 'm' and an underscore.</returns> + public string GetFieldName(string propertyName) + { + return "m_" + propertyName.Substring(0, 1).ToLowerInvariant() + propertyName.Substring(1); + } + + #endregion + } +} Modified: trunk/nhibernate/src/NHibernate/Properties/PropertyAccessorFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Properties/PropertyAccessorFactory.cs 2011-02-11 16:07:38 UTC (rev 5380) +++ trunk/nhibernate/src/NHibernate/Properties/PropertyAccessorFactory.cs 2011-02-16 16:33:03 UTC (rev 5381) @@ -26,6 +26,7 @@ accessors["readonly"] = new ReadOnlyAccessor(); accessors["field.camelcase"] = new FieldAccessor(new CamelCaseStrategy()); accessors["field.camelcase-underscore"] = new FieldAccessor(new CamelCaseUnderscoreStrategy()); + accessors["field.camelcase-m-underscore"] = new FieldAccessor(new CamelCaseMUnderscoreStrategy()); accessors["field.lowercase"] = new FieldAccessor(new LowerCaseStrategy()); accessors["field.lowercase-underscore"] = new FieldAccessor(new LowerCaseUnderscoreStrategy()); accessors["field.pascalcase-underscore"] = new FieldAccessor(new PascalCaseUnderscoreStrategy()); @@ -33,6 +34,7 @@ accessors["field.pascalcase-m"] = new FieldAccessor(new PascalCaseMStrategy()); accessors["nosetter.camelcase"] = new NoSetterAccessor(new CamelCaseStrategy()); accessors["nosetter.camelcase-underscore"] = new NoSetterAccessor(new CamelCaseUnderscoreStrategy()); + accessors["nosetter.camelcase-m-underscore"] = new NoSetterAccessor(new CamelCaseMUnderscoreStrategy()); accessors["nosetter.lowercase"] = new NoSetterAccessor(new LowerCaseStrategy()); accessors["nosetter.lowercase-underscore"] = new NoSetterAccessor(new LowerCaseUnderscoreStrategy()); accessors["nosetter.pascalcase-underscore"] = new NoSetterAccessor(new PascalCaseUnderscoreStrategy()); @@ -116,7 +118,7 @@ /// <term>camelcase</term> /// <description> /// The <c>name</c> attribute should be changed to CamelCase to find the field. - /// <c><property name="Foo" ... ></c> finds a field <c>foo</c>. + /// <c><property name="FooBar" ... ></c> finds a field <c>fooBar</c>. /// </description> /// </item> /// <item> @@ -124,15 +126,23 @@ /// <description> /// The <c>name</c> attribute should be changed to CamelCase and prefixed with /// an underscore to find the field. - /// <c><property name="Foo" ... ></c> finds a field <c>_foo</c>. + /// <c><property name="FooBar" ... ></c> finds a field <c>_fooBar</c>. /// </description> /// </item> /// <item> + /// <term>camelcase-m-underscore</term> + /// <description> + /// The <c>name</c> attribute should be changed to CamelCase and prefixed with + /// an 'm' and underscore to find the field. + /// <c><property name="FooBar" ... ></c> finds a field <c>m_fooBar</c>. + /// </description> + /// </item> + /// <item> /// <term>pascalcase-underscore</term> /// <description> /// The <c>name</c> attribute should be prefixed with an underscore /// to find the field. - /// <c><property name="Foo" ... ></c> finds a field <c>_Foo</c>. + /// <c><property name="FooBar" ... ></c> finds a field <c>_FooBar</c>. /// </description> /// </item> /// <item> @@ -140,14 +150,14 @@ /// <description> /// The <c>name</c> attribute should be prefixed with an 'm' and underscore /// to find the field. - /// <c><property name="Foo" ... ></c> finds a field <c>m_Foo</c>. + /// <c><property name="FooBar" ... ></c> finds a field <c>m_FooBar</c>. /// </description> /// </item> /// <item> /// <term>pascalcase-m</term> /// <description> /// The <c>name</c> attribute should be prefixed with an 'm'. - /// <c><property name="Foo" ... ></c> finds a field <c>mFoo</c>. + /// <c><property name="FooBar" ... ></c> finds a field <c>mFooBar</c>. /// </description> /// </item> /// <item> Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-02-11 16:07:38 UTC (rev 5380) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-02-16 16:33:03 UTC (rev 5381) @@ -618,6 +618,8 @@ <Compile Include="NHSpecificTest\Properties\Model.cs" /> <Compile Include="PolymorphicGetAndLoad\Domain.cs" /> <Compile Include="PolymorphicGetAndLoad\PolymorphicGetAndLoadTest.cs" /> + <Compile Include="PropertyTest\FieldCamelCaseMUnderscoreFixture.cs" /> + <Compile Include="PropertyTest\NoSetterCamelCaseMUnderscoreFixture.cs" /> <Compile Include="TypesTest\CharClass.cs" /> <Compile Include="TypesTest\CharClassFixture.cs" /> <Compile Include="TypesTest\DateTimeClass.cs" /> Added: trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldCamelCaseMUnderscoreFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldCamelCaseMUnderscoreFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldCamelCaseMUnderscoreFixture.cs 2011-02-16 16:33:03 UTC (rev 5381) @@ -0,0 +1,20 @@ +using System; +using NHibernate.Properties; +using NUnit.Framework; + +namespace NHibernate.Test.PropertyTest +{ + [TestFixture] + public class FieldCamelCaseMUnderscoreFixture : FieldAccessorFixture + { + [SetUp] + public override void SetUp() + { + _accessor = PropertyAccessorFactory.GetPropertyAccessor("field.camelcase-m-underscore"); + _getter = _accessor.GetGetter(typeof(FieldClass), "CamelMUnderscore"); + _setter = _accessor.GetSetter(typeof(FieldClass), "CamelMUnderscore"); + _instance = new FieldClass(); + _instance.InitCamelCaseMUnderscore(0); + } + } +} Modified: trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldClass.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldClass.cs 2011-02-11 16:07:38 UTC (rev 5380) +++ trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldClass.cs 2011-02-16 16:33:03 UTC (rev 5381) @@ -14,6 +14,7 @@ private int _lowerunderscorefoo = 5; private int lowerfoo = 6; private int _PascalUnderscoreFoo = 7; + private int m_camelMUnderscore = 8; public bool CamelUnderscoreFooGetterCalled = false; public bool BlahGetterCalled = false; @@ -21,6 +22,7 @@ public bool LowerUnderscoreFooGetterCalled = false; public bool LowerFooGetterCalled = false; public bool PascalUnderscoreFooCalled = false; + public bool CamelMUnderscoreGetterCalled = false; public FieldClass() { @@ -60,7 +62,12 @@ { _lowerunderscorefoo = value; } - + + public void InitCamelCaseMUnderscore(int value) + { + m_camelMUnderscore = value; + } + public void Increment() { Id++; @@ -70,6 +77,7 @@ _lowerunderscorefoo++; _PascalUnderscoreFoo++; lowerfoo++; + m_camelMUnderscore++; } public int CamelUnderscoreFoo @@ -126,5 +134,14 @@ return _PascalUnderscoreFoo; } } + + public int CamelMUnderscore + { + get + { + CamelMUnderscoreGetterCalled = true; + return m_camelMUnderscore; + } + } } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldGetterFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldGetterFixture.cs 2011-02-11 16:07:38 UTC (rev 5380) +++ trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldGetterFixture.cs 2011-02-16 16:33:03 UTC (rev 5381) @@ -65,7 +65,7 @@ Assert.IsNull(fieldGetter.PropertyName, "no Property Names for fields."); Assert.AreEqual(Int64.MaxValue, fieldGetter.Get(obj), "Get() for Int64"); } - + [Test] public void PascalCaseMUnderscoreNamingStrategy() { @@ -79,7 +79,21 @@ Assert.IsNull(fieldGetter.PropertyName, "no Property Names for fields."); Assert.AreEqual(new TimeSpan(DateTime.Parse("2001-01-01").Ticks), fieldGetter.Get(obj), "Get() for TimeSpan"); } + + [Test] + public void CamelCaseMUnderscoreNamingStrategy() + { + IGetter fieldGetter = + ReflectHelper.GetGetter(typeof(FieldGetterClass), "PropertyFive", "field.camelcase-m-underscore"); + Assert.IsNotNull(fieldGetter, "should have found getter"); + Assert.AreEqual(typeof(FieldAccessor.FieldGetter), fieldGetter.GetType(), "IGetter should be for a field."); + Assert.AreEqual(typeof(decimal), fieldGetter.ReturnType, "returns Decimal."); + Assert.IsNull(fieldGetter.Method, "no MethodInfo for fields."); + Assert.IsNull(fieldGetter.PropertyName, "no Property Names for fields."); + Assert.AreEqual(2.5m, fieldGetter.Get(obj), "Get() for Decimal"); + } + public class FieldGetterClass { #pragma warning disable 414 @@ -88,6 +102,7 @@ private bool _propertyTwo = true; private TimeSpan m_PropertyThree = new TimeSpan(DateTime.Parse("2001-01-01").Ticks); private long _propertyfour = Int64.MaxValue; + private decimal m_propertyFive = 2.5m; #pragma warning restore 414 } Modified: trunk/nhibernate/src/NHibernate.Test/PropertyTest/NoSetterAccessorFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/PropertyTest/NoSetterAccessorFixture.cs 2011-02-11 16:07:38 UTC (rev 5380) +++ trunk/nhibernate/src/NHibernate.Test/PropertyTest/NoSetterAccessorFixture.cs 2011-02-16 16:33:03 UTC (rev 5381) @@ -20,6 +20,7 @@ protected bool _expectedLowerUnderscoreFooGetterCalled = false; protected bool _expectedLowerFooGetterCalled = false; protected bool _expectedPascalUnderscoreFooGetterCalled = false; + protected bool _expectedCamelMUnderscoreGetterCalled = false; /// <summary> /// SetUp the local fields for the test cases. @@ -41,13 +42,11 @@ Assert.AreEqual(_expectedBlahGetterCalled, _instance.BlahGetterCalled, "pascalcase-m-underscore"); Assert.AreEqual(_expectedCamelBazGetterCalled, _instance.CamelBazGetterCalled, "camelcase"); - Assert.AreEqual(_expectedCamelUnderscoreFooGetterCalled, _instance.CamelUnderscoreFooGetterCalled, - "camelcase-underscore"); - Assert.AreEqual(_expectedLowerUnderscoreFooGetterCalled, _instance.LowerUnderscoreFooGetterCalled, - "lowercase-underscore"); + Assert.AreEqual(_expectedCamelUnderscoreFooGetterCalled, _instance.CamelUnderscoreFooGetterCalled, "camelcase-underscore"); + Assert.AreEqual(_expectedLowerUnderscoreFooGetterCalled, _instance.LowerUnderscoreFooGetterCalled, "lowercase-underscore"); Assert.AreEqual(_expectedLowerFooGetterCalled, _instance.LowerFooGetterCalled, "lowercase"); - Assert.AreEqual(_expectedPascalUnderscoreFooGetterCalled, _instance.PascalUnderscoreFooCalled, - "pascalcase-underscore"); + Assert.AreEqual(_expectedPascalUnderscoreFooGetterCalled, _instance.PascalUnderscoreFooCalled, "pascalcase-underscore"); + Assert.AreEqual(_expectedCamelMUnderscoreGetterCalled, _instance.CamelMUnderscoreGetterCalled, "camelcase-m-underscore"); } [Test] Added: trunk/nhibernate/src/NHibernate.Test/PropertyTest/NoSetterCamelCaseMUnderscoreFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/PropertyTest/NoSetterCamelCaseMUnderscoreFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/PropertyTest/NoSetterCamelCaseMUnderscoreFixture.cs 2011-02-16 16:33:03 UTC (rev 5381) @@ -0,0 +1,22 @@ +using System; +using NHibernate.Properties; +using NUnit.Framework; + +namespace NHibernate.Test.PropertyTest +{ + [TestFixture] + public class NoSetterCamelCaseMUnderscoreFixture : NoSetterAccessorFixture + { + [SetUp] + public override void SetUp() + { + _expectedCamelMUnderscoreGetterCalled = true; + + _accessor = PropertyAccessorFactory.GetPropertyAccessor("nosetter.camelcase-m-underscore"); + _getter = _accessor.GetGetter(typeof(FieldClass), "CamelMUnderscore"); + _setter = _accessor.GetSetter(typeof(FieldClass), "CamelMUnderscore"); + _instance = new FieldClass(); + _instance.InitCamelCaseMUnderscore(0); + } + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pa...@us...> - 2011-02-18 06:16:03
|
Revision: 5382 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5382&view=rev Author: patearl Date: 2011-02-18 06:15:54 +0000 (Fri, 18 Feb 2011) Log Message: ----------- Upgraded ReLinq from 1.13.88 to 1.13.93, making required changes. Modified Paths: -------------- trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.dll trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.pdb trunk/nhibernate/src/NHibernate/Linq/NhRelinqQueryParser.cs trunk/nhibernate/src/NHibernate/Linq/Visitors/ExpressionKeyVisitor.cs trunk/nhibernate/src/NHibernate/Linq/Visitors/QueryModelVisitor.cs trunk/nhibernate/src/NHibernate/Linq/Visitors/ResultOperatorProcessors/ProcessAggregate.cs trunk/nhibernate/src/NHibernate/NHibernate.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate/Linq/Visitors/ResultOperatorProcessors/ProcessAggregateFromSeed.cs Removed Paths: ------------- trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml trunk/nhibernate/src/NHibernate/Linq/Expressions/AggregateExpressionNode.cs trunk/nhibernate/src/NHibernate/Linq/ResultOperators/AggregateResultOperator.cs Modified: trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.dll =================================================================== (Binary files differ) Modified: trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.pdb =================================================================== (Binary files differ) Deleted: trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml =================================================================== --- trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml 2011-02-16 16:33:03 UTC (rev 5381) +++ trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml 2011-02-18 06:15:54 UTC (rev 5382) @@ -1,1253 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?><doc><assembly> - <name>Remotion.Data.Linq</name> - </assembly><members><member name="T:Remotion.Data.Linq.DefaultQueryProvider"><summary> - Represents a default implementation of <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> that is automatically used by <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> - unless a custom <see cref="T:System.Linq.IQueryProvider" /> is specified. The <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> executes queries by parsing them into - an instance of type <see cref="T:Remotion.Data.Linq.QueryModel" />, which is then passed to an implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> to obtain the - result set. - </summary></member><member name="T:Remotion.Data.Linq.QueryProviderBase"><summary> - Provides a default implementation of <see cref="T:System.Linq.IQueryProvider" /> that executes queries (subclasses of <see cref="T:Remotion.Data.Linq.QueryableBase`1" />) by - first parsing them into a <see cref="T:Remotion.Data.Linq.QueryModel" /> and then passing that to a given implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" />. - Usually, <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> should be used unless <see cref="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)" /> must be manually implemented. - </summary></member><member name="M:Remotion.Data.Linq.QueryProviderBase.#ctor(Remotion.Data.Linq.IQueryExecutor)"><summary> - Initializes a new instance of <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> using the default <see cref="T:Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry" />. - </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute queries against a specific query backend.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.#ctor(Remotion.Data.Linq.IQueryExecutor,Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry)"><summary> - Initializes a new instance of <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> using a custom <see cref="T:Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry" />. Use this - constructor to specify a specific set of parsers to use when analyzing the query. - </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute queries against a specific query backend.</param><param name="nodeTypeRegistry">The <see cref="T:Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry" /> containing the <see cref="T:System.Linq.Expressions.MethodCallExpression" /> - parsers that should be used when parsing queries.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery(System.Linq.Expressions.Expression)"><summary> - Constructs an <see cref="T:System.Linq.IQueryable" /> object that can evaluate the query represented by a specified expression tree. This - method delegates to <see cref="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)" />. - </summary><param name="expression">An expression tree that represents a LINQ query.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)"><summary> - Constructs an <see cref="T:System.Linq.IQueryable`1" /> object that can evaluate the query represented by a specified expression tree. This method is - called by the standard query operators defined by the <see cref="T:System.Linq.Queryable" /> class. - </summary><param name="expression">An expression tree that represents a LINQ query.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.Execute``1(System.Linq.Expressions.Expression)"><summary> - Executes the query defined by the specified expression by parsing it with a - <see cref="T:Remotion.Data.Linq.Parsing.Structure.QueryParser" /> and then running it through the <see cref="P:Remotion.Data.Linq.QueryProviderBase.Executor" />. - This method is invoked through the <see cref="T:System.Linq.IQueryProvider" /> interface by methods such as - <see cref="M:System.Linq.Queryable.First``1(System.Linq.IQueryable{``0})" /> and - <see cref="M:System.Linq.Queryable.Count``1(System.Linq.IQueryable{``0})" />, and it's also invoked by <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> - when the <see cref="T:System.Linq.IQueryable`1" /> is enumerated. - </summary></member><member name="M:Remotion.Data.Linq.QueryProviderBase.GenerateQueryModel(System.Linq.Expressions.Expression)"><summary> - The method generates a <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary><param name="expression">The query as expression chain.</param></member><member name="P:Remotion.Data.Linq.QueryProviderBase.Executor"><summary> - Gets or sets the implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute queries created via <see cref="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryProviderBase.ExpressionTreeParser"><summary> - Gets the <see cref="P:Remotion.Data.Linq.QueryProviderBase.ExpressionTreeParser" /> used by this <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> to parse LINQ <see cref="T:System.Linq.Expressions.Expression" /> - trees. - </summary></member><member name="M:Remotion.Data.Linq.DefaultQueryProvider.CreateQuery``1(System.Linq.Expressions.Expression)"><summary> - Creates a new <see cref="T:System.Linq.IQueryable" /> (of type <see cref="P:Remotion.Data.Linq.DefaultQueryProvider.QueryableType" /> with <typeparamref name="T" /> as its generic argument) that - represents the query defined by <paramref name="expression" /> and is able to enumerate its results. - </summary><param name="expression">An expression representing the query for which a <see cref="T:System.Linq.IQueryable`1" /> should be created.</param></member><member name="P:Remotion.Data.Linq.DefaultQueryProvider.QueryableType"><summary> - Gets the type of queryable created by this provider. This is the generic type definition of an implementation of <see cref="T:System.Linq.IQueryable`1" /> - (usually a subclass of <see cref="T:Remotion.Data.Linq.QueryableBase`1" />) with exactly one type argument. - </summary></member><member name="T:Remotion.Data.Linq.IQueryExecutor"><summary> - Constitutes the bridge between re-linq and a concrete query provider implementation. Concrete providers implement this interface - and <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> calls the respective method of the interface implementation when a query is to be executed. - </summary></member><member name="M:Remotion.Data.Linq.IQueryExecutor.ExecuteScalar``1(Remotion.Data.Linq.QueryModel)"><summary> - Executes the given <paramref name="queryModel" /> as a scalar query, i.e. as a query returning a scalar value of type <typeparamref name="T" />. - The query ends with a scalar result operator, for example a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.CountResultOperator" /> or a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.SumResultOperator" />. - </summary><param name="queryModel">The <see cref="T:Remotion.Data.Linq.QueryModel" /> representing the query to be executed. Analyze this via an - <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" />.</param></member><member name="M:Remotion.Data.Linq.IQueryExecutor.ExecuteSingle``1(Remotion.Data.Linq.QueryModel,System.Boolean)"><summary> - Executes the given <paramref name="queryModel" /> as a single object query, i.e. as a query returning a single object of type - <typeparamref name="T" />. - The query ends with a single result operator, for example a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.FirstResultOperator" /> or a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.SingleResultOperator" />. - </summary><param name="queryModel">The <see cref="T:Remotion.Data.Linq.QueryModel" /> representing the query to be executed. Analyze this via an - <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" />.</param><param name="returnDefaultWhenEmpty">If <see langword="true" />, the executor must return a default value when its result set is empty; - if <see langword="false" />, it should throw an <see cref="T:System.InvalidOperationException" /> when its result set is empty.</param></member><member name="M:Remotion.Data.Linq.IQueryExecutor.ExecuteCollection``1(Remotion.Data.Linq.QueryModel)"><summary> - Executes the given <paramref name="queryModel" /> as a collection query, i.e. as a query returning objects of type <typeparamref name="T" />. - The query does not end with a scalar result operator, but it can end with a single result operator, for example - <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.SingleResultOperator" /> or <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.FirstResultOperator" />. In such a case, the returned enumerable must yield exactly - one object (or none if the last result operator allows empty result sets). - </summary><param name="queryModel">The <see cref="T:Remotion.Data.Linq.QueryModel" /> representing the query to be executed. Analyze this via an - <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" />.</param></member><member name="T:Remotion.Data.Linq.IQueryModelVisitor"><summary> - Defines an interface for visiting the clauses of a <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary></member><member name="T:Remotion.Data.Linq.QueryableBase`1"><summary> - Acts as a common base class for <see cref="T:System.Linq.IQueryable`1" /> implementations based on re-linq. In a specific LINQ provider, a custom queryable - class should be derived from <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> which supplies an implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> that is used to - execute the query. This is then used as an entry point (the main data source) of a LINQ query. - </summary></member><member name="M:Remotion.Data.Linq.QueryableBase`1.#ctor(Remotion.Data.Linq.IQueryExecutor)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> class with a <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> and the given - <paramref name="executor" />. This constructor should be used by subclasses to begin a new query. The <see cref="P:Remotion.Data.Linq.QueryableBase`1.Expression" /> generated by - this constructor is a <see cref="T:System.Linq.Expressions.ConstantExpression" /> pointing back to this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />. - </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute the query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />.</param></member><member name="M:Remotion.Data.Linq.QueryableBase`1.#ctor(System.Linq.IQueryProvider)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> class with a specific <see cref="T:System.Linq.IQueryProvider" />. This constructor - should only be used to begin a query when <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> does not fit the requirements. - </summary><param name="provider">The provider used to execute the query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> and to construct - queries around this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />.</param></member><member name="M:Remotion.Data.Linq.QueryableBase`1.#ctor(System.Linq.IQueryProvider,System.Linq.Expressions.Expression)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> class with a given <paramref name="provider" /> and - <paramref name="expression" />. A constructor with a matching signature must be exposed on subclasses because it is used by - <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> to construct queries around this <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> when a query method (e.g. of the - <see cref="T:System.Linq.Queryable" /> class) is called. - </summary><param name="provider">The provider used to execute the query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> and to construct - queries around this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />.</param><param name="expression">The expression representing the query.</param></member><member name="M:Remotion.Data.Linq.QueryableBase`1.GetEnumerator"><summary> - Executes the query via the <see cref="P:Remotion.Data.Linq.QueryableBase`1.Provider" /> and returns an enumerator that iterates through the items returned by the query. - </summary></member><member name="P:Remotion.Data.Linq.QueryableBase`1.Expression"><summary> - Gets the expression tree that is associated with the instance of <see cref="T:System.Linq.IQueryable" />. This expression describes the - query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryableBase`1.Provider"><summary> - Gets the query provider that is associated with this data source. The provider is used to execute the query. By default, a - <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> is used that parses the query and passes it on to an implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryableBase`1.ElementType"><summary> - Gets the type of the element(s) that are returned when the expression tree associated with this instance of <see cref="T:System.Linq.IQueryable" /> is executed. - </summary></member><member name="T:Remotion.Data.Linq.QueryModel"><summary> - Provides an abstraction of an expression tree created for a LINQ query. <see cref="T:Remotion.Data.Linq.QueryModel" /> instances are passed to LINQ providers based - on re-linq via <see cref="T:Remotion.Data.Linq.IQueryExecutor" />, but you can also use <see cref="T:Remotion.Data.Linq.Parsing.Structure.QueryParser" /> to parse an expression tree by hand or construct - a <see cref="T:Remotion.Data.Linq.QueryModel" /> manually via its constructor. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.#ctor(Remotion.Data.Linq.Clauses.MainFromClause,Remotion.Data.Linq.Clauses.SelectClause)"><summary> - Initializes a new instance of <see cref="T:Remotion.Data.Linq.QueryModel" /> - </summary><param name="mainFromClause">The <see cref="T:Remotion.Data.Linq.Clauses.MainFromClause" /> of the query. This is the starting point of the query, generating items - that are filtered and projected by the query.</param><param name="selectClause">The <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" /> of the query. This is the end point of - the query, it defines what is actually returned for each of the items coming from the <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" /> and passing the - <see cref="P:Remotion.Data.Linq.QueryModel.BodyClauses" />. After it, only the <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" /> modify the result of the query.</param></member><member name="M:Remotion.Data.Linq.QueryModel.GetOutputDataInfo"><summary> - Gets an <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo" /> object describing the data streaming out of this <see cref="T:Remotion.Data.Linq.QueryModel" />. If a query ends with - the <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />, this corresponds to <see cref="M:Remotion.Data.Linq.Clauses.SelectClause.GetOutputDataInfo" />. If a query has - <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" />, the data is further modified by those operators. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.GetUniqueIdentfierGenerator"><summary> - Gets the <see cref="T:Remotion.Data.Linq.UniqueIdentifierGenerator" /> which is used by the <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Accept(Remotion.Data.Linq.IQueryModelVisitor)"><summary> - Accepts an implementation of <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" /> or <see cref="T:Remotion.Data.Linq.QueryModelVisitorBase" />, as defined by the Visitor pattern. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.ToString"><summary> - Returns a <see cref="T:System.String" /> representation of this <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Clone"><summary> - Clones this <see cref="T:Remotion.Data.Linq.QueryModel" />, returning a new <see cref="T:Remotion.Data.Linq.QueryModel" /> equivalent to this instance, but with its clauses being - clones of this instance's clauses. Any <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> in the cloned clauses that points back to another clause - in this <see cref="T:Remotion.Data.Linq.QueryModel" /> (including its subqueries) is adjusted to point to the respective clones in the cloned - <see cref="T:Remotion.Data.Linq.QueryModel" />. Any subquery nested in the <see cref="T:Remotion.Data.Linq.QueryModel" /> is also cloned. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Clone(Remotion.Data.Linq.Clauses.QuerySourceMapping)"><summary> - Clones this <see cref="T:Remotion.Data.Linq.QueryModel" />, returning a new <see cref="T:Remotion.Data.Linq.QueryModel" /> equivalent to this instance, but with its clauses being - clones of this instance's clauses. Any <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> in the cloned clauses that points back to another clause - in this <see cref="T:Remotion.Data.Linq.QueryModel" /> (including its subqueries) is adjusted to point to the respective clones in the cloned - <see cref="T:Remotion.Data.Linq.QueryModel" />. Any subquery nested in the <see cref="T:Remotion.Data.Linq.QueryModel" /> is also cloned. - </summary><param name="querySourceMapping">The <see cref="T:Remotion.Data.Linq.Clauses.QuerySourceMapping" /> defining how to adjust instances of - <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> in the cloned <see cref="T:Remotion.Data.Linq.QueryModel" />. If there is a <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> - that points out of the <see cref="T:Remotion.Data.Linq.QueryModel" /> being cloned, specify its replacement via this parameter. At the end of the cloning process, - this object maps all the clauses in this original <see cref="T:Remotion.Data.Linq.QueryModel" /> to the clones created in the process. - </param></member><member name="M:Remotion.Data.Linq.QueryModel.TransformExpressions(System.Func{System.Linq.Expressions.Expression,System.Linq.Expressions.Expression})"><summary> - Transforms all the expressions in this <see cref="T:Remotion.Data.Linq.QueryModel" />'s clauses via the given <paramref name="transformation" /> delegate. - </summary><param name="transformation">The transformation object. This delegate is called for each <see cref="T:System.Linq.Expressions.Expression" /> within this - <see cref="T:Remotion.Data.Linq.QueryModel" />, and those expressions will be replaced with what the delegate returns.</param></member><member name="M:Remotion.Data.Linq.QueryModel.GetNewName(System.String)"><summary> - Returns a new name with the given prefix. The name is different from that of any <see cref="T:Remotion.Data.Linq.Clauses.FromClauseBase" /> added - in the <see cref="T:Remotion.Data.Linq.QueryModel" />. Note that clause names that are changed after the clause is added as well as names of other clauses - than from clauses are not considered when determining "unique" names. Use names only for readability and debugging, not - for uniquely identifying clauses. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Execute(Remotion.Data.Linq.IQueryExecutor)"><summary> - Executes this <see cref="T:Remotion.Data.Linq.QueryModel" /> via the given <see cref="T:Remotion.Data.Linq.IQueryExecutor" />. By default, this indirectly calls - <see cref="M:Remotion.Data.Linq.IQueryExecutor.ExecuteCollection``1(Remotion.Data.Linq.QueryModel)" />, but this can be modified by the <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" />. - </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> to use for executing this query.</param></member><member name="M:Remotion.Data.Linq.QueryModel.IsIdentityQuery"><summary> - Determines whether this <see cref="T:Remotion.Data.Linq.QueryModel" /> represents an identity query. An identity query is a query without any body clauses - whose <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" /> selects exactly the items produced by its <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" />. An identity query can have - <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryModel.MainFromClause"><summary> - Gets or sets the query's <see cref="T:Remotion.Data.Linq.Clauses.MainFromClause" />. This is the starting point of the query, generating items that are processed by - the <see cref="P:Remotion.Data.Linq.QueryModel.BodyClauses" /> and projected or grouped by the <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryModel.SelectClause"><summary> - Gets or sets the query's select clause. This is the end point of the query, it defines what is actually returned for each of the - items coming from the <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" /> and passing the <see cref="P:Remotion.Data.Linq.QueryModel.BodyClauses" />. After it, only the <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" /> - modify the result of the query. - </summary></member><member name="P:Remotion.Data.Linq.QueryModel.BodyClauses"><summary> - Gets a collection representing the query's body clauses. Body clauses take the items generated by the <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" />, - filtering (<see cref="T:Remotion.Data.Linq.Clauses.WhereClause" />), ordering (<see cref="T:Remotion.Data.Linq.Clauses.OrderByClause" />), augmenting (<see cref="T:Remotion.Data.Linq.Clauses.AdditionalFromClause" />), or otherwise - processing them before they are passed to the <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryModel.ResultOperators"><summary> - Gets the result operators attached to this <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />. Result operators modify the query's result set, aggregating, - filtering, or otherwise processing the result before it is returned. - </summary></member><member name="T:Remotion.Data.Linq.QueryModelBuilder"><summary> - Collects clauses and creates a <see cref="T:Remotion.Data.Linq.QueryModel" /> from them. This provides a simple way to first add all the clauses and then - create the <see cref="T:Remotion.Data.Linq.QueryModel" /> rather than the two-step approach (first <see cref="P:Remotion.Data.Linq.QueryModelBuilder.SelectClause" /> and <see cref="P:Remotion.Data.Linq.QueryModelBuilder.MainFromClause" />, - then the <see cref="T:Remotion.Data.Linq.Clauses.IBodyClause" />s) required by <see cref="T:Remotion.Data.Linq.QueryModel" />'s constructor. - </summary></member><member name="T:Remotion.Data.Linq.QueryModelVisitorBase"><summary> - Provides a default implementation of <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" /> which automatically visits child items. That is, the default - implementation of <see cref="M:Remotion.Data.Linq.QueryModelVisitorBase.VisitQueryModel(Remotion.Data.Linq.QueryModel)" /> automatically calls <c>Accept</c> on all clauses in the <see cref="T:Remotion.Data.Linq.QueryModel" /> - and the default implementation of <see cref="M:Remotion.Data.Linq.QueryModelVisitorBase.VisitOrderByClause(Remotion.Data.Linq.Clauses.OrderByClause,Remotion.Data.Linq.QueryModel,System.Int32)" /> automatically calls <see cref="M:Remotion.Data.Linq.Clauses.Ordering.Accept(Remotion.Data.Linq.IQueryModelVisitor,Remotion.Data.Linq.QueryModel,Remotion.Data.Linq.Clauses.OrderByClause,System.Int32)" /> on the - <see cref="T:Remotion.Data.Linq.Clauses.Ordering" /> instances in its <see cref="P:Remotion.Data.Linq.Clauses.OrderByClause.Orderings" /> collection, and so on. - </summary></member><member name="T:Remotion.Data.Linq.UniqueIdentifierGenerator"><summary> - Generates unique identifiers based on a set of known identifiers. - An identifier is generated by appending a number to a given prefix. The identifier is considered unique when no known identifier - exists which equals the prefix/number combination. - </summary></member><member name="M:Remotion.Data.Linq.UniqueIdentifierGenerator.AddKnownIdentifier(System.String)"><summary> - Adds the given <paramref name="identifier" /> to the set of known identifiers. - </summary><param name="identifier">The identifier to add.</param></member><member name="M:Remotion.Data.Linq.UniqueIdentifierGenerator.GetUniqueIdentifier(System.String)"><summary> - Gets a unique identifier starting with the given <paramref name="prefix" />. The identifier is generating by appending a number to the - prefix so that the resulting string does not match a known identifier. - </summary><param name="prefix">The prefix to use for the identifier.</param></member><member name="T:Remotion.Data.Linq.UnmappedItemException"><summary> - TODO: add summary - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression"><summary> - Acts as a base class for custom extension expressions, providing advanced visitor support. Also allows extension expressions to be reduced to - a tree of standard expressions with equivalent semantics. - </summary></member><member name="F:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.ExtensionExpressionNodeType"><summary> - Defines a standard <see cref="T:System.Linq.Expressions.ExpressionType" /> value that is used by all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> subclasses. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.#ctor(System.Type)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> class. - </summary><param name="type">The type of the value represented by the <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.Reduce"><summary> - Reduces this instance to a tree of standard expressions. If this instance cannot be reduced, the same <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> - is returned. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.ReduceAndCheck"><summary> - Calls the <see cref="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.Reduce" /> method and checks certain invariants before returning the result. This method can only be called when - <see cref="P:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.CanReduce" /> returns <see langword="true" />. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.Accept(Remotion.Data.Linq.Parsing.ExpressionTreeVisitor)"><summary> - Accepts the specified visitor, by default dispatching to <see cref="M:Remotion.Data.Linq.Parsing.ExpressionTreeVisitor.VisitExtensionExpression(Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression)" />. - Inheritors of the <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> class can override this method in order to dispatch to a specific Visit method. - </summary><param name="visitor">The visitor whose Visit method should be invoked.</param></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.VisitChildren(Remotion.Data.Linq.Parsing.ExpressionTreeVisitor)"><summary> - Must be overridden by <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> subclasses by calling <see cref="M:Remotion.Data.Linq.Parsing.ExpressionTreeVisitor.VisitExpression(System.Linq.Expressions.Expression)" /> on all - children of this extension node. - </summary><param name="visitor">The visitor to visit the child nodes with.</param></member><member name="P:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.CanReduce"><summary> - Gets a value indicating whether this instance can be reduced to a tree of standard expressions. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.IVBSpecificExpressionVisitor"><summary> - This interface should be implemented by visitors that handle VB-specific expressions. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression"><summary> - Represents an expression tree node that points to a query source represented by a <see cref="T:Remotion.Data.Linq.Clauses.FromClauseBase" />. These expressions should always - point back, to a clause defined prior to the clause holding a <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" />. Otherwise, exceptions might be - thrown at runtime. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression.Equals(System.Object)"><summary> - Determines whether the specified <see cref="T:System.Object" /> is equal to the current <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> by - comparing the <see cref="P:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression.ReferencedQuerySource" /> properties for reference equality. - </summary><param name="obj">The <see cref="T:System.Object" /> to compare with the current <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" />.</param></member><member name="P:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression.ReferencedQuerySource"><summary> - Gets the query source referenced by this expression. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression"><summary> - Represents an <see cref="T:System.Linq.Expressions.Expression" /> that holds a subquery. The subquery is held by <see cref="P:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression.QueryModel" /> in its parsed form. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.VBStringComparisonExpression"><summary> - Represents a VB-specific comparison expression. To explicitly support this expression type, implement <see cref="T:Remotion.Data.Linq.Clauses.Expressions.IVBSpecificExpressionVisitor" />. - To treat this expression as if it were an ordinary <see cref="T:System.Linq.Expressions.BinaryExpression" />, call its <see cref="M:Remotion.Data.Linq.Clauses.Expressions.VBStringComparisonExpression.Reduce" /> method and visit the result. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.AccessorFindingExpressionTreeVisitor"><summary> - Constructs a <see cref="T:System.Linq.Expressions.LambdaExpression" /> that is able to extract a specific simple expression from a complex <see cref="T:System.Linq.Expressions.NewExpression" /> - or <see cref="T:System.Linq.Expressions.MemberInitExpression" />. - </summary></member><member name="T:Remotion.Data.Linq.Parsing.ExpressionTreeVisitor"><summary> - Provides a base class that can be used for visiting and optionally transforming each node of an <see cref="T:System.Linq.Expressions.Expression" /> tree in a - strongly typed fashion. - This is the base class of many transformation classes. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.AccessorFindingExpressionTreeVisitor.FindAccessorLambda(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.ParameterExpression)"><summary> - Constructs a <see cref="T:System.Linq.Expressions.LambdaExpression" /> that is able to extract a specific simple <paramref name="searchedExpression" /> from a - complex <paramref name="fullExpression" />. - </summary><param name="searchedExpression">The expression an accessor to which should be created.</param><param name="fullExpression">The full expression containing the <paramref name="searchedExpression" />.</param><param name="inputParameter">The input parameter to be used by the resulting lambda. Its type must match the type of <paramref name="fullExpression" />.</param></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.CloningExpressionTreeVisitor"><summary> - Visits an <see cref="T:System.Linq.Expressions.Expression" /> tree, replacing all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances with references to cloned clauses, - as defined by a <see cref="T:Remotion.Data.Linq.Clauses.QuerySourceMapping" />. In addition, all <see cref="T:Remotion.Data.Linq.QueryModel" /> instances in - <see cref="T:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression">SubQueryExpressions</see> are cloned, and their references also replaces. All referenced clauses must be mapped - to cloned clauses in the given <see cref="T:Remotion.Data.Linq.Clauses.QuerySourceMapping" />, otherwise an expression is thrown. This is used by <see cref="M:Remotion.Data.Linq.QueryModel.Clone" /> - to adjust references to the old <see cref="T:Remotion.Data.Linq.QueryModel" /> with references to the new <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReferenceReplacingExpressionTreeVisitor"><summary> - Takes an expression and replaces all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances, as defined by a given <see cref="P:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReferenceReplacingExpressionTreeVisitor.QuerySourceMapping" />. - This is used whenever references to query sources should be replaced by a transformation. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReferenceReplacingExpressionTreeVisitor.ReplaceClauseReferences(System.Linq.Expressions.Expression,Remotion.Data.Linq.Clauses.QuerySourceMapping,System.Boolean)"><summary> - Takes an expression and replaces all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances, as defined by a given - <paramref name="querySourceMapping" />. - </summary><param name="expression">The expression to be scanned for references.</param><param name="querySourceMapping">The clause mapping to be used for replacing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances.</param><param name="throwOnUnmappedReferences">If <see langword="true" />, the visitor will throw an exception when - <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> not mapped in the <paramref name="querySourceMapping" /> is encountered. If <see langword="false" />, - the visitor will ignore such expressions.</param></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.CloningExpressionTreeVisitor.AdjustExpressionAfterCloning(System.Linq.Expressions.Expression,Remotion.Data.Linq.Clauses.QuerySourceMapping)"><summary> - Adjusts the given expression for cloning, that is replaces <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> and <see cref="T:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression" /> - instances. All referenced clauses must be mapped to clones in the given <paramref name="querySourceMapping" />, otherwise an exception is thrown. - </summary><param name="expression">The expression to be adjusted.</param><param name="querySourceMapping">The clause mapping to be used for replacing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances.</param></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.FormattingExpressionTreeVisitor"><summary> - Transforms an expression tree into a human-readable string, taking all the custom expression nodes into account. - It does so by replacing all instances of custom expression nodes by parameters that have the desired string as their names. This is done - to circumvent a limitation in the <see cref="T:System.Linq.Expressions.Expression" /> class, where overriding <see cref="M:System.Linq.Expressions.Expression.ToString" /> in custom expressions - will not work. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReverseResolvingExpressionTreeVisitor"><summary> - Performs a reverse <see cref="M:Remotion.Data.Linq.Parsing.Structure.IntermediateModel.IExpressionNode.Resolve(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,Remotion.Data.Linq.Parsing.Structure.IntermediateModel.ClauseGenerationContext)" /> operation, i.e. creates a <see cref="T:System.Linq.Expressions.LambdaExpression" /> from a given resolved expression, - substituting all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> objects by getting the referenced objects from the lambda's input parameter. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReverseResolvingExpressionTreeVisitor.ReverseResolve(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression)"><summary> - Performs a reverse <see cref="M:Remotion.Data.Linq.Parsing.Structure.IntermediateModel.IExpressionNode.Resolve(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,Remotion.Data.Linq.Parsing.Structure.IntermediateModel.ClauseGenerationContext)" /> operation, i.e. creates a <see cref="T:System.Linq.Expressions.LambdaExpression" /> from a given resolved expression, - substituting all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> objects by getting the referenced objects from the lambda's input parameter. - </summary><param name="itemExpression">The item expression representing the items passed to the generated <see cref="T:System.Linq.Expressions.LambdaExpression" /> via its input - parameter.</param><param name="resolvedExpression">The resolved expression for which to generate a reverse resolved <see cref="T:System.Linq.Expressions.LambdaExpression" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReverseResolvingExpressionTreeVisitor.ReverseResolveLambda(System.Linq.Expressions.Expression,System.Linq.Expressions.LambdaExpression,System.Int32)"><summary> - Performs a reverse <see cref="M:Remotion.Data.Linq.Parsing.Structure.IntermediateModel.IExpressionNode.Resolve(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,Remotion.Data.Linq.Parsing.Structure.IntermediateModel.ClauseGenerationContext)" /> operation on a <see cref="T:System.Linq.Expressions.LambdaExpression" />, i.e. creates a new - <see cref="T:System.Linq.Expressions.LambdaExpression" /> with an additional parameter from a given resolved <see cref="T:System.Linq.Expressions.LambdaExpression" />, - substituting all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> objects by getting the referenced objects from the new input parameter. - </summary><param name="itemExpression">The item expression representing the items passed to the generated <see cref="T:System.Linq.Expressions.LambdaExpression" /> via its new - input parameter.</param><param name="resolvedExpression">The resolved <see cref="T:System.Linq.Expressions.LambdaExpression" /> for which to generate a reverse resolved <see cref="T:System.Linq.Expressions.LambdaExpression" />.</param><param name="parameterInsertionPosition">The position at which to insert the new parameter.</param></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator"><summary> - Represents aggregating the items returned by a query into a single value with an initial seeding value. - This is a result operator, operating on the whole result set of a query. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.ValueFromSequenceResultOperatorBase"><summary> - Represents a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" /> that is executed on a sequence, returning a scalar value or single item as its result. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperatorBase"><summary> - Represents an operation that is executed on the result set of the query, aggregating, filtering, or restricting the number of result items - before the query result is returned. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.ExecuteInMemory(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData)"><summary> - Executes this result operator in memory, on a given input. Executing result operators in memory should only be - performed if the target query system does not support the operator. - </summary><param name="input">The input for the result operator. This must match the type of <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedData" /> expected by the operator.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"><summary> - Gets information about the data streamed out of this <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" />. This contains the result type a query would have if - it ended with this <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" />, and it optionally includes an <see cref="P:Remotion.Data.Linq.Clauses.StreamedData.StreamedSequenceInfo.ItemExpression" /> describing - the streamed sequence's items. - </summary><param name="inputInfo">Information about the data produced by the preceding <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" />, or the <see cref="T:Remotion.Data.Linq.Clauses.SelectClause" /> - of the query if no previous <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" /> exists.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.Clone(Remotion.Data.Linq.Clauses.CloneContext)"><summary> - Clones this item, registering its clone with the <paramref name="cloneContext" /> if it is a query source clause. - </summary><param name="cloneContext">The clones of all query source clauses are registered with this <see cref="T:Remotion.Data.Linq.Clauses.CloneContext" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.Accept(Remotion.Data.Linq.IQueryModelVisitor,Remotion.Data.Linq.QueryModel,System.Int32)"><summary> - Accepts the specified visitor by calling its <see cref="M:Remotion.Data.Linq.IQueryModelVisitor.VisitResultOperator(Remotion.Data.Linq.Clauses.ResultOperatorBase,Remotion.Data.Linq.QueryModel,System.Int32)" /> method. - </summary><param name="visitor">The visitor to accept.</param><param name="queryModel">The query model in whose context this clause is visited.</param><param name="index">The index of this item in the <paramref name="queryModel" />'s <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" /> collection.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.TransformExpressions(System.Func{System.Linq.Expressions.Expression,System.Linq.Expressions.Expression})"><summary> - Transforms all the expressions in this item via the given <paramref name="transformation" /> delegate. Subclasses must apply the - <paramref name="transformation" /> to any expressions they hold. If a subclass does not hold any expressions, it shouldn't do anything - in the implementation of this method. - </summary><param name="transformation">The transformation object. This delegate is called for each <see cref="T:System.Linq.Expressions.Expression" /> within this - item, and those expressions will be replaced with what the delegate returns.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.InvokeGenericExecuteMethod``2(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData,System.Func{``0,``1})"><summary> - Invokes a given generic method on an <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedData" /> input via Reflection. Use this to implement - <see cref="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.ExecuteInMemory(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData)" /> by defining a strongly typed, generic variant - of <see cref="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.ExecuteInMemory(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData)" />; then invoke that strongly typed - variant via <see cref="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.InvokeGenericExecuteMethod``2(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData,System.Func{``0,``1})" />. - </summary><param name="input">The input <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedData" /> object to invoke the method on..</param><param name="genericExecuteCaller">A delegate holding exactly one public generic method with exactly one generic argument. This method is - called via Reflection on the given <paramref name="input" /> argument.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.InvokeExecuteMethod(System.Reflection.MethodInfo,System.Object)"><summary> - Invokes the given <paramref name="method" /> via reflection on the given <paramref name="input" />. - </summary><param name="input">The input to invoke the method with.</param><param name="method">The method to be invoked.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.CheckSequenceItemType(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequenceInfo,System.Type)"><summary> - Checks the type of the items retrieved by the sequence, throwing an <see cref="T:Remotion.Data.Linq.Utilities.ArgumentTypeException" /> if the items don't match the - expected type. - </summary><param name="sequenceInfo">The <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.StreamedSequenceInfo" /> object describing the sequence.</param><param name="expectedItemType">The expected item type.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.GetConstantValueFromExpression``1(System.String,System.Linq.Expressions.Expression)"><summary> - Gets the constant value of the given expression, assuming it is a <see cref="T:System.Linq.Expressions.ConstantExpression" />. If it is - not, an <see cref="T:System.InvalidOperationException" /> is thrown. - </summary><param name="expressionName">A string describing the value; this will be included in the exception message if an exception is thrown.</param><param name="expression">The expression whose value to get.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.#ctor(System.Linq.Expressions.Expression,System.Linq.Expressions.LambdaExpression,System.Linq.Expressions.LambdaExpression)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator" /> class. - </summary><param name="seed">The seed expression.</param><param name="func">The aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so - far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators - are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes.</param><param name="optionalResultSelector">The result selector, can be <see langword="null" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.GetConstantSeed``1"><summary> - Gets the constant value of the <see cref="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Seed" /> property, assuming it is a <see cref="T:System.Linq.Expressions.ConstantExpression" />. If it is - not, an <see cref="T:System.InvalidOperationException" /> is thrown. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.ExecuteInMemory``1(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.ExecuteAggregateInMemory``3(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"><summary> - Executes the aggregating operation in memory. - </summary><param name="input">The input sequence.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Clone(Remotion.Data.Linq.Clauses.CloneContext)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.ToString"></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Func"><summary> - Gets or sets the aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so - far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators - are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes. - </summary></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Seed"><summary> - Gets or sets the seed of the accumulation. This is an <see cref="T:System.Linq.Expressions.Expression" /> denoting the starting value of the aggregation. - </summary></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.OptionalResultSelector"><summary> - Gets or sets the result selector. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> applied after the aggregation to select the final value. - Can be <see langword="null" />. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator"><summary> - Represents aggregating the items returned by a query into a single value. The first item is used as the seeding value for the aggregating - function. - This is a result operator, operating on the whole result set of a query. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.#ctor(System.Linq.Expressions.LambdaExpression)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator" /> class. - </summary><param name="func">The aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so - far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators - are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.ExecuteInMemory``1(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.Clone(Remotion.Data.Linq.Clauses.CloneContext)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.ToString"></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.Func"><summary> - Gets or sets the aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so - far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators - are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator"><summary> - Represents a check whether all items returned by a query satisfy a predicate. - This is a result operator, operating on the whole result set of a query. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.#ctor(System.Linq.Expressions.Expression)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator" /> class. - </summary><param name="predicate">The predicate to evaluate. This is a resolved version of the body of the <see cref="T:System.Linq.Expressions.LambdaExpression" /> that would be - passed to <see cref="M:System.Linq.Queryable.All``1(System.Linq.IQueryable{``0},System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}})" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.ExecuteInMemory``1(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.Clone(Remotion.Data.Linq.Clauses.CloneContext)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.TransformExpressions(System.Func{System.Linq.Expressions.Expression,System.Linq.Expressions.Expression})"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.ToString"></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.Predicate"><summary> - Gets or sets the predicate to evaluate on all items in the sequence. - This is a resolved version of the body of the <see cref="T:System.Linq.Expressions.LambdaExpression" /> that would be - passed to <see cref="M:System.Linq.Queryable.All``1(System.Linq.IQueryable{``0},System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}})" />. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.AnyResultOper... [truncated message content] |
From: <pa...@us...> - 2011-02-18 06:26:26
|
Revision: 5383 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5383&view=rev Author: patearl Date: 2011-02-18 06:26:18 +0000 (Fri, 18 Feb 2011) Log Message: ----------- Reverted ReLinq upgrade until I can figure out what happened to test TearDowns. Modified Paths: -------------- trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.dll trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.pdb trunk/nhibernate/src/NHibernate/Linq/NhRelinqQueryParser.cs trunk/nhibernate/src/NHibernate/Linq/Visitors/ExpressionKeyVisitor.cs trunk/nhibernate/src/NHibernate/Linq/Visitors/QueryModelVisitor.cs trunk/nhibernate/src/NHibernate/Linq/Visitors/ResultOperatorProcessors/ProcessAggregate.cs trunk/nhibernate/src/NHibernate/NHibernate.csproj Added Paths: ----------- trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml trunk/nhibernate/src/NHibernate/Linq/Expressions/AggregateExpressionNode.cs trunk/nhibernate/src/NHibernate/Linq/ResultOperators/AggregateResultOperator.cs Removed Paths: ------------- trunk/nhibernate/src/NHibernate/Linq/Visitors/ResultOperatorProcessors/ProcessAggregateFromSeed.cs Modified: trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.dll =================================================================== (Binary files differ) Modified: trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.pdb =================================================================== (Binary files differ) Copied: trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml (from rev 5381, trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml) =================================================================== --- trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml (rev 0) +++ trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml 2011-02-18 06:26:18 UTC (rev 5383) @@ -0,0 +1,1253 @@ +<?xml version="1.0" encoding="utf-8"?><doc><assembly> + <name>Remotion.Data.Linq</name> + </assembly><members><member name="T:Remotion.Data.Linq.DefaultQueryProvider"><summary> + Represents a default implementation of <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> that is automatically used by <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> + unless a custom <see cref="T:System.Linq.IQueryProvider" /> is specified. The <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> executes queries by parsing them into + an instance of type <see cref="T:Remotion.Data.Linq.QueryModel" />, which is then passed to an implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> to obtain the + result set. + </summary></member><member name="T:Remotion.Data.Linq.QueryProviderBase"><summary> + Provides a default implementation of <see cref="T:System.Linq.IQueryProvider" /> that executes queries (subclasses of <see cref="T:Remotion.Data.Linq.QueryableBase`1" />) by + first parsing them into a <see cref="T:Remotion.Data.Linq.QueryModel" /> and then passing that to a given implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" />. + Usually, <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> should be used unless <see cref="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)" /> must be manually implemented. + </summary></member><member name="M:Remotion.Data.Linq.QueryProviderBase.#ctor(Remotion.Data.Linq.IQueryExecutor)"><summary> + Initializes a new instance of <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> using the default <see cref="T:Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry" />. + </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute queries against a specific query backend.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.#ctor(Remotion.Data.Linq.IQueryExecutor,Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry)"><summary> + Initializes a new instance of <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> using a custom <see cref="T:Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry" />. Use this + constructor to specify a specific set of parsers to use when analyzing the query. + </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute queries against a specific query backend.</param><param name="nodeTypeRegistry">The <see cref="T:Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry" /> containing the <see cref="T:System.Linq.Expressions.MethodCallExpression" /> + parsers that should be used when parsing queries.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery(System.Linq.Expressions.Expression)"><summary> + Constructs an <see cref="T:System.Linq.IQueryable" /> object that can evaluate the query represented by a specified expression tree. This + method delegates to <see cref="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)" />. + </summary><param name="expression">An expression tree that represents a LINQ query.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)"><summary> + Constructs an <see cref="T:System.Linq.IQueryable`1" /> object that can evaluate the query represented by a specified expression tree. This method is + called by the standard query operators defined by the <see cref="T:System.Linq.Queryable" /> class. + </summary><param name="expression">An expression tree that represents a LINQ query.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.Execute``1(System.Linq.Expressions.Expression)"><summary> + Executes the query defined by the specified expression by parsing it with a + <see cref="T:Remotion.Data.Linq.Parsing.Structure.QueryParser" /> and then running it through the <see cref="P:Remotion.Data.Linq.QueryProviderBase.Executor" />. + This method is invoked through the <see cref="T:System.Linq.IQueryProvider" /> interface by methods such as + <see cref="M:System.Linq.Queryable.First``1(System.Linq.IQueryable{``0})" /> and + <see cref="M:System.Linq.Queryable.Count``1(System.Linq.IQueryable{``0})" />, and it's also invoked by <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> + when the <see cref="T:System.Linq.IQueryable`1" /> is enumerated. + </summary></member><member name="M:Remotion.Data.Linq.QueryProviderBase.GenerateQueryModel(System.Linq.Expressions.Expression)"><summary> + The method generates a <see cref="T:Remotion.Data.Linq.QueryModel" />. + </summary><param name="expression">The query as expression chain.</param></member><member name="P:Remotion.Data.Linq.QueryProviderBase.Executor"><summary> + Gets or sets the implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute queries created via <see cref="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)" />. + </summary></member><member name="P:Remotion.Data.Linq.QueryProviderBase.ExpressionTreeParser"><summary> + Gets the <see cref="P:Remotion.Data.Linq.QueryProviderBase.ExpressionTreeParser" /> used by this <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> to parse LINQ <see cref="T:System.Linq.Expressions.Expression" /> + trees. + </summary></member><member name="M:Remotion.Data.Linq.DefaultQueryProvider.CreateQuery``1(System.Linq.Expressions.Expression)"><summary> + Creates a new <see cref="T:System.Linq.IQueryable" /> (of type <see cref="P:Remotion.Data.Linq.DefaultQueryProvider.QueryableType" /> with <typeparamref name="T" /> as its generic argument) that + represents the query defined by <paramref name="expression" /> and is able to enumerate its results. + </summary><param name="expression">An expression representing the query for which a <see cref="T:System.Linq.IQueryable`1" /> should be created.</param></member><member name="P:Remotion.Data.Linq.DefaultQueryProvider.QueryableType"><summary> + Gets the type of queryable created by this provider. This is the generic type definition of an implementation of <see cref="T:System.Linq.IQueryable`1" /> + (usually a subclass of <see cref="T:Remotion.Data.Linq.QueryableBase`1" />) with exactly one type argument. + </summary></member><member name="T:Remotion.Data.Linq.IQueryExecutor"><summary> + Constitutes the bridge between re-linq and a concrete query provider implementation. Concrete providers implement this interface + and <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> calls the respective method of the interface implementation when a query is to be executed. + </summary></member><member name="M:Remotion.Data.Linq.IQueryExecutor.ExecuteScalar``1(Remotion.Data.Linq.QueryModel)"><summary> + Executes the given <paramref name="queryModel" /> as a scalar query, i.e. as a query returning a scalar value of type <typeparamref name="T" />. + The query ends with a scalar result operator, for example a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.CountResultOperator" /> or a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.SumResultOperator" />. + </summary><param name="queryModel">The <see cref="T:Remotion.Data.Linq.QueryModel" /> representing the query to be executed. Analyze this via an + <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" />.</param></member><member name="M:Remotion.Data.Linq.IQueryExecutor.ExecuteSingle``1(Remotion.Data.Linq.QueryModel,System.Boolean)"><summary> + Executes the given <paramref name="queryModel" /> as a single object query, i.e. as a query returning a single object of type + <typeparamref name="T" />. + The query ends with a single result operator, for example a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.FirstResultOperator" /> or a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.SingleResultOperator" />. + </summary><param name="queryModel">The <see cref="T:Remotion.Data.Linq.QueryModel" /> representing the query to be executed. Analyze this via an + <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" />.</param><param name="returnDefaultWhenEmpty">If <see langword="true" />, the executor must return a default value when its result set is empty; + if <see langword="false" />, it should throw an <see cref="T:System.InvalidOperationException" /> when its result set is empty.</param></member><member name="M:Remotion.Data.Linq.IQueryExecutor.ExecuteCollection``1(Remotion.Data.Linq.QueryModel)"><summary> + Executes the given <paramref name="queryModel" /> as a collection query, i.e. as a query returning objects of type <typeparamref name="T" />. + The query does not end with a scalar result operator, but it can end with a single result operator, for example + <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.SingleResultOperator" /> or <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.FirstResultOperator" />. In such a case, the returned enumerable must yield exactly + one object (or none if the last result operator allows empty result sets). + </summary><param name="queryModel">The <see cref="T:Remotion.Data.Linq.QueryModel" /> representing the query to be executed. Analyze this via an + <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" />.</param></member><member name="T:Remotion.Data.Linq.IQueryModelVisitor"><summary> + Defines an interface for visiting the clauses of a <see cref="T:Remotion.Data.Linq.QueryModel" />. + </summary></member><member name="T:Remotion.Data.Linq.QueryableBase`1"><summary> + Acts as a common base class for <see cref="T:System.Linq.IQueryable`1" /> implementations based on re-linq. In a specific LINQ provider, a custom queryable + class should be derived from <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> which supplies an implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> that is used to + execute the query. This is then used as an entry point (the main data source) of a LINQ query. + </summary></member><member name="M:Remotion.Data.Linq.QueryableBase`1.#ctor(Remotion.Data.Linq.IQueryExecutor)"><summary> + Initializes a new instance of the <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> class with a <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> and the given + <paramref name="executor" />. This constructor should be used by subclasses to begin a new query. The <see cref="P:Remotion.Data.Linq.QueryableBase`1.Expression" /> generated by + this constructor is a <see cref="T:System.Linq.Expressions.ConstantExpression" /> pointing back to this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />. + </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute the query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />.</param></member><member name="M:Remotion.Data.Linq.QueryableBase`1.#ctor(System.Linq.IQueryProvider)"><summary> + Initializes a new instance of the <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> class with a specific <see cref="T:System.Linq.IQueryProvider" />. This constructor + should only be used to begin a query when <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> does not fit the requirements. + </summary><param name="provider">The provider used to execute the query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> and to construct + queries around this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />.</param></member><member name="M:Remotion.Data.Linq.QueryableBase`1.#ctor(System.Linq.IQueryProvider,System.Linq.Expressions.Expression)"><summary> + Initializes a new instance of the <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> class with a given <paramref name="provider" /> and + <paramref name="expression" />. A constructor with a matching signature must be exposed on subclasses because it is used by + <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> to construct queries around this <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> when a query method (e.g. of the + <see cref="T:System.Linq.Queryable" /> class) is called. + </summary><param name="provider">The provider used to execute the query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> and to construct + queries around this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />.</param><param name="expression">The expression representing the query.</param></member><member name="M:Remotion.Data.Linq.QueryableBase`1.GetEnumerator"><summary> + Executes the query via the <see cref="P:Remotion.Data.Linq.QueryableBase`1.Provider" /> and returns an enumerator that iterates through the items returned by the query. + </summary></member><member name="P:Remotion.Data.Linq.QueryableBase`1.Expression"><summary> + Gets the expression tree that is associated with the instance of <see cref="T:System.Linq.IQueryable" />. This expression describes the + query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />. + </summary></member><member name="P:Remotion.Data.Linq.QueryableBase`1.Provider"><summary> + Gets the query provider that is associated with this data source. The provider is used to execute the query. By default, a + <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> is used that parses the query and passes it on to an implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" />. + </summary></member><member name="P:Remotion.Data.Linq.QueryableBase`1.ElementType"><summary> + Gets the type of the element(s) that are returned when the expression tree associated with this instance of <see cref="T:System.Linq.IQueryable" /> is executed. + </summary></member><member name="T:Remotion.Data.Linq.QueryModel"><summary> + Provides an abstraction of an expression tree created for a LINQ query. <see cref="T:Remotion.Data.Linq.QueryModel" /> instances are passed to LINQ providers based + on re-linq via <see cref="T:Remotion.Data.Linq.IQueryExecutor" />, but you can also use <see cref="T:Remotion.Data.Linq.Parsing.Structure.QueryParser" /> to parse an expression tree by hand or construct + a <see cref="T:Remotion.Data.Linq.QueryModel" /> manually via its constructor. + </summary></member><member name="M:Remotion.Data.Linq.QueryModel.#ctor(Remotion.Data.Linq.Clauses.MainFromClause,Remotion.Data.Linq.Clauses.SelectClause)"><summary> + Initializes a new instance of <see cref="T:Remotion.Data.Linq.QueryModel" /> + </summary><param name="mainFromClause">The <see cref="T:Remotion.Data.Linq.Clauses.MainFromClause" /> of the query. This is the starting point of the query, generating items + that are filtered and projected by the query.</param><param name="selectClause">The <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" /> of the query. This is the end point of + the query, it defines what is actually returned for each of the items coming from the <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" /> and passing the + <see cref="P:Remotion.Data.Linq.QueryModel.BodyClauses" />. After it, only the <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" /> modify the result of the query.</param></member><member name="M:Remotion.Data.Linq.QueryModel.GetOutputDataInfo"><summary> + Gets an <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo" /> object describing the data streaming out of this <see cref="T:Remotion.Data.Linq.QueryModel" />. If a query ends with + the <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />, this corresponds to <see cref="M:Remotion.Data.Linq.Clauses.SelectClause.GetOutputDataInfo" />. If a query has + <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" />, the data is further modified by those operators. + </summary></member><member name="M:Remotion.Data.Linq.QueryModel.GetUniqueIdentfierGenerator"><summary> + Gets the <see cref="T:Remotion.Data.Linq.UniqueIdentifierGenerator" /> which is used by the <see cref="T:Remotion.Data.Linq.QueryModel" />. + </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Accept(Remotion.Data.Linq.IQueryModelVisitor)"><summary> + Accepts an implementation of <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" /> or <see cref="T:Remotion.Data.Linq.QueryModelVisitorBase" />, as defined by the Visitor pattern. + </summary></member><member name="M:Remotion.Data.Linq.QueryModel.ToString"><summary> + Returns a <see cref="T:System.String" /> representation of this <see cref="T:Remotion.Data.Linq.QueryModel" />. + </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Clone"><summary> + Clones this <see cref="T:Remotion.Data.Linq.QueryModel" />, returning a new <see cref="T:Remotion.Data.Linq.QueryModel" /> equivalent to this instance, but with its clauses being + clones of this instance's clauses. Any <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> in the cloned clauses that points back to another clause + in this <see cref="T:Remotion.Data.Linq.QueryModel" /> (including its subqueries) is adjusted to point to the respective clones in the cloned + <see cref="T:Remotion.Data.Linq.QueryModel" />. Any subquery nested in the <see cref="T:Remotion.Data.Linq.QueryModel" /> is also cloned. + </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Clone(Remotion.Data.Linq.Clauses.QuerySourceMapping)"><summary> + Clones this <see cref="T:Remotion.Data.Linq.QueryModel" />, returning a new <see cref="T:Remotion.Data.Linq.QueryModel" /> equivalent to this instance, but with its clauses being + clones of this instance's clauses. Any <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> in the cloned clauses that points back to another clause + in this <see cref="T:Remotion.Data.Linq.QueryModel" /> (including its subqueries) is adjusted to point to the respective clones in the cloned + <see cref="T:Remotion.Data.Linq.QueryModel" />. Any subquery nested in the <see cref="T:Remotion.Data.Linq.QueryModel" /> is also cloned. + </summary><param name="querySourceMapping">The <see cref="T:Remotion.Data.Linq.Clauses.QuerySourceMapping" /> defining how to adjust instances of + <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> in the cloned <see cref="T:Remotion.Data.Linq.QueryModel" />. If there is a <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> + that points out of the <see cref="T:Remotion.Data.Linq.QueryModel" /> being cloned, specify its replacement via this parameter. At the end of the cloning process, + this object maps all the clauses in this original <see cref="T:Remotion.Data.Linq.QueryModel" /> to the clones created in the process. + </param></member><member name="M:Remotion.Data.Linq.QueryModel.TransformExpressions(System.Func{System.Linq.Expressions.Expression,System.Linq.Expressions.Expression})"><summary> + Transforms all the expressions in this <see cref="T:Remotion.Data.Linq.QueryModel" />'s clauses via the given <paramref name="transformation" /> delegate. + </summary><param name="transformation">The transformation object. This delegate is called for each <see cref="T:System.Linq.Expressions.Expression" /> within this + <see cref="T:Remotion.Data.Linq.QueryModel" />, and those expressions will be replaced with what the delegate returns.</param></member><member name="M:Remotion.Data.Linq.QueryModel.GetNewName(System.String)"><summary> + Returns a new name with the given prefix. The name is different from that of any <see cref="T:Remotion.Data.Linq.Clauses.FromClauseBase" /> added + in the <see cref="T:Remotion.Data.Linq.QueryModel" />. Note that clause names that are changed after the clause is added as well as names of other clauses + than from clauses are not considered when determining "unique" names. Use names only for readability and debugging, not + for uniquely identifying clauses. + </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Execute(Remotion.Data.Linq.IQueryExecutor)"><summary> + Executes this <see cref="T:Remotion.Data.Linq.QueryModel" /> via the given <see cref="T:Remotion.Data.Linq.IQueryExecutor" />. By default, this indirectly calls + <see cref="M:Remotion.Data.Linq.IQueryExecutor.ExecuteCollection``1(Remotion.Data.Linq.QueryModel)" />, but this can be modified by the <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" />. + </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> to use for executing this query.</param></member><member name="M:Remotion.Data.Linq.QueryModel.IsIdentityQuery"><summary> + Determines whether this <see cref="T:Remotion.Data.Linq.QueryModel" /> represents an identity query. An identity query is a query without any body clauses + whose <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" /> selects exactly the items produced by its <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" />. An identity query can have + <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" />. + </summary></member><member name="P:Remotion.Data.Linq.QueryModel.MainFromClause"><summary> + Gets or sets the query's <see cref="T:Remotion.Data.Linq.Clauses.MainFromClause" />. This is the starting point of the query, generating items that are processed by + the <see cref="P:Remotion.Data.Linq.QueryModel.BodyClauses" /> and projected or grouped by the <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />. + </summary></member><member name="P:Remotion.Data.Linq.QueryModel.SelectClause"><summary> + Gets or sets the query's select clause. This is the end point of the query, it defines what is actually returned for each of the + items coming from the <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" /> and passing the <see cref="P:Remotion.Data.Linq.QueryModel.BodyClauses" />. After it, only the <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" /> + modify the result of the query. + </summary></member><member name="P:Remotion.Data.Linq.QueryModel.BodyClauses"><summary> + Gets a collection representing the query's body clauses. Body clauses take the items generated by the <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" />, + filtering (<see cref="T:Remotion.Data.Linq.Clauses.WhereClause" />), ordering (<see cref="T:Remotion.Data.Linq.Clauses.OrderByClause" />), augmenting (<see cref="T:Remotion.Data.Linq.Clauses.AdditionalFromClause" />), or otherwise + processing them before they are passed to the <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />. + </summary></member><member name="P:Remotion.Data.Linq.QueryModel.ResultOperators"><summary> + Gets the result operators attached to this <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />. Result operators modify the query's result set, aggregating, + filtering, or otherwise processing the result before it is returned. + </summary></member><member name="T:Remotion.Data.Linq.QueryModelBuilder"><summary> + Collects clauses and creates a <see cref="T:Remotion.Data.Linq.QueryModel" /> from them. This provides a simple way to first add all the clauses and then + create the <see cref="T:Remotion.Data.Linq.QueryModel" /> rather than the two-step approach (first <see cref="P:Remotion.Data.Linq.QueryModelBuilder.SelectClause" /> and <see cref="P:Remotion.Data.Linq.QueryModelBuilder.MainFromClause" />, + then the <see cref="T:Remotion.Data.Linq.Clauses.IBodyClause" />s) required by <see cref="T:Remotion.Data.Linq.QueryModel" />'s constructor. + </summary></member><member name="T:Remotion.Data.Linq.QueryModelVisitorBase"><summary> + Provides a default implementation of <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" /> which automatically visits child items. That is, the default + implementation of <see cref="M:Remotion.Data.Linq.QueryModelVisitorBase.VisitQueryModel(Remotion.Data.Linq.QueryModel)" /> automatically calls <c>Accept</c> on all clauses in the <see cref="T:Remotion.Data.Linq.QueryModel" /> + and the default implementation of <see cref="M:Remotion.Data.Linq.QueryModelVisitorBase.VisitOrderByClause(Remotion.Data.Linq.Clauses.OrderByClause,Remotion.Data.Linq.QueryModel,System.Int32)" /> automatically calls <see cref="M:Remotion.Data.Linq.Clauses.Ordering.Accept(Remotion.Data.Linq.IQueryModelVisitor,Remotion.Data.Linq.QueryModel,Remotion.Data.Linq.Clauses.OrderByClause,System.Int32)" /> on the + <see cref="T:Remotion.Data.Linq.Clauses.Ordering" /> instances in its <see cref="P:Remotion.Data.Linq.Clauses.OrderByClause.Orderings" /> collection, and so on. + </summary></member><member name="T:Remotion.Data.Linq.UniqueIdentifierGenerator"><summary> + Generates unique identifiers based on a set of known identifiers. + An identifier is generated by appending a number to a given prefix. The identifier is considered unique when no known identifier + exists which equals the prefix/number combination. + </summary></member><member name="M:Remotion.Data.Linq.UniqueIdentifierGenerator.AddKnownIdentifier(System.String)"><summary> + Adds the given <paramref name="identifier" /> to the set of known identifiers. + </summary><param name="identifier">The identifier to add.</param></member><member name="M:Remotion.Data.Linq.UniqueIdentifierGenerator.GetUniqueIdentifier(System.String)"><summary> + Gets a unique identifier starting with the given <paramref name="prefix" />. The identifier is generating by appending a number to the + prefix so that the resulting string does not match a known identifier. + </summary><param name="prefix">The prefix to use for the identifier.</param></member><member name="T:Remotion.Data.Linq.UnmappedItemException"><summary> + TODO: add summary + </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression"><summary> + Acts as a base class for custom extension expressions, providing advanced visitor support. Also allows extension expressions to be reduced to + a tree of standard expressions with equivalent semantics. + </summary></member><member name="F:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.ExtensionExpressionNodeType"><summary> + Defines a standard <see cref="T:System.Linq.Expressions.ExpressionType" /> value that is used by all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> subclasses. + </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.#ctor(System.Type)"><summary> + Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> class. + </summary><param name="type">The type of the value represented by the <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.Reduce"><summary> + Reduces this instance to a tree of standard expressions. If this instance cannot be reduced, the same <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> + is returned. + </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.ReduceAndCheck"><summary> + Calls the <see cref="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.Reduce" /> method and checks certain invariants before returning the result. This method can only be called when + <see cref="P:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.CanReduce" /> returns <see langword="true" />. + </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.Accept(Remotion.Data.Linq.Parsing.ExpressionTreeVisitor)"><summary> + Accepts the specified visitor, by default dispatching to <see cref="M:Remotion.Data.Linq.Parsing.ExpressionTreeVisitor.VisitExtensionExpression(Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression)" />. + Inheritors of the <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> class can override this method in order to dispatch to a specific Visit method. + </summary><param name="visitor">The visitor whose Visit method should be invoked.</param></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.VisitChildren(Remotion.Data.Linq.Parsing.ExpressionTreeVisitor)"><summary> + Must be overridden by <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> subclasses by calling <see cref="M:Remotion.Data.Linq.Parsing.ExpressionTreeVisitor.VisitExpression(System.Linq.Expressions.Expression)" /> on all + children of this extension node. + </summary><param name="visitor">The visitor to visit the child nodes with.</param></member><member name="P:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.CanReduce"><summary> + Gets a value indicating whether this instance can be reduced to a tree of standard expressions. + </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.IVBSpecificExpressionVisitor"><summary> + This interface should be implemented by visitors that handle VB-specific expressions. + </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression"><summary> + Represents an expression tree node that points to a query source represented by a <see cref="T:Remotion.Data.Linq.Clauses.FromClauseBase" />. These expressions should always + point back, to a clause defined prior to the clause holding a <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" />. Otherwise, exceptions might be + thrown at runtime. + </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression.Equals(System.Object)"><summary> + Determines whether the specified <see cref="T:System.Object" /> is equal to the current <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> by + comparing the <see cref="P:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression.ReferencedQuerySource" /> properties for reference equality. + </summary><param name="obj">The <see cref="T:System.Object" /> to compare with the current <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" />.</param></member><member name="P:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression.ReferencedQuerySource"><summary> + Gets the query source referenced by this expression. + </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression"><summary> + Represents an <see cref="T:System.Linq.Expressions.Expression" /> that holds a subquery. The subquery is held by <see cref="P:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression.QueryModel" /> in its parsed form. + </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.VBStringComparisonExpression"><summary> + Represents a VB-specific comparison expression. To explicitly support this expression type, implement <see cref="T:Remotion.Data.Linq.Clauses.Expressions.IVBSpecificExpressionVisitor" />. + To treat this expression as if it were an ordinary <see cref="T:System.Linq.Expressions.BinaryExpression" />, call its <see cref="M:Remotion.Data.Linq.Clauses.Expressions.VBStringComparisonExpression.Reduce" /> method and visit the result. + </summary></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.AccessorFindingExpressionTreeVisitor"><summary> + Constructs a <see cref="T:System.Linq.Expressions.LambdaExpression" /> that is able to extract a specific simple expression from a complex <see cref="T:System.Linq.Expressions.NewExpression" /> + or <see cref="T:System.Linq.Expressions.MemberInitExpression" />. + </summary></member><member name="T:Remotion.Data.Linq.Parsing.ExpressionTreeVisitor"><summary> + Provides a base class that can be used for visiting and optionally transforming each node of an <see cref="T:System.Linq.Expressions.Expression" /> tree in a + strongly typed fashion. + This is the base class of many transformation classes. + </summary></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.AccessorFindingExpressionTreeVisitor.FindAccessorLambda(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.ParameterExpression)"><summary> + Constructs a <see cref="T:System.Linq.Expressions.LambdaExpression" /> that is able to extract a specific simple <paramref name="searchedExpression" /> from a + complex <paramref name="fullExpression" />. + </summary><param name="searchedExpression">The expression an accessor to which should be created.</param><param name="fullExpression">The full expression containing the <paramref name="searchedExpression" />.</param><param name="inputParameter">The input parameter to be used by the resulting lambda. Its type must match the type of <paramref name="fullExpression" />.</param></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.CloningExpressionTreeVisitor"><summary> + Visits an <see cref="T:System.Linq.Expressions.Expression" /> tree, replacing all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances with references to cloned clauses, + as defined by a <see cref="T:Remotion.Data.Linq.Clauses.QuerySourceMapping" />. In addition, all <see cref="T:Remotion.Data.Linq.QueryModel" /> instances in + <see cref="T:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression">SubQueryExpressions</see> are cloned, and their references also replaces. All referenced clauses must be mapped + to cloned clauses in the given <see cref="T:Remotion.Data.Linq.Clauses.QuerySourceMapping" />, otherwise an expression is thrown. This is used by <see cref="M:Remotion.Data.Linq.QueryModel.Clone" /> + to adjust references to the old <see cref="T:Remotion.Data.Linq.QueryModel" /> with references to the new <see cref="T:Remotion.Data.Linq.QueryModel" />. + </summary></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReferenceReplacingExpressionTreeVisitor"><summary> + Takes an expression and replaces all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances, as defined by a given <see cref="P:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReferenceReplacingExpressionTreeVisitor.QuerySourceMapping" />. + This is used whenever references to query sources should be replaced by a transformation. + </summary></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReferenceReplacingExpressionTreeVisitor.ReplaceClauseReferences(System.Linq.Expressions.Expression,Remotion.Data.Linq.Clauses.QuerySourceMapping,System.Boolean)"><summary> + Takes an expression and replaces all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances, as defined by a given + <paramref name="querySourceMapping" />. + </summary><param name="expression">The expression to be scanned for references.</param><param name="querySourceMapping">The clause mapping to be used for replacing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances.</param><param name="throwOnUnmappedReferences">If <see langword="true" />, the visitor will throw an exception when + <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> not mapped in the <paramref name="querySourceMapping" /> is encountered. If <see langword="false" />, + the visitor will ignore such expressions.</param></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.CloningExpressionTreeVisitor.AdjustExpressionAfterCloning(System.Linq.Expressions.Expression,Remotion.Data.Linq.Clauses.QuerySourceMapping)"><summary> + Adjusts the given expression for cloning, that is replaces <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> and <see cref="T:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression" /> + instances. All referenced clauses must be mapped to clones in the given <paramref name="querySourceMapping" />, otherwise an exception is thrown. + </summary><param name="expression">The expression to be adjusted.</param><param name="querySourceMapping">The clause mapping to be used for replacing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances.</param></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.FormattingExpressionTreeVisitor"><summary> + Transforms an expression tree into a human-readable string, taking all the custom expression nodes into account. + It does so by replacing all instances of custom expression nodes by parameters that have the desired string as their names. This is done + to circumvent a limitation in the <see cref="T:System.Linq.Expressions.Expression" /> class, where overriding <see cref="M:System.Linq.Expressions.Expression.ToString" /> in custom expressions + will not work. + </summary></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReverseResolvingExpressionTreeVisitor"><summary> + Performs a reverse <see cref="M:Remotion.Data.Linq.Parsing.Structure.IntermediateModel.IExpressionNode.Resolve(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,Remotion.Data.Linq.Parsing.Structure.IntermediateModel.ClauseGenerationContext)" /> operation, i.e. creates a <see cref="T:System.Linq.Expressions.LambdaExpression" /> from a given resolved expression, + substituting all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> objects by getting the referenced objects from the lambda's input parameter. + </summary></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReverseResolvingExpressionTreeVisitor.ReverseResolve(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression)"><summary> + Performs a reverse <see cref="M:Remotion.Data.Linq.Parsing.Structure.IntermediateModel.IExpressionNode.Resolve(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,Remotion.Data.Linq.Parsing.Structure.IntermediateModel.ClauseGenerationContext)" /> operation, i.e. creates a <see cref="T:System.Linq.Expressions.LambdaExpression" /> from a given resolved expression, + substituting all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> objects by getting the referenced objects from the lambda's input parameter. + </summary><param name="itemExpression">The item expression representing the items passed to the generated <see cref="T:System.Linq.Expressions.LambdaExpression" /> via its input + parameter.</param><param name="resolvedExpression">The resolved expression for which to generate a reverse resolved <see cref="T:System.Linq.Expressions.LambdaExpression" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReverseResolvingExpressionTreeVisitor.ReverseResolveLambda(System.Linq.Expressions.Expression,System.Linq.Expressions.LambdaExpression,System.Int32)"><summary> + Performs a reverse <see cref="M:Remotion.Data.Linq.Parsing.Structure.IntermediateModel.IExpressionNode.Resolve(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,Remotion.Data.Linq.Parsing.Structure.IntermediateModel.ClauseGenerationContext)" /> operation on a <see cref="T:System.Linq.Expressions.LambdaExpression" />, i.e. creates a new + <see cref="T:System.Linq.Expressions.LambdaExpression" /> with an additional parameter from a given resolved <see cref="T:System.Linq.Expressions.LambdaExpression" />, + substituting all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> objects by getting the referenced objects from the new input parameter. + </summary><param name="itemExpression">The item expression representing the items passed to the generated <see cref="T:System.Linq.Expressions.LambdaExpression" /> via its new + input parameter.</param><param name="resolvedExpression">The resolved <see cref="T:System.Linq.Expressions.LambdaExpression" /> for which to generate a reverse resolved <see cref="T:System.Linq.Expressions.LambdaExpression" />.</param><param name="parameterInsertionPosition">The position at which to insert the new parameter.</param></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator"><summary> + Represents aggregating the items returned by a query into a single value with an initial seeding value. + This is a result operator, operating on the whole result set of a query. + </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.ValueFromSequenceResultOperatorBase"><summary> + Represents a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" /> that is executed on a sequence, returning a scalar value or single item as its result. + </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperatorBase"><summary> + Represents an operation that is executed on the result set of the query, aggregating, filtering, or restricting the number of result items + before the query result is returned. + </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.ExecuteInMemory(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData)"><summary> + Executes this result operator in memory, on a given input. Executing result operators in memory should only be + performed if the target query system does not support the operator. + </summary><param name="input">The input for the result operator. This must match the type of <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedData" /> expected by the operator.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"><summary> + Gets information about the data streamed out of this <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" />. This contains the result type a query would have if + it ended with this <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" />, and it optionally includes an <see cref="P:Remotion.Data.Linq.Clauses.StreamedData.StreamedSequenceInfo.ItemExpression" /> describing + the streamed sequence's items. + </summary><param name="inputInfo">Information about the data produced by the preceding <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" />, or the <see cref="T:Remotion.Data.Linq.Clauses.SelectClause" /> + of the query if no previous <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" /> exists.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.Clone(Remotion.Data.Linq.Clauses.CloneContext)"><summary> + Clones this item, registering its clone with the <paramref name="cloneContext" /> if it is a query source clause. + </summary><param name="cloneContext">The clones of all query source clauses are registered with this <see cref="T:Remotion.Data.Linq.Clauses.CloneContext" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.Accept(Remotion.Data.Linq.IQueryModelVisitor,Remotion.Data.Linq.QueryModel,System.Int32)"><summary> + Accepts the specified visitor by calling its <see cref="M:Remotion.Data.Linq.IQueryModelVisitor.VisitResultOperator(Remotion.Data.Linq.Clauses.ResultOperatorBase,Remotion.Data.Linq.QueryModel,System.Int32)" /> method. + </summary><param name="visitor">The visitor to accept.</param><param name="queryModel">The query model in whose context this clause is visited.</param><param name="index">The index of this item in the <paramref name="queryModel" />'s <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" /> collection.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.TransformExpressions(System.Func{System.Linq.Expressions.Expression,System.Linq.Expressions.Expression})"><summary> + Transforms all the expressions in this item via the given <paramref name="transformation" /> delegate. Subclasses must apply the + <paramref name="transformation" /> to any expressions they hold. If a subclass does not hold any expressions, it shouldn't do anything + in the implementation of this method. + </summary><param name="transformation">The transformation object. This delegate is called for each <see cref="T:System.Linq.Expressions.Expression" /> within this + item, and those expressions will be replaced with what the delegate returns.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.InvokeGenericExecuteMethod``2(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData,System.Func{``0,``1})"><summary> + Invokes a given generic method on an <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedData" /> input via Reflection. Use this to implement + <see cref="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.ExecuteInMemory(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData)" /> by defining a strongly typed, generic variant + of <see cref="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.ExecuteInMemory(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData)" />; then invoke that strongly typed + variant via <see cref="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.InvokeGenericExecuteMethod``2(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData,System.Func{``0,``1})" />. + </summary><param name="input">The input <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedData" /> object to invoke the method on..</param><param name="genericExecuteCaller">A delegate holding exactly one public generic method with exactly one generic argument. This method is + called via Reflection on the given <paramref name="input" /> argument.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.InvokeExecuteMethod(System.Reflection.MethodInfo,System.Object)"><summary> + Invokes the given <paramref name="method" /> via reflection on the given <paramref name="input" />. + </summary><param name="input">The input to invoke the method with.</param><param name="method">The method to be invoked.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.CheckSequenceItemType(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequenceInfo,System.Type)"><summary> + Checks the type of the items retrieved by the sequence, throwing an <see cref="T:Remotion.Data.Linq.Utilities.ArgumentTypeException" /> if the items don't match the + expected type. + </summary><param name="sequenceInfo">The <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.StreamedSequenceInfo" /> object describing the sequence.</param><param name="expectedItemType">The expected item type.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.GetConstantValueFromExpression``1(System.String,System.Linq.Expressions.Expression)"><summary> + Gets the constant value of the given expression, assuming it is a <see cref="T:System.Linq.Expressions.ConstantExpression" />. If it is + not, an <see cref="T:System.InvalidOperationException" /> is thrown. + </summary><param name="expressionName">A string describing the value; this will be included in the exception message if an exception is thrown.</param><param name="expression">The expression whose value to get.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.#ctor(System.Linq.Expressions.Expression,System.Linq.Expressions.LambdaExpression,System.Linq.Expressions.LambdaExpression)"><summary> + Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator" /> class. + </summary><param name="seed">The seed expression.</param><param name="func">The aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so + far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators + are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes.</param><param name="optionalResultSelector">The result selector, can be <see langword="null" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.GetConstantSeed``1"><summary> + Gets the constant value of the <see cref="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Seed" /> property, assuming it is a <see cref="T:System.Linq.Expressions.ConstantExpression" />. If it is + not, an <see cref="T:System.InvalidOperationException" /> is thrown. + </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.ExecuteInMemory``1(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.ExecuteAggregateInMemory``3(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"><summary> + Executes the aggregating operation in memory. + </summary><param name="input">The input sequence.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Clone(Remotion.Data.Linq.Clauses.CloneContext)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.ToString"></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Func"><summary> + Gets or sets the aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so + far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators + are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes. + </summary></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Seed"><summary> + Gets or sets the seed of the accumulation. This is an <see cref="T:System.Linq.Expressions.Expression" /> denoting the starting value of the aggregation. + </summary></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.OptionalResultSelector"><summary> + Gets or sets the result selector. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> applied after the aggregation to select the final value. + Can be <see langword="null" />. + </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator"><summary> + Represents aggregating the items returned by a query into a single value. The first item is used as the seeding value for the aggregating + function. + This is a result operator, operating on the whole result set of a query. + </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.#ctor(System.Linq.Expressions.LambdaExpression)"><summary> + Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator" /> class. + </summary><param name="func">The aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so + far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators + are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.ExecuteInMemory``1(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.Clone(Remotion.Data.Linq.Clauses.CloneContext)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.ToString"></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.Func"><summary> + Gets or sets the aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so + far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators + are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes. + </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator"><summary> + Represents a check whether all items returned by a query satisfy a predicate. + This is a result operator, operating on the whole result set of a query. + </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.#ctor(System.Linq.Expressions.Expression)"><summary> + Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator" /> class. + </summary><param name="predicate">The predicate to evaluate. This is a resolved version of the body of the <see cref="T:System.Linq.Expressions.LambdaExpression" /> that would be + passed to <see cref="M:System.Linq.Queryable.All``1(System.Linq.IQueryable{``0},System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}})" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.ExecuteInMemory``1(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.Clone(Remotion.Data.Linq.Clauses.CloneContext)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.TransformExpressions(System.Func{System.Linq.Expressions.Expression,System.Linq.Expressions.Expression})"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.ToString"></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.Predicate"><summary> + Gets or sets the predicate to evaluate on all items in the sequence. + This is a resolved version of the body of the <see cref="T:System.Linq.Expressions.LambdaExpression" /> that would be + passed to <see cref="M:System.Linq.Queryable.All``1(System.Linq.IQueryable{``0},System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}})" />. + </summary></... [truncated message content] |
From: <pa...@us...> - 2011-02-20 05:11:28
|
Revision: 5386 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5386&view=rev Author: patearl Date: 2011-02-20 05:11:20 +0000 (Sun, 20 Feb 2011) Log Message: ----------- Upgraded ReLinq from 1.13.88 to 1.13.93, making required changes. Modified Paths: -------------- trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.dll trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.pdb trunk/nhibernate/src/NHibernate/Linq/NhRelinqQueryParser.cs trunk/nhibernate/src/NHibernate/Linq/Visitors/ExpressionKeyVisitor.cs trunk/nhibernate/src/NHibernate/Linq/Visitors/QueryModelVisitor.cs trunk/nhibernate/src/NHibernate/Linq/Visitors/ResultOperatorProcessors/ProcessAggregate.cs trunk/nhibernate/src/NHibernate/NHibernate.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate/Linq/Visitors/ResultOperatorProcessors/ProcessAggregateFromSeed.cs Removed Paths: ------------- trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml trunk/nhibernate/src/NHibernate/Linq/Expressions/AggregateExpressionNode.cs trunk/nhibernate/src/NHibernate/Linq/ResultOperators/AggregateResultOperator.cs Modified: trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.dll =================================================================== (Binary files differ) Modified: trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.pdb =================================================================== (Binary files differ) Deleted: trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml =================================================================== --- trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml 2011-02-19 14:02:21 UTC (rev 5385) +++ trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml 2011-02-20 05:11:20 UTC (rev 5386) @@ -1,1253 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?><doc><assembly> - <name>Remotion.Data.Linq</name> - </assembly><members><member name="T:Remotion.Data.Linq.DefaultQueryProvider"><summary> - Represents a default implementation of <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> that is automatically used by <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> - unless a custom <see cref="T:System.Linq.IQueryProvider" /> is specified. The <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> executes queries by parsing them into - an instance of type <see cref="T:Remotion.Data.Linq.QueryModel" />, which is then passed to an implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> to obtain the - result set. - </summary></member><member name="T:Remotion.Data.Linq.QueryProviderBase"><summary> - Provides a default implementation of <see cref="T:System.Linq.IQueryProvider" /> that executes queries (subclasses of <see cref="T:Remotion.Data.Linq.QueryableBase`1" />) by - first parsing them into a <see cref="T:Remotion.Data.Linq.QueryModel" /> and then passing that to a given implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" />. - Usually, <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> should be used unless <see cref="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)" /> must be manually implemented. - </summary></member><member name="M:Remotion.Data.Linq.QueryProviderBase.#ctor(Remotion.Data.Linq.IQueryExecutor)"><summary> - Initializes a new instance of <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> using the default <see cref="T:Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry" />. - </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute queries against a specific query backend.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.#ctor(Remotion.Data.Linq.IQueryExecutor,Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry)"><summary> - Initializes a new instance of <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> using a custom <see cref="T:Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry" />. Use this - constructor to specify a specific set of parsers to use when analyzing the query. - </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute queries against a specific query backend.</param><param name="nodeTypeRegistry">The <see cref="T:Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry" /> containing the <see cref="T:System.Linq.Expressions.MethodCallExpression" /> - parsers that should be used when parsing queries.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery(System.Linq.Expressions.Expression)"><summary> - Constructs an <see cref="T:System.Linq.IQueryable" /> object that can evaluate the query represented by a specified expression tree. This - method delegates to <see cref="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)" />. - </summary><param name="expression">An expression tree that represents a LINQ query.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)"><summary> - Constructs an <see cref="T:System.Linq.IQueryable`1" /> object that can evaluate the query represented by a specified expression tree. This method is - called by the standard query operators defined by the <see cref="T:System.Linq.Queryable" /> class. - </summary><param name="expression">An expression tree that represents a LINQ query.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.Execute``1(System.Linq.Expressions.Expression)"><summary> - Executes the query defined by the specified expression by parsing it with a - <see cref="T:Remotion.Data.Linq.Parsing.Structure.QueryParser" /> and then running it through the <see cref="P:Remotion.Data.Linq.QueryProviderBase.Executor" />. - This method is invoked through the <see cref="T:System.Linq.IQueryProvider" /> interface by methods such as - <see cref="M:System.Linq.Queryable.First``1(System.Linq.IQueryable{``0})" /> and - <see cref="M:System.Linq.Queryable.Count``1(System.Linq.IQueryable{``0})" />, and it's also invoked by <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> - when the <see cref="T:System.Linq.IQueryable`1" /> is enumerated. - </summary></member><member name="M:Remotion.Data.Linq.QueryProviderBase.GenerateQueryModel(System.Linq.Expressions.Expression)"><summary> - The method generates a <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary><param name="expression">The query as expression chain.</param></member><member name="P:Remotion.Data.Linq.QueryProviderBase.Executor"><summary> - Gets or sets the implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute queries created via <see cref="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryProviderBase.ExpressionTreeParser"><summary> - Gets the <see cref="P:Remotion.Data.Linq.QueryProviderBase.ExpressionTreeParser" /> used by this <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> to parse LINQ <see cref="T:System.Linq.Expressions.Expression" /> - trees. - </summary></member><member name="M:Remotion.Data.Linq.DefaultQueryProvider.CreateQuery``1(System.Linq.Expressions.Expression)"><summary> - Creates a new <see cref="T:System.Linq.IQueryable" /> (of type <see cref="P:Remotion.Data.Linq.DefaultQueryProvider.QueryableType" /> with <typeparamref name="T" /> as its generic argument) that - represents the query defined by <paramref name="expression" /> and is able to enumerate its results. - </summary><param name="expression">An expression representing the query for which a <see cref="T:System.Linq.IQueryable`1" /> should be created.</param></member><member name="P:Remotion.Data.Linq.DefaultQueryProvider.QueryableType"><summary> - Gets the type of queryable created by this provider. This is the generic type definition of an implementation of <see cref="T:System.Linq.IQueryable`1" /> - (usually a subclass of <see cref="T:Remotion.Data.Linq.QueryableBase`1" />) with exactly one type argument. - </summary></member><member name="T:Remotion.Data.Linq.IQueryExecutor"><summary> - Constitutes the bridge between re-linq and a concrete query provider implementation. Concrete providers implement this interface - and <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> calls the respective method of the interface implementation when a query is to be executed. - </summary></member><member name="M:Remotion.Data.Linq.IQueryExecutor.ExecuteScalar``1(Remotion.Data.Linq.QueryModel)"><summary> - Executes the given <paramref name="queryModel" /> as a scalar query, i.e. as a query returning a scalar value of type <typeparamref name="T" />. - The query ends with a scalar result operator, for example a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.CountResultOperator" /> or a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.SumResultOperator" />. - </summary><param name="queryModel">The <see cref="T:Remotion.Data.Linq.QueryModel" /> representing the query to be executed. Analyze this via an - <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" />.</param></member><member name="M:Remotion.Data.Linq.IQueryExecutor.ExecuteSingle``1(Remotion.Data.Linq.QueryModel,System.Boolean)"><summary> - Executes the given <paramref name="queryModel" /> as a single object query, i.e. as a query returning a single object of type - <typeparamref name="T" />. - The query ends with a single result operator, for example a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.FirstResultOperator" /> or a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.SingleResultOperator" />. - </summary><param name="queryModel">The <see cref="T:Remotion.Data.Linq.QueryModel" /> representing the query to be executed. Analyze this via an - <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" />.</param><param name="returnDefaultWhenEmpty">If <see langword="true" />, the executor must return a default value when its result set is empty; - if <see langword="false" />, it should throw an <see cref="T:System.InvalidOperationException" /> when its result set is empty.</param></member><member name="M:Remotion.Data.Linq.IQueryExecutor.ExecuteCollection``1(Remotion.Data.Linq.QueryModel)"><summary> - Executes the given <paramref name="queryModel" /> as a collection query, i.e. as a query returning objects of type <typeparamref name="T" />. - The query does not end with a scalar result operator, but it can end with a single result operator, for example - <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.SingleResultOperator" /> or <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.FirstResultOperator" />. In such a case, the returned enumerable must yield exactly - one object (or none if the last result operator allows empty result sets). - </summary><param name="queryModel">The <see cref="T:Remotion.Data.Linq.QueryModel" /> representing the query to be executed. Analyze this via an - <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" />.</param></member><member name="T:Remotion.Data.Linq.IQueryModelVisitor"><summary> - Defines an interface for visiting the clauses of a <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary></member><member name="T:Remotion.Data.Linq.QueryableBase`1"><summary> - Acts as a common base class for <see cref="T:System.Linq.IQueryable`1" /> implementations based on re-linq. In a specific LINQ provider, a custom queryable - class should be derived from <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> which supplies an implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> that is used to - execute the query. This is then used as an entry point (the main data source) of a LINQ query. - </summary></member><member name="M:Remotion.Data.Linq.QueryableBase`1.#ctor(Remotion.Data.Linq.IQueryExecutor)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> class with a <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> and the given - <paramref name="executor" />. This constructor should be used by subclasses to begin a new query. The <see cref="P:Remotion.Data.Linq.QueryableBase`1.Expression" /> generated by - this constructor is a <see cref="T:System.Linq.Expressions.ConstantExpression" /> pointing back to this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />. - </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute the query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />.</param></member><member name="M:Remotion.Data.Linq.QueryableBase`1.#ctor(System.Linq.IQueryProvider)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> class with a specific <see cref="T:System.Linq.IQueryProvider" />. This constructor - should only be used to begin a query when <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> does not fit the requirements. - </summary><param name="provider">The provider used to execute the query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> and to construct - queries around this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />.</param></member><member name="M:Remotion.Data.Linq.QueryableBase`1.#ctor(System.Linq.IQueryProvider,System.Linq.Expressions.Expression)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> class with a given <paramref name="provider" /> and - <paramref name="expression" />. A constructor with a matching signature must be exposed on subclasses because it is used by - <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> to construct queries around this <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> when a query method (e.g. of the - <see cref="T:System.Linq.Queryable" /> class) is called. - </summary><param name="provider">The provider used to execute the query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> and to construct - queries around this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />.</param><param name="expression">The expression representing the query.</param></member><member name="M:Remotion.Data.Linq.QueryableBase`1.GetEnumerator"><summary> - Executes the query via the <see cref="P:Remotion.Data.Linq.QueryableBase`1.Provider" /> and returns an enumerator that iterates through the items returned by the query. - </summary></member><member name="P:Remotion.Data.Linq.QueryableBase`1.Expression"><summary> - Gets the expression tree that is associated with the instance of <see cref="T:System.Linq.IQueryable" />. This expression describes the - query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryableBase`1.Provider"><summary> - Gets the query provider that is associated with this data source. The provider is used to execute the query. By default, a - <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> is used that parses the query and passes it on to an implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryableBase`1.ElementType"><summary> - Gets the type of the element(s) that are returned when the expression tree associated with this instance of <see cref="T:System.Linq.IQueryable" /> is executed. - </summary></member><member name="T:Remotion.Data.Linq.QueryModel"><summary> - Provides an abstraction of an expression tree created for a LINQ query. <see cref="T:Remotion.Data.Linq.QueryModel" /> instances are passed to LINQ providers based - on re-linq via <see cref="T:Remotion.Data.Linq.IQueryExecutor" />, but you can also use <see cref="T:Remotion.Data.Linq.Parsing.Structure.QueryParser" /> to parse an expression tree by hand or construct - a <see cref="T:Remotion.Data.Linq.QueryModel" /> manually via its constructor. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.#ctor(Remotion.Data.Linq.Clauses.MainFromClause,Remotion.Data.Linq.Clauses.SelectClause)"><summary> - Initializes a new instance of <see cref="T:Remotion.Data.Linq.QueryModel" /> - </summary><param name="mainFromClause">The <see cref="T:Remotion.Data.Linq.Clauses.MainFromClause" /> of the query. This is the starting point of the query, generating items - that are filtered and projected by the query.</param><param name="selectClause">The <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" /> of the query. This is the end point of - the query, it defines what is actually returned for each of the items coming from the <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" /> and passing the - <see cref="P:Remotion.Data.Linq.QueryModel.BodyClauses" />. After it, only the <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" /> modify the result of the query.</param></member><member name="M:Remotion.Data.Linq.QueryModel.GetOutputDataInfo"><summary> - Gets an <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo" /> object describing the data streaming out of this <see cref="T:Remotion.Data.Linq.QueryModel" />. If a query ends with - the <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />, this corresponds to <see cref="M:Remotion.Data.Linq.Clauses.SelectClause.GetOutputDataInfo" />. If a query has - <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" />, the data is further modified by those operators. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.GetUniqueIdentfierGenerator"><summary> - Gets the <see cref="T:Remotion.Data.Linq.UniqueIdentifierGenerator" /> which is used by the <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Accept(Remotion.Data.Linq.IQueryModelVisitor)"><summary> - Accepts an implementation of <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" /> or <see cref="T:Remotion.Data.Linq.QueryModelVisitorBase" />, as defined by the Visitor pattern. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.ToString"><summary> - Returns a <see cref="T:System.String" /> representation of this <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Clone"><summary> - Clones this <see cref="T:Remotion.Data.Linq.QueryModel" />, returning a new <see cref="T:Remotion.Data.Linq.QueryModel" /> equivalent to this instance, but with its clauses being - clones of this instance's clauses. Any <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> in the cloned clauses that points back to another clause - in this <see cref="T:Remotion.Data.Linq.QueryModel" /> (including its subqueries) is adjusted to point to the respective clones in the cloned - <see cref="T:Remotion.Data.Linq.QueryModel" />. Any subquery nested in the <see cref="T:Remotion.Data.Linq.QueryModel" /> is also cloned. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Clone(Remotion.Data.Linq.Clauses.QuerySourceMapping)"><summary> - Clones this <see cref="T:Remotion.Data.Linq.QueryModel" />, returning a new <see cref="T:Remotion.Data.Linq.QueryModel" /> equivalent to this instance, but with its clauses being - clones of this instance's clauses. Any <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> in the cloned clauses that points back to another clause - in this <see cref="T:Remotion.Data.Linq.QueryModel" /> (including its subqueries) is adjusted to point to the respective clones in the cloned - <see cref="T:Remotion.Data.Linq.QueryModel" />. Any subquery nested in the <see cref="T:Remotion.Data.Linq.QueryModel" /> is also cloned. - </summary><param name="querySourceMapping">The <see cref="T:Remotion.Data.Linq.Clauses.QuerySourceMapping" /> defining how to adjust instances of - <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> in the cloned <see cref="T:Remotion.Data.Linq.QueryModel" />. If there is a <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> - that points out of the <see cref="T:Remotion.Data.Linq.QueryModel" /> being cloned, specify its replacement via this parameter. At the end of the cloning process, - this object maps all the clauses in this original <see cref="T:Remotion.Data.Linq.QueryModel" /> to the clones created in the process. - </param></member><member name="M:Remotion.Data.Linq.QueryModel.TransformExpressions(System.Func{System.Linq.Expressions.Expression,System.Linq.Expressions.Expression})"><summary> - Transforms all the expressions in this <see cref="T:Remotion.Data.Linq.QueryModel" />'s clauses via the given <paramref name="transformation" /> delegate. - </summary><param name="transformation">The transformation object. This delegate is called for each <see cref="T:System.Linq.Expressions.Expression" /> within this - <see cref="T:Remotion.Data.Linq.QueryModel" />, and those expressions will be replaced with what the delegate returns.</param></member><member name="M:Remotion.Data.Linq.QueryModel.GetNewName(System.String)"><summary> - Returns a new name with the given prefix. The name is different from that of any <see cref="T:Remotion.Data.Linq.Clauses.FromClauseBase" /> added - in the <see cref="T:Remotion.Data.Linq.QueryModel" />. Note that clause names that are changed after the clause is added as well as names of other clauses - than from clauses are not considered when determining "unique" names. Use names only for readability and debugging, not - for uniquely identifying clauses. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Execute(Remotion.Data.Linq.IQueryExecutor)"><summary> - Executes this <see cref="T:Remotion.Data.Linq.QueryModel" /> via the given <see cref="T:Remotion.Data.Linq.IQueryExecutor" />. By default, this indirectly calls - <see cref="M:Remotion.Data.Linq.IQueryExecutor.ExecuteCollection``1(Remotion.Data.Linq.QueryModel)" />, but this can be modified by the <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" />. - </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> to use for executing this query.</param></member><member name="M:Remotion.Data.Linq.QueryModel.IsIdentityQuery"><summary> - Determines whether this <see cref="T:Remotion.Data.Linq.QueryModel" /> represents an identity query. An identity query is a query without any body clauses - whose <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" /> selects exactly the items produced by its <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" />. An identity query can have - <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryModel.MainFromClause"><summary> - Gets or sets the query's <see cref="T:Remotion.Data.Linq.Clauses.MainFromClause" />. This is the starting point of the query, generating items that are processed by - the <see cref="P:Remotion.Data.Linq.QueryModel.BodyClauses" /> and projected or grouped by the <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryModel.SelectClause"><summary> - Gets or sets the query's select clause. This is the end point of the query, it defines what is actually returned for each of the - items coming from the <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" /> and passing the <see cref="P:Remotion.Data.Linq.QueryModel.BodyClauses" />. After it, only the <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" /> - modify the result of the query. - </summary></member><member name="P:Remotion.Data.Linq.QueryModel.BodyClauses"><summary> - Gets a collection representing the query's body clauses. Body clauses take the items generated by the <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" />, - filtering (<see cref="T:Remotion.Data.Linq.Clauses.WhereClause" />), ordering (<see cref="T:Remotion.Data.Linq.Clauses.OrderByClause" />), augmenting (<see cref="T:Remotion.Data.Linq.Clauses.AdditionalFromClause" />), or otherwise - processing them before they are passed to the <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryModel.ResultOperators"><summary> - Gets the result operators attached to this <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />. Result operators modify the query's result set, aggregating, - filtering, or otherwise processing the result before it is returned. - </summary></member><member name="T:Remotion.Data.Linq.QueryModelBuilder"><summary> - Collects clauses and creates a <see cref="T:Remotion.Data.Linq.QueryModel" /> from them. This provides a simple way to first add all the clauses and then - create the <see cref="T:Remotion.Data.Linq.QueryModel" /> rather than the two-step approach (first <see cref="P:Remotion.Data.Linq.QueryModelBuilder.SelectClause" /> and <see cref="P:Remotion.Data.Linq.QueryModelBuilder.MainFromClause" />, - then the <see cref="T:Remotion.Data.Linq.Clauses.IBodyClause" />s) required by <see cref="T:Remotion.Data.Linq.QueryModel" />'s constructor. - </summary></member><member name="T:Remotion.Data.Linq.QueryModelVisitorBase"><summary> - Provides a default implementation of <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" /> which automatically visits child items. That is, the default - implementation of <see cref="M:Remotion.Data.Linq.QueryModelVisitorBase.VisitQueryModel(Remotion.Data.Linq.QueryModel)" /> automatically calls <c>Accept</c> on all clauses in the <see cref="T:Remotion.Data.Linq.QueryModel" /> - and the default implementation of <see cref="M:Remotion.Data.Linq.QueryModelVisitorBase.VisitOrderByClause(Remotion.Data.Linq.Clauses.OrderByClause,Remotion.Data.Linq.QueryModel,System.Int32)" /> automatically calls <see cref="M:Remotion.Data.Linq.Clauses.Ordering.Accept(Remotion.Data.Linq.IQueryModelVisitor,Remotion.Data.Linq.QueryModel,Remotion.Data.Linq.Clauses.OrderByClause,System.Int32)" /> on the - <see cref="T:Remotion.Data.Linq.Clauses.Ordering" /> instances in its <see cref="P:Remotion.Data.Linq.Clauses.OrderByClause.Orderings" /> collection, and so on. - </summary></member><member name="T:Remotion.Data.Linq.UniqueIdentifierGenerator"><summary> - Generates unique identifiers based on a set of known identifiers. - An identifier is generated by appending a number to a given prefix. The identifier is considered unique when no known identifier - exists which equals the prefix/number combination. - </summary></member><member name="M:Remotion.Data.Linq.UniqueIdentifierGenerator.AddKnownIdentifier(System.String)"><summary> - Adds the given <paramref name="identifier" /> to the set of known identifiers. - </summary><param name="identifier">The identifier to add.</param></member><member name="M:Remotion.Data.Linq.UniqueIdentifierGenerator.GetUniqueIdentifier(System.String)"><summary> - Gets a unique identifier starting with the given <paramref name="prefix" />. The identifier is generating by appending a number to the - prefix so that the resulting string does not match a known identifier. - </summary><param name="prefix">The prefix to use for the identifier.</param></member><member name="T:Remotion.Data.Linq.UnmappedItemException"><summary> - TODO: add summary - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression"><summary> - Acts as a base class for custom extension expressions, providing advanced visitor support. Also allows extension expressions to be reduced to - a tree of standard expressions with equivalent semantics. - </summary></member><member name="F:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.ExtensionExpressionNodeType"><summary> - Defines a standard <see cref="T:System.Linq.Expressions.ExpressionType" /> value that is used by all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> subclasses. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.#ctor(System.Type)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> class. - </summary><param name="type">The type of the value represented by the <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.Reduce"><summary> - Reduces this instance to a tree of standard expressions. If this instance cannot be reduced, the same <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> - is returned. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.ReduceAndCheck"><summary> - Calls the <see cref="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.Reduce" /> method and checks certain invariants before returning the result. This method can only be called when - <see cref="P:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.CanReduce" /> returns <see langword="true" />. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.Accept(Remotion.Data.Linq.Parsing.ExpressionTreeVisitor)"><summary> - Accepts the specified visitor, by default dispatching to <see cref="M:Remotion.Data.Linq.Parsing.ExpressionTreeVisitor.VisitExtensionExpression(Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression)" />. - Inheritors of the <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> class can override this method in order to dispatch to a specific Visit method. - </summary><param name="visitor">The visitor whose Visit method should be invoked.</param></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.VisitChildren(Remotion.Data.Linq.Parsing.ExpressionTreeVisitor)"><summary> - Must be overridden by <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> subclasses by calling <see cref="M:Remotion.Data.Linq.Parsing.ExpressionTreeVisitor.VisitExpression(System.Linq.Expressions.Expression)" /> on all - children of this extension node. - </summary><param name="visitor">The visitor to visit the child nodes with.</param></member><member name="P:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.CanReduce"><summary> - Gets a value indicating whether this instance can be reduced to a tree of standard expressions. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.IVBSpecificExpressionVisitor"><summary> - This interface should be implemented by visitors that handle VB-specific expressions. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression"><summary> - Represents an expression tree node that points to a query source represented by a <see cref="T:Remotion.Data.Linq.Clauses.FromClauseBase" />. These expressions should always - point back, to a clause defined prior to the clause holding a <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" />. Otherwise, exceptions might be - thrown at runtime. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression.Equals(System.Object)"><summary> - Determines whether the specified <see cref="T:System.Object" /> is equal to the current <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> by - comparing the <see cref="P:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression.ReferencedQuerySource" /> properties for reference equality. - </summary><param name="obj">The <see cref="T:System.Object" /> to compare with the current <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" />.</param></member><member name="P:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression.ReferencedQuerySource"><summary> - Gets the query source referenced by this expression. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression"><summary> - Represents an <see cref="T:System.Linq.Expressions.Expression" /> that holds a subquery. The subquery is held by <see cref="P:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression.QueryModel" /> in its parsed form. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.VBStringComparisonExpression"><summary> - Represents a VB-specific comparison expression. To explicitly support this expression type, implement <see cref="T:Remotion.Data.Linq.Clauses.Expressions.IVBSpecificExpressionVisitor" />. - To treat this expression as if it were an ordinary <see cref="T:System.Linq.Expressions.BinaryExpression" />, call its <see cref="M:Remotion.Data.Linq.Clauses.Expressions.VBStringComparisonExpression.Reduce" /> method and visit the result. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.AccessorFindingExpressionTreeVisitor"><summary> - Constructs a <see cref="T:System.Linq.Expressions.LambdaExpression" /> that is able to extract a specific simple expression from a complex <see cref="T:System.Linq.Expressions.NewExpression" /> - or <see cref="T:System.Linq.Expressions.MemberInitExpression" />. - </summary></member><member name="T:Remotion.Data.Linq.Parsing.ExpressionTreeVisitor"><summary> - Provides a base class that can be used for visiting and optionally transforming each node of an <see cref="T:System.Linq.Expressions.Expression" /> tree in a - strongly typed fashion. - This is the base class of many transformation classes. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.AccessorFindingExpressionTreeVisitor.FindAccessorLambda(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.ParameterExpression)"><summary> - Constructs a <see cref="T:System.Linq.Expressions.LambdaExpression" /> that is able to extract a specific simple <paramref name="searchedExpression" /> from a - complex <paramref name="fullExpression" />. - </summary><param name="searchedExpression">The expression an accessor to which should be created.</param><param name="fullExpression">The full expression containing the <paramref name="searchedExpression" />.</param><param name="inputParameter">The input parameter to be used by the resulting lambda. Its type must match the type of <paramref name="fullExpression" />.</param></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.CloningExpressionTreeVisitor"><summary> - Visits an <see cref="T:System.Linq.Expressions.Expression" /> tree, replacing all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances with references to cloned clauses, - as defined by a <see cref="T:Remotion.Data.Linq.Clauses.QuerySourceMapping" />. In addition, all <see cref="T:Remotion.Data.Linq.QueryModel" /> instances in - <see cref="T:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression">SubQueryExpressions</see> are cloned, and their references also replaces. All referenced clauses must be mapped - to cloned clauses in the given <see cref="T:Remotion.Data.Linq.Clauses.QuerySourceMapping" />, otherwise an expression is thrown. This is used by <see cref="M:Remotion.Data.Linq.QueryModel.Clone" /> - to adjust references to the old <see cref="T:Remotion.Data.Linq.QueryModel" /> with references to the new <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReferenceReplacingExpressionTreeVisitor"><summary> - Takes an expression and replaces all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances, as defined by a given <see cref="P:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReferenceReplacingExpressionTreeVisitor.QuerySourceMapping" />. - This is used whenever references to query sources should be replaced by a transformation. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReferenceReplacingExpressionTreeVisitor.ReplaceClauseReferences(System.Linq.Expressions.Expression,Remotion.Data.Linq.Clauses.QuerySourceMapping,System.Boolean)"><summary> - Takes an expression and replaces all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances, as defined by a given - <paramref name="querySourceMapping" />. - </summary><param name="expression">The expression to be scanned for references.</param><param name="querySourceMapping">The clause mapping to be used for replacing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances.</param><param name="throwOnUnmappedReferences">If <see langword="true" />, the visitor will throw an exception when - <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> not mapped in the <paramref name="querySourceMapping" /> is encountered. If <see langword="false" />, - the visitor will ignore such expressions.</param></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.CloningExpressionTreeVisitor.AdjustExpressionAfterCloning(System.Linq.Expressions.Expression,Remotion.Data.Linq.Clauses.QuerySourceMapping)"><summary> - Adjusts the given expression for cloning, that is replaces <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> and <see cref="T:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression" /> - instances. All referenced clauses must be mapped to clones in the given <paramref name="querySourceMapping" />, otherwise an exception is thrown. - </summary><param name="expression">The expression to be adjusted.</param><param name="querySourceMapping">The clause mapping to be used for replacing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances.</param></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.FormattingExpressionTreeVisitor"><summary> - Transforms an expression tree into a human-readable string, taking all the custom expression nodes into account. - It does so by replacing all instances of custom expression nodes by parameters that have the desired string as their names. This is done - to circumvent a limitation in the <see cref="T:System.Linq.Expressions.Expression" /> class, where overriding <see cref="M:System.Linq.Expressions.Expression.ToString" /> in custom expressions - will not work. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReverseResolvingExpressionTreeVisitor"><summary> - Performs a reverse <see cref="M:Remotion.Data.Linq.Parsing.Structure.IntermediateModel.IExpressionNode.Resolve(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,Remotion.Data.Linq.Parsing.Structure.IntermediateModel.ClauseGenerationContext)" /> operation, i.e. creates a <see cref="T:System.Linq.Expressions.LambdaExpression" /> from a given resolved expression, - substituting all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> objects by getting the referenced objects from the lambda's input parameter. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReverseResolvingExpressionTreeVisitor.ReverseResolve(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression)"><summary> - Performs a reverse <see cref="M:Remotion.Data.Linq.Parsing.Structure.IntermediateModel.IExpressionNode.Resolve(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,Remotion.Data.Linq.Parsing.Structure.IntermediateModel.ClauseGenerationContext)" /> operation, i.e. creates a <see cref="T:System.Linq.Expressions.LambdaExpression" /> from a given resolved expression, - substituting all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> objects by getting the referenced objects from the lambda's input parameter. - </summary><param name="itemExpression">The item expression representing the items passed to the generated <see cref="T:System.Linq.Expressions.LambdaExpression" /> via its input - parameter.</param><param name="resolvedExpression">The resolved expression for which to generate a reverse resolved <see cref="T:System.Linq.Expressions.LambdaExpression" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReverseResolvingExpressionTreeVisitor.ReverseResolveLambda(System.Linq.Expressions.Expression,System.Linq.Expressions.LambdaExpression,System.Int32)"><summary> - Performs a reverse <see cref="M:Remotion.Data.Linq.Parsing.Structure.IntermediateModel.IExpressionNode.Resolve(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,Remotion.Data.Linq.Parsing.Structure.IntermediateModel.ClauseGenerationContext)" /> operation on a <see cref="T:System.Linq.Expressions.LambdaExpression" />, i.e. creates a new - <see cref="T:System.Linq.Expressions.LambdaExpression" /> with an additional parameter from a given resolved <see cref="T:System.Linq.Expressions.LambdaExpression" />, - substituting all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> objects by getting the referenced objects from the new input parameter. - </summary><param name="itemExpression">The item expression representing the items passed to the generated <see cref="T:System.Linq.Expressions.LambdaExpression" /> via its new - input parameter.</param><param name="resolvedExpression">The resolved <see cref="T:System.Linq.Expressions.LambdaExpression" /> for which to generate a reverse resolved <see cref="T:System.Linq.Expressions.LambdaExpression" />.</param><param name="parameterInsertionPosition">The position at which to insert the new parameter.</param></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator"><summary> - Represents aggregating the items returned by a query into a single value with an initial seeding value. - This is a result operator, operating on the whole result set of a query. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.ValueFromSequenceResultOperatorBase"><summary> - Represents a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" /> that is executed on a sequence, returning a scalar value or single item as its result. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperatorBase"><summary> - Represents an operation that is executed on the result set of the query, aggregating, filtering, or restricting the number of result items - before the query result is returned. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.ExecuteInMemory(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData)"><summary> - Executes this result operator in memory, on a given input. Executing result operators in memory should only be - performed if the target query system does not support the operator. - </summary><param name="input">The input for the result operator. This must match the type of <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedData" /> expected by the operator.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"><summary> - Gets information about the data streamed out of this <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" />. This contains the result type a query would have if - it ended with this <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" />, and it optionally includes an <see cref="P:Remotion.Data.Linq.Clauses.StreamedData.StreamedSequenceInfo.ItemExpression" /> describing - the streamed sequence's items. - </summary><param name="inputInfo">Information about the data produced by the preceding <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" />, or the <see cref="T:Remotion.Data.Linq.Clauses.SelectClause" /> - of the query if no previous <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" /> exists.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.Clone(Remotion.Data.Linq.Clauses.CloneContext)"><summary> - Clones this item, registering its clone with the <paramref name="cloneContext" /> if it is a query source clause. - </summary><param name="cloneContext">The clones of all query source clauses are registered with this <see cref="T:Remotion.Data.Linq.Clauses.CloneContext" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.Accept(Remotion.Data.Linq.IQueryModelVisitor,Remotion.Data.Linq.QueryModel,System.Int32)"><summary> - Accepts the specified visitor by calling its <see cref="M:Remotion.Data.Linq.IQueryModelVisitor.VisitResultOperator(Remotion.Data.Linq.Clauses.ResultOperatorBase,Remotion.Data.Linq.QueryModel,System.Int32)" /> method. - </summary><param name="visitor">The visitor to accept.</param><param name="queryModel">The query model in whose context this clause is visited.</param><param name="index">The index of this item in the <paramref name="queryModel" />'s <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" /> collection.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.TransformExpressions(System.Func{System.Linq.Expressions.Expression,System.Linq.Expressions.Expression})"><summary> - Transforms all the expressions in this item via the given <paramref name="transformation" /> delegate. Subclasses must apply the - <paramref name="transformation" /> to any expressions they hold. If a subclass does not hold any expressions, it shouldn't do anything - in the implementation of this method. - </summary><param name="transformation">The transformation object. This delegate is called for each <see cref="T:System.Linq.Expressions.Expression" /> within this - item, and those expressions will be replaced with what the delegate returns.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.InvokeGenericExecuteMethod``2(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData,System.Func{``0,``1})"><summary> - Invokes a given generic method on an <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedData" /> input via Reflection. Use this to implement - <see cref="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.ExecuteInMemory(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData)" /> by defining a strongly typed, generic variant - of <see cref="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.ExecuteInMemory(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData)" />; then invoke that strongly typed - variant via <see cref="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.InvokeGenericExecuteMethod``2(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData,System.Func{``0,``1})" />. - </summary><param name="input">The input <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedData" /> object to invoke the method on..</param><param name="genericExecuteCaller">A delegate holding exactly one public generic method with exactly one generic argument. This method is - called via Reflection on the given <paramref name="input" /> argument.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.InvokeExecuteMethod(System.Reflection.MethodInfo,System.Object)"><summary> - Invokes the given <paramref name="method" /> via reflection on the given <paramref name="input" />. - </summary><param name="input">The input to invoke the method with.</param><param name="method">The method to be invoked.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.CheckSequenceItemType(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequenceInfo,System.Type)"><summary> - Checks the type of the items retrieved by the sequence, throwing an <see cref="T:Remotion.Data.Linq.Utilities.ArgumentTypeException" /> if the items don't match the - expected type. - </summary><param name="sequenceInfo">The <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.StreamedSequenceInfo" /> object describing the sequence.</param><param name="expectedItemType">The expected item type.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.GetConstantValueFromExpression``1(System.String,System.Linq.Expressions.Expression)"><summary> - Gets the constant value of the given expression, assuming it is a <see cref="T:System.Linq.Expressions.ConstantExpression" />. If it is - not, an <see cref="T:System.InvalidOperationException" /> is thrown. - </summary><param name="expressionName">A string describing the value; this will be included in the exception message if an exception is thrown.</param><param name="expression">The expression whose value to get.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.#ctor(System.Linq.Expressions.Expression,System.Linq.Expressions.LambdaExpression,System.Linq.Expressions.LambdaExpression)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator" /> class. - </summary><param name="seed">The seed expression.</param><param name="func">The aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so - far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators - are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes.</param><param name="optionalResultSelector">The result selector, can be <see langword="null" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.GetConstantSeed``1"><summary> - Gets the constant value of the <see cref="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Seed" /> property, assuming it is a <see cref="T:System.Linq.Expressions.ConstantExpression" />. If it is - not, an <see cref="T:System.InvalidOperationException" /> is thrown. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.ExecuteInMemory``1(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.ExecuteAggregateInMemory``3(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"><summary> - Executes the aggregating operation in memory. - </summary><param name="input">The input sequence.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Clone(Remotion.Data.Linq.Clauses.CloneContext)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.ToString"></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Func"><summary> - Gets or sets the aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so - far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators - are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes. - </summary></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Seed"><summary> - Gets or sets the seed of the accumulation. This is an <see cref="T:System.Linq.Expressions.Expression" /> denoting the starting value of the aggregation. - </summary></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.OptionalResultSelector"><summary> - Gets or sets the result selector. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> applied after the aggregation to select the final value. - Can be <see langword="null" />. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator"><summary> - Represents aggregating the items returned by a query into a single value. The first item is used as the seeding value for the aggregating - function. - This is a result operator, operating on the whole result set of a query. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.#ctor(System.Linq.Expressions.LambdaExpression)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator" /> class. - </summary><param name="func">The aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so - far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators - are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.ExecuteInMemory``1(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.Clone(Remotion.Data.Linq.Clauses.CloneContext)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.ToString"></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.Func"><summary> - Gets or sets the aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so - far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators - are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator"><summary> - Represents a check whether all items returned by a query satisfy a predicate. - This is a result operator, operating on the whole result set of a query. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.#ctor(System.Linq.Expressions.Expression)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator" /> class. - </summary><param name="predicate">The predicate to evaluate. This is a resolved version of the body of the <see cref="T:System.Linq.Expressions.LambdaExpression" /> that would be - passed to <see cref="M:System.Linq.Queryable.All``1(System.Linq.IQueryable{``0},System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}})" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.ExecuteInMemory``1(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.Clone(Remotion.Data.Linq.Clauses.CloneContext)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.TransformExpressions(System.Func{System.Linq.Expressions.Expression,System.Linq.Expressions.Expression})"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.ToString"></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.Predicate"><summary> - Gets or sets the predicate to evaluate on all items in the sequence. - This is a resolved version of the body of the <see cref="T:System.Linq.Expressions.LambdaExpression" /> that would be - passed to <see cref="M:System.Linq.Queryable.All``1(System.Linq.IQueryable{``0},System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}})" />. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.AnyResultOper... [truncated message content] |
From: <ric...@us...> - 2011-02-20 15:38:39
|
Revision: 5387 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5387&view=rev Author: ricbrown Date: 2011-02-20 15:38:28 +0000 (Sun, 20 Feb 2011) Log Message: ----------- First cut of build for Firebird dialect on Teamcity Modified Paths: -------------- trunk/nhibernate/ShowBuildMenu.bat trunk/nhibernate/build-common/common-project.xml trunk/nhibernate/src/NHibernate.TestDatabaseSetup/App.config trunk/nhibernate/src/NHibernate.TestDatabaseSetup/NHibernate.TestDatabaseSetup.csproj trunk/nhibernate/src/NHibernate.TestDatabaseSetup/TestDatabaseSetup.build trunk/nhibernate/src/NHibernate.TestDatabaseSetup/TestDatabaseSetup.cs trunk/nhibernate/src/NHibernate.sln trunk/nhibernate/teamcity.build Added Paths: ----------- trunk/nhibernate/lib/teamcity/ trunk/nhibernate/lib/teamcity/firebird/ trunk/nhibernate/lib/teamcity/firebird/FirebirdSql.Data.FirebirdClient.dll trunk/nhibernate/lib/teamcity/firebird/NHibernate.Test.last-results.xml trunk/nhibernate/lib/teamcity/firebird/x64/ trunk/nhibernate/lib/teamcity/firebird/x64/fbembed.dll trunk/nhibernate/lib/teamcity/firebird/x64/ib_util.dll trunk/nhibernate/lib/teamcity/firebird/x64/icudt30.dll trunk/nhibernate/lib/teamcity/firebird/x64/icuin30.dll trunk/nhibernate/lib/teamcity/firebird/x64/icuuc30.dll trunk/nhibernate/lib/teamcity/firebird/x64/msvcp80.dll trunk/nhibernate/lib/teamcity/firebird/x64/msvcr80.dll trunk/nhibernate/lib/teamcity/firebird/x86/ trunk/nhibernate/lib/teamcity/firebird/x86/fbembed.dll trunk/nhibernate/lib/teamcity/firebird/x86/ib_util.dll trunk/nhibernate/lib/teamcity/firebird/x86/icudt30.dll trunk/nhibernate/lib/teamcity/firebird/x86/icuin30.dll trunk/nhibernate/lib/teamcity/firebird/x86/icuuc30.dll trunk/nhibernate/lib/teamcity/firebird/x86/msvcp80.dll trunk/nhibernate/lib/teamcity/firebird/x86/msvcr80.dll Modified: trunk/nhibernate/ShowBuildMenu.bat =================================================================== --- trunk/nhibernate/ShowBuildMenu.bat 2011-02-20 05:11:20 UTC (rev 5386) +++ trunk/nhibernate/ShowBuildMenu.bat 2011-02-20 15:38:28 UTC (rev 5387) @@ -19,14 +19,18 @@ echo --- GRAMMAR --- echo H. Grammar operations (related to Hql.g and HqlSqlWalker.g) echo. +echo --- TeamCity (CI) build options +echo I. TeamCity build menu +echo. if exist %SYSTEMROOT%\System32\choice.exe ( goto prompt-choice ) goto prompt-set :prompt-choice -choice /C:abcdefgh +choice /C:abcdefghi if errorlevel 255 goto end +if errorlevel 9 goto teamcity-menu if errorlevel 8 goto grammar if errorlevel 7 goto build-release-package if errorlevel 6 goto build-release @@ -38,7 +42,7 @@ if errorlevel 0 goto end :prompt-set -set /p OPT=[A, B, C, D, E, F, G, H]? +set /p OPT=[A, B, C, D, E, F, G, H, I]? if /I "%OPT%"=="A" goto build-visual-studio if /I "%OPT%"=="B" goto help-test-setup @@ -48,6 +52,7 @@ if /I "%OPT%"=="F" goto build-release if /I "%OPT%"=="G" goto build-release-package if /I "%OPT%"=="H" goto grammar +if /I "%OPT%"=="I" goto teamcity-menu goto prompt-set :help-test-setup @@ -168,6 +173,46 @@ echo 5. You should now be connected and able to step through your grammar. goto end +:teamcity-menu +echo. +echo --- TeamCity (CI) build options +echo A. NHibernate Trunk (default SQL Server) +echo B. NHibernate Trunk - Firebird (32-bit) +echo C. NHibernate Trunk - Firebird (64-bit) +echo. + +if exist %SYSTEMROOT%\System32\choice.exe ( goto teamcity-menu-prompt-choice ) +goto teamcity-menu-prompt-set + +:teamcity-menu-prompt-choice +choice /C:abc + +if errorlevel 255 goto end +if errorlevel 3 goto teamcity-firebird64 +if errorlevel 2 goto teamcity-firebird32 +if errorlevel 1 goto teamcity-trunk +if errorlevel 0 goto end + +:teamcity-menu-prompt-set +set /p OPT=[A, B, C]? + +if /I "%OPT%"=="A" goto teamcity-trunk +if /I "%OPT%"=="B" goto teamcity-firebird32 +if /I "%OPT%"=="C" goto teamcity-firebird64 +goto teamcity-menu-prompt-set + +:teamcity-trunk +%NANT% /f:teamcity.build -D:skip.manual=true -D:CCNetLabel=-1 +goto end + +:teamcity-firebird32 +%NANT% /f:teamcity.build -D:skip.manual=true -D:CCNetLabel=-1 -D:config.teamcity=firebird32 +goto end + +:teamcity-firebird64 +%NANT% /f:teamcity.build -D:skip.manual=true -D:CCNetLabel=-1 -D:config.teamcity=firebird64 +goto end + :end popd pause Modified: trunk/nhibernate/build-common/common-project.xml =================================================================== --- trunk/nhibernate/build-common/common-project.xml 2011-02-20 05:11:20 UTC (rev 5386) +++ trunk/nhibernate/build-common/common-project.xml 2011-02-20 15:38:28 UTC (rev 5387) @@ -1,5 +1,5 @@ <?xml version="1.0" ?> -<project xmlns="http://nant.sf.net/release/0.85-rc3/nant.xsd"> +<project xmlns="http://nant.sf.net/release/0.90/nant.xsd" xsi:schemaLocation="http://nant.sf.net/release/0.90/nant.xsd ..\Tools\nant\schema\nant.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <description> <![CDATA[ @@ -227,7 +227,8 @@ <target name="common.run-tests" description="Run NUnit tests"> <call target="common.find-nunit" unless="${property::exists('nunit.found')}" /> - <exec program="${nunit-console}"> + <property name="common.run-tests.failonerror" value="${not property::exists(project::get-name() + '.IgnoreFail')}"/> + <exec program="${nunit-console}" failonerror="${common.run-tests.failonerror}"> <arg line="${bin.dir}/${project::get-name()}.dll /xml:${testresults.dir}/${project::get-name()}.dll-results.xml " /> </exec> Property changes on: trunk/nhibernate/lib/teamcity ___________________________________________________________________ Added: bugtraq:url + http://jira.nhibernate.org/browse/%BUGID% Added: bugtraq:logregex + NH-\d+ Property changes on: trunk/nhibernate/lib/teamcity/firebird ___________________________________________________________________ Added: bugtraq:url + http://jira.nhibernate.org/browse/%BUGID% Added: bugtraq:logregex + NH-\d+ Added: trunk/nhibernate/lib/teamcity/firebird/FirebirdSql.Data.FirebirdClient.dll =================================================================== (Binary files differ) Property changes on: trunk/nhibernate/lib/teamcity/firebird/FirebirdSql.Data.FirebirdClient.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/nhibernate/lib/teamcity/firebird/NHibernate.Test.last-results.xml =================================================================== --- trunk/nhibernate/lib/teamcity/firebird/NHibernate.Test.last-results.xml (rev 0) +++ trunk/nhibernate/lib/teamcity/firebird/NHibernate.Test.last-results.xml 2011-02-20 15:38:28 UTC (rev 5387) @@ -0,0 +1,11357 @@ +<?xml version="1.0" encoding="utf-8" standalone="no"?> +<!--This file represents the results of running a test suite--> +<test-results name="../../build/NHibernate-3.0.1.GA-debug/bin/net-3.5/NHibernate.Test.dll" errors="77" failures="2" not-run="129" inconclusive="0" ignored="128" skipped="0" invalid="1"> + <environment nunit-version="2.5.5.10112" clr-version="2.0.50727.4952" os-version="Microsoft Windows NT 6.1.7600.0" platform="Win32NT" cwd="C:\work\oss\NhTrunk\nhibernate\src\NHibernate.Test" /> + <culture-info current-culture="en-GB" current-uiculture="en-US" /> + <test-suite type="Assembly" name="../../build/NHibernate-3.0.1.GA-debug/bin/net-3.5/NHibernate.Test.dll" executed="True" result="Failure" success="False" asserts="0"> + <results> + <test-suite type="Namespace" name="NHibernate" executed="True" result="Failure" success="False" asserts="0"> + <results> + <test-suite type="Namespace" name="Test" executed="True" result="Failure" success="False" asserts="0"> + <results> + <test-suite type="Namespace" name="Ado" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-suite type="TestFixture" name="BatcherFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.Ado.BatcherFixture.AbstractBatcherLog" description="Activating the AbstractBatcher's log the log stream:
-should not contains batch info 
-should contain SQL log info only regarding batcher (SQL log should not be duplicated)
-the batcher should work." executed="True" result="Success" success="True" asserts="3" /> + <test-case name="NHibernate.Test.Ado.BatcherFixture.AbstractBatcherLogFormattedSql" description="Activating the AbstractBatcher's log the log stream:
-should contain well formatted SQL log info" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Ado.BatcherFixture.BatchedoutputShouldBeFormatted" description="SqlClient: The batcher log output should be formatted" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Ado.BatcherFixture.OneRoundTripDelete" description="The batcher should run all DELETE queries in only one roundtrip." executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Ado.BatcherFixture.OneRoundTripInserts" description="The batcher should run all INSERT queries in only one roundtrip." executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Ado.BatcherFixture.OneRoundTripUpdate" description="The batcher should run all UPDATE queries in only one roundtrip." executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Ado.BatcherFixture.SqlClientOneRoundTripForUpdateAndInsert" description="SqlClient: The batcher should run all different INSERT queries in only one roundtrip." executed="False" result="Ignored"> + <reason> + <message><![CDATA[Not fixed yet.]]></message> + </reason> + </test-case> + <test-case name="NHibernate.Test.Ado.BatcherFixture.SqlLog" description="Activating the SQL and turning off the batcher's log the log stream:
-should not contains adding to batch
-should contain batch command
-the batcher should work." executed="True" result="Success" success="True" asserts="4" /> + <test-case name="NHibernate.Test.Ado.BatcherFixture.SqlLogShouldGetBatchCommandNotification" executed="True" result="Success" success="True" asserts="2" /> + </results> + </test-suite> + </results> + </test-suite> + <test-suite type="Namespace" name="Any" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-suite type="TestFixture" name="AnyTypeTest" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.Any.AnyTypeTest.FlushProcessing" executed="True" result="Success" success="True" asserts="0" /> + </results> + </test-suite> + </results> + </test-suite> + <test-suite type="Namespace" name="BulkManipulation" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-suite type="TestFixture" name="HqlBulkOperations" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.BulkManipulation.HqlBulkOperations.SimpleDelete" executed="True" result="Success" success="True" asserts="2" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="NativeSQLBulkOperations" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.BulkManipulation.NativeSQLBulkOperations.SimpleNativeSQLInsert" executed="True" result="Success" success="True" asserts="8" /> + </results> + </test-suite> + </results> + </test-suite> + <test-suite type="Namespace" name="Bytecode" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-suite type="TestFixture" name="ActivatorObjectFactoryFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.Bytecode.ActivatorObjectFactoryFixture.CreateInstanceDefCtor" executed="True" result="Success" success="True" asserts="4" /> + <test-case name="NHibernate.Test.Bytecode.ActivatorObjectFactoryFixture.CreateInstanceOfValueType" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.Bytecode.ActivatorObjectFactoryFixture.CreateInstanceWithArguments" executed="True" result="Success" success="True" asserts="4" /> + <test-case name="NHibernate.Test.Bytecode.ActivatorObjectFactoryFixture.CreateInstanceWithNoPublicCtor" executed="True" result="Success" success="True" asserts="3" /> + </results> + </test-suite> + <test-suite type="Namespace" name="Lightweight" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-suite type="TestFixture" name="BytecodeProviderFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.Bytecode.Lightweight.BytecodeProviderFixture.CantCreateProxyFactoryFactory" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Bytecode.Lightweight.BytecodeProviderFixture.CollectionTypeFactoryCantChangeAfterUsage" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Bytecode.Lightweight.BytecodeProviderFixture.DoesNotImplementProxyFactoryFactory" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Bytecode.Lightweight.BytecodeProviderFixture.InvalidCollectionTypeFactoryCtor" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Bytecode.Lightweight.BytecodeProviderFixture.NotConfiguredCollectionTypeFactory" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Bytecode.Lightweight.BytecodeProviderFixture.NotConfiguredProxyFactoryFactory" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.Bytecode.Lightweight.BytecodeProviderFixture.SetCollectionTypeFactoryClassByName" executed="True" result="Success" success="True" asserts="3" /> + <test-case name="NHibernate.Test.Bytecode.Lightweight.BytecodeProviderFixture.SetCollectionTypeFactoryClassByType" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.Bytecode.Lightweight.BytecodeProviderFixture.UnableToLoadProxyFactoryFactory" executed="True" result="Success" success="True" asserts="3" /> + </results> + </test-suite> + </results> + </test-suite> + </results> + </test-suite> + <test-suite type="Namespace" name="CacheTest" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-suite type="TestFixture" name="CacheFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CacheTest.CacheFixture.MinValueTimestamp" executed="True" result="Success" success="True" asserts="6" /> + <test-case name="NHibernate.Test.CacheTest.CacheFixture.TestSimpleCache" executed="True" result="Success" success="True" asserts="24" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="FilterKeyFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CacheTest.FilterKeyFixture.Equality" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CacheTest.FilterKeyFixture.HashCode" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CacheTest.FilterKeyFixture.NotEqualHashCode" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CacheTest.FilterKeyFixture.NotEquality" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CacheTest.FilterKeyFixture.ToStringIncludeAll" executed="True" result="Success" success="True" asserts="2" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="QueryCacheFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CacheTest.QueryCacheFixture.QueryCacheWithNullParameters" executed="True" result="Success" success="True" asserts="2" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="QueryKeyFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.EqualityWithFilters" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.HashCodeWithFilters" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.NotEqualHashCodeWithFilters" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.NotEqualityWithFilters" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.ToStringWithFilters" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.ToStringWithMoreFilters" executed="True" result="Success" success="True" asserts="1" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="TimestamperFixture" executed="True" result="Inconclusive" success="False" asserts="0" /> + </results> + </test-suite> + <test-suite type="Namespace" name="Cascade" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-suite type="Namespace" name="Circle" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-suite type="TestFixture" name="CascadeMergeToChildBeforeParentTest" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.Cascade.Circle.CascadeMergeToChildBeforeParentTest.Merge" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.Cascade.Circle.CascadeMergeToChildBeforeParentTest.MergeData3Nodes" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.Cascade.Circle.CascadeMergeToChildBeforeParentTest.MergeTransientChildBeforeTransientParent" executed="True" result="Success" success="True" asserts="0" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="MultiPathCircleCascadeTest" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeDeliveryNode" executed="True" result="Success" success="True" asserts="26" /> + <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeEntityWithNonNullableEntityNull" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeEntityWithNonNullableTransientEntity" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergePickupNode" executed="True" result="Success" success="True" asserts="26" /> + <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeRoute" executed="True" result="Success" success="True" asserts="27" /> + <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeTour" executed="True" result="Success" success="True" asserts="26" /> + <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeTransport" executed="True" result="Success" success="True" asserts="26" /> + </results> + </test-suite> + </results> + </test-suite> + <test-suite type="TestFixture" name="MultiPathCascadeTest" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.Cascade.MultiPathCascadeTest.MultiPathGetAndModify" executed="True" result="Success" success="True" asserts="15" /> + <test-case name="NHibernate.Test.Cascade.MultiPathCascadeTest.MultiPathMergeModifiedDetached" executed="True" result="Success" success="True" asserts="15" /> + <test-case name="NHibernate.Test.Cascade.MultiPathCascadeTest.MultiPathMergeModifiedDetachedIntoProxy" executed="True" result="Success" success="True" asserts="17" /> + <test-case name="NHibernate.Test.Cascade.MultiPathCascadeTest.MultiPathMergeNonCascadedTransientEntityInCollection" executed="True" result="Success" success="True" asserts="16" /> + <test-case name="NHibernate.Test.Cascade.MultiPathCascadeTest.MultiPathMergeNonCascadedTransientEntityInManyToOne" executed="True" result="Success" success="True" asserts="16" /> + <test-case name="NHibernate.Test.Cascade.MultiPathCascadeTest.MultiPathMergeNonCascadedTransientEntityInOneToOne" executed="True" result="Success" success="True" asserts="15" /> + <test-case name="NHibernate.Test.Cascade.MultiPathCascadeTest.MultiPathUpdateModifiedDetached" executed="True" result="Success" success="True" asserts="15" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="RefreshFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.Cascade.RefreshFixture.RefreshCascade" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.Cascade.RefreshFixture.RefreshIgnoringTransient" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.Cascade.RefreshFixture.RefreshIgnoringTransientInCollection" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Cascade.RefreshFixture.RefreshNotIgnoringTransientByUnsavedValue" executed="True" result="Success" success="True" asserts="0" /> + </results> + </test-suite> + </results> + </test-suite> + <test-suite type="Namespace" name="CfgTest" executed="True" result="Failure" success="False" asserts="0"> + <results> + <test-suite type="TestFixture" name="AccessorsSerializableTest" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-suite type="ParameterizedTest" name="AllAccessorsAreMarkedAsSerializable" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllAccessorsAreMarkedAsSerializable(NHibernate.Properties.BackrefPropertyAccessor)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllAccessorsAreMarkedAsSerializable(NHibernate.Properties.BasicPropertyAccessor)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllAccessorsAreMarkedAsSerializable(NHibernate.Properties.ChainedPropertyAccessor)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllAccessorsAreMarkedAsSerializable(NHibernate.Properties.EmbeddedPropertyAccessor)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllAccessorsAreMarkedAsSerializable(NHibernate.Properties.FieldAccessor)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllAccessorsAreMarkedAsSerializable(NHibernate.Properties.IndexPropertyAccessor)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllAccessorsAreMarkedAsSerializable(NHibernate.Properties.MapAccessor)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllAccessorsAreMarkedAsSerializable(NHibernate.Properties.NoopAccessor)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllAccessorsAreMarkedAsSerializable(NHibernate.Properties.NoSetterAccessor)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllAccessorsAreMarkedAsSerializable(NHibernate.Properties.ReadOnlyAccessor)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllAccessorsAreMarkedAsSerializable(NHibernate.Properties.XmlAccessor)" executed="True" result="Success" success="True" asserts="0" /> + </results> + </test-suite> + <test-suite type="ParameterizedTest" name="AllGettersAreMarkedAsSerializable" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.BackrefPropertyAccessor+BackrefGetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.BasicPropertyAccessor+BasicGetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.EmbeddedPropertyAccessor+EmbeddedGetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.FieldAccessor+FieldGetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.IndexPropertyAccessor+IndexGetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.MapAccessor+MapGetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.NoopAccessor+NoopGetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.XmlAccessor+XmlGetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.XmlAccessor+AttributeGetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.XmlAccessor+ElementAttributeGetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.XmlAccessor+ElementGetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.XmlAccessor+TextGetter)" executed="True" result="Success" success="True" asserts="0" /> + </results> + </test-suite> + <test-suite type="ParameterizedTest" name="AllSettersAreMarkedAsSerializable" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.BackrefPropertyAccessor+BackrefSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.BasicPropertyAccessor+BasicSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.EmbeddedPropertyAccessor+EmbeddedSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.FieldAccessor+FieldSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.IndexPropertyAccessor+IndexSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.MapAccessor+MapSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.NoopAccessor+NoopSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.ReadOnlyAccessor+NoopSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.XmlAccessor+XmlSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.XmlAccessor+AttributeSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.XmlAccessor+ElementAttributeSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.XmlAccessor+ElementSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.XmlAccessor+TextSetter)" executed="True" result="Success" success="True" asserts="0" /> + </results> + </test-suite> + </results> + </test-suite> + <test-suite type="TestFixture" name="ConfigurationAddMappingEvents" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.ConfigurationAddMappingEvents.WhenSubscribedToAfterBindThenRaiseEventForEachMapping" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationAddMappingEvents.WhenSubscribedToBeforeBindThenRaiseEventForEachMapping" executed="True" result="Success" success="True" asserts="0" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="ConfigurationFixture" executed="True" result="Failure" success="False" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.AddDocument" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.CacheConfiguration" executed="True" result="Error" success="False" asserts="0"> + <failure> + <message><![CDATA[NHibernate.HibernateException : Could not create the driver from NHibernate.Driver.FirebirdClientDriver. + ----> System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation. + ----> System.ArgumentException : Unable to find the requested .Net Framework Data Provider. It may not be installed.]]></message> + <stack-trace><![CDATA[at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 113 +at NHibernate.Connection.ConnectionProvider.Configure(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 64 +at NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProviderFactory.cs:line 50 +at NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary`2 properties) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\SettingsFactory.cs:line 83 +at NHibernate.Cfg.Configuration.BuildSettings() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1689 +at NHibernate.Cfg.Configuration.BuildSessionFactory() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1241 +at NHibernate.Test.CfgTest.ConfigurationFixture.CacheConfiguration() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate.Test\CfgTest\ConfigurationFixture.cs:line 217 +--TargetInvocationException +at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) +at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) +at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) +at System.Activator.CreateInstance(Type type, Boolean nonPublic) +at System.Activator.CreateInstance(Type type) +at NHibernate.Bytecode.ActivatorObjectsFactory.CreateInstance(Type type) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Bytecode\ActivatorObjectsFactory.cs:line 9 +at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 107 +--ArgumentException +at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) +at NHibernate.Driver.ReflectionBasedDriver..ctor(String providerInvariantName, String driverAssemblyName, String connectionTypeName, String commandTypeName) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\ReflectionBasedDriver.cs:line 49 +at NHibernate.Driver.FirebirdClientDriver..ctor() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\FirebirdClientDriver.cs:line 15 +]]></stack-trace> + </failure> + </test-case> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.CacheConfigurationForUnmappedClass" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.CacheConfigurationForUnmappedCollection" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.DisabledProxyValidator" executed="True" result="Error" success="False" asserts="0"> + <failure> + <message><![CDATA[NHibernate.HibernateException : Could not create the driver from NHibernate.Driver.FirebirdClientDriver. + ----> System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation. + ----> System.ArgumentException : Unable to find the requested .Net Framework Data Provider. It may not be installed.]]></message> + <stack-trace><![CDATA[at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 113 +at NHibernate.Connection.ConnectionProvider.Configure(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 64 +at NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProviderFactory.cs:line 50 +at NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary`2 properties) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\SettingsFactory.cs:line 83 +at NHibernate.Cfg.Configuration.BuildSettings() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1689 +at NHibernate.Cfg.Configuration.BuildSessionFactory() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1241 +at NHibernate.Test.CfgTest.ConfigurationFixture.DisabledProxyValidator() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate.Test\CfgTest\ConfigurationFixture.cs:line 355 +--TargetInvocationException +at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) +at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) +at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) +at System.Activator.CreateInstance(Type type, Boolean nonPublic) +at System.Activator.CreateInstance(Type type) +at NHibernate.Bytecode.ActivatorObjectsFactory.CreateInstance(Type type) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Bytecode\ActivatorObjectsFactory.cs:line 9 +at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 107 +--ArgumentException +at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) +at NHibernate.Driver.ReflectionBasedDriver..ctor(String providerInvariantName, String driverAssemblyName, String connectionTypeName, String commandTypeName) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\ReflectionBasedDriver.cs:line 49 +at NHibernate.Driver.FirebirdClientDriver..ctor() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\FirebirdClientDriver.cs:line 15 +]]></stack-trace> + </failure> + </test-case> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.EmptyPropertyTag" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.InvalidXmlInCfgFile" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.InvalidXmlInHbmFile" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.NH1334" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.NH1348" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.NoSessionFactoriesInConfiguration" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.PersisterWithDefaultNamespaceAndAssembly" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.ProxyValidator" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.ProxyWithDefaultNamespaceAndAssembly" executed="True" result="Error" success="False" asserts="0"> + <failure> + <message><![CDATA[NHibernate.HibernateException : Could not create the driver from NHibernate.Driver.FirebirdClientDriver. + ----> System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation. + ----> System.ArgumentException : Unable to find the requested .Net Framework Data Provider. It may not be installed.]]></message> + <stack-trace><![CDATA[at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 113 +at NHibernate.Connection.ConnectionProvider.Configure(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 64 +at NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProviderFactory.cs:line 50 +at NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary`2 properties) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\SettingsFactory.cs:line 83 +at NHibernate.Cfg.Configuration.BuildSettings() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1689 +at NHibernate.Cfg.Configuration.BuildSessionFactory() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1241 +at NHibernate.Test.CfgTest.ConfigurationFixture.ProxyWithDefaultNamespaceAndAssembly() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate.Test\CfgTest\ConfigurationFixture.cs:line 270 +--TargetInvocationException +at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) +at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) +at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) +at System.Activator.CreateInstance(Type type, Boolean nonPublic) +at System.Activator.CreateInstance(Type type) +at NHibernate.Bytecode.ActivatorObjectsFactory.CreateInstance(Type type) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Bytecode\ActivatorObjectsFactory.cs:line 9 +at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 107 +--ArgumentException +at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) +at NHibernate.Driver.ReflectionBasedDriver..ctor(String providerInvariantName, String driverAssemblyName, String connectionTypeName, String commandTypeName) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\ReflectionBasedDriver.cs:line 49 +at NHibernate.Driver.FirebirdClientDriver..ctor() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\FirebirdClientDriver.cs:line 15 +]]></stack-trace> + </failure> + </test-case> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.ReadCfgXmlFromAssembly" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.ReadCfgXmlFromDefaultFile" executed="True" result="Success" success="True" asserts="6" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.SetDefaultAssemblyAndNamespace" executed="True" result="Error" success="False" asserts="0"> + <failure> + <message><![CDATA[NHibernate.HibernateException : Could not create the driver from NHibernate.Driver.FirebirdClientDriver. + ----> System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation. + ----> System.ArgumentException : Unable to find the requested .Net Framework Data Provider. It may not be installed.]]></message> + <stack-trace><![CDATA[at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 113 +at NHibernate.Connection.ConnectionProvider.Configure(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 64 +at NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProviderFactory.cs:line 50 +at NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary`2 properties) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\SettingsFactory.cs:line 83 +at NHibernate.Cfg.Configuration.BuildSettings() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1689 +at NHibernate.Cfg.Configuration.BuildSessionFactory() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1241 +at NHibernate.Test.CfgTest.ConfigurationFixture.SetDefaultAssemblyAndNamespace() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate.Test\CfgTest\ConfigurationFixture.cs:line 396 +--TargetInvocationException +at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) +at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) +at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) +at System.Activator.CreateInstance(Type type, Boolean nonPublic) +at System.Activator.CreateInstance(Type type) +at NHibernate.Bytecode.ActivatorObjectsFactory.CreateInstance(Type type) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Bytecode\ActivatorObjectsFactory.cs:line 9 +at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 107 +--ArgumentException +at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) +at NHibernate.Driver.ReflectionBasedDriver..ctor(String providerInvariantName, String driverAssemblyName, String connectionTypeName, String commandTypeName) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\ReflectionBasedDriver.cs:line 49 +at NHibernate.Driver.FirebirdClientDriver..ctor() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\FirebirdClientDriver.cs:line 15 +]]></stack-trace> + </failure> + </test-case> + </results> + </test-suite> + <test-suite type="TestFixture" name="ConfigurationSchemaFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.ClassesCache" executed="True" result="Success" success="True" asserts="5" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.CollectionsCache" executed="True" result="Success" success="True" asserts="4" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.EmptyFactoryNotAllowed" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.Events" executed="True" result="Success" success="True" asserts="4" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.FactoryName" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.FromAppConfigTest" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.IgnoreSystemOutOfAppConfig" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.InvalidConfig" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.Listeners" executed="True" result="Success" success="True" asserts="3" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.MappingEquatable" executed="True" result="Success" success="True" asserts="7" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.Mappings" executed="True" result="Success" success="True" asserts="5" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.NotAllowedMappings" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.Properties" executed="True" result="Success" success="True" asserts="5" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="ConfigurationSerializationTests" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSerializationTests.Basic_CRUD_should_work" executed="True" result="Success" success="True" asserts="8" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSerializationTests.Configuration_should_be_serializable" executed="True" result="Success" success="True" asserts="1" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="CustomBytecodeProviderTest" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.CustomBytecodeProviderTest.WhenInvalidThenThrow" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.CustomBytecodeProviderTest.WhenNoDefaultCtorThenThrow" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.CustomBytecodeProviderTest.WhenNoShortCutUsedThenCanBuildBytecodeProvider" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.CustomBytecodeProviderTest.WhenNoShortCutUsedThenCanBuildInstanceOfConfiguredBytecodeProvider" executed="True" result="Success" success="True" asserts="0" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="DefaultNsAssmFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.DefaultNsAssmFixture.BottomUpJoined" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.DefaultNsAssmFixture.MixedJoined" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.DefaultNsAssmFixture.MixedSubclass" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.DefaultNsAssmFixture.TopDownJoined" executed="True" result="Success" success="True" asserts="0" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="EntityCacheUsageParserFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.EntityCacheUsageParserFixture.CovertToString" executed="True" result="Success" success="True" asserts="4" /> + <test-case name="NHibernate.Test.CfgTest.EntityCacheUsageParserFixture.Parse" executed="True" result="Success" success="True" asserts="4" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="HbmOrderingFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.HbmOrderingFixture.BottomUpJoined" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.HbmOrderingFixture.MixedJoined" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.HbmOrderingFixture.MixedSubclass" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.HbmOrderingFixture.TopDownJoined" executed="True" result="Success" success="True" asserts="0" /> + </results> + </test-suite> + <test-suite type="Namespace" name="Loquacious" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-suite type="TestFixture" name="ConfigurationFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.Loquacious.ConfigurationFixture.CompleteConfiguration" executed="True" result="Success" success="True" asserts="28" /> + <test-case name="NHibernate.Test.CfgTest.Loquacious.ConfigurationFixture.UseConnectionStringName" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.Loquacious.ConfigurationFixture.UseDbConfigurationStringBuilder" executed="True" result="Success" success="True" asserts="3" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="EntityCacheConfigurationFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.Loquacious.EntityCacheConfigurationFixture.ConfigureCacheOfClass" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CfgTest.Loquacious.EntityCacheConfigurationFixture.ConfigureCacheOfCollection" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CfgTest.Loquacious.EntityCacheConfigurationFixture.ConfigureCacheOfCollectionWithOutEntity" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.Loquacious.EntityCacheConfigurationFixture.NotAllowRelatedCollections" executed="True" result="Success" success="True" asserts="2" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="LambdaConfigurationFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.Loquacious.LambdaConfigurationFixture.FullConfiguration" executed="True" result="Success" success="True" asserts="28" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="TypeDefinitionFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.Loquacious.TypeDefinitionFixture.AddTypeDef" executed="True" result="Success" success="True" asserts="2" /> + </results> + </test-suite> + </results> + </test-suite> + <test-suite type="TestFixture" name="MappingDocumentAggregatorTests" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.MappingDocumentAggregatorTests.CanAddDomainModelAssembly" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.MappingDocumentAggregato... [truncated message content] |