diff --git a/coverage.xml b/coverage.xml index 59c0296..eb6fc3d 100644 --- a/coverage.xml +++ b/coverage.xml @@ -1,10 +1,10 @@ - + - + C:\WINDOWS\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll - 2019-12-07T06:00:37.9046237Z + 2020-01-09T19:44:32.1866878Z mscorlib @@ -74,9 +74,9 @@ System.Core - + C:\WINDOWS\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll - 2019-12-07T06:00:37.9046237Z + 2020-01-09T19:44:32.1866878Z mscorlib @@ -128,9 +128,9 @@ System.Configuration - + C:\WINDOWS\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll - 2019-12-07T06:00:37.9046237Z + 2020-01-09T19:44:32.1866878Z mscorlib @@ -176,18 +176,18 @@ System.Runtime.Remoting - - D:\Entwicklung\Xrm-Templating-Language\packages\nunit.consolerunner\tools\Mono.Cecil.dll - 2018-09-05T18:18:28Z - Mono.Cecil - - C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll 2019-11-14T06:51:54.1773342Z System.Configuration + + D:\Entwicklung\Xrm-Templating-Language\packages\nunit.consolerunner\tools\Mono.Cecil.dll + 2018-09-05T18:18:28Z + Mono.Cecil + + C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll 2019-12-07T06:03:04Z @@ -218,40 +218,10 @@ System.Web - - D:\Entwicklung\Xrm-Templating-Language\test\Xrm.Oss.XTL.Templating.Tests.dll - 2020-10-20T10:01:05.9066849Z - Xrm.Oss.XTL.Templating.Tests - - - - C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll - 2019-11-14T06:51:54.0396445Z - System.Xml - - - - D:\Entwicklung\Xrm-Templating-Language\test\FakeXrmEasy.dll - 2018-02-22T23:18:08Z - FakeXrmEasy - - - - D:\Entwicklung\Xrm-Templating-Language\test\Microsoft.Xrm.Sdk.dll - 2016-12-21T12:48:06Z - Microsoft.Xrm.Sdk - - - - C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Serialization\v4.0_4.0.0.0__b77a5c561934e089\System.Runtime.Serialization.dll - 2019-12-07T06:03:04Z - System.Runtime.Serialization - - - - C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Activities\v4.0_4.0.0.0__31bf3856ad364e35\System.Activities.dll - 2019-12-07T06:03:04Z - System.Activities + + D:\Entwicklung\Xrm-Templating-Language\test\Xrm.Oss.XTL.Interpreter.Tests.dll + 2021-06-08T05:20:42.74612Z + Xrm.Oss.XTL.Interpreter.Tests @@ -272,6 +242,12 @@ nunit.framework + + C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll + 2019-11-14T06:51:54.0396445Z + System.Xml + + C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll 2019-07-24T02:58:28Z @@ -290,30 +266,84 @@ System.Web - - D:\Entwicklung\Xrm-Templating-Language\test\Xrm.Oss.XTL.Interpreter.Tests.dll - 2020-10-20T10:00:46.4037896Z - Xrm.Oss.XTL.Interpreter.Tests + + D:\Entwicklung\Xrm-Templating-Language\test\Xrm.Oss.XTL.Templating.Tests.dll + 2021-06-08T05:20:45.493058Z + Xrm.Oss.XTL.Templating.Tests + + + + D:\Entwicklung\Xrm-Templating-Language\test\FakeXrmEasy.dll + 2018-02-22T23:18:08Z + FakeXrmEasy + + + + D:\Entwicklung\Xrm-Templating-Language\test\Microsoft.Xrm.Sdk.dll + 2016-12-21T12:48:06Z + Microsoft.Xrm.Sdk + + + + C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Serialization\v4.0_4.0.0.0__b77a5c561934e089\System.Runtime.Serialization.dll + 2020-01-09T19:46:54Z + System.Runtime.Serialization + + + + C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Activities\v4.0_4.0.0.0__31bf3856ad364e35\System.Activities.dll + 2020-01-09T19:46:54Z + System.Activities + + + + C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll + 2019-11-14T06:51:54.0396445Z + System.Xml + + + + D:\Entwicklung\Xrm-Templating-Language\test\FakeXrmEasy.dll + 2018-02-22T23:18:08Z + FakeXrmEasy + + + + D:\Entwicklung\Xrm-Templating-Language\test\Microsoft.Xrm.Sdk.dll + 2016-12-21T12:48:06Z + Microsoft.Xrm.Sdk + + + + C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Serialization\v4.0_4.0.0.0__b77a5c561934e089\System.Runtime.Serialization.dll + 2020-01-09T19:46:54Z + System.Runtime.Serialization - - + + C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Activities\v4.0_4.0.0.0__31bf3856ad364e35\System.Activities.dll + 2020-01-09T19:46:54Z + System.Activities + + + + D:\Entwicklung\Xrm-Templating-Language\test\Xrm.Oss.XTL.Templating.dll - 2020-10-20T10:00:45.9978686Z + 2021-06-08T05:20:42.1180924Z Xrm.Oss.XTL.Templating - - - - - - - - - - - - + + + + + + + + + + + + @@ -332,91 +362,91 @@ 100663303 System.Collections.Generic.Dictionary`2<System.String,System.Object> Xrm.Oss.XTL.Interpreter.ConfigHandler::get_Dictionary() - + - + - + 100663304 System.Void Xrm.Oss.XTL.Interpreter.ConfigHandler::set_Dictionary(System.Collections.Generic.Dictionary`2<System.String,System.Object>) - + - + - + 100663305 System.Void Xrm.Oss.XTL.Interpreter.ConfigHandler::.ctor(System.Collections.Generic.Dictionary`2<System.String,System.Object>) - + - - - - + + + + - + 100663306 System.Boolean Xrm.Oss.XTL.Interpreter.ConfigHandler::Contains(System.String) - + - - - + + + - + 100663307 System.Boolean Xrm.Oss.XTL.Interpreter.ConfigHandler::IsSet(System.String) - + - - - + + + - - + + - + 100663308 T Xrm.Oss.XTL.Interpreter.ConfigHandler::GetValue(System.String,System.String,T) - - - - - - - - - - - - + + + + + + + + + + + + - - - - + + + + - + @@ -428,234 +458,237 @@ 100663309 Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.DataRetriever::ResolveTokenValue(System.String,Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Xrm.Oss.XTL.Interpreter.ConfigHandler) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + Xrm.Oss.XTL.Interpreter.FunctionHandlers 100663310 Xrm.Oss.XTL.Interpreter.ConfigHandler Xrm.Oss.XTL.Interpreter.FunctionHandlers::GetConfig(System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - + - - - + + + - - - - - - + + + + + + - + 100663311 System.Int32 Xrm.Oss.XTL.Interpreter.FunctionHandlers::Compare(System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - + - - - - - - - - + + + + + + + + - - + + - + 100663312 T Xrm.Oss.XTL.Interpreter.FunctionHandlers::CheckedCast(System.Object,System.String,System.Boolean) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663313 Microsoft.Xrm.Sdk.Entity Xrm.Oss.XTL.Interpreter.FunctionHandlers::FetchSnippetByUniqueName(System.String,Microsoft.Xrm.Sdk.IOrganizationService) - + - - - - - + + + + + - + 100663314 Microsoft.Xrm.Sdk.Entity Xrm.Oss.XTL.Interpreter.FunctionHandlers::FetchSnippet(System.String,System.String,Microsoft.Xrm.Sdk.Entity,Xrm.Oss.XTL.Interpreter.OrganizationConfig,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + 100663315 System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers::.cctor() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c @@ -664,7 +697,7 @@ System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::.cctor() - + @@ -672,1866 +705,2111 @@ System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::.ctor() - + 100663506 System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<GetConfig>b__0_0(Xrm.Oss.XTL.Interpreter.ValueExpression) - + - + - - + + - + 100663507 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_0(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_0(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + - - - - - + + + + + - - + + - + 100663508 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_1(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_1(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663509 - System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_36(Xrm.Oss.XTL.Interpreter.ValueExpression) - + System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_2(Xrm.Oss.XTL.Interpreter.ValueExpression) + - + - - + + - + 100663510 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_2(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_3(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663511 - System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_37(Xrm.Oss.XTL.Interpreter.ValueExpression) - + System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_4(Xrm.Oss.XTL.Interpreter.ValueExpression) + - + - - + + - + 100663512 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_3(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_5(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + - - - - + + + + - + 100663513 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_4(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_6(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + - - - - + + + + - + 100663514 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_5(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_7(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + - - - - + + + + - + 100663515 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_6(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_8(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + - - - - + + + + - + - - + + 100663516 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_7(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_9(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663517 - System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_38(System.Object) - + System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_10(System.Object) + - + - - + + - + 100663518 - System.Int32 Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_39(System.Object) - + System.Int32 Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_11(System.Object) + - + - - + + - + 100663519 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_8(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - - - - - - - - - - - - - - - - - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_14(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663520 - System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_40(Xrm.Oss.XTL.Interpreter.ValueExpression) - + System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_15(Xrm.Oss.XTL.Interpreter.ValueExpression) + - + - + 100663521 - System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_41(Xrm.Oss.XTL.Interpreter.ValueExpression) - + System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_16(Xrm.Oss.XTL.Interpreter.ValueExpression) + - + - + 100663522 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_9(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - - - - - - - - - - - - - - - - - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_17(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663523 - System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_42(Xrm.Oss.XTL.Interpreter.ValueExpression) - + System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_18(Xrm.Oss.XTL.Interpreter.ValueExpression) + - + - + 100663524 - System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_43(Xrm.Oss.XTL.Interpreter.ValueExpression) - + System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_19(Xrm.Oss.XTL.Interpreter.ValueExpression) + - + - + 100663525 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_10(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_20(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + - - - - - - - + + + + + + + - - + + - + 100663526 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_11(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - - - - - - - - - - - - - - - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_21(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + 100663527 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_12(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_24(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + - - - - - - + + + + + + - - + + - + 100663528 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_13(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_25(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663529 - System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_49(Xrm.Oss.XTL.Interpreter.ValueExpression) - + System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_26(Xrm.Oss.XTL.Interpreter.ValueExpression) + - + - - - - - - + + + + + + - + 100663530 - System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_46(Xrm.Oss.XTL.Interpreter.ValueExpression) - + System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_27(Xrm.Oss.XTL.Interpreter.ValueExpression) + - + - - - - + + + + - + 100663531 - <>f__AnonymousType0`2<System.Guid,System.String> Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_47(Xrm.Oss.XTL.Interpreter.ValueExpression) - - - - - - - - - - + <>f__AnonymousType0`2<System.Guid,System.String> Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_28(Xrm.Oss.XTL.Interpreter.ValueExpression) + + + + + + + + + + - - + + - + 100663532 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_14(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_30(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663533 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_15(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_31(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + - + 100663534 - System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression> Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_50(Xrm.Oss.XTL.Interpreter.ValueExpression) - + System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression> Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_32(Xrm.Oss.XTL.Interpreter.ValueExpression) + - - - - - - + + + + + + - - + + - + 100663535 - System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_51(System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - + System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_33(System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + - + - + 100663536 - System.Collections.Generic.IEnumerable`1<Xrm.Oss.XTL.Interpreter.ValueExpression> Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_52(System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - + System.Collections.Generic.IEnumerable`1<Xrm.Oss.XTL.Interpreter.ValueExpression> Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_34(System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + - + - + 100663537 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_16(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - - - - - - - - - - - - - - - - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_35(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663538 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_17(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_37(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663539 - System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_54(Xrm.Oss.XTL.Interpreter.ValueExpression) - + System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_38(Xrm.Oss.XTL.Interpreter.ValueExpression) + - + - + 100663540 - System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_55(Xrm.Oss.XTL.Interpreter.ValueExpression) - + System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_39(Xrm.Oss.XTL.Interpreter.ValueExpression) + - + - + 100663541 - System.Collections.Generic.Dictionary`2<System.String,System.String> Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_18(System.String,Microsoft.Xrm.Sdk.IOrganizationService) - + System.Collections.Generic.Dictionary`2<System.String,System.String> Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_42(System.String,Microsoft.Xrm.Sdk.IOrganizationService) + - - - + + + - - - - + + + + - + 100663542 - System.String Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_58(Microsoft.Xrm.Sdk.Metadata.AttributeMetadata) - + System.String Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_43(Microsoft.Xrm.Sdk.Metadata.AttributeMetadata) + - + - + 100663543 - System.String Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_59(Microsoft.Xrm.Sdk.Metadata.AttributeMetadata) - + System.String Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_44(Microsoft.Xrm.Sdk.Metadata.AttributeMetadata) + - + - - - - - - - - + + + + + + + + - + 100663544 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_19(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_45(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663545 - System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_60(Xrm.Oss.XTL.Interpreter.ValueExpression) - + System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_46(Xrm.Oss.XTL.Interpreter.ValueExpression) + - + - - + + - + 100663546 - System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_61(Xrm.Oss.XTL.Interpreter.ValueExpression) - + System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_47(Xrm.Oss.XTL.Interpreter.ValueExpression) + - + - + - - + + 100663547 - System.Collections.Generic.Dictionary`2<System.String,System.Object> Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_62(System.Object) - + System.Collections.Generic.Dictionary`2<System.String,System.Object> Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_48(System.Object) + - + - - + + - + 100663548 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_20(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_49(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663549 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_64(System.Object) - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_51(System.Object) + - + - + 100663550 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_21(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_52(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663551 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_22(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_53(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663552 - System.String Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_66(Xrm.Oss.XTL.Interpreter.ValueExpression) - + System.String Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_55(Xrm.Oss.XTL.Interpreter.ValueExpression) + - + - + 100663553 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_23(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_56(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + - - - + + + - + 100663554 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_24(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_57(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + - + 100663555 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_25(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - - - - - - - - - - - - - - - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_58(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + 100663556 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_26(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_59(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + - - + + + + - + 100663557 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_27(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_60(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + - - + + - + 100663558 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_28(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_61(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + - - - + + + - - + + - + 100663559 - System.String Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_67(Xrm.Oss.XTL.Interpreter.ValueExpression) - + System.String Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_62(Xrm.Oss.XTL.Interpreter.ValueExpression) + - + - + 100663560 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_29(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_63(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + - - - - + + + + - + 100663561 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_30(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_64(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + - - - - + + + + - + 100663562 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_31(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_65(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + - - - - - - - + + + + + + + - - + + - + 100663563 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_32(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - - - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_66(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + - - - - + + + + - + 100663564 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_33(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - - - - - - - - - - - - - - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_67(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + 100663565 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_34(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_69(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663566 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__41_35(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_70(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663567 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_73(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663568 + System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_75(System.Tuple`2<System.String,System.Object>) + + + + + + + + + + 100663569 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_76(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663570 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_77(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_0 + + + + 100663571 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_0::.ctor() + + + + + + + 100663572 + System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_0::<.cctor>b__12(System.Object) + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + 100663573 + System.Guid Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_0::<.cctor>b__13(System.Object) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_0 + Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_1 - 100663567 - System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_0::.ctor() + 100663574 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_1::.ctor() - + - 100663568 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_0::<.cctor>b__44() - + 100663575 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_1::<.cctor>b__22() + - + - + - 100663569 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_0::<.cctor>b__45() - + 100663576 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_1::<.cctor>b__23() + - + - + - Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_1 + Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_2 - 100663570 - System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_1::.ctor() + 100663577 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_2::.ctor() - + - 100663571 - System.String Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_1::<.cctor>b__48(<>f__AnonymousType0`2<System.Guid,System.String>) - + 100663578 + System.String Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_2::<.cctor>b__29(<>f__AnonymousType0`2<System.Guid,System.String>) + - - - - + + + + - - - - + + + + - + - Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_2 + Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_3 - 100663572 - System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_2::.ctor() + 100663579 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_3::.ctor() - + - 100663573 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_2::<.cctor>b__53(Xrm.Oss.XTL.Interpreter.ValueExpression) - + 100663580 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_3::<.cctor>b__36(Xrm.Oss.XTL.Interpreter.ValueExpression) + - + - + - Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_3 + Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_4 - 100663574 - System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_3::.ctor() + 100663581 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_4::.ctor() - + - 100663575 - System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_3::<.cctor>b__56(Xrm.Oss.XTL.Interpreter.ValueExpression) - + 100663582 + System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_4::<.cctor>b__40(Xrm.Oss.XTL.Interpreter.ValueExpression) + - + - - + + - + - 100663576 - System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_3::<.cctor>b__57(Xrm.Oss.XTL.Interpreter.ValueExpression) - + 100663583 + System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_4::<.cctor>b__41(Xrm.Oss.XTL.Interpreter.ValueExpression) + - + - - + + - + - Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_4 + Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_5 - 100663577 - System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_4::.ctor() + 100663584 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_5::.ctor() - + - 100663578 - System.String Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_4::<.cctor>b__63(System.Text.RegularExpressions.Match) - - - - - - - - - - + 100663585 + System.String Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_5::<.cctor>b__50(System.Text.RegularExpressions.Match) + + + + + + + + + + - - - - + + + + - + - Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_5 + Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_6 - 100663579 - System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_5::.ctor() + 100663586 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_6::.ctor() - + - 100663580 - System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_5::<.cctor>b__65(Xrm.Oss.XTL.Interpreter.ValueExpression) - + 100663587 + System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_6::<.cctor>b__54(Xrm.Oss.XTL.Interpreter.ValueExpression) + - + - - + + - + - Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_6 + Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_7 - 100663581 - System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_6::.ctor() + 100663588 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_7::.ctor() - + - 100663582 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_6::<.cctor>b__68(System.Object) - + 100663589 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_7::<.cctor>b__68(System.Object) + - - - - - + + + + + - + - Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_7 + Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_8 - 100663583 - System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_7::.ctor() + 100663590 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_8::.ctor() - + - 100663584 - System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_7::<.cctor>b__69(Xrm.Oss.FluentQuery.IFluentFilterExpression) - + 100663591 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_8::<.cctor>b__71(Xrm.Oss.FluentQuery.IFluentFilterExpression) + - + - - + + - + - 100663585 - System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass41_7::<.cctor>b__70(Xrm.Oss.FluentQuery.IFluentConditionExpression) - + 100663592 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_8::<.cctor>b__72(Xrm.Oss.FluentQuery.IFluentConditionExpression) + - + - + + + + + + + Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_9 + + + + 100663593 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_9::.ctor() + + + + + + + 100663594 + System.Tuple`2<System.String,System.Object> Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_9::<.cctor>b__74(Microsoft.Crm.Sdk.Messages.AuditDetail) + + + + + + + + + + + + + + + + @@ -2543,69 +2821,69 @@ 100663318 System.String Xrm.Oss.XTL.Interpreter.OrganizationConfig::get_Raw() - + - + - + 100663319 System.Void Xrm.Oss.XTL.Interpreter.OrganizationConfig::set_Raw(System.String) - + - + - + 100663320 System.String Xrm.Oss.XTL.Interpreter.OrganizationConfig::get_OrganizationUrl() - + - + - + 100663321 System.Void Xrm.Oss.XTL.Interpreter.OrganizationConfig::set_OrganizationUrl(System.String) - + - + - + 100663322 Xrm.Oss.XTL.Interpreter.OrganizationConfig Xrm.Oss.XTL.Interpreter.OrganizationConfig::Parse(System.String) - - - - - - - - - - - - - + + + + + + + + + + + + + - - + + - + @@ -2613,7 +2891,7 @@ System.Void Xrm.Oss.XTL.Interpreter.OrganizationConfig::.ctor() - + @@ -2625,115 +2903,118 @@ 100663324 System.String Xrm.Oss.XTL.Interpreter.PropertyStringifier::StringifyProperty(System.String,System.Object,Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Xrm.Oss.XTL.Interpreter.ConfigHandler) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663325 System.String Xrm.Oss.XTL.Interpreter.PropertyStringifier::Stringify(System.String,Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Xrm.Oss.XTL.Interpreter.ConfigHandler) - + - - - - - - - + + + + + + + - - + + - + - + Xrm.Oss.XTL.Interpreter.PropertyStringifier/<>c__DisplayClass0_0 - 100663586 + 100663595 System.Void Xrm.Oss.XTL.Interpreter.PropertyStringifier/<>c__DisplayClass0_0::.ctor() - + - - - 100663587 + + + 100663596 System.Boolean Xrm.Oss.XTL.Interpreter.PropertyStringifier/<>c__DisplayClass0_0::<StringifyProperty>b__0(Microsoft.Xrm.Sdk.Metadata.OptionMetadata) - + - + - - + + + + + @@ -2743,22 +3024,22 @@ - 100663588 + 100663597 System.Void Xrm.Oss.XTL.Interpreter.PropertyStringifier/<>c__DisplayClass0_1::.ctor() - + - 100663589 + 100663598 System.Boolean Xrm.Oss.XTL.Interpreter.PropertyStringifier/<>c__DisplayClass0_1::<StringifyProperty>b__1(Microsoft.Xrm.Sdk.LocalizedLabel) - + - + - + @@ -2770,44 +3051,44 @@ 100663326 System.Collections.Generic.List`1<System.String> Xrm.Oss.XTL.Interpreter.TokenMatcher::MatchTokens(System.String) - + - - - - + + + + - - + + - + 100663327 System.String Xrm.Oss.XTL.Interpreter.TokenMatcher::ProcessTokens(System.String,Microsoft.Xrm.Sdk.Entity,Xrm.Oss.XTL.Interpreter.OrganizationConfig,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService) - + - - - - - + + + + + - + 100663328 System.Void Xrm.Oss.XTL.Interpreter.TokenMatcher::.cctor() - + - + - + @@ -2817,30 +3098,30 @@ - 100663590 + 100663599 System.Void Xrm.Oss.XTL.Interpreter.TokenMatcher/<>c::.cctor() - + - 100663591 + 100663600 System.Void Xrm.Oss.XTL.Interpreter.TokenMatcher/<>c::.ctor() - + - 100663592 + 100663601 System.String Xrm.Oss.XTL.Interpreter.TokenMatcher/<>c::<MatchTokens>b__1_0(System.Text.RegularExpressions.Match) - + - + - + @@ -2850,112 +3131,109 @@ - 100663593 + 100663602 System.Void Xrm.Oss.XTL.Interpreter.TokenMatcher/<>c__DisplayClass2_0::.ctor() - + - 100663594 + 100663603 System.Void Xrm.Oss.XTL.Interpreter.TokenMatcher/<>c__DisplayClass2_0::<ProcessTokens>b__0(System.String) - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + Xrm.Oss.XTL.Interpreter.ValueExpression 100663329 System.String Xrm.Oss.XTL.Interpreter.ValueExpression::get_Text() - + - - - + + + - + 100663330 System.Object Xrm.Oss.XTL.Interpreter.ValueExpression::get_Value() - + - - - + + + - + - + 100663331 System.Void Xrm.Oss.XTL.Interpreter.ValueExpression::.ctor(System.String,System.Object) - + - - - - - + + + + - + - + 100663332 System.Void Xrm.Oss.XTL.Interpreter.ValueExpression::.ctor(System.Lazy`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - + - - - - - + + + + - + - + 100663333 System.Void Xrm.Oss.XTL.Interpreter.ValueExpression::.ctor(System.Func`2<System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>,Xrm.Oss.XTL.Interpreter.ValueExpression>,System.Collections.Generic.Dictionary`2<System.String,Xrm.Oss.XTL.Interpreter.ValueExpression>) - + - - - - - + + + + - + @@ -2965,33 +3243,33 @@ - 100663595 + 100663604 System.Void Xrm.Oss.XTL.Interpreter.ValueExpression/<>c__DisplayClass6_0::.ctor() - + - 100663596 + 100663605 System.String Xrm.Oss.XTL.Interpreter.ValueExpression/<>c__DisplayClass6_0::<.ctor>b__0() - + - + - + - 100663597 + 100663606 System.Object Xrm.Oss.XTL.Interpreter.ValueExpression/<>c__DisplayClass6_0::<.ctor>b__1() - + - + - + @@ -3001,43 +3279,43 @@ - 100663598 + 100663607 System.Void Xrm.Oss.XTL.Interpreter.ValueExpression/<>c__DisplayClass7_0::.ctor() - + - 100663599 + 100663608 System.String Xrm.Oss.XTL.Interpreter.ValueExpression/<>c__DisplayClass7_0::<.ctor>b__0() - + - + - - - - + + + + - + - 100663600 + 100663609 System.Object Xrm.Oss.XTL.Interpreter.ValueExpression/<>c__DisplayClass7_0::<.ctor>b__1() - + - + - - - - + + + + - + @@ -3047,22 +3325,22 @@ - 100663601 + 100663610 System.Void Xrm.Oss.XTL.Interpreter.ValueExpression/<>c__DisplayClass8_0::.ctor() - + - 100663602 + 100663611 System.Object Xrm.Oss.XTL.Interpreter.ValueExpression/<>c__DisplayClass8_0::<.ctor>b__1() - + - + - + @@ -3072,529 +3350,529 @@ - 100663603 + 100663612 System.Void Xrm.Oss.XTL.Interpreter.ValueExpression/<>c::.cctor() - + - 100663604 + 100663613 System.Void Xrm.Oss.XTL.Interpreter.ValueExpression/<>c::.ctor() - + - 100663605 + 100663614 System.String Xrm.Oss.XTL.Interpreter.ValueExpression/<>c::<.ctor>b__8_0() - + - + - + - + Xrm.Oss.XTL.Interpreter.XTLInterpreter 100663334 System.Void Xrm.Oss.XTL.Interpreter.XTLInterpreter::.ctor(System.String,Microsoft.Xrm.Sdk.Entity,Xrm.Oss.XTL.Interpreter.OrganizationConfig,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService) - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + + - + - - + + 100663335 System.Void Xrm.Oss.XTL.Interpreter.XTLInterpreter::GetChar(System.Nullable`1<System.Int32>) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663336 System.Void Xrm.Oss.XTL.Interpreter.XTLInterpreter::Expected(System.String) - + - - + + - + 100663337 System.Boolean Xrm.Oss.XTL.Interpreter.XTLInterpreter::IsEof() - + - - - + + + - + 100663338 System.Void Xrm.Oss.XTL.Interpreter.XTLInterpreter::SkipWhiteSpace() - + - - - - - - + + + + + + - - - - + + + + - + 100663339 System.Void Xrm.Oss.XTL.Interpreter.XTLInterpreter::Match(System.Char) - + - - - - - - - - + + + + + + + + - - + + - + 100663340 System.String Xrm.Oss.XTL.Interpreter.XTLInterpreter::GetName() - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663341 System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression> Xrm.Oss.XTL.Interpreter.XTLInterpreter::Expression(System.Char[],System.Collections.Generic.Dictionary`2<System.String,Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663342 Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.XTLInterpreter::ApplyExpression(System.String,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>,System.Collections.Generic.Dictionary`2<System.String,Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663343 Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.XTLInterpreter::Formula(System.Collections.Generic.Dictionary`2<System.String,Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663344 System.String Xrm.Oss.XTL.Interpreter.XTLInterpreter::Produce() - - - - - - - - - - - + + + + + + + + + + + - - - - + + + + - + 100663345 System.Boolean Xrm.Oss.XTL.Interpreter.XTLInterpreter::<Formula>b__20_2(System.String) - + - + - + @@ -3608,27 +3886,27 @@ - 100663610 + 100663619 System.Void Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c__DisplayClass19_0::.ctor() - + - 100663611 - Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c__DisplayClass19_0::<ApplyExpression>b__0() - + 100663620 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c__DisplayClass19_0::<ApplyExpression>b__1() + - - - - - - + + + + + + - + @@ -3638,74 +3916,74 @@ - 100663612 + 100663621 System.Void Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c::.cctor() - + - 100663613 + 100663622 System.Void Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c::.ctor() - + - 100663614 - System.Boolean Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c::<ApplyExpression>b__19_1(System.Collections.Generic.KeyValuePair`2<System.String,Xrm.Oss.XTL.Interpreter.ValueExpression>) - + 100663623 + System.Boolean Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c::<ApplyExpression>b__19_0(System.Collections.Generic.KeyValuePair`2<System.String,Xrm.Oss.XTL.Interpreter.ValueExpression>) + - + - + - 100663615 + 100663624 System.String Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c::<Formula>b__20_0(System.String) - + - + - + - 100663616 + 100663625 Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c::<Formula>b__20_1(System.String) - + - + - + - 100663617 + 100663626 System.String Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c::<Formula>b__20_3(System.String) - + - + - + - 100663618 + 100663627 System.String Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c::<Formula>b__20_5(System.Collections.Generic.KeyValuePair`2<System.String,System.Object>) - + - + - + @@ -3715,44 +3993,44 @@ - 100663619 + 100663628 System.Void Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c__DisplayClass20_0::.ctor() - + - 100663620 + 100663629 Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c__DisplayClass20_0::<Formula>b__4(System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3764,43 +4042,43 @@ 100663346 System.String Xrm.Oss.XTL.Templating.PersistentTracingService::get_TraceLog() - + - - - + + + - + 100663347 System.Void Xrm.Oss.XTL.Templating.PersistentTracingService::.ctor(Microsoft.Xrm.Sdk.ITracingService) - + - - - - - + + + + + - + 100663348 System.Void Xrm.Oss.XTL.Templating.PersistentTracingService::Trace(System.String,System.Object[]) - + - - - - + + + + - + @@ -3812,89 +4090,89 @@ 100663349 System.Boolean Xrm.Oss.XTL.Templating.ProcessingResult::get_Success() - + - + - + 100663350 System.Void Xrm.Oss.XTL.Templating.ProcessingResult::set_Success(System.Boolean) - + - + - + 100663351 System.String Xrm.Oss.XTL.Templating.ProcessingResult::get_TraceLog() - + - + - + 100663352 System.Void Xrm.Oss.XTL.Templating.ProcessingResult::set_TraceLog(System.String) - + - + - + 100663353 System.String Xrm.Oss.XTL.Templating.ProcessingResult::get_Result() - + - + - + 100663354 System.Void Xrm.Oss.XTL.Templating.ProcessingResult::set_Result(System.String) - + - + - + 100663355 System.String Xrm.Oss.XTL.Templating.ProcessingResult::get_Error() - + - + - + 100663356 System.Void Xrm.Oss.XTL.Templating.ProcessingResult::set_Error(System.String) - + - + - + @@ -3902,7 +4180,7 @@ System.Void Xrm.Oss.XTL.Templating.ProcessingResult::.ctor() - + @@ -3914,289 +4192,289 @@ 100663358 System.String Xrm.Oss.XTL.Templating.ProcessorConfig::get_Raw() - + - + - + 100663359 System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_Raw(System.String) - + - + - + 100663360 System.String Xrm.Oss.XTL.Templating.ProcessorConfig::get_TargetField() - + - + - + 100663361 System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_TargetField(System.String) - + - + - + 100663362 System.String Xrm.Oss.XTL.Templating.ProcessorConfig::get_TemplateField() - + - + - + 100663363 System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_TemplateField(System.String) - + - + - + 100663364 System.String Xrm.Oss.XTL.Templating.ProcessorConfig::get_Template() - + - + - + 100663365 System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_Template(System.String) - + - + - + 100663366 System.String Xrm.Oss.XTL.Templating.ProcessorConfig::get_ExecutionCriteria() - + - + - + 100663367 System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_ExecutionCriteria(System.String) - + - + - + 100663368 Microsoft.Xrm.Sdk.EntityReference Xrm.Oss.XTL.Templating.ProcessorConfig::get_Target() - + - + - + 100663369 System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_Target(Microsoft.Xrm.Sdk.EntityReference) - + - + - + 100663370 Microsoft.Xrm.Sdk.Entity Xrm.Oss.XTL.Templating.ProcessorConfig::get_TargetEntity() - + - + - + 100663371 System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_TargetEntity(Microsoft.Xrm.Sdk.Entity) - + - + - + 100663372 System.String[] Xrm.Oss.XTL.Templating.ProcessorConfig::get_TargetColumns() - + - + - + 100663373 System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_TargetColumns(System.String[]) - + - + - + 100663374 System.Boolean Xrm.Oss.XTL.Templating.ProcessorConfig::get_TriggerUpdate() - + - + - + 100663375 System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_TriggerUpdate(System.Boolean) - + - + - + 100663376 System.Boolean Xrm.Oss.XTL.Templating.ProcessorConfig::get_ForceUpdate() - + - + - + 100663377 System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_ForceUpdate(System.Boolean) - + - + - + 100663378 System.Boolean Xrm.Oss.XTL.Templating.ProcessorConfig::get_ThrowOnCustomActionError() - + - + - + 100663379 System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_ThrowOnCustomActionError(System.Boolean) - + - + - + 100663380 System.String Xrm.Oss.XTL.Templating.ProcessorConfig::get_OrganizationUrl() - + - + - + 100663381 System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_OrganizationUrl(System.String) - + - + - + 100663382 Xrm.Oss.XTL.Templating.ProcessorConfig Xrm.Oss.XTL.Templating.ProcessorConfig::Parse(System.String) - - - - - - - - - - - - - + + + + + + + + + + + + + - - + + - + @@ -4204,7 +4482,7 @@ System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::.ctor() - + @@ -4216,339 +4494,4877 @@ 100663384 System.Void Xrm.Oss.XTL.Templating.XTLProcessor::.ctor() - + - - - + + + - + 100663385 System.Void Xrm.Oss.XTL.Templating.XTLProcessor::.ctor(System.String,System.String) - + - - - - - + + + + + - + 100663386 System.Void Xrm.Oss.XTL.Templating.XTLProcessor::Execute(System.IServiceProvider) - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + + - + 100663387 System.Void Xrm.Oss.XTL.Templating.XTLProcessor::TriggerUpdateConditionally(System.String,Microsoft.Xrm.Sdk.Entity,Xrm.Oss.XTL.Templating.ProcessorConfig,Microsoft.Xrm.Sdk.IOrganizationService) - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663388 System.Void Xrm.Oss.XTL.Templating.XTLProcessor::HandleCustomAction(Microsoft.Xrm.Sdk.IPluginExecutionContext,Xrm.Oss.XTL.Templating.PersistentTracingService,Microsoft.Xrm.Sdk.IOrganizationService) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663389 System.String Xrm.Oss.XTL.Templating.XTLProcessor::SerializeResult(Xrm.Oss.XTL.Templating.ProcessingResult) - - - - - - - - - - - - + + + + + + + + + + + + - + 100663390 System.Void Xrm.Oss.XTL.Templating.XTLProcessor::HandleNonCustomAction(Microsoft.Xrm.Sdk.IPluginExecutionContext,Microsoft.Xrm.Sdk.ITracingService,Microsoft.Xrm.Sdk.IOrganizationService) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663391 System.String Xrm.Oss.XTL.Templating.XTLProcessor::RetrieveTemplate(System.String,System.String,Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663392 + System.Void Xrm.Oss.XTL.Templating.XTLProcessor::ValidateConfig(System.String,System.String,System.String) + + + + + + + + + + + + + + + + + + + + + + + + 100663393 + System.Boolean Xrm.Oss.XTL.Templating.XTLProcessor::CheckExecutionCriteria(Xrm.Oss.XTL.Templating.ProcessorConfig,Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService) + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663394 + Microsoft.Xrm.Sdk.Entity Xrm.Oss.XTL.Templating.XTLProcessor::GenerateDataSource(Microsoft.Xrm.Sdk.IPluginExecutionContext,Microsoft.Xrm.Sdk.Entity) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Xrm.Oss.FluentQuery.IOrganizationServiceFluentQuery + + + + Xrm.Oss.FluentQuery.FluentQuery`1 + + + + Xrm.Oss.FluentQuery.FluentQuery`1/<>c + + + + Xrm.Oss.FluentQuery.FluentLinkEntity + + + + Xrm.Oss.FluentQuery.FluentFilterExpression + + + + Xrm.Oss.FluentQuery.FluentConditionExpression + + + + Xrm.Oss.FluentQuery.FluentOrderExpression + + + + Xrm.Oss.FluentQuery.FluentPagingInfo + + + + + + + D:\Entwicklung\Xrm-Templating-Language\test\Xrm.Oss.XTL.Templating.dll + 2021-06-08T05:20:42.1180924Z + Xrm.Oss.XTL.Templating + + + + + + + + + + + + + + + + + <Module> + + + + <>f__AnonymousType0`2 + + + + + Xrm.Oss.XTL.Interpreter.ConfigHandler + + + + 100663303 + System.Collections.Generic.Dictionary`2<System.String,System.Object> Xrm.Oss.XTL.Interpreter.ConfigHandler::get_Dictionary() + + + + + + + + + + 100663304 + System.Void Xrm.Oss.XTL.Interpreter.ConfigHandler::set_Dictionary(System.Collections.Generic.Dictionary`2<System.String,System.Object>) + + + + + + + + + + 100663305 + System.Void Xrm.Oss.XTL.Interpreter.ConfigHandler::.ctor(System.Collections.Generic.Dictionary`2<System.String,System.Object>) + + + + + + + + + + + + + 100663306 + System.Boolean Xrm.Oss.XTL.Interpreter.ConfigHandler::Contains(System.String) + + + + + + + + + + + + 100663307 + System.Boolean Xrm.Oss.XTL.Interpreter.ConfigHandler::IsSet(System.String) + + + + + + + + + + + + + + + 100663308 + T Xrm.Oss.XTL.Interpreter.ConfigHandler::GetValue(System.String,System.String,T) + + + + + + + + + + + + + + + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.DataRetriever + + + + 100663309 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.DataRetriever::ResolveTokenValue(System.String,Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Xrm.Oss.XTL.Interpreter.ConfigHandler) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.FunctionHandlers + + + + 100663310 + Xrm.Oss.XTL.Interpreter.ConfigHandler Xrm.Oss.XTL.Interpreter.FunctionHandlers::GetConfig(System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + 100663311 + System.Int32 Xrm.Oss.XTL.Interpreter.FunctionHandlers::Compare(System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + 100663312 + T Xrm.Oss.XTL.Interpreter.FunctionHandlers::CheckedCast(System.Object,System.String,System.Boolean) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663313 + Microsoft.Xrm.Sdk.Entity Xrm.Oss.XTL.Interpreter.FunctionHandlers::FetchSnippetByUniqueName(System.String,Microsoft.Xrm.Sdk.IOrganizationService) + + + + + + + + + + + + + + 100663314 + Microsoft.Xrm.Sdk.Entity Xrm.Oss.XTL.Interpreter.FunctionHandlers::FetchSnippet(System.String,System.String,Microsoft.Xrm.Sdk.Entity,Xrm.Oss.XTL.Interpreter.OrganizationConfig,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663315 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers::.cctor() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c + + + + 100663504 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::.cctor() + + + + + + + 100663505 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::.ctor() + + + + + + + 100663506 + System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<GetConfig>b__0_0(Xrm.Oss.XTL.Interpreter.ValueExpression) + + + + + + + + + + + + + 100663507 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_0(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + 100663508 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_1(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663509 + System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_2(Xrm.Oss.XTL.Interpreter.ValueExpression) + + + + + + + + + + + + + 100663510 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_3(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663511 + System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_4(Xrm.Oss.XTL.Interpreter.ValueExpression) + + + + + + + + + + + + + 100663512 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_5(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + 100663513 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_6(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + 100663514 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_7(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + 100663515 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_8(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + 100663516 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_9(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663517 + System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_10(System.Object) + + + + + + + + + + + + + 100663518 + System.Int32 Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_11(System.Object) + + + + + + + + + + + + + 100663519 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_14(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663520 + System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_15(Xrm.Oss.XTL.Interpreter.ValueExpression) + + + + + + + + + + 100663521 + System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_16(Xrm.Oss.XTL.Interpreter.ValueExpression) + + + + + + + + + + 100663522 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_17(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663523 + System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_18(Xrm.Oss.XTL.Interpreter.ValueExpression) + + + + + + + + + + 100663524 + System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_19(Xrm.Oss.XTL.Interpreter.ValueExpression) + + + + + + + + + + 100663525 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_20(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + 100663526 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_21(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663527 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_24(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + 100663528 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_25(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663529 + System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_26(Xrm.Oss.XTL.Interpreter.ValueExpression) + + + + + + + + + + + + + + + + + 100663530 + System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_27(Xrm.Oss.XTL.Interpreter.ValueExpression) + + + + + + + + + + + + + + + 100663531 + <>f__AnonymousType0`2<System.Guid,System.String> Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_28(Xrm.Oss.XTL.Interpreter.ValueExpression) + + + + + + + + + + + + + + + + + + + + 100663532 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_30(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663533 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_31(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + 100663534 + System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression> Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_32(Xrm.Oss.XTL.Interpreter.ValueExpression) + + + + + + + + + + + + + + + + + + 100663535 + System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_33(System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + 100663536 + System.Collections.Generic.IEnumerable`1<Xrm.Oss.XTL.Interpreter.ValueExpression> Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_34(System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + 100663537 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_35(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663538 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_37(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663539 + System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_38(Xrm.Oss.XTL.Interpreter.ValueExpression) + + + + + + + + + + 100663540 + System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_39(Xrm.Oss.XTL.Interpreter.ValueExpression) + + + + + + + + + + 100663541 + System.Collections.Generic.Dictionary`2<System.String,System.String> Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_42(System.String,Microsoft.Xrm.Sdk.IOrganizationService) + + + + + + + + + + + + + + + + + 100663542 + System.String Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_43(Microsoft.Xrm.Sdk.Metadata.AttributeMetadata) + + + + + + + + + + 100663543 + System.String Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_44(Microsoft.Xrm.Sdk.Metadata.AttributeMetadata) + + + + + + + + + + + + + + + + + + + 100663544 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_45(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663545 + System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_46(Xrm.Oss.XTL.Interpreter.ValueExpression) + + + + + + + + + + + + + 100663546 + System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_47(Xrm.Oss.XTL.Interpreter.ValueExpression) + + + + + + + + + + 100663547 + System.Collections.Generic.Dictionary`2<System.String,System.Object> Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_48(System.Object) + + + + + + + + + + + + + 100663548 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_49(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663549 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_51(System.Object) + + + + + + + + + + 100663550 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_52(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663551 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_53(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663552 + System.String Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_55(Xrm.Oss.XTL.Interpreter.ValueExpression) + + + + + + + + + + 100663553 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_56(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + 100663554 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_57(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + 100663555 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_58(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663556 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_59(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + 100663557 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_60(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + 100663558 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_61(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + 100663559 + System.String Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_62(Xrm.Oss.XTL.Interpreter.ValueExpression) + + + + + + + + + + 100663560 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_63(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + 100663561 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_64(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + 100663562 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_65(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + 100663563 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_66(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + 100663564 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_67(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663565 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_69(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663566 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_70(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663567 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_73(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663568 + System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_75(System.Tuple`2<System.String,System.Object>) + + + + + + + + + + 100663569 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_76(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663570 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c::<.cctor>b__44_77(Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService,Xrm.Oss.XTL.Interpreter.OrganizationConfig,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_0 + + + + 100663571 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_0::.ctor() + + + + + + + 100663572 + System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_0::<.cctor>b__12(System.Object) + + + + + + + + + + + + + + + + + + + 100663573 + System.Guid Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_0::<.cctor>b__13(System.Object) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_1 + + + + 100663574 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_1::.ctor() + + + + + + + 100663575 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_1::<.cctor>b__22() + + + + + + + + + + 100663576 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_1::<.cctor>b__23() + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_2 + + + + 100663577 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_2::.ctor() + + + + + + + 100663578 + System.String Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_2::<.cctor>b__29(<>f__AnonymousType0`2<System.Guid,System.String>) + + + + + + + + + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_3 + + + + 100663579 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_3::.ctor() + + + + + + + 100663580 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_3::<.cctor>b__36(Xrm.Oss.XTL.Interpreter.ValueExpression) + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_4 + + + + 100663581 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_4::.ctor() + + + + + + + 100663582 + System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_4::<.cctor>b__40(Xrm.Oss.XTL.Interpreter.ValueExpression) + + + + + + + + + + + + + 100663583 + System.Object Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_4::<.cctor>b__41(Xrm.Oss.XTL.Interpreter.ValueExpression) + + + + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_5 + + + + 100663584 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_5::.ctor() + + + + + + + 100663585 + System.String Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_5::<.cctor>b__50(System.Text.RegularExpressions.Match) + + + + + + + + + + + + + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_6 + + + + 100663586 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_6::.ctor() + + + + + + + 100663587 + System.Boolean Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_6::<.cctor>b__54(Xrm.Oss.XTL.Interpreter.ValueExpression) + + + + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_7 + + + + 100663588 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_7::.ctor() + + + + + + + 100663589 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_7::<.cctor>b__68(System.Object) + + + + + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_8 + + + + 100663590 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_8::.ctor() + + + + + + + 100663591 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_8::<.cctor>b__71(Xrm.Oss.FluentQuery.IFluentFilterExpression) + + + + + + + + + + + + + 100663592 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_8::<.cctor>b__72(Xrm.Oss.FluentQuery.IFluentConditionExpression) + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_9 + + + + 100663593 + System.Void Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_9::.ctor() + + + + + + + 100663594 + System.Tuple`2<System.String,System.Object> Xrm.Oss.XTL.Interpreter.FunctionHandlers/<>c__DisplayClass44_9::<.cctor>b__74(Microsoft.Crm.Sdk.Messages.AuditDetail) + + + + + + + + + + + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.OrganizationConfig + + + + 100663318 + System.String Xrm.Oss.XTL.Interpreter.OrganizationConfig::get_Raw() + + + + + + + + + + 100663319 + System.Void Xrm.Oss.XTL.Interpreter.OrganizationConfig::set_Raw(System.String) + + + + + + + + + + 100663320 + System.String Xrm.Oss.XTL.Interpreter.OrganizationConfig::get_OrganizationUrl() + + + + + + + + + + 100663321 + System.Void Xrm.Oss.XTL.Interpreter.OrganizationConfig::set_OrganizationUrl(System.String) + + + + + + + + + + 100663322 + Xrm.Oss.XTL.Interpreter.OrganizationConfig Xrm.Oss.XTL.Interpreter.OrganizationConfig::Parse(System.String) + + + + + + + + + + + + + + + + + + + + + + + 100663323 + System.Void Xrm.Oss.XTL.Interpreter.OrganizationConfig::.ctor() + + + + + + + + + Xrm.Oss.XTL.Interpreter.PropertyStringifier + + + + 100663324 + System.String Xrm.Oss.XTL.Interpreter.PropertyStringifier::StringifyProperty(System.String,System.Object,Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Xrm.Oss.XTL.Interpreter.ConfigHandler) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663325 + System.String Xrm.Oss.XTL.Interpreter.PropertyStringifier::Stringify(System.String,Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Xrm.Oss.XTL.Interpreter.ConfigHandler) + + + + + + + + + + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.PropertyStringifier/<>c__DisplayClass0_0 + + + + 100663595 + System.Void Xrm.Oss.XTL.Interpreter.PropertyStringifier/<>c__DisplayClass0_0::.ctor() + + + + + + + 100663596 + System.Boolean Xrm.Oss.XTL.Interpreter.PropertyStringifier/<>c__DisplayClass0_0::<StringifyProperty>b__0(Microsoft.Xrm.Sdk.Metadata.OptionMetadata) + + + + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.PropertyStringifier/<>c__DisplayClass0_1 + + + + 100663597 + System.Void Xrm.Oss.XTL.Interpreter.PropertyStringifier/<>c__DisplayClass0_1::.ctor() + + + + + + + 100663598 + System.Boolean Xrm.Oss.XTL.Interpreter.PropertyStringifier/<>c__DisplayClass0_1::<StringifyProperty>b__1(Microsoft.Xrm.Sdk.LocalizedLabel) + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.TokenMatcher + + + + 100663326 + System.Collections.Generic.List`1<System.String> Xrm.Oss.XTL.Interpreter.TokenMatcher::MatchTokens(System.String) + + + + + + + + + + + + + + + + 100663327 + System.String Xrm.Oss.XTL.Interpreter.TokenMatcher::ProcessTokens(System.String,Microsoft.Xrm.Sdk.Entity,Xrm.Oss.XTL.Interpreter.OrganizationConfig,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService) + + + + + + + + + + + + + + 100663328 + System.Void Xrm.Oss.XTL.Interpreter.TokenMatcher::.cctor() + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.TokenMatcher/<>c + + + + 100663599 + System.Void Xrm.Oss.XTL.Interpreter.TokenMatcher/<>c::.cctor() + + + + + + + 100663600 + System.Void Xrm.Oss.XTL.Interpreter.TokenMatcher/<>c::.ctor() + + + + + + + 100663601 + System.String Xrm.Oss.XTL.Interpreter.TokenMatcher/<>c::<MatchTokens>b__1_0(System.Text.RegularExpressions.Match) + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.TokenMatcher/<>c__DisplayClass2_0 + + + + 100663602 + System.Void Xrm.Oss.XTL.Interpreter.TokenMatcher/<>c__DisplayClass2_0::.ctor() + + + + + + + 100663603 + System.Void Xrm.Oss.XTL.Interpreter.TokenMatcher/<>c__DisplayClass2_0::<ProcessTokens>b__0(System.String) + + + + + + + + + + + + + + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.ValueExpression + + + + 100663329 + System.String Xrm.Oss.XTL.Interpreter.ValueExpression::get_Text() + + + + + + + + + + + + 100663330 + System.Object Xrm.Oss.XTL.Interpreter.ValueExpression::get_Value() + + + + + + + + + + + + 100663331 + System.Void Xrm.Oss.XTL.Interpreter.ValueExpression::.ctor(System.String,System.Object) + + + + + + + + + + + + + 100663332 + System.Void Xrm.Oss.XTL.Interpreter.ValueExpression::.ctor(System.Lazy`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + 100663333 + System.Void Xrm.Oss.XTL.Interpreter.ValueExpression::.ctor(System.Func`2<System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>,Xrm.Oss.XTL.Interpreter.ValueExpression>,System.Collections.Generic.Dictionary`2<System.String,Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.ValueExpression/<>c__DisplayClass6_0 + + + + 100663604 + System.Void Xrm.Oss.XTL.Interpreter.ValueExpression/<>c__DisplayClass6_0::.ctor() + + + + + + + 100663605 + System.String Xrm.Oss.XTL.Interpreter.ValueExpression/<>c__DisplayClass6_0::<.ctor>b__0() + + + + + + + + + + 100663606 + System.Object Xrm.Oss.XTL.Interpreter.ValueExpression/<>c__DisplayClass6_0::<.ctor>b__1() + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.ValueExpression/<>c__DisplayClass7_0 + + + + 100663607 + System.Void Xrm.Oss.XTL.Interpreter.ValueExpression/<>c__DisplayClass7_0::.ctor() + + + + + + + 100663608 + System.String Xrm.Oss.XTL.Interpreter.ValueExpression/<>c__DisplayClass7_0::<.ctor>b__0() + + + + + + + + + + + + + + + 100663609 + System.Object Xrm.Oss.XTL.Interpreter.ValueExpression/<>c__DisplayClass7_0::<.ctor>b__1() + + + + + + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.ValueExpression/<>c__DisplayClass8_0 + + + + 100663610 + System.Void Xrm.Oss.XTL.Interpreter.ValueExpression/<>c__DisplayClass8_0::.ctor() + + + + + + + 100663611 + System.Object Xrm.Oss.XTL.Interpreter.ValueExpression/<>c__DisplayClass8_0::<.ctor>b__1() + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.ValueExpression/<>c + + + + 100663612 + System.Void Xrm.Oss.XTL.Interpreter.ValueExpression/<>c::.cctor() + + + + + + + 100663613 + System.Void Xrm.Oss.XTL.Interpreter.ValueExpression/<>c::.ctor() + + + + + + + 100663614 + System.String Xrm.Oss.XTL.Interpreter.ValueExpression/<>c::<.ctor>b__8_0() + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.XTLInterpreter + + + + 100663334 + System.Void Xrm.Oss.XTL.Interpreter.XTLInterpreter::.ctor(System.String,Microsoft.Xrm.Sdk.Entity,Xrm.Oss.XTL.Interpreter.OrganizationConfig,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService) + + + + + + + + + + + + + + + + + + + + + + + + + + 100663335 + System.Void Xrm.Oss.XTL.Interpreter.XTLInterpreter::GetChar(System.Nullable`1<System.Int32>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663336 + System.Void Xrm.Oss.XTL.Interpreter.XTLInterpreter::Expected(System.String) + + + + + + + + + + + 100663337 + System.Boolean Xrm.Oss.XTL.Interpreter.XTLInterpreter::IsEof() + + + + + + + + + + + + 100663338 + System.Void Xrm.Oss.XTL.Interpreter.XTLInterpreter::SkipWhiteSpace() + + + + + + + + + + + + + + + + + + + + 100663339 + System.Void Xrm.Oss.XTL.Interpreter.XTLInterpreter::Match(System.Char) + + + + + + + + + + + + + + + + + + + + 100663340 + System.String Xrm.Oss.XTL.Interpreter.XTLInterpreter::GetName() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663341 + System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression> Xrm.Oss.XTL.Interpreter.XTLInterpreter::Expression(System.Char[],System.Collections.Generic.Dictionary`2<System.String,Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663342 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.XTLInterpreter::ApplyExpression(System.String,System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>,System.Collections.Generic.Dictionary`2<System.String,Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663343 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.XTLInterpreter::Formula(System.Collections.Generic.Dictionary`2<System.String,Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663344 + System.String Xrm.Oss.XTL.Interpreter.XTLInterpreter::Produce() + + + + + + + + + + + + + + + + + + + + + + + 100663345 + System.Boolean Xrm.Oss.XTL.Interpreter.XTLInterpreter::<Formula>b__20_2(System.String) + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.XTLInterpreter/FunctionHandler + + + + + Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c__DisplayClass19_0 + + + + 100663619 + System.Void Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c__DisplayClass19_0::.ctor() + + + + + + + 100663620 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c__DisplayClass19_0::<ApplyExpression>b__1() + + + + + + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c + + + + 100663621 + System.Void Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c::.cctor() + + + + + + + 100663622 + System.Void Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c::.ctor() + + + + + + + 100663623 + System.Boolean Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c::<ApplyExpression>b__19_0(System.Collections.Generic.KeyValuePair`2<System.String,Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + 100663624 + System.String Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c::<Formula>b__20_0(System.String) + + + + + + + + + + 100663625 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c::<Formula>b__20_1(System.String) + + + + + + + + + + 100663626 + System.String Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c::<Formula>b__20_3(System.String) + + + + + + + + + + 100663627 + System.String Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c::<Formula>b__20_5(System.Collections.Generic.KeyValuePair`2<System.String,System.Object>) + + + + + + + + + + + + Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c__DisplayClass20_0 + + + + 100663628 + System.Void Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c__DisplayClass20_0::.ctor() + + + + + + + 100663629 + Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.XTLInterpreter/<>c__DisplayClass20_0::<Formula>b__4(System.Collections.Generic.List`1<Xrm.Oss.XTL.Interpreter.ValueExpression>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Xrm.Oss.XTL.Templating.PersistentTracingService + + + + 100663346 + System.String Xrm.Oss.XTL.Templating.PersistentTracingService::get_TraceLog() + + + + + + + + + + + + 100663347 + System.Void Xrm.Oss.XTL.Templating.PersistentTracingService::.ctor(Microsoft.Xrm.Sdk.ITracingService) + + + + + + + + + + + + + + 100663348 + System.Void Xrm.Oss.XTL.Templating.PersistentTracingService::Trace(System.String,System.Object[]) + + + + + + + + + + + + + + + Xrm.Oss.XTL.Templating.ProcessingResult + + + + 100663349 + System.Boolean Xrm.Oss.XTL.Templating.ProcessingResult::get_Success() + + + + + + + + + + 100663350 + System.Void Xrm.Oss.XTL.Templating.ProcessingResult::set_Success(System.Boolean) + + + + + + + + + + 100663351 + System.String Xrm.Oss.XTL.Templating.ProcessingResult::get_TraceLog() + + + + + + + + + + 100663352 + System.Void Xrm.Oss.XTL.Templating.ProcessingResult::set_TraceLog(System.String) + + + + + + + + + + 100663353 + System.String Xrm.Oss.XTL.Templating.ProcessingResult::get_Result() + + + + + + + + + + 100663354 + System.Void Xrm.Oss.XTL.Templating.ProcessingResult::set_Result(System.String) + + + + + + + + + + 100663355 + System.String Xrm.Oss.XTL.Templating.ProcessingResult::get_Error() + + + + + + + + + + 100663356 + System.Void Xrm.Oss.XTL.Templating.ProcessingResult::set_Error(System.String) + + + + + + + + + + 100663357 + System.Void Xrm.Oss.XTL.Templating.ProcessingResult::.ctor() + + + + + + + + + Xrm.Oss.XTL.Templating.ProcessorConfig + + + + 100663358 + System.String Xrm.Oss.XTL.Templating.ProcessorConfig::get_Raw() + + + + + + + + + + 100663359 + System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_Raw(System.String) + + + + + + + + + + 100663360 + System.String Xrm.Oss.XTL.Templating.ProcessorConfig::get_TargetField() + + + + + + + + + + 100663361 + System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_TargetField(System.String) + + + + + + + + + + 100663362 + System.String Xrm.Oss.XTL.Templating.ProcessorConfig::get_TemplateField() + + + + + + + + + + 100663363 + System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_TemplateField(System.String) + + + + + + + + + + 100663364 + System.String Xrm.Oss.XTL.Templating.ProcessorConfig::get_Template() + + + + + + + + + + 100663365 + System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_Template(System.String) + + + + + + + + + + 100663366 + System.String Xrm.Oss.XTL.Templating.ProcessorConfig::get_ExecutionCriteria() + + + + + + + + + + 100663367 + System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_ExecutionCriteria(System.String) + + + + + + + + + + 100663368 + Microsoft.Xrm.Sdk.EntityReference Xrm.Oss.XTL.Templating.ProcessorConfig::get_Target() + + + + + + + + + + 100663369 + System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_Target(Microsoft.Xrm.Sdk.EntityReference) + + + + + + + + + + 100663370 + Microsoft.Xrm.Sdk.Entity Xrm.Oss.XTL.Templating.ProcessorConfig::get_TargetEntity() + + + + + + + + + + 100663371 + System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_TargetEntity(Microsoft.Xrm.Sdk.Entity) + + + + + + + + + + 100663372 + System.String[] Xrm.Oss.XTL.Templating.ProcessorConfig::get_TargetColumns() + + + + + + + + + + 100663373 + System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_TargetColumns(System.String[]) + + + + + + + + + + 100663374 + System.Boolean Xrm.Oss.XTL.Templating.ProcessorConfig::get_TriggerUpdate() + + + + + + + + + + 100663375 + System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_TriggerUpdate(System.Boolean) + + + + + + + + + + 100663376 + System.Boolean Xrm.Oss.XTL.Templating.ProcessorConfig::get_ForceUpdate() + + + + + + + + + + 100663377 + System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_ForceUpdate(System.Boolean) + + + + + + + + + + 100663378 + System.Boolean Xrm.Oss.XTL.Templating.ProcessorConfig::get_ThrowOnCustomActionError() + + + + + + + + + + 100663379 + System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_ThrowOnCustomActionError(System.Boolean) + + + + + + + + + + 100663380 + System.String Xrm.Oss.XTL.Templating.ProcessorConfig::get_OrganizationUrl() + + + + + + + + + + 100663381 + System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::set_OrganizationUrl(System.String) + + + + + + + + + + 100663382 + Xrm.Oss.XTL.Templating.ProcessorConfig Xrm.Oss.XTL.Templating.ProcessorConfig::Parse(System.String) + + + + + + + + + + + + + + + + + + + + + + + 100663383 + System.Void Xrm.Oss.XTL.Templating.ProcessorConfig::.ctor() + + + + + + + + + Xrm.Oss.XTL.Templating.XTLProcessor + + + + 100663384 + System.Void Xrm.Oss.XTL.Templating.XTLProcessor::.ctor() + + + + + + + + + + + + 100663385 + System.Void Xrm.Oss.XTL.Templating.XTLProcessor::.ctor(System.String,System.String) + + + + + + + + + + + + + + 100663386 + System.Void Xrm.Oss.XTL.Templating.XTLProcessor::Execute(System.IServiceProvider) + + + + + + + + + + + + + + + + + + + + + + + + + + 100663387 + System.Void Xrm.Oss.XTL.Templating.XTLProcessor::TriggerUpdateConditionally(System.String,Microsoft.Xrm.Sdk.Entity,Xrm.Oss.XTL.Templating.ProcessorConfig,Microsoft.Xrm.Sdk.IOrganizationService) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663388 + System.Void Xrm.Oss.XTL.Templating.XTLProcessor::HandleCustomAction(Microsoft.Xrm.Sdk.IPluginExecutionContext,Xrm.Oss.XTL.Templating.PersistentTracingService,Microsoft.Xrm.Sdk.IOrganizationService) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663389 + System.String Xrm.Oss.XTL.Templating.XTLProcessor::SerializeResult(Xrm.Oss.XTL.Templating.ProcessingResult) + + + + + + + + + + + + + + + + + + + 100663390 + System.Void Xrm.Oss.XTL.Templating.XTLProcessor::HandleNonCustomAction(Microsoft.Xrm.Sdk.IPluginExecutionContext,Microsoft.Xrm.Sdk.ITracingService,Microsoft.Xrm.Sdk.IOrganizationService) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100663391 + System.String Xrm.Oss.XTL.Templating.XTLProcessor::RetrieveTemplate(System.String,System.String,Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + 100663392 System.Void Xrm.Oss.XTL.Templating.XTLProcessor::ValidateConfig(System.String,System.String,System.String) - + - - - - - - - - + + + + + + + + - - - - - - + + + + + + - + - - + + 100663393 System.Boolean Xrm.Oss.XTL.Templating.XTLProcessor::CheckExecutionCriteria(Xrm.Oss.XTL.Templating.ProcessorConfig,Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService) - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - + + + + - + - - + + 100663394 Microsoft.Xrm.Sdk.Entity Xrm.Oss.XTL.Templating.XTLProcessor::GenerateDataSource(Microsoft.Xrm.Sdk.IPluginExecutionContext,Microsoft.Xrm.Sdk.Entity) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4592,60 +9408,6 @@ Microsoft.Xrm.Sdk.Workflow - - D:\Entwicklung\Xrm-Templating-Language\test\Microsoft.Crm.Sdk.Proxy.dll - 2016-12-21T12:48:06Z - Microsoft.Crm.Sdk.Proxy - - - - C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll - 2019-11-14T06:51:54.0396445Z - System.Xml - - - - C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\SMDiagnostics\v4.0_4.0.0.0__b77a5c561934e089\SMDiagnostics.dll - 2019-12-07T06:03:04Z - SMDiagnostics - - - - C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Internals\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Internals.dll - 2019-12-07T06:03:04Z - System.ServiceModel.Internals - - - - C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll - 2019-11-14T06:51:54.1773342Z - System.Configuration - - - - D:\Entwicklung\Xrm-Templating-Language\test\FakeXrmEasy.dll - 2018-02-22T23:18:08Z - FakeXrmEasy - - - - D:\Entwicklung\Xrm-Templating-Language\test\Microsoft.Xrm.Sdk.dll - 2016-12-21T12:48:06Z - Microsoft.Xrm.Sdk - - - - C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Serialization\v4.0_4.0.0.0__b77a5c561934e089\System.Runtime.Serialization.dll - 2019-12-07T06:03:04Z - System.Runtime.Serialization - - - - C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Activities\v4.0_4.0.0.0__31bf3856ad364e35\System.Activities.dll - 2019-12-07T06:03:04Z - System.Activities - - D:\Entwicklung\Xrm-Templating-Language\test\Microsoft.Xrm.Sdk.Workflow.dll 2016-12-09T18:41:54Z @@ -4658,28 +9420,40 @@ Microsoft.Crm.Sdk.Proxy + + D:\Entwicklung\Xrm-Templating-Language\test\Microsoft.Crm.Sdk.Proxy.dll + 2016-12-21T12:48:06Z + Microsoft.Crm.Sdk.Proxy + + D:\Entwicklung\Xrm-Templating-Language\test\FakeItEasy.dll 2017-04-04T17:48:36Z FakeItEasy + + C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\SMDiagnostics\v4.0_4.0.0.0__b77a5c561934e089\SMDiagnostics.dll + 2020-01-09T19:46:54Z + SMDiagnostics + + C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll 2019-11-14T06:51:54.1773342Z System.Configuration - - D:\Entwicklung\Xrm-Templating-Language\test\FakeItEasy.dll - 2017-04-04T17:48:36Z - FakeItEasy + + C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Internals\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Internals.dll + 2020-01-09T19:46:54Z + System.ServiceModel.Internals - - RefEmit_InMemoryManifestModule - 0001-01-01T00:00:00 - DynamicProxyGenAssembly2 + + C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll + 2019-11-14T06:51:54.1773342Z + System.Configuration @@ -4688,9 +9462,15 @@ DynamicProxyGenAssembly2 - + + D:\Entwicklung\Xrm-Templating-Language\test\FakeItEasy.dll + 2017-04-04T17:48:36Z + FakeItEasy + + + C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel\v4.0_4.0.0.0__b77a5c561934e089\System.ServiceModel.dll - 2019-12-07T06:03:04Z + 2020-01-09T19:46:54Z System.ServiceModel @@ -4703,13 +9483,13 @@ RefEmit_InMemoryManifestModule 0001-01-01T00:00:00 - Anonymously Hosted DynamicMethods Assembly + DynamicProxyGenAssembly2 - - C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel\v4.0_4.0.0.0__b77a5c561934e089\System.ServiceModel.dll - 2019-12-07T06:03:04Z - System.ServiceModel + + RefEmit_InMemoryManifestModule + 0001-01-01T00:00:00 + Anonymously Hosted DynamicMethods Assembly @@ -4724,5 +9504,11 @@ System.Xml.Linq + + C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel\v4.0_4.0.0.0__b77a5c561934e089\System.ServiceModel.dll + 2020-01-09T19:46:54Z + System.ServiceModel + + \ No newline at end of file diff --git a/reports/Xrm.Oss.XTL.Templating_ConfigHandler.htm b/reports/Xrm.Oss.XTL.Templating_ConfigHandler.htm index 08d8858..509e159 100644 --- a/reports/Xrm.Oss.XTL.Templating_ConfigHandler.htm +++ b/reports/Xrm.Oss.XTL.Templating_ConfigHandler.htm @@ -31,10 +31,10 @@

Metrics

- - - - + + + +
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
.ctor(...)10100%100%1
Contains(...)10100%100%1
IsSet(...)22100%66.67%2
GetValue(...)3480%80%3.07
.ctor(...)10100%100%2
Contains(...)10100%100%2
IsSet(...)22100%66.67%6
GetValue(...)3480%80%12

File(s)

@@ -51,17 +51,17 @@

 7{  8    public class ConfigHandler  9    { - 51310        public Dictionary<string, object> Dictionary { get; internal set; } + 54410        public Dictionary<string, object> Dictionary { get; internal set; }  11 - 16312        public ConfigHandler(Dictionary<string, object> config) - 16313        { - 16314            Dictionary = config; - 16315        } + 17812        public ConfigHandler(Dictionary<string, object> config) + 17813        { + 17814            Dictionary = config; + 17815        }  16  17        public bool Contains(string name) - 10118        { - 10119            return Dictionary.ContainsKey(name); - 10120        } + 10618        { + 10619            return Dictionary.ContainsKey(name); + 10620        }  21  22        public bool IsSet(string name)  823        { @@ -69,26 +69,26 @@

 825        }  26  27        public T GetValue<T>(string name, string typeErrorMessage, T defaultValue = default(T)) - 17828        { - 17829            if (!Dictionary.ContainsKey(name)) - 12930            { - 12931                return defaultValue; + 18728        { + 18729            if (!Dictionary.ContainsKey(name)) + 13630            { + 13631                return defaultValue;  32            }  33 - 4934            var value = Dictionary[name]; + 5134            var value = Dictionary[name];  35 - 4936            if (!(value is T)) + 5136            if (!(value is T))  037            {  038                throw new InvalidDataException(typeErrorMessage);  39            }  40 - 4941            return (T)value; - 17842        } + 5141            return (T)value; + 18742        }  43    }  44} - +

Methods/Properties

diff --git a/reports/Xrm.Oss.XTL.Templating_DataRetriever.htm b/reports/Xrm.Oss.XTL.Templating_DataRetriever.htm index 7452e41..8935c24 100644 --- a/reports/Xrm.Oss.XTL.Templating_DataRetriever.htm +++ b/reports/Xrm.Oss.XTL.Templating_DataRetriever.htm @@ -31,7 +31,7 @@

Metrics

- +
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
ResolveTokenValue(...)964100%92.31%9
ResolveTokenValue(...)964100%92.31%90

File(s)

@@ -50,41 +50,41 @@

 9    public static class DataRetriever  10    {  11        public static ValueExpression ResolveTokenValue(string token, Entity primary, IOrganizationService service, Conf - 10012        { - 10013            var path = new Queue<string>(token.Split('.')); - 10014            var currentEntity = primary; - 10015            ValueExpression value = null; + 10512        { + 10513            var path = new Queue<string>(token.Split('.')); + 10514            var currentEntity = primary; + 10515            ValueExpression value = null;  16  17            do - 10818            { - 10819                var currentField = path.Dequeue(); - 10820                var currentObject = currentEntity.GetAttributeValue<object>(currentField); + 11318            { + 11319                var currentField = path.Dequeue(); + 11320                var currentObject = currentEntity.GetAttributeValue<object>(currentField);  21 - 10822                if (currentObject == null) + 11322                if (currentObject == null)  1323                {  1324                    return new ValueExpression(null);  25                }  26 - 9527                var entityReference = currentObject as EntityReference; - 9528                var nextField = path.Count > 0 ? path.Peek() : null; + 10027                var entityReference = currentObject as EntityReference; + 10028                var nextField = path.Count > 0 ? path.Peek() : null;  29 - 9530                if (entityReference == null || (entityReference != null && nextField == null)) - 8731                { - 8732                    value = new ValueExpression(PropertyStringifier.Stringify(currentField, currentEntity, service, conf - 8733                } + 10030                if (entityReference == null || (entityReference != null && nextField == null)) + 9231                { + 9232                    value = new ValueExpression(PropertyStringifier.Stringify(currentField, currentEntity, service, conf + 9233                }  34                else  835                {  836                    currentEntity = service.Retrieve(entityReference.LogicalName, entityReference.Id, new ColumnSet(next  837                } - 19038            } while (path.Count > 0); + 20038            } while (path.Count > 0);  39 - 8740            return value; - 10041        } + 9240            return value; + 10541        }  42    }  43} -

+

Methods/Properties

diff --git a/reports/Xrm.Oss.XTL.Templating_FunctionHandlers.htm b/reports/Xrm.Oss.XTL.Templating_FunctionHandlers.htm index de7622e..d219c5a 100644 --- a/reports/Xrm.Oss.XTL.Templating_FunctionHandlers.htm +++ b/reports/Xrm.Oss.XTL.Templating_FunctionHandlers.htm @@ -17,26 +17,26 @@

Summary

Class:Xrm.Oss.XTL.Interpreter.FunctionHandlers Assembly:Xrm.Oss.XTL.Templating File(s):D:\Entwicklung\Xrm-Templating-Language\src\lib\Xrm.Oss.XTL.Interpreter\FunctionHandlers.cs -Covered lines:957 +Covered lines:1072 Uncovered lines:8 -Coverable lines:965 -Total lines:1063 -Line coverage:99.1% (957 of 965) -Covered branches:283 -Total branches:376 -Branch coverage:75.2% (283 of 376) +Coverable lines:1080 +Total lines:1181 +Line coverage:99.2% (1072 of 1080) +Covered branches:325 +Total branches:444 +Branch coverage:73.1% (325 of 444)

Metrics

- - - - - - + + + + + +
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
GetConfig(...)58100%100%5
.cctor()10100%100%1
Compare(...)2275%66.67%2.06
CheckedCast(...)51666.67%77.78%5.93
FetchSnippetByUniqueName(...)10100%100%1
FetchSnippet(...)616100%100%6
GetConfig(...)58100%100%30
.cctor()10100%100%2
Compare(...)2275%66.67%6
CheckedCast(...)51666.67%77.78%30
FetchSnippetByUniqueName(...)10100%100%2
FetchSnippet(...)616100%100%42

File(s)

@@ -66,9 +66,9 @@

 20    public static class FunctionHandlers  21    {  22        private static ConfigHandler GetConfig(List<ValueExpression> parameters) - 16223        { - 41024            return new ConfigHandler((Dictionary<string, object>) parameters.LastOrDefault(p => p?.Value is Dictionary<s - 16225        } + 17623        { + 44124            return new ConfigHandler((Dictionary<string, object>) parameters.LastOrDefault(p => p?.Value is Dictionary<s + 17625        }  26  227        public static FunctionHandler Not = (primary, service, tracing, organizationConfig, parameters) =>  528        { @@ -157,968 +157,1086 @@

 18111        }  112  2113        public static FunctionHandler IsEqual = (primary, service, tracing, organizationConfig, parameters) => - 11114        { - 11115            if (parameters.Count != 2) + 17114        { + 17115            if (parameters.Count != 2)  2116            {  2117                throw new InvalidPluginExecutionException("IsEqual expects exactly 2 parameters!");  2118            }  2119 - 11120            var expected = parameters[0]; - 11121            var actual = parameters[1]; - 2122 - 11123            var falseReturn = new ValueExpression(bool.FalseString, false); - 11124            var trueReturn = new ValueExpression(bool.TrueString, true); - 2125 - 11126            if (expected.Value == null && actual.Value == null) - 2127            { - 2128                return trueReturn; - 2129            } - 2130 - 11131            if (expected.Value == null && actual.Value != null) - 2132            { - 2133                return falseReturn; - 2134            } - 2135 - 11136            if (expected.Value != null && actual.Value == null) - 2137            { - 2138                return falseReturn; - 2139            } - 2140 - 24141            if (new[] { expected.Value, actual.Value }.All(v => v is int || v is OptionSetValue)) - 6142            { - 6143                var values = new[] { expected.Value, actual.Value } - 14144                    .Select(v => v is OptionSetValue ? ((OptionSetValue)v).Value : (int)v) - 6145                    .ToList(); - 2146 - 6147                var optionSetResult = values[0].Equals(values[1]); - 6148                return new ValueExpression(optionSetResult.ToString(CultureInfo.InvariantCulture), optionSetResult); - 2149            } - 2150            else - 7151            { - 7152                var result = expected.Value.Equals(actual.Value); - 2153 - 7154                return new ValueExpression(result.ToString(CultureInfo.InvariantCulture), result); - 2155            } - 11156        };157 - 2158        public static FunctionHandler And = (primary, service, tracing, organizationConfig, parameters) => - 5159        { - 5160            if (parameters.Count < 2) - 2161            { - 2162                throw new InvalidPluginExecutionException("And expects at least 2 conditions!"); - 2163            } - 2164 - 11165            if (parameters.Any(p => !(p.Value is bool))) - 2166            { - 2167                throw new InvalidPluginExecutionException("And: All conditions must be booleans!"); - 2168            } - 2169 - 9170            if (parameters.All(p => (bool)p.Value)) - 3171            { - 3172                return new ValueExpression(bool.TrueString, true); - 2173            } - 2174 - 4175            return new ValueExpression(bool.FalseString, false); - 5176        };177 - 2178        public static FunctionHandler Or = (primary, service, tracing, organizationConfig, parameters) => - 5179        { - 5180            if (parameters.Count < 2) - 2181            { - 2182                throw new InvalidPluginExecutionException("Or expects at least 2 conditions!"); - 2183            } - 2184 - 11185            if (parameters.Any(p => !(p.Value is bool))) - 2186            { - 2187                throw new InvalidPluginExecutionException("Or: All conditions must be booleans!"); + 17120            var expected = parameters[0]; + 17121            var actual = parameters[1]; + 17122            var tempGuid = Guid.Empty; + 2123 + 17124            var falseReturn = new ValueExpression(bool.FalseString, false); + 17125            var trueReturn = new ValueExpression(bool.TrueString, true); + 2126 + 17127            if (expected.Value == null && actual.Value == null) + 2128            { + 2129                return trueReturn; + 2130            } + 2131 + 17132            if (expected.Value == null && actual.Value != null) + 2133            { + 2134                return falseReturn; + 2135            } + 2136 + 17137            if (expected.Value != null && actual.Value == null) + 2138            { + 2139                return falseReturn; + 2140            } + 2141 + 36142            if (new[] { expected.Value, actual.Value }.All(v => v is int || v is OptionSetValue)) + 6143            { + 6144                var values = new[] { expected.Value, actual.Value } + 14145                    .Select(v => v is OptionSetValue ? ((OptionSetValue)v).Value : (int)v) + 6146                    .ToList(); + 2147 + 6148                var optionSetResult = values[0].Equals(values[1]); + 6149                return new ValueExpression(optionSetResult.ToString(CultureInfo.InvariantCulture), optionSetResult); + 2150            } + 28151            else if (new[] { expected.Value, actual.Value }.All(v => v is Guid || (v is string && Guid.TryParse((string) + 6152            { + 6153                var values = new[] { expected.Value, actual.Value } + 6154                    .Select(v => + 14155                    { + 14156                        if (v is Guid) + 10157                        { + 10158                            return (Guid) v; + 6159                        } + 6160 + 10161                        if (v is string) + 10162                        { + 10163                            return tempGuid; + 6164                        } + 6165 + 6166                        if (v is EntityReference) + 6167                        { + 6168                            return ((EntityReference) v).Id; + 6169                        } + 6170 + 6171                        if (v is Entity) + 6172                        { + 6173                            return ((Entity) v).Id; + 6174                        } + 6175 + 6176                        return Guid.Empty; + 14177                    }) + 6178                    .ToList(); + 2179 + 6180                var guidResult = values[0].Equals(values[1]); + 6181                return new ValueExpression(guidResult.ToString(CultureInfo.InvariantCulture), guidResult); + 2182            } + 2183            else + 9184            { + 9185                var result = expected.Value.Equals(actual.Value); + 2186 + 9187                return new ValueExpression(result.ToString(CultureInfo.InvariantCulture), result);  2188            } - 2189 - 10190            if (parameters.Any(p => (bool)p.Value)) - 4191            { - 4192                return new ValueExpression(bool.TrueString, true); - 2193            } - 2194 - 3195            return new ValueExpression(bool.FalseString, false); - 5196        };197 - 2198        public static FunctionHandler IsNull = (primary, service, tracing, organizationConfig, parameters) => - 22199        { - 22200            var target = parameters.FirstOrDefault(); - 2201 - 22202            if (target.Value == null) - 10203            { - 10204                return new ValueExpression(bool.TrueString, true); - 2205            } - 2206 - 14207            return new ValueExpression(bool.FalseString, false); - 22208        };209 - 2210        public static FunctionHandler If = (primary, service, tracing, organizationConfig, parameters) => - 21211        { - 21212            if (parameters.Count != 3) - 2213            { - 2214                throw new InvalidPluginExecutionException("If-Then-Else expects exactly three parameters: Condition, Tru - 2215            } - 2216 - 21217            var condition = CheckedCast<bool>(parameters[0]?.Value, "If condition must be a boolean!"); - 21218            var trueAction = parameters[1]; - 21219            var falseAction = parameters[2]; - 2220 - 21221            if (condition) - 12222            { - 12223                tracing.Trace("Executing true condition"); - 22224                return new ValueExpression(new Lazy<ValueExpression>(() => trueAction)); - 2225            } - 2226 - 11227            tracing.Trace("Executing false condition"); - 20228            return new ValueExpression(new Lazy<ValueExpression>(() => falseAction)); - 21229        }; + 17189        };190 + 2191        public static FunctionHandler And = (primary, service, tracing, organizationConfig, parameters) => + 8192        { + 8193            if (parameters.Count < 2) + 2194            { + 2195                throw new InvalidPluginExecutionException("And expects at least 2 conditions!"); + 2196            } + 2197 + 26198            if (parameters.Any(p => !(p.Value is bool))) + 2199            { + 2200                throw new InvalidPluginExecutionException("And: All conditions must be booleans!"); + 2201            } + 2202 + 21203            if (parameters.All(p => (bool)p.Value)) + 4204            { + 4205                return new ValueExpression(bool.TrueString, true); + 2206            } + 2207 + 6208            return new ValueExpression(bool.FalseString, false); + 8209        };210 + 2211        public static FunctionHandler Or = (primary, service, tracing, organizationConfig, parameters) => + 6212        { + 6213            if (parameters.Count < 2) + 2214            { + 2215                throw new InvalidPluginExecutionException("Or expects at least 2 conditions!"); + 2216            } + 2217 + 17218            if (parameters.Any(p => !(p.Value is bool))) + 2219            { + 2220                throw new InvalidPluginExecutionException("Or: All conditions must be booleans!"); + 2221            } + 2222 + 14223            if (parameters.Any(p => (bool)p.Value)) + 5224            { + 5225                return new ValueExpression(bool.TrueString, true); + 2226            } + 2227 + 3228            return new ValueExpression(bool.FalseString, false); + 6229        };  230 - 2231        public static FunctionHandler GetPrimaryRecord = (primary, service, tracing, organizationConfig, parameters) => - 5232        { - 5233            if (primary == null) - 2234            { - 2235                return new ValueExpression(null); - 2236            } - 2237 - 5238            return new ValueExpression(string.Empty, primary); - 5239        };240 - 2241        public static FunctionHandler GetRecordUrl = (primary, service, tracing, organizationConfig, parameters) => - 13242        { - 13243            if (organizationConfig == null || string.IsNullOrEmpty(organizationConfig.OrganizationUrl)) - 2244            { - 2245                throw new InvalidPluginExecutionException("GetRecordUrl can't find the Organization Url inside the plugi - 2246            } - 2247 - 32248            if (!parameters.All(p => p.Value is EntityReference || p.Value is Entity || p.Value is Dictionary<string, ob - 2249            { - 2250                throw new InvalidPluginExecutionException("Only Entity Reference and Entity ValueExpressions are support - 2251            } - 2252 - 32253            var refs = parameters.Where(p => p != null && !(p?.Value is Dictionary<string, object>)).Select(e => - 24254            { - 24255                var entityReference = e.Value as EntityReference; - 13256 - 26257                if (entityReference != null) { - 15258                    return new - 15259                    { - 15260                        Id = entityReference.Id, - 15261                        LogicalName = entityReference.LogicalName - 15262                    }; - 13263                } - 13264 - 22265                var entity = e.Value as Entity; - 13266 - 22267                return new - 22268                { - 22269                    Id = entity.Id, - 22270                    LogicalName = entity.LogicalName - 22271                }; - 24272            }); - 13273            var organizationUrl = organizationConfig.OrganizationUrl.EndsWith("/") ? organizationConfig.OrganizationUrl  - 2274 - 13275            var config = GetConfig(parameters); - 13276            var linkText = config.GetValue<string>("linkText", "linkText must be a string"); - 13277            var appId = config.GetValue<string>("appId", "appId must be a string"); - 2278 - 13279            var urls = string.Join(Environment.NewLine, refs.Select(e => - 24280            { - 24281                var url = $"{organizationUrl}main.aspx?etn={e.LogicalName}&id={e.Id}&newWindow=true&pagetype=entityrecor - 24282                return $"<a href=\"{url}\">{(string.IsNullOrEmpty(linkText) ? url : linkText)}</a>"; - 24283            })); - 2284 - 13285            return new ValueExpression(urls, urls); - 13286        };287 - 2288        public static FunctionHandler GetOrganizationUrl = (primary, service, tracing, organizationConfig, parameters) = - 4289        { - 4290            if (organizationConfig == null || string.IsNullOrEmpty(organizationConfig.OrganizationUrl)) - 2291            { - 2292                throw new InvalidPluginExecutionException("GetOrganizationUrl can't find the Organization Url inside the - 2293            } - 2294 - 4295            var config = GetConfig(parameters); - 4296            var linkText = config.GetValue<string>("linkText", "linkText must be a string", string.Empty); - 4297            var urlSuffix = config.GetValue<string>("urlSuffix", "urlSuffix must be a string", string.Empty); - 4298            var asHtml = config.GetValue<bool>("asHtml", "asHtml must be a boolean"); - 2299 - 4300            if (asHtml) - 4301            { - 4302                var url = $"{organizationConfig.OrganizationUrl}{urlSuffix}"; - 4303                var href = $"<a href=\"{url}\">{(string.IsNullOrEmpty(linkText) ? url : linkText)}</a>"; - 4304                return new ValueExpression(href, href); - 2305            } - 2306            else - 2307            { - 2308                return new ValueExpression(organizationConfig.OrganizationUrl, organizationConfig.OrganizationUrl); - 2309            } - 4310        };311 - 2312        public static FunctionHandler Union = (primary, service, tracing, organizationConfig, parameters) => - 6313        { - 6314            if (parameters.Count < 2) - 2315            { - 2316                throw new InvalidPluginExecutionException("Union function needs at least two parameters: Arrays to union - 2317            } - 2318 - 6319            var union = parameters.Select(p => - 16320            { - 16321                if (p == null) - 6322                { - 6323                    return null; - 6324                } - 6325 - 16326                return p.Value as List<ValueExpression>; - 16327            }) - 16328            .Where(p => p != null) - 16329            .SelectMany(p => p) - 6330            .ToList(); - 2331 - 6332            return new ValueExpression(null, union); - 6333        };334 - 2335        public static FunctionHandler Map = (primary, service, tracing, organizationConfig, parameters) => - 3336        { - 3337            if (parameters.Count < 2) - 2338            { - 2339                throw new InvalidPluginExecutionException("Map function needs at least an array with data and a function - 2340            } - 2341 - 3342            var config = GetConfig(parameters); - 2343 - 3344            var values = parameters[0].Value as List<ValueExpression>; - 2345 - 3346            if (!(values is IEnumerable)) - 2347            { - 2348                throw new InvalidPluginExecutionException("Map needs an array as first parameter."); - 2349            } - 2350 - 3351            var lambda = parameters[1].Value as Func<List<ValueExpression>, ValueExpression>; - 2352 - 3353            if (lambda == null) - 2354            { - 2355                throw new InvalidPluginExecutionException("Lambda function must be a proper arrow function"); - 2356            } - 2357 - 7358            return new ValueExpression(null, values.Select(v => lambda(new List<ValueExpression> { v })).ToList()); - 3359        };360 - 2361        public static FunctionHandler Sort = (primary, service, tracing, organizationConfig, parameters) => - 6362        { - 6363            if (parameters.Count < 1) - 2364            { - 2365                throw new InvalidPluginExecutionException("Sort function needs at least an array to sort and optionally  - 2366            } - 2367 - 6368            var config = GetConfig(parameters); - 2369 - 6370            var values = parameters[0].Value as List<ValueExpression>; - 2371 - 6372            if (!(values is IEnumerable)) - 2373            { - 2374                throw new InvalidPluginExecutionException("Sort needs an array as first parameter."); - 2375            } + 2231        public static FunctionHandler IsNull = (primary, service, tracing, organizationConfig, parameters) => + 22232        { + 22233            var target = parameters.FirstOrDefault(); + 2234 + 22235            if (target.Value == null) + 10236            { + 10237                return new ValueExpression(bool.TrueString, true); + 2238            } + 2239 + 14240            return new ValueExpression(bool.FalseString, false); + 22241        };242 + 2243        public static FunctionHandler If = (primary, service, tracing, organizationConfig, parameters) => + 27244        { + 27245            if (parameters.Count != 3) + 2246            { + 2247                throw new InvalidPluginExecutionException("If-Then-Else expects exactly three parameters: Condition, Tru + 2248            } + 2249 + 27250            var condition = CheckedCast<bool>(parameters[0]?.Value, "If condition must be a boolean!"); + 27251            var trueAction = parameters[1]; + 27252            var falseAction = parameters[2]; + 2253 + 27254            if (condition) + 15255            { + 15256                tracing.Trace("Executing true condition"); + 28257                return new ValueExpression(new Lazy<ValueExpression>(() => trueAction)); + 2258            } + 2259 + 14260            tracing.Trace("Executing false condition"); + 26261            return new ValueExpression(new Lazy<ValueExpression>(() => falseAction)); + 27262        };263 + 2264        public static FunctionHandler GetPrimaryRecord = (primary, service, tracing, organizationConfig, parameters) => + 12265        { + 12266            if (primary == null) + 2267            { + 2268                return new ValueExpression(null); + 2269            } + 2270 + 12271            return new ValueExpression(string.Empty, primary); + 12272        };273 + 2274        public static FunctionHandler GetRecordUrl = (primary, service, tracing, organizationConfig, parameters) => + 13275        { + 13276            if (organizationConfig == null || string.IsNullOrEmpty(organizationConfig.OrganizationUrl)) + 2277            { + 2278                throw new InvalidPluginExecutionException("GetRecordUrl can't find the Organization Url inside the plugi + 2279            } + 2280 + 32281            if (!parameters.All(p => p.Value is EntityReference || p.Value is Entity || p.Value is Dictionary<string, ob + 2282            { + 2283                throw new InvalidPluginExecutionException("Only Entity Reference and Entity ValueExpressions are support + 2284            } + 2285 + 32286            var refs = parameters.Where(p => p != null && !(p?.Value is Dictionary<string, object>)).Select(e => + 24287            { + 24288                var entityReference = e.Value as EntityReference; + 13289 + 26290                if (entityReference != null) { + 15291                    return new + 15292                    { + 15293                        Id = entityReference.Id, + 15294                        LogicalName = entityReference.LogicalName + 15295                    }; + 13296                } + 13297 + 22298                var entity = e.Value as Entity; + 13299 + 22300                return new + 22301                { + 22302                    Id = entity.Id, + 22303                    LogicalName = entity.LogicalName + 22304                }; + 24305            }); + 13306            var organizationUrl = organizationConfig.OrganizationUrl.EndsWith("/") ? organizationConfig.OrganizationUrl  + 2307 + 13308            var config = GetConfig(parameters); + 13309            var linkText = config.GetValue<string>("linkText", "linkText must be a string"); + 13310            var appId = config.GetValue<string>("appId", "appId must be a string"); + 2311 + 13312            var urls = string.Join(Environment.NewLine, refs.Select(e => + 24313            { + 24314                var url = $"{organizationUrl}main.aspx?etn={e.LogicalName}&id={e.Id}&newWindow=true&pagetype=entityrecor + 24315                return $"<a href=\"{url}\">{(string.IsNullOrEmpty(linkText) ? url : linkText)}</a>"; + 24316            })); + 2317 + 13318            return new ValueExpression(urls, urls); + 13319        };320 + 2321        public static FunctionHandler GetOrganizationUrl = (primary, service, tracing, organizationConfig, parameters) = + 4322        { + 4323            if (organizationConfig == null || string.IsNullOrEmpty(organizationConfig.OrganizationUrl)) + 2324            { + 2325                throw new InvalidPluginExecutionException("GetOrganizationUrl can't find the Organization Url inside the + 2326            } + 2327 + 4328            var config = GetConfig(parameters); + 4329            var linkText = config.GetValue<string>("linkText", "linkText must be a string", string.Empty); + 4330            var urlSuffix = config.GetValue<string>("urlSuffix", "urlSuffix must be a string", string.Empty); + 4331            var asHtml = config.GetValue<bool>("asHtml", "asHtml must be a boolean"); + 2332 + 4333            if (asHtml) + 4334            { + 4335                var url = $"{organizationConfig.OrganizationUrl}{urlSuffix}"; + 4336                var href = $"<a href=\"{url}\">{(string.IsNullOrEmpty(linkText) ? url : linkText)}</a>"; + 4337                return new ValueExpression(href, href); + 2338            } + 2339            else + 2340            { + 2341                return new ValueExpression(organizationConfig.OrganizationUrl, organizationConfig.OrganizationUrl); + 2342            } + 4343        };344 + 2345        public static FunctionHandler Union = (primary, service, tracing, organizationConfig, parameters) => + 6346        { + 6347            if (parameters.Count < 2) + 2348            { + 2349                throw new InvalidPluginExecutionException("Union function needs at least two parameters: Arrays to union + 2350            } + 2351 + 6352            var union = parameters.Select(p => + 16353            { + 16354                if (p == null) + 6355                { + 6356                    return null; + 6357                } + 6358 + 16359                return p.Value as List<ValueExpression>; + 16360            }) + 16361            .Where(p => p != null) + 16362            .SelectMany(p => p) + 6363            .ToList(); + 2364 + 6365            return new ValueExpression(null, union); + 6366        };367 + 2368        public static FunctionHandler Map = (primary, service, tracing, organizationConfig, parameters) => + 3369        { + 3370            if (parameters.Count < 2) + 2371            { + 2372                throw new InvalidPluginExecutionException("Map function needs at least an array with data and a function + 2373            } + 2374 + 3375            var config = GetConfig(parameters);  2376 - 6377            var descending = config.GetValue<bool>("descending", "descending must be a bool"); - 6378            var property = config.GetValue<string>("property", "property must be a string"); - 2379 - 6380            if (string.IsNullOrEmpty(property)) - 3381            { - 3382                if (descending) - 2383                { - 2384                    return new ValueExpression(null, values.OrderByDescending(v => v.Value).ToList()); - 2385                } - 2386                else - 3387                { - 7388                    return new ValueExpression(null, values.OrderBy(v => v.Value).ToList()); - 2389                } - 2390            } - 2391            else - 5392            { - 5393                if (descending) - 3394                { - 5395                    return new ValueExpression(null, values.OrderByDescending(v => (v.Value as Entity)?.GetAttributeValu - 2396                } - 2397                else - 4398                { - 8399                    return new ValueExpression(null, values.OrderBy(v => (v.Value as Entity)?.GetAttributeValue<object>( - 2400                } - 2401            } - 6402        };403 - 2404        private static Func<string, IOrganizationService, Dictionary<string, string>> RetrieveColumnNames = (entityName, - 19405        { - 19406            return ((RetrieveEntityResponse)service.Execute(new RetrieveEntityRequest - 19407            { - 19408                EntityFilters = EntityFilters.Attributes, - 19409                LogicalName = entityName, - 19410                RetrieveAsIfPublished = false - 19411            })) - 19412            .EntityMetadata - 19413            .Attributes - 87414            .ToDictionary(a => a.LogicalName, a => a?.DisplayName?.UserLocalizedLabel?.Label ?? a.LogicalName); - 19415        };416 - 2417        public static FunctionHandler RenderRecordTable = (primary, service, tracing, organizationConfig, parameters) => - 19418        { - 19419            tracing.Trace("Parsing parameters"); - 2420 - 19421            if (parameters.Count < 3) - 2422            { - 2423                throw new InvalidPluginExecutionException("RecordTable needs at least 3 parameters: Entities, entity nam - 2424            } - 2425 - 19426            var records = CheckedCast<List<ValueExpression>>(parameters[0].Value, "RecordTable requires the first parame - 48427                .Select(p => (p as ValueExpression)?.Value) - 19428                .Cast<Entity>() - 19429                .ToList(); - 2430 - 19431            tracing.Trace($"Records: {records.Count}"); - 2432 - 2433            // We need the entity name although it should be set in the record. If no records are passed, we would fail  - 19434            var entityName = CheckedCast<string>(parameters[1]?.Value, "Second parameter of the RecordTable function nee - 2435 - 19436            if (string.IsNullOrEmpty(entityName)) - 2437            { - 2438                throw new InvalidPluginExecutionException("Second parameter of the RecordTable function needs to be the  - 2439            } - 2440 - 2441            // We need the column names explicitly, since CRM does not return new ValueExpression(null)-valued columns,  - 19442            var displayColumns = CheckedCast<List<ValueExpression>>(parameters[2]?.Value, "List of column names for reco - 48443                .Select(p => p.Value) - 48444                .Select(p => p is Dictionary<string, object> ? (Dictionary<string, object>) p : new Dictionary<string, o - 19445                .ToList(); - 2446 - 19447            tracing.Trace("Retrieving column names"); - 19448            var columnNames = RetrieveColumnNames(entityName, service); - 19449            tracing.Trace($"Column names done"); - 2450 - 19451            var config = GetConfig(parameters); - 19452            var addRecordUrl = config.GetValue<bool>("addRecordUrl", "When setting addRecordUrl, value must be a boolean + 3377            var values = parameters[0].Value as List<ValueExpression>; + 2378 + 3379            if (!(values is IEnumerable)) + 2380            { + 2381                throw new InvalidPluginExecutionException("Map needs an array as first parameter."); + 2382            } + 2383 + 3384            var lambda = parameters[1].Value as Func<List<ValueExpression>, ValueExpression>; + 2385 + 3386            if (lambda == null) + 2387            { + 2388                throw new InvalidPluginExecutionException("Lambda function must be a proper arrow function"); + 2389            } + 2390 + 7391            return new ValueExpression(null, values.Select(v => lambda(new List<ValueExpression> { v })).ToList()); + 3392        };393 + 2394        public static FunctionHandler Sort = (primary, service, tracing, organizationConfig, parameters) => + 6395        { + 6396            if (parameters.Count < 1) + 2397            { + 2398                throw new InvalidPluginExecutionException("Sort function needs at least an array to sort and optionally  + 2399            } + 2400 + 6401            var config = GetConfig(parameters); + 2402 + 6403            var values = parameters[0].Value as List<ValueExpression>; + 2404 + 6405            if (!(values is IEnumerable)) + 2406            { + 2407                throw new InvalidPluginExecutionException("Sort needs an array as first parameter."); + 2408            } + 2409 + 6410            var descending = config.GetValue<bool>("descending", "descending must be a bool"); + 6411            var property = config.GetValue<string>("property", "property must be a string"); + 2412 + 6413            if (string.IsNullOrEmpty(property)) + 3414            { + 3415                if (descending) + 2416                { + 2417                    return new ValueExpression(null, values.OrderByDescending(v => v.Value).ToList()); + 2418                } + 2419                else + 3420                { + 7421                    return new ValueExpression(null, values.OrderBy(v => v.Value).ToList()); + 2422                } + 2423            } + 2424            else + 5425            { + 5426                if (descending) + 3427                { + 5428                    return new ValueExpression(null, values.OrderByDescending(v => (v.Value as Entity)?.GetAttributeValu + 2429                } + 2430                else + 4431                { + 8432                    return new ValueExpression(null, values.OrderBy(v => (v.Value as Entity)?.GetAttributeValue<object>( + 2433                } + 2434            } + 6435        };436 + 2437        private static Func<string, IOrganizationService, Dictionary<string, string>> RetrieveColumnNames = (entityName, + 19438        { + 19439            return ((RetrieveEntityResponse)service.Execute(new RetrieveEntityRequest + 19440            { + 19441                EntityFilters = EntityFilters.Attributes, + 19442                LogicalName = entityName, + 19443                RetrieveAsIfPublished = false + 19444            })) + 19445            .EntityMetadata + 19446            .Attributes + 87447            .ToDictionary(a => a.LogicalName, a => a?.DisplayName?.UserLocalizedLabel?.Label ?? a.LogicalName); + 19448        };449 + 2450        public static FunctionHandler RenderRecordTable = (primary, service, tracing, organizationConfig, parameters) => + 19451        { + 19452            tracing.Trace("Parsing parameters");  2453 - 19454            var tableStyle = config.GetValue("tableStyle", "tableStyle must be a string!", string.Empty); - 2455 - 19456            if (!string.IsNullOrEmpty(tableStyle)) - 4457            { - 4458                tableStyle = $" style=\"{tableStyle}\""; - 4459            } - 2460 - 19461            var tableHeadStyle = config.GetValue("headerStyle", "headerStyle must be a string!", @"border:1px solid blac - 19462            var tableDataStyle = config.GetValue("dataStyle", "dataStyle must be a string!", @"border:1px solid black;pa + 19454            if (parameters.Count < 3) + 2455            { + 2456                throw new InvalidPluginExecutionException("RecordTable needs at least 3 parameters: Entities, entity nam + 2457            } + 2458 + 19459            var records = CheckedCast<List<ValueExpression>>(parameters[0].Value, "RecordTable requires the first parame + 48460                .Select(p => (p as ValueExpression)?.Value) + 19461                .Cast<Entity>() + 19462                .ToList();  2463 - 19464            var evenDataStyle = config.GetValue<string>("evenDataStyle", "evenDataStyle must be a string!"); - 19465            var unevenDataStyle = config.GetValue<string>("unevenDataStyle", "unevenDataStyle must be a string!"); - 2466 - 19467            tracing.Trace("Parsed parameters"); + 19464            tracing.Trace($"Records: {records.Count}"); + 2465 + 2466            // We need the entity name although it should be set in the record. If no records are passed, we would fail  + 19467            var entityName = CheckedCast<string>(parameters[1]?.Value, "Second parameter of the RecordTable function nee  2468 - 2469            // Create table header - 19470            var stringBuilder = new StringBuilder($"<table{tableStyle}>\n<tr>"); - 111471            foreach (var column in displayColumns) - 31472            { - 31473                var name = string.Empty; - 31474                var columnName = column.ContainsKey("name") ? column["name"] as string : string.Empty; - 2475 - 31476                if (columnName.Contains(":")) - 3477                { - 3478                    name = columnName.Substring(columnName.IndexOf(':') + 1); - 3479                } - 2480                else - 30481                { - 30482                    name = columnNames.ContainsKey(columnName) ? columnNames[columnName] : columnName; - 30483                } - 2484 - 31485                if (column.ContainsKey("label")) - 9486                { - 9487                    name = column["label"] as string; - 9488                } - 2489 - 31490                if (column.ContainsKey("style")) - 6491                { - 6492                    if (!column.ContainsKey("mergeStyle") || (bool) column["mergeStyle"]) - 4493                    { - 4494                        stringBuilder.AppendLine($"<th style=\"{tableHeadStyle}{column["style"]}\">{name}</th>"); - 4495                    } - 2496                    else - 4497                    { - 4498                        stringBuilder.AppendLine($"<th style=\"{column["style"]}\">{name}</th>"); - 4499                    } - 6500                } - 2501                else - 27502                { - 27503                    stringBuilder.AppendLine($"<th style=\"{tableHeadStyle}\">{name}</th>"); - 27504                } - 31505            } - 2506 - 2507            // Add column for url if wanted - 19508            if (addRecordUrl) - 5509            { - 5510                stringBuilder.AppendLine($"<th style=\"{tableHeadStyle}\">URL</th>"); - 5511            } - 19512            stringBuilder.AppendLine("<tr />"); - 2513 - 19514            if (records != null) - 19515            { - 94516                for (var i = 0; i < records.Count; i++) - 31517                { - 31518                    var record = records[i]; - 31519                    var isEven = i % 2 == 0; - 31520                    var lineStyle = (isEven ? evenDataStyle : unevenDataStyle) ?? tableDataStyle; - 2521 - 31522                    stringBuilder.AppendLine("<tr>"); - 2523 - 191524                    foreach (var column in displayColumns) - 53525                    { - 53526                        var columnName = column.ContainsKey("name") ? column["name"] as string : string.Empty; - 53527                        columnName = columnName.Contains(":") ? columnName.Substring(0, columnName.IndexOf(':')) : colum - 2528 - 53529                        var renderFunction = column.ContainsKey("renderFunction") ? column["renderFunction"] as Func<Lis - 53530                        var entityConfig = column.ContainsKey("nameByEntity") ? column["nameByEntity"] as Dictionary<str - 2531 - 53532                        if (entityConfig != null && entityConfig.ContainsKey(record.LogicalName)) - 4533                        { - 4534                            columnName = entityConfig[record.LogicalName] as string; - 4535                        } - 2536 - 53537                        var staticValues = column.ContainsKey("staticValueByEntity") ? column["staticValueByEntity"] as  - 2538 - 2539                        string value; - 2540 - 53541                        if (staticValues != null && staticValues.ContainsKey(record.LogicalName)) - 4542                        { - 4543                            value = staticValues[record.LogicalName] as string; - 4544                        } - 49545                        else if (renderFunction != null) - 3546                        { - 3547                            var rowRecord = new ValueExpression(null, record); - 3548                            var rowColumnName = new ValueExpression(columnName, columnName);549 - 3550                            value = renderFunction(new List<ValueExpression> { rowRecord, rowColumnName })?.Text; - 3551                        }552                        else - 46553                        { - 46554                            value = PropertyStringifier.Stringify(columnName, record, service, config); - 46555                        }556 - 51557                        if (column.ContainsKey("style")) - 8558                        { - 8559                            if (!column.ContainsKey("mergeStyle") || (bool)column["mergeStyle"]) - 4560                            { - 4561                                stringBuilder.AppendLine($"<td style=\"{lineStyle}{column["style"]}\">{value}</td>"); - 4562                            }563                            else - 4564                            { - 4565                                stringBuilder.AppendLine($"<td style=\"{column["style"]}\">{value}</td>"); - 4566                            } - 8567                        }568                        else - 43569                        { - 43570                            stringBuilder.AppendLine($"<td style=\"{lineStyle}\">{value}</td>"); - 43571                        } - 51572                    }573 - 29574                    if (addRecordUrl) - 6575                    { - 6576                        stringBuilder.AppendLine($"<td style=\"{lineStyle}\">{GetRecordUrl(primary, service, tracing, or - 6577                    }578 - 29579                    stringBuilder.AppendLine("<tr />"); - 29580                } - 17581            } + 19469            if (string.IsNullOrEmpty(entityName)) + 2470            { + 2471                throw new InvalidPluginExecutionException("Second parameter of the RecordTable function needs to be the  + 2472            } + 2473 + 2474            // We need the column names explicitly, since CRM does not return new ValueExpression(null)-valued columns,  + 19475            var displayColumns = CheckedCast<List<ValueExpression>>(parameters[2]?.Value, "List of column names for reco + 48476                .Select(p => p.Value) + 48477                .Select(p => p is Dictionary<string, object> ? (Dictionary<string, object>) p : new Dictionary<string, o + 19478                .ToList(); + 2479 + 19480            tracing.Trace("Retrieving column names"); + 19481            var columnNames = RetrieveColumnNames(entityName, service); + 19482            tracing.Trace($"Column names done"); + 2483 + 19484            var config = GetConfig(parameters); + 19485            var addRecordUrl = config.GetValue<bool>("addRecordUrl", "When setting addRecordUrl, value must be a boolean + 2486 + 19487            var tableStyle = config.GetValue("tableStyle", "tableStyle must be a string!", string.Empty); + 2488 + 19489            if (!string.IsNullOrEmpty(tableStyle)) + 4490            { + 4491                tableStyle = $" style=\"{tableStyle}\""; + 4492            } + 2493 + 19494            var tableHeadStyle = config.GetValue("headerStyle", "headerStyle must be a string!", @"border:1px solid blac + 19495            var tableDataStyle = config.GetValue("dataStyle", "dataStyle must be a string!", @"border:1px solid black;pa + 2496 + 19497            var evenDataStyle = config.GetValue<string>("evenDataStyle", "evenDataStyle must be a string!"); + 19498            var unevenDataStyle = config.GetValue<string>("unevenDataStyle", "unevenDataStyle must be a string!"); + 2499 + 19500            tracing.Trace("Parsed parameters"); + 2501 + 2502            // Create table header + 19503            var stringBuilder = new StringBuilder($"<table{tableStyle}>\n<tr>"); + 111504            foreach (var column in displayColumns) + 31505            { + 31506                var name = string.Empty; + 31507                var columnName = column.ContainsKey("name") ? column["name"] as string : string.Empty; + 2508 + 31509                if (columnName.Contains(":")) + 3510                { + 3511                    name = columnName.Substring(columnName.IndexOf(':') + 1); + 3512                } + 2513                else + 30514                { + 30515                    name = columnNames.ContainsKey(columnName) ? columnNames[columnName] : columnName; + 30516                } + 2517 + 31518                if (column.ContainsKey("label")) + 9519                { + 9520                    name = column["label"] as string; + 9521                } + 2522 + 31523                if (column.ContainsKey("style")) + 6524                { + 6525                    if (!column.ContainsKey("mergeStyle") || (bool) column["mergeStyle"]) + 4526                    { + 4527                        stringBuilder.AppendLine($"<th style=\"{tableHeadStyle}{column["style"]}\">{name}</th>"); + 4528                    } + 2529                    else + 4530                    { + 4531                        stringBuilder.AppendLine($"<th style=\"{column["style"]}\">{name}</th>"); + 4532                    } + 6533                } + 2534                else + 27535                { + 27536                    stringBuilder.AppendLine($"<th style=\"{tableHeadStyle}\">{name}</th>"); + 27537                } + 31538            } + 2539 + 2540            // Add column for url if wanted + 19541            if (addRecordUrl) + 5542            { + 5543                stringBuilder.AppendLine($"<th style=\"{tableHeadStyle}\">URL</th>"); + 5544            } + 19545            stringBuilder.AppendLine("</tr>"); + 2546 + 19547            if (records != null) + 19548            { + 94549                for (var i = 0; i < records.Count; i++) + 31550                { + 31551                    var record = records[i]; + 31552                    var isEven = i % 2 == 0; + 31553                    var lineStyle = (isEven ? evenDataStyle : unevenDataStyle) ?? tableDataStyle; + 2554 + 31555                    stringBuilder.AppendLine("<tr>"); + 2556 + 191557                    foreach (var column in displayColumns) + 53558                    { + 53559                        var columnName = column.ContainsKey("name") ? column["name"] as string : string.Empty; + 53560                        columnName = columnName.Contains(":") ? columnName.Substring(0, columnName.IndexOf(':')) : colum + 2561 + 53562                        var renderFunction = column.ContainsKey("renderFunction") ? column["renderFunction"] as Func<Lis + 53563                        var entityConfig = column.ContainsKey("nameByEntity") ? column["nameByEntity"] as Dictionary<str + 2564 + 53565                        if (entityConfig != null && entityConfig.ContainsKey(record.LogicalName)) + 4566                        { + 4567                            columnName = entityConfig[record.LogicalName] as string; + 4568                        } + 2569 + 53570                        var staticValues = column.ContainsKey("staticValueByEntity") ? column["staticValueByEntity"] as  + 2571 + 2572                        string value; + 2573 + 53574                        if (staticValues != null && staticValues.ContainsKey(record.LogicalName)) + 4575                        { + 4576                            value = staticValues[record.LogicalName] as string; + 4577                        } + 49578                        else if (renderFunction != null) + 3579                        { + 3580                            var rowRecord = new ValueExpression(null, record); + 3581                            var rowColumnName = new ValueExpression(columnName, columnName);  582 - 17583            stringBuilder.AppendLine("</table>"); - 17584            var table = stringBuilder.ToString();585 - 17586            return new ValueExpression(table, table); - 17587        };588 - 2589        public static FunctionHandler Fetch = (primary, service, tracing, organizationConfig, parameters) => - 24590        { - 24591            if (parameters.Count < 1) - 2592            { - 2593                throw new InvalidPluginExecutionException("Fetch needs at least one parameter: Fetch XML."); - 2594            } - 2595 - 24596            var fetch = parameters[0].Value as string; - 2597 - 24598            if (string.IsNullOrEmpty(fetch)) - 2599            { - 2600                throw new InvalidPluginExecutionException("First parameter of Fetch function needs to be a fetchXml stri - 2601            } - 2602 - 24603            var references = new List<object> { primary.Id }; - 2604 - 24605            if (parameters.Count > 1) - 5606            { - 5607                if (!(parameters[1].Value is List<ValueExpression>)) - 2608                { - 2609                    throw new InvalidPluginExecutionException("Fetch parameters must be an array expression"); - 2610                } - 2611 - 5612                var @params = parameters[1].Value as List<ValueExpression>; - 2613 - 5614                if (@params is IEnumerable) - 5615                { - 17616                    foreach (var item in @params) - 5617                    { - 5618                        var reference = item.Value as EntityReference; - 5619                        if (reference != null) - 4620                        { - 4621                            references.Add(reference.Id); - 4622                            continue; - 2623                        } - 2624 - 3625                        var entity = item.Value as Entity; - 3626                        if (entity != null) - 2627                        { - 2628                            references.Add(entity.Id); - 2629                            continue; - 2630                        } - 2631 - 3632                        var optionSet = item.Value as OptionSetValue; - 3633                        if (optionSet != null) - 2634                        { - 2635                            references.Add(optionSet.Value); - 2636                            continue; - 2637                        } - 2638 - 3639                        references.Add(item.Value); - 3640                    } - 5641                } - 5642            } - 2643 - 24644            var records = new List<object>(); - 2645 - 24646            var query = fetch; - 2647 - 24648            if (primary != null) - 24649            { - 24650                query = query.Replace("{0}", references[0].ToString()); - 24651            } - 2652 - 24653            tracing.Trace("Replacing references"); - 2654 - 24655            var referenceRegex = new Regex("{([0-9]+)}", RegexOptions.Compiled | RegexOptions.CultureInvariant); - 24656            query = referenceRegex.Replace(query, match => - 27657            { - 27658                var capture = match.Groups[1].Value; - 27659                var referenceNumber = int.Parse(capture); - 24660 - 27661                if (referenceNumber >= references.Count) - 24662                { - 24663                    throw new InvalidPluginExecutionException($"You tried using reference {referenceNumber} in fetch, bu - 24664                } - 24665 - 27666                return references[referenceNumber]?.ToString(); - 27667            }); - 2668 - 24669            tracing.Trace("References replaced"); - 24670            tracing.Trace($"Executing fetch: {query}"); - 24671            records.AddRange(service.RetrieveMultiple(new FetchExpression(query)).Entities); - 2672 - 54673            return new ValueExpression(string.Empty, records.Select(r => new ValueExpression(string.Empty, r)).ToList()) - 24674        };675 - 2676        public static FunctionHandler GetValue = (primary, service, tracing, organizationConfig, parameters) => - 103677        { - 103678            if (primary == null) - 2679            { - 2680                return new ValueExpression(null); - 2681            } - 2682 - 103683            var field = parameters.FirstOrDefault()?.Text; - 2684 - 103685            if (string.IsNullOrEmpty(field)) - 2686            { - 2687                throw new InvalidPluginExecutionException("First parameter of Value function needs to be the field name  - 2688            } - 2689 - 103690            var target = primary; - 103691            var config = GetConfig(parameters); - 2692 - 103693            if (config.Contains("explicitTarget")) - 10694            { - 10695                if (config.IsSet("explicitTarget")) - 9696                { - 9697                    var explicitTarget = config.GetValue<Entity>("explicitTarget", "explicitTarget must be an entity!"); - 2698 - 9699                    target = explicitTarget; - 9700                } - 2701                else - 3702                { - 3703                    return new ValueExpression(string.Empty, string.Empty); - 2704                } - 9705            } - 2706 - 102707            if (field == null) - 2708            { - 2709                throw new InvalidPluginExecutionException("Value requires a field target string as input"); - 2710            } - 2711 - 102712            return DataRetriever.ResolveTokenValue(field, target, service, config); - 103713        };714 - 2715        public static FunctionHandler Join = (primary, service, tracing, organizationConfig, parameters) => - 9716        { - 9717            if (parameters.Count < 2) - 2718            { - 2719                throw new InvalidPluginExecutionException("Join function needs at lease two parameters: Separator and an - 2720            } - 2721 - 9722            var separator = parameters.FirstOrDefault()?.Text; - 2723 - 9724            if (string.IsNullOrEmpty(separator)) - 2725            { - 2726                throw new InvalidPluginExecutionException("First parameter of Join function needs to be the separator st - 2727            } - 2728 - 9729            var values = parameters[1].Value as List<ValueExpression>; - 2730 - 9731            if (!(values is IEnumerable)) - 2732            { - 2733                throw new InvalidPluginExecutionException("The values parameter needs to be an enumerable, please wrap t - 2734            } - 2735 - 9736            var config = GetConfig(parameters); - 9737            var removeEmptyEntries = false; - 2738 - 9739            if (parameters.Count > 2 && parameters[2].Value is bool) - 5740            { - 5741                removeEmptyEntries = (bool) parameters[2].Value; - 5742            } - 2743 - 9744            var valuesToConcatenate = values - 33745                .Where(v => !removeEmptyEntries || !string.IsNullOrEmpty(v.Text)) - 31746                .Select(v => v.Text); - 2747 - 9748            var joined = string.Join(separator, valuesToConcatenate); - 2749 - 9750            return new ValueExpression(joined, joined); - 9751        };752 - 2753        public static FunctionHandler NewLine = (primary, service, tracing, organizationConfig, parameters) => - 3754        { - 3755            return new ValueExpression(Environment.NewLine, Environment.NewLine); - 3756        };757 - 2758        public static FunctionHandler Concat = (primary, service, tracing, organizationConfig, parameters) => - 5759        { - 5760            var text = ""; + 3583                            value = renderFunction(new List<ValueExpression> { rowRecord, rowColumnName })?.Text; + 3584                        }585                        else + 46586                        { + 46587                            value = PropertyStringifier.Stringify(columnName, record, service, config); + 46588                        }589 + 51590                        if (column.ContainsKey("style")) + 8591                        { + 8592                            if (!column.ContainsKey("mergeStyle") || (bool)column["mergeStyle"]) + 4593                            { + 4594                                stringBuilder.AppendLine($"<td style=\"{lineStyle}{column["style"]}\">{value}</td>"); + 4595                            }596                            else + 4597                            { + 4598                                stringBuilder.AppendLine($"<td style=\"{column["style"]}\">{value}</td>"); + 4599                            } + 8600                        }601                        else + 43602                        { + 43603                            stringBuilder.AppendLine($"<td style=\"{lineStyle}\">{value}</td>"); + 43604                        } + 51605                    }606 + 29607                    if (addRecordUrl) + 6608                    { + 6609                        stringBuilder.AppendLine($"<td style=\"{lineStyle}\">{GetRecordUrl(primary, service, tracing, or + 6610                    }611 + 29612                    stringBuilder.AppendLine("</tr>"); + 29613                } + 17614            }615 + 17616            stringBuilder.AppendLine("</table>"); + 17617            var table = stringBuilder.ToString();618 + 17619            return new ValueExpression(table, table); + 17620        };621 + 2622        public static FunctionHandler Fetch = (primary, service, tracing, organizationConfig, parameters) => + 24623        { + 24624            if (parameters.Count < 1) + 2625            { + 2626                throw new InvalidPluginExecutionException("Fetch needs at least one parameter: Fetch XML."); + 2627            } + 2628 + 24629            var fetch = parameters[0].Value as string; + 2630 + 24631            if (string.IsNullOrEmpty(fetch)) + 2632            { + 2633                throw new InvalidPluginExecutionException("First parameter of Fetch function needs to be a fetchXml stri + 2634            } + 2635 + 24636            var references = new List<object> { primary.Id }; + 2637 + 24638            if (parameters.Count > 1) + 5639            { + 5640                if (!(parameters[1].Value is List<ValueExpression>)) + 2641                { + 2642                    throw new InvalidPluginExecutionException("Fetch parameters must be an array expression"); + 2643                } + 2644 + 5645                var @params = parameters[1].Value as List<ValueExpression>; + 2646 + 5647                if (@params is IEnumerable) + 5648                { + 17649                    foreach (var item in @params) + 5650                    { + 5651                        var reference = item.Value as EntityReference; + 5652                        if (reference != null) + 4653                        { + 4654                            references.Add(reference.Id); + 4655                            continue; + 2656                        } + 2657 + 3658                        var entity = item.Value as Entity; + 3659                        if (entity != null) + 2660                        { + 2661                            references.Add(entity.Id); + 2662                            continue; + 2663                        } + 2664 + 3665                        var optionSet = item.Value as OptionSetValue; + 3666                        if (optionSet != null) + 2667                        { + 2668                            references.Add(optionSet.Value); + 2669                            continue; + 2670                        } + 2671 + 3672                        references.Add(item.Value); + 3673                    } + 5674                } + 5675            } + 2676 + 24677            var records = new List<object>(); + 2678 + 24679            var query = fetch; + 2680 + 24681            if (primary != null) + 24682            { + 24683                query = query.Replace("{0}", references[0].ToString()); + 24684            } + 2685 + 24686            tracing.Trace("Replacing references"); + 2687 + 24688            var referenceRegex = new Regex("{([0-9]+)}", RegexOptions.Compiled | RegexOptions.CultureInvariant); + 24689            query = referenceRegex.Replace(query, match => + 27690            { + 27691                var capture = match.Groups[1].Value; + 27692                var referenceNumber = int.Parse(capture); + 24693 + 27694                if (referenceNumber >= references.Count) + 24695                { + 24696                    throw new InvalidPluginExecutionException($"You tried using reference {referenceNumber} in fetch, bu + 24697                } + 24698 + 27699                return references[referenceNumber]?.ToString(); + 27700            }); + 2701 + 24702            tracing.Trace("References replaced"); + 24703            tracing.Trace($"Executing fetch: {query}"); + 24704            records.AddRange(service.RetrieveMultiple(new FetchExpression(query)).Entities); + 2705 + 54706            return new ValueExpression(string.Empty, records.Select(r => new ValueExpression(string.Empty, r)).ToList()) + 24707        };708 + 2709        public static FunctionHandler GetValue = (primary, service, tracing, organizationConfig, parameters) => + 108710        { + 108711            if (primary == null) + 2712            { + 2713                return new ValueExpression(null); + 2714            } + 2715 + 108716            var field = parameters.FirstOrDefault()?.Text; + 2717 + 108718            if (string.IsNullOrEmpty(field)) + 2719            { + 2720                throw new InvalidPluginExecutionException("First parameter of Value function needs to be the field name  + 2721            } + 2722 + 108723            var target = primary; + 108724            var config = GetConfig(parameters); + 2725 + 108726            if (config.Contains("explicitTarget")) + 10727            { + 10728                if (config.IsSet("explicitTarget")) + 9729                { + 9730                    var explicitTarget = config.GetValue<Entity>("explicitTarget", "explicitTarget must be an entity!"); + 2731 + 9732                    target = explicitTarget; + 9733                } + 2734                else + 3735                { + 3736                    return new ValueExpression(string.Empty, string.Empty); + 2737                } + 9738            } + 2739 + 107740            if (field == null) + 2741            { + 2742                throw new InvalidPluginExecutionException("Value requires a field target string as input"); + 2743            } + 2744 + 107745            return DataRetriever.ResolveTokenValue(field, target, service, config); + 108746        };747 + 2748        public static FunctionHandler Join = (primary, service, tracing, organizationConfig, parameters) => + 9749        { + 9750            if (parameters.Count < 2) + 2751            { + 2752                throw new InvalidPluginExecutionException("Join function needs at lease two parameters: Separator and an + 2753            } + 2754 + 9755            var separator = parameters.FirstOrDefault()?.Text; + 2756 + 9757            if (string.IsNullOrEmpty(separator)) + 2758            { + 2759                throw new InvalidPluginExecutionException("First parameter of Join function needs to be the separator st + 2760            }  2761 - 31762            foreach (var parameter in parameters) - 12763            { - 12764                text += parameter.Text; - 12765            } - 2766 - 5767            return new ValueExpression(text, text); - 5768        };769770        private static T CheckedCast<T>(object input, string errorMessage, bool failOnError = true) - 147771        { - 147772            var value = input;773 - 147774            if (input is Money) - 0775            { - 0776                value = (input as Money).Value; - 0777            }778 - 147779            if (input is OptionSetValue) - 0780            { - 0781                value = (input as OptionSetValue).Value; - 0782            }783 - 147784            if (!(value is T)) - 6785            { - 6786                if (failOnError) - 1787                { - 1788                    throw new InvalidPluginExecutionException(errorMessage);789                } + 9762            var values = parameters[1].Value as List<ValueExpression>; + 2763 + 9764            if (!(values is IEnumerable)) + 2765            { + 2766                throw new InvalidPluginExecutionException("The values parameter needs to be an enumerable, please wrap t + 2767            } + 2768 + 9769            var config = GetConfig(parameters); + 9770            var removeEmptyEntries = false; + 2771 + 9772            if (parameters.Count > 2 && parameters[2].Value is bool) + 5773            { + 5774                removeEmptyEntries = (bool) parameters[2].Value; + 5775            } + 2776 + 9777            var valuesToConcatenate = values + 33778                .Where(v => !removeEmptyEntries || !string.IsNullOrEmpty(v.Text)) + 31779                .Select(v => v.Text); + 2780 + 9781            var joined = string.Join(separator, valuesToConcatenate); + 2782 + 9783            return new ValueExpression(joined, joined); + 9784        };785 + 2786        public static FunctionHandler NewLine = (primary, service, tracing, organizationConfig, parameters) => + 3787        { + 3788            return new ValueExpression(Environment.NewLine, Environment.NewLine); + 3789        };  790 - 5791                return default(T);792            }793 - 141794            return (T)value; - 146795        }796 - 2797        public static FunctionHandler Substring = (primary, service, tracing, organizationConfig, parameters) => - 11798        { - 11799            if (parameters.Count < 2) - 3800            { - 3801                throw new InvalidPluginExecutionException("Substring expects at least two parameters: text, start index  - 2802            } - 2803 - 10804            var text = parameters[0].Text; - 10805            var startIndex = CheckedCast<int>(parameters[1].Value, "Start index parameter must be an int!"); - 9806            var length = -1; - 2807 - 9808            if (parameters.Count > 2) - 8809            { - 8810                length = CheckedCast<int>(parameters[2].Value, "Length parameter must be an int!"); - 8811            } - 2812 - 9813            var subString = length > -1 ? text.Substring(startIndex, length) : text.Substring(startIndex); - 9814            return new ValueExpression(subString, subString); - 9815        }; + 2791        public static FunctionHandler Concat = (primary, service, tracing, organizationConfig, parameters) => + 5792        { + 5793            var text = ""; + 2794 + 31795            foreach (var parameter in parameters) + 12796            { + 12797                text += parameter.Text; + 12798            } + 2799 + 5800            return new ValueExpression(text, text); + 5801        };802803        private static T CheckedCast<T>(object input, string errorMessage, bool failOnError = true) + 156804        { + 156805            var value = input;806 + 156807            if (input is Money) + 0808            { + 0809                value = (input as Money).Value; + 0810            }811 + 156812            if (input is OptionSetValue) + 0813            { + 0814                value = (input as OptionSetValue).Value; + 0815            }  816 - 2817        public static FunctionHandler IndexOf = (primary, service, tracing, organizationConfig, parameters) => - 4818        { - 4819            if (parameters.Count < 2) - 3820            { - 3821                throw new InvalidPluginExecutionException("Substring expects at least two parameters: searchText and sea - 2822            } - 2823 - 3824            var text = parameters[0].Text; - 3825            var searchExpression = parameters[1].Text; - 2826 - 3827            var index = text.IndexOf(searchExpression); - 3828            return new ValueExpression($"{index}", index); - 3829        };830 - 2831        public static FunctionHandler Replace = (primary, service, tracing, organizationConfig, parameters) => - 4832        { - 4833            if (parameters.Count < 3) - 3834            { - 3835                throw new InvalidPluginExecutionException("Replace expects three parameters: text input, regex pattern,  - 2836            } - 2837 - 3838            var input = parameters[0].Text; - 3839            var pattern = parameters[1].Text; - 3840            var replacement = parameters[2].Text; - 2841 - 3842            var replaced = Regex.Replace(input, pattern, replacement); - 2843 - 3844            return new ValueExpression(replaced, replaced); - 3845        };846 - 2847        public static FunctionHandler Array = (primary, service, tracing, organizationConfig, parameters) => - 34848        { - 95849            return new ValueExpression(string.Join(", ", parameters.Select(p => p.Text)), parameters); - 34850        };851 - 2852        public static FunctionHandler DateTimeNow = (primary, service, tracing, organizationConfig, parameters) => - 3853        { - 3854            var date = DateTime.Now; - 3855            return new ValueExpression(date.ToString("o", CultureInfo.InvariantCulture), date); - 3856        };857 - 2858        public static FunctionHandler DateTimeUtcNow = (primary, service, tracing, organizationConfig, parameters) => - 5859        { - 5860            var date = DateTime.UtcNow; - 5861            return new ValueExpression(date.ToString("o", CultureInfo.InvariantCulture), date); - 5862        };863 - 2864        public static FunctionHandler Static = (primary, service, tracing, organizationConfig, parameters) => - 8865        { - 8866            if (parameters.Count < 1) - 2867            { - 2868                throw new InvalidOperationException("You have to pass a static value"); - 2869            } - 2870 - 8871            var parameter = parameters[0]; - 8872            return new ValueExpression(parameter.Text, parameter.Value); - 8873        };874 - 2875        public static FunctionHandler DateToString = (primary, service, tracing, organizationConfig, parameters) => - 5876        { - 5877            if (parameters.Count < 1) - 2878            { - 2879                throw new Exception("No date to stringify"); - 2880            } - 2881 - 5882            var date = CheckedCast<DateTime>(parameters[0].Value, "You need to pass a date"); - 5883            var config = GetConfig(parameters); - 5884            var format = config.GetValue<string>("format", "format must be a string!"); - 2885 - 5886            if (!string.IsNullOrEmpty(format)) - 5887            { - 5888                return new ValueExpression(date.ToString(format), date.ToString(format)); - 2889            } - 2890 - 2891            return new ValueExpression(date.ToString(CultureInfo.InvariantCulture), date.ToString(CultureInfo.InvariantC - 5892        };893 - 2894        public static FunctionHandler Format = (primary, service, tracing, organizationConfig, parameters) => - 8895        { - 8896            if (parameters.Count < 2) - 3897            { - 3898                throw new InvalidPluginExecutionException("Format needs a value to format and a config for defining furt - 2899            } - 2900 - 7901            var value = parameters[0].Value; - 7902            var config = GetConfig(parameters); - 7903            var format = config.GetValue<string>("format", "format must be a string!"); - 2904 - 7905            var knownTypes = new Dictionary<Type, Func<object, ValueExpression>> - 7906            { - 12907                { typeof(Money), (obj) => { var val = obj as Money; var formatted = string.Format(CultureInfo.InvariantC - 7908            }; - 2909 - 7910            if(knownTypes.ContainsKey(value.GetType())) - 3911            { - 3912                return knownTypes[value.GetType()](value); - 2913            } - 2914            else - 6915            { - 6916                var formatted = string.Format(CultureInfo.InvariantCulture, format, value); - 6917                return new ValueExpression(formatted, formatted); - 2918            } - 7919        };920921        private static Entity FetchSnippetByUniqueName(string uniqueName, IOrganizationService service) - 6922        { - 6923            var fetch = $@"<fetch no-lock=""true""> - 6924                <entity name=""oss_xtlsnippet""> - 6925                    <attribute name=""oss_xtlexpression"" /> - 6926                    <attribute name=""oss_containsplaintext"" /> - 6927                    <filter operator=""and""> - 6928                        <condition attribute=""oss_uniquename"" operator=""eq"" value=""{uniqueName}"" /> - 6929                    </filter> - 6930                </entity> - 6931            </fetch>";932 - 6933            var snippet = service.RetrieveMultiple(new FetchExpression(fetch)) - 6934                .Entities - 6935                .FirstOrDefault();936 - 6937            return snippet; - 6938        }939940        private static Entity FetchSnippet(string name, string filter, Entity primary, OrganizationConfig organizationCo - 6941        { - 6942            var uniqueNameSnippet = FetchSnippetByUniqueName(name, service);943 - 6944            if (uniqueNameSnippet != null) - 1945            { - 1946                tracing.Trace("Found snippet by unique name"); - 1947                return uniqueNameSnippet;948            }949 - 5950            if (!string.IsNullOrEmpty(filter)) - 3951            { - 3952                tracing.Trace("Processing tokens in custom snippet filter"); - 3953            }954 - 5955            var fetch = $@"<fetch no-lock=""true""> - 5956                <entity name=""oss_xtlsnippet""> - 5957                    <attribute name=""oss_xtlexpression"" /> - 5958                    <attribute name=""oss_containsplaintext"" /> - 5959                    <filter operator=""and""> - 5960                        <condition attribute=""oss_name"" operator=""eq"" value=""{name}"" /> - 5961                        { (!string.IsNullOrEmpty(filter) ? TokenMatcher.ProcessTokens(filter, primary, organizationConfi - 5962                    </filter> - 5963                </entity> - 5964            </fetch>";965 - 5966            if (!string.IsNullOrEmpty(filter)) - 3967            { - 3968                tracing.Trace("Done processing tokens in custom snippet filter"); - 3969            }970 - 5971            var snippet = service.RetrieveMultiple(new FetchExpression(fetch)) - 5972                .Entities - 5973                .FirstOrDefault();974 - 5975            return snippet; - 6976        }977 - 2978        public static FunctionHandler Snippet = (primary, service, tracing, organizationConfig, parameters) => - 9979        { - 9980            if (parameters.Count < 1) - 3981            { - 3982                throw new InvalidPluginExecutionException("Snippet needs at least a name as first parameter and optional - 2983            } - 2984 - 8985            var name = CheckedCast<string>(parameters[0].Value, "Name must be a string!"); - 8986            var config = GetConfig(parameters); - 2987 - 8988            var filter = config?.GetValue<string>("filter", "filter must be a string containing your fetchXml filter, wh - 2989 - 8990            var snippet = FetchSnippet(name, filter, primary, organizationConfig, service, tracing); - 2991 - 8992            if (snippet == null) - 2993            { - 2994                tracing.Trace("Failed to find a snippet matching the input"); - 2995                return new ValueExpression(string.Empty, null); - 2996            } - 2997 - 8998            var containsPlainText = snippet.GetAttributeValue<bool>("oss_containsplaintext"); - 8999            var value = snippet.GetAttributeValue<string>("oss_xtlexpression"); - 21000 - 21001            // Wrap it in ${{ ... }} block - 81002            var processedValue = containsPlainText ? value : $"${{{{ {value} }}}}"; - 21003 - 81004            tracing.Trace("Processing snippet tokens"); - 21005 - 81006            var result = TokenMatcher.ProcessTokens(processedValue, primary, organizationConfig, service, tracing); - 21007 - 81008            tracing.Trace("Done processing snippet tokens"); - 21009 - 81010            return new ValueExpression(result, result); - 81011        };1012 - 21013        public static FunctionHandler ConvertDateTime = (primary, service, tracing, organizationConfig, parameters) => - 71014        { - 71015            if (parameters.Count < 2) - 21016            { - 21017                throw new InvalidPluginExecutionException("Convert DateTime needs a DateTime and a config for defining f - 21018            } - 21019 - 71020            var date = CheckedCast<DateTime>(parameters[0].Value, "You need to pass a date"); - 71021            var config = GetConfig(parameters); - 21022 - 71023            var timeZoneId = config.GetValue<string>("timeZoneId", "timeZoneId must be a string"); - 71024            var userId = config.GetValue<EntityReference>("userId", "userId must be an EntityReference"); - 21025 - 71026            if (userId == null && string.IsNullOrEmpty(timeZoneId)) - 21027            { - 21028                throw new InvalidPluginExecutionException("You need to either set a userId for converting to a user's co - 21029            } - 21030 - 71031            if (userId != null) - 51032            { - 51033                var userSettings = service.Retrieve("usersettings", userId.Id, new ColumnSet("timezonecode")); - 51034                var timeZoneCode = userSettings.GetAttributeValue<int>("timezonecode"); - 21035 - 51036                timeZoneId = service.Query("timezonedefinition") - 51037                    .IncludeColumns("standardname") - 81038                    .Where(e => e - 111039                        .Attribute(a => a - 111040                            .Named("timezonecode") - 111041                            .Is(ConditionOperator.Equal) - 111042                            .To(timeZoneCode) - 81043                        ) - 51044                    ) - 51045                    .Retrieve() - 51046                    .FirstOrDefault() - 51047                    ?.GetAttributeValue<string>("standardname"); - 51048            } - 21049 - 71050            if (string.IsNullOrEmpty(timeZoneId)) - 21051            { - 21052                throw new InvalidPluginExecutionException("Failed to retrieve timeZoneId, can't convert datetime"); - 21053            } - 21054 - 71055            var timeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId); - 71056            var localTime = TimeZoneInfo.ConvertTime(date, timeZone); - 71057            var text = localTime.ToString(config.GetValue<string>("format", "format must be a string", "g"), CultureInfo - 21058 - 71059            return new ValueExpression(text, localTime); - 71060        };1061    }1062}1063#pragma warning restore S1104 // Fields should not have public accessibility + 156817            if (!(value is T)) + 6818            { + 6819                if (failOnError) + 1820                { + 1821                    throw new InvalidPluginExecutionException(errorMessage);822                }823 + 5824                return default(T);825            }826 + 150827            return (T)value; + 155828        }829 + 2830        public static FunctionHandler Substring = (primary, service, tracing, organizationConfig, parameters) => + 11831        { + 11832            if (parameters.Count < 2) + 3833            { + 3834                throw new InvalidPluginExecutionException("Substring expects at least two parameters: text, start index  + 2835            } + 2836 + 10837            var text = parameters[0].Text; + 10838            var startIndex = CheckedCast<int>(parameters[1].Value, "Start index parameter must be an int!"); + 9839            var length = -1; + 2840 + 9841            if (parameters.Count > 2) + 8842            { + 8843                length = CheckedCast<int>(parameters[2].Value, "Length parameter must be an int!"); + 8844            } + 2845 + 9846            var subString = length > -1 ? text.Substring(startIndex, length) : text.Substring(startIndex); + 9847            return new ValueExpression(subString, subString); + 9848        };849 + 2850        public static FunctionHandler IndexOf = (primary, service, tracing, organizationConfig, parameters) => + 4851        { + 4852            if (parameters.Count < 2) + 3853            { + 3854                throw new InvalidPluginExecutionException("IndexOf needs a source string and a string to search for"); + 2855            } + 2856 + 3857            var value = CheckedCast<string>(parameters[0].Value, "Source must be a string"); + 3858            var searchText = CheckedCast<string>(parameters[1].Value, "Search text must be a string"); + 2859 + 3860            var config = GetConfig(parameters); + 3861            var ignoreCase = config.GetValue<bool>("ignoreCase", "ignoreCase must be a boolean!"); + 2862 + 3863            var index = value.IndexOf(searchText, ignoreCase ? StringComparison.InvariantCultureIgnoreCase : StringCompa + 2864 + 3865            return new ValueExpression(index.ToString(), index); + 3866        };867 + 2868        public static FunctionHandler Replace = (primary, service, tracing, organizationConfig, parameters) => + 4869        { + 4870            if (parameters.Count < 3) + 3871            { + 3872                throw new InvalidPluginExecutionException("Replace expects three parameters: text input, regex pattern,  + 2873            } + 2874 + 3875            var input = parameters[0].Text; + 3876            var pattern = parameters[1].Text; + 3877            var replacement = parameters[2].Text; + 2878 + 3879            var replaced = Regex.Replace(input, pattern, replacement); + 2880 + 3881            return new ValueExpression(replaced, replaced); + 3882        };883 + 2884        public static FunctionHandler Array = (primary, service, tracing, organizationConfig, parameters) => + 34885        { + 95886            return new ValueExpression(string.Join(", ", parameters.Select(p => p.Text)), parameters); + 34887        };888 + 2889        public static FunctionHandler DateTimeNow = (primary, service, tracing, organizationConfig, parameters) => + 3890        { + 3891            var date = DateTime.Now; + 3892            return new ValueExpression(date.ToString("o", CultureInfo.InvariantCulture), date); + 3893        };894 + 2895        public static FunctionHandler DateTimeUtcNow = (primary, service, tracing, organizationConfig, parameters) => + 5896        { + 5897            var date = DateTime.UtcNow; + 5898            return new ValueExpression(date.ToString("o", CultureInfo.InvariantCulture), date); + 5899        };900 + 2901        public static FunctionHandler Static = (primary, service, tracing, organizationConfig, parameters) => + 8902        { + 8903            if (parameters.Count < 1) + 2904            { + 2905                throw new InvalidOperationException("You have to pass a static value"); + 2906            } + 2907 + 8908            var parameter = parameters[0]; + 8909            return new ValueExpression(parameter.Text, parameter.Value); + 8910        };911 + 2912        public static FunctionHandler DateToString = (primary, service, tracing, organizationConfig, parameters) => + 5913        { + 5914            if (parameters.Count < 1) + 2915            { + 2916                throw new Exception("No date to stringify"); + 2917            } + 2918 + 5919            var date = CheckedCast<DateTime>(parameters[0].Value, "You need to pass a date"); + 5920            var config = GetConfig(parameters); + 5921            var format = config.GetValue<string>("format", "format must be a string!"); + 2922 + 5923            if (!string.IsNullOrEmpty(format)) + 5924            { + 5925                return new ValueExpression(date.ToString(format), date.ToString(format)); + 2926            } + 2927 + 2928            return new ValueExpression(date.ToString(CultureInfo.InvariantCulture), date.ToString(CultureInfo.InvariantC + 5929        };930 + 2931        public static FunctionHandler Format = (primary, service, tracing, organizationConfig, parameters) => + 8932        { + 8933            if (parameters.Count < 2) + 3934            { + 3935                throw new InvalidPluginExecutionException("Format needs a value to format and a config for defining furt + 2936            } + 2937 + 7938            var value = parameters[0].Value; + 7939            var config = GetConfig(parameters); + 7940            var format = config.GetValue<string>("format", "format must be a string!"); + 2941 + 7942            var knownTypes = new Dictionary<Type, Func<object, ValueExpression>> + 7943            { + 12944                { typeof(Money), (obj) => { var val = obj as Money; var formatted = string.Format(CultureInfo.InvariantC + 7945            }; + 2946 + 7947            if(knownTypes.ContainsKey(value.GetType())) + 3948            { + 3949                return knownTypes[value.GetType()](value); + 2950            } + 2951            else + 6952            { + 6953                var formatted = string.Format(CultureInfo.InvariantCulture, format, value); + 6954                return new ValueExpression(formatted, formatted); + 2955            } + 7956        };957958        private static Entity FetchSnippetByUniqueName(string uniqueName, IOrganizationService service) + 6959        { + 6960            var fetch = $@"<fetch no-lock=""true""> + 6961                <entity name=""oss_xtlsnippet""> + 6962                    <attribute name=""oss_xtlexpression"" /> + 6963                    <attribute name=""oss_containsplaintext"" /> + 6964                    <filter operator=""and""> + 6965                        <condition attribute=""oss_uniquename"" operator=""eq"" value=""{uniqueName}"" /> + 6966                    </filter> + 6967                </entity> + 6968            </fetch>";969 + 6970            var snippet = service.RetrieveMultiple(new FetchExpression(fetch)) + 6971                .Entities + 6972                .FirstOrDefault();973 + 6974            return snippet; + 6975        }976977        private static Entity FetchSnippet(string name, string filter, Entity primary, OrganizationConfig organizationCo + 6978        { + 6979            var uniqueNameSnippet = FetchSnippetByUniqueName(name, service);980 + 6981            if (uniqueNameSnippet != null) + 1982            { + 1983                tracing.Trace("Found snippet by unique name"); + 1984                return uniqueNameSnippet;985            }986 + 5987            if (!string.IsNullOrEmpty(filter)) + 3988            { + 3989                tracing.Trace("Processing tokens in custom snippet filter"); + 3990            }991 + 5992            var fetch = $@"<fetch no-lock=""true""> + 5993                <entity name=""oss_xtlsnippet""> + 5994                    <attribute name=""oss_xtlexpression"" /> + 5995                    <attribute name=""oss_containsplaintext"" /> + 5996                    <filter operator=""and""> + 5997                        <condition attribute=""oss_name"" operator=""eq"" value=""{name}"" /> + 5998                        { (!string.IsNullOrEmpty(filter) ? TokenMatcher.ProcessTokens(filter, primary, organizationConfi + 5999                    </filter> + 51000                </entity> + 51001            </fetch>";1002 + 51003            if (!string.IsNullOrEmpty(filter)) + 31004            { + 31005                tracing.Trace("Done processing tokens in custom snippet filter"); + 31006            }1007 + 51008            var snippet = service.RetrieveMultiple(new FetchExpression(fetch)) + 51009                .Entities + 51010                .FirstOrDefault();1011 + 51012            return snippet; + 61013        }1014 + 21015        public static FunctionHandler Snippet = (primary, service, tracing, organizationConfig, parameters) => + 91016        { + 91017            if (parameters.Count < 1) + 31018            { + 31019                throw new InvalidPluginExecutionException("Snippet needs at least a name as first parameter and optional + 21020            } + 21021 + 81022            var name = CheckedCast<string>(parameters[0].Value, "Name must be a string!"); + 81023            var config = GetConfig(parameters); + 21024 + 81025            var filter = config?.GetValue<string>("filter", "filter must be a string containing your fetchXml filter, wh + 21026 + 81027            var snippet = FetchSnippet(name, filter, primary, organizationConfig, service, tracing); + 21028 + 81029            if (snippet == null) + 21030            { + 21031                tracing.Trace("Failed to find a snippet matching the input"); + 21032                return new ValueExpression(string.Empty, null); + 21033            } + 21034 + 81035            var containsPlainText = snippet.GetAttributeValue<bool>("oss_containsplaintext"); + 81036            var value = snippet.GetAttributeValue<string>("oss_xtlexpression"); + 21037 + 21038            // Wrap it in ${{ ... }} block + 81039            var processedValue = containsPlainText ? value : $"${{{{ {value} }}}}"; + 21040 + 81041            tracing.Trace("Processing snippet tokens"); + 21042 + 81043            var result = TokenMatcher.ProcessTokens(processedValue, primary, organizationConfig, service, tracing); + 21044 + 81045            tracing.Trace("Done processing snippet tokens"); + 21046 + 81047            return new ValueExpression(result, result); + 81048        };1049 + 21050        public static FunctionHandler ConvertDateTime = (primary, service, tracing, organizationConfig, parameters) => + 71051        { + 71052            if (parameters.Count < 2) + 21053            { + 21054                throw new InvalidPluginExecutionException("Convert DateTime needs a DateTime and a config for defining f + 21055            } + 21056 + 71057            var date = CheckedCast<DateTime>(parameters[0].Value, "You need to pass a date"); + 71058            var config = GetConfig(parameters); + 21059 + 71060            var timeZoneId = config.GetValue<string>("timeZoneId", "timeZoneId must be a string"); + 71061            var userId = config.GetValue<EntityReference>("userId", "userId must be an EntityReference"); + 21062 + 71063            if (userId == null && string.IsNullOrEmpty(timeZoneId)) + 21064            { + 21065                throw new InvalidPluginExecutionException("You need to either set a userId for converting to a user's co + 21066            } + 21067 + 71068            if (userId != null) + 51069            { + 51070                var userSettings = service.Retrieve("usersettings", userId.Id, new ColumnSet("timezonecode")); + 51071                var timeZoneCode = userSettings.GetAttributeValue<int>("timezonecode"); + 21072 + 51073                timeZoneId = service.Query("timezonedefinition") + 51074                    .IncludeColumns("standardname") + 81075                    .Where(e => e + 111076                        .Attribute(a => a + 111077                            .Named("timezonecode") + 111078                            .Is(ConditionOperator.Equal) + 111079                            .To(timeZoneCode) + 81080                        ) + 51081                    ) + 51082                    .Retrieve() + 51083                    .FirstOrDefault() + 51084                    ?.GetAttributeValue<string>("standardname"); + 51085            } + 21086 + 71087            if (string.IsNullOrEmpty(timeZoneId)) + 21088            { + 21089                throw new InvalidPluginExecutionException("Failed to retrieve timeZoneId, can't convert datetime"); + 21090            } + 21091 + 71092            var timeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId); + 71093            var localTime = TimeZoneInfo.ConvertTime(date, timeZone); + 71094            var text = localTime.ToString(config.GetValue<string>("format", "format must be a string", "g"), CultureInfo + 21095 + 71096            return new ValueExpression(text, localTime); + 71097        };1098 + 21099        public static FunctionHandler RetrieveAudit = (primary, service, tracing, organizationConfig, parameters) => + 31100        { + 31101            var firstParam = parameters.FirstOrDefault()?.Value; + 31102            var reference = (firstParam as Entity)?.ToEntityReference() ?? firstParam as EntityReference; + 31103            var config = GetConfig(parameters); + 21104 + 31105            if (firstParam != null && reference == null) + 21106            { + 21107                throw new InvalidPluginExecutionException("RetrieveAudit: First Parameter must be an Entity or EntityRef + 21108            } + 21109 + 31110            if (reference == null) + 21111            { + 21112                return new ValueExpression(string.Empty, null); + 21113            } + 21114 + 31115            var field = CheckedCast<string>(parameters[1]?.Value, "RetrieveAudit: fieldName must be a string"); + 21116 + 31117            var request = new RetrieveRecordChangeHistoryRequest + 31118            { + 31119                Target = reference + 31120            }; + 31121            var audit = service.Execute(request) as RetrieveRecordChangeHistoryResponse; + 21122 + 31123            var auditValue = audit.AuditDetailCollection.AuditDetails.Select(d => + 41124            { + 41125                var detail = d as AttributeAuditDetail; + 31126 + 41127                if (detail == null) + 31128                { + 31129                    return null; + 31130                } + 31131 + 41132                var oldValue = detail.OldValue.GetAttributeValue<object>(field); + 31133 + 41134                return Tuple.Create(PropertyStringifier.Stringify(field, detail.OldValue, service, config), oldValue); + 41135            }) + 41136            .FirstOrDefault(t => t != null); + 21137 + 31138            return new ValueExpression(auditValue?.Item1 ?? string.Empty, auditValue?.Item2); + 31139        };1140 + 21141        public static FunctionHandler GetRecordId = (primary, service, tracing, organizationConfig, parameters) => + 91142        { + 91143            var firstParam = parameters.FirstOrDefault()?.Value; + 91144            var reference = (firstParam as Entity)?.ToEntityReference() ?? firstParam as EntityReference; + 91145            var config = GetConfig(parameters); + 21146 + 91147            if (firstParam != null && reference == null) + 21148            { + 21149                throw new InvalidPluginExecutionException("RecordId: First Parameter must be an Entity or EntityReferenc + 21150            } + 21151 + 91152            if (reference == null) + 21153            { + 21154                return new ValueExpression(string.Empty, null); + 21155            } + 21156 + 91157            var textValue = reference.Id.ToString(config.GetValue<string>("format", "format must be a string", "D")); + 21158 + 91159            return new ValueExpression(textValue, reference.Id); + 91160        };1161 + 21162        public static FunctionHandler GetRecordLogicalName = (primary, service, tracing, organizationConfig, parameters) + 41163        { + 41164            var firstParam = parameters.FirstOrDefault()?.Value; + 41165            var reference = (firstParam as Entity)?.ToEntityReference() ?? firstParam as EntityReference; + 21166 + 41167            if (firstParam != null && reference == null) + 21168            { + 21169                throw new InvalidPluginExecutionException("RecordLogicalName: First Parameter must be an Entity or Entit + 21170            } + 21171 + 41172            if (reference == null) + 21173            { + 21174                return new ValueExpression(string.Empty, null); + 21175            } + 21176 + 41177            return new ValueExpression(reference.LogicalName, reference.LogicalName); + 41178        };1179    }1180}1181#pragma warning restore S1104 // Fields should not have public accessibility -

+
diff --git a/reports/Xrm.Oss.XTL.Templating_OrganizationConfig.htm b/reports/Xrm.Oss.XTL.Templating_OrganizationConfig.htm index 12bcea8..8ab4230 100644 --- a/reports/Xrm.Oss.XTL.Templating_OrganizationConfig.htm +++ b/reports/Xrm.Oss.XTL.Templating_OrganizationConfig.htm @@ -31,7 +31,7 @@

Metrics

- +
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
Parse(...)32100%100%3
Parse(...)32100%100%12

File(s)

@@ -79,7 +79,7 @@

 38} - +

Methods/Properties

diff --git a/reports/Xrm.Oss.XTL.Templating_PersistentTracingService.htm b/reports/Xrm.Oss.XTL.Templating_PersistentTracingService.htm index 1beb7ad..abf81dc 100644 --- a/reports/Xrm.Oss.XTL.Templating_PersistentTracingService.htm +++ b/reports/Xrm.Oss.XTL.Templating_PersistentTracingService.htm @@ -30,8 +30,8 @@

Metrics

- - + +
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
.ctor(...)10100%100%1
Trace(...)10100%100%1
.ctor(...)10100%100%2
Trace(...)10100%100%2

File(s)

@@ -76,7 +76,7 @@

 35} -

+

Methods/Properties

diff --git a/reports/Xrm.Oss.XTL.Templating_ProcessingResult.htm b/reports/Xrm.Oss.XTL.Templating_ProcessingResult.htm index 4645007..d56cbed 100644 --- a/reports/Xrm.Oss.XTL.Templating_ProcessingResult.htm +++ b/reports/Xrm.Oss.XTL.Templating_ProcessingResult.htm @@ -58,7 +58,7 @@

 25} -

+

Methods/Properties

diff --git a/reports/Xrm.Oss.XTL.Templating_ProcessorConfig.htm b/reports/Xrm.Oss.XTL.Templating_ProcessorConfig.htm index 6454697..11adf0f 100644 --- a/reports/Xrm.Oss.XTL.Templating_ProcessorConfig.htm +++ b/reports/Xrm.Oss.XTL.Templating_ProcessorConfig.htm @@ -31,7 +31,7 @@

Metrics

- +
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
Parse(...)32100%100%3
Parse(...)32100%100%12

File(s)

@@ -111,7 +111,7 @@

 70} -

+

Methods/Properties

diff --git a/reports/Xrm.Oss.XTL.Templating_PropertyStringifier.htm b/reports/Xrm.Oss.XTL.Templating_PropertyStringifier.htm index daef00a..6eb711a 100644 --- a/reports/Xrm.Oss.XTL.Templating_PropertyStringifier.htm +++ b/reports/Xrm.Oss.XTL.Templating_PropertyStringifier.htm @@ -22,17 +22,17 @@

Summary

Coverable lines:50 Total lines:94 Line coverage:98% (49 of 50) -Covered branches:19 -Total branches:22 -Branch coverage:86.3% (19 of 22) +Covered branches:20 +Total branches:24 +Branch coverage:83.3% (20 of 24)

Metrics

- - + +
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
StringifyProperty(...)12102497.37%85.71%12
Stringify(...)22100%100%2
StringifyProperty(...)12102497.37%85.71%156
Stringify(...)22100%100%6

File(s)

@@ -54,89 +54,89 @@

 12    public static class PropertyStringifier  13    {  14        private static string StringifyProperty(string field, object value, Entity record, IOrganizationService service, - 14115        { - 14116            var entityReference = value as EntityReference; - 14117            var optionSet = value as OptionSetValue; - 14118            var money = value as Money; - 14119            var aliasedValue = value as AliasedValue; + 14815        { + 14816            var entityReference = value as EntityReference; + 14817            var optionSet = value as OptionSetValue; + 14818            var money = value as Money; + 14819            var aliasedValue = value as AliasedValue;  20 - 14121            if (optionSet != null) - 522            { - 523                var textValue = optionSet.Value.ToString(CultureInfo.InvariantCulture); + 14821            if (optionSet != null) + 622            { + 623                var textValue = optionSet.Value.ToString(CultureInfo.InvariantCulture);  24 - 525                if (config == null) + 625                if (config == null)  126                {  127                    return textValue;  28                }  29 - 430                var configLanguage = config.GetValue<int>("optionSetLcid", "optionSetLcid must be an int!"); + 530                var configLanguage = config.GetValue<int>("optionSetLcid", "optionSetLcid must be an int!");  31 - 432                if (configLanguage == 0) + 532                if (configLanguage == 0)  233                {  234                    return textValue;  35                }  36 - 237                var request = new RetrieveAttributeRequest - 238                { - 239                    EntityLogicalName = record.LogicalName, - 240                    RetrieveAsIfPublished = true, - 241                    LogicalName = field - 242                }; + 337                var request = new RetrieveAttributeRequest + 338                { + 339                    EntityLogicalName = record.LogicalName, + 340                    RetrieveAsIfPublished = true, + 341                    LogicalName = field + 342                };  43 - 244                var response = service.Execute(request) as RetrieveAttributeResponse; - 245                var metadata = (PicklistAttributeMetadata)response.AttributeMetadata; + 344                var response = service.Execute(request) as RetrieveAttributeResponse; + 345                var metadata = (EnumAttributeMetadata)response.AttributeMetadata;  46 - 447                var fieldMetadata = metadata.OptionSet.Options.First(f => f.Value == optionSet.Value); + 647                var fieldMetadata = metadata.OptionSet.Options.First(f => f.Value == optionSet.Value);  48 - 449                var label = fieldMetadata.Label.LocalizedLabels.FirstOrDefault(l => l.LanguageCode == configLanguage)?.L + 649                var label = fieldMetadata.Label.LocalizedLabels.FirstOrDefault(l => l.LanguageCode == configLanguage)?.L  50 - 251                if (label != null) - 252                { - 253                    return label; + 351                if (label != null) + 352                { + 353                    return label;  54                }  55  056                return fieldMetadata.Label.UserLocalizedLabel.Label;  57            }  58 - 13659            if (record.FormattedValues.ContainsKey(field)) + 14259            if (record.FormattedValues.ContainsKey(field))  260            {  261                return record.FormattedValues[field];  62            }  63 - 13464            if (entityReference != null) - 965            { - 966                return entityReference.Name ?? entityReference.Id.ToString(); + 14064            if (entityReference != null) + 1265            { + 1266                return entityReference.Name ?? entityReference.Id.ToString();  67            }  68 - 12569            if (money != null) + 12869            if (money != null)  270            {  271                return money.Value.ToString(CultureInfo.InvariantCulture);  72            }  73 - 12374            if (aliasedValue != null) + 12674            if (aliasedValue != null)  175            {  176                return StringifyProperty(field, aliasedValue.Value, record, service, config);  77            }  78 - 12279            return value.ToString(); - 14180        } + 12579            return value.ToString(); + 14880        }  81  82        public static string Stringify(string field, Entity record, IOrganizationService service, ConfigHandler config = - 14183        { - 14184            var value = record.GetAttributeValue<object>(field); + 14883        { + 14884            var value = record.GetAttributeValue<object>(field);  85 - 14186            if (value == null) + 14886            if (value == null)  187            {  188                return null;  89            }  90 - 14091            return StringifyProperty(field, value, record, service, config); - 14192        } + 14791            return StringifyProperty(field, value, record, service, config); + 14892        }  93    }  94} -

+

Methods/Properties

diff --git a/reports/Xrm.Oss.XTL.Templating_TokenMatcher.htm b/reports/Xrm.Oss.XTL.Templating_TokenMatcher.htm index 561764a..23b6fd6 100644 --- a/reports/Xrm.Oss.XTL.Templating_TokenMatcher.htm +++ b/reports/Xrm.Oss.XTL.Templating_TokenMatcher.htm @@ -31,9 +31,9 @@

Metrics

- - - + + +
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
.cctor()10100%100%1
MatchTokens(...)22100%100%2
ProcessTokens(...)10100%100%1
.cctor()10100%100%2
MatchTokens(...)22100%100%6
ProcessTokens(...)10100%100%2

File(s)

@@ -95,7 +95,7 @@

 52} -

+

Methods/Properties

diff --git a/reports/Xrm.Oss.XTL.Templating_ValueExpression.htm b/reports/Xrm.Oss.XTL.Templating_ValueExpression.htm index e61128a..8684377 100644 --- a/reports/Xrm.Oss.XTL.Templating_ValueExpression.htm +++ b/reports/Xrm.Oss.XTL.Templating_ValueExpression.htm @@ -17,11 +17,11 @@

Summary

Class:Xrm.Oss.XTL.Interpreter.ValueExpression Assembly:Xrm.Oss.XTL.Templating File(s):D:\Entwicklung\Xrm-Templating-Language\src\lib\Xrm.Oss.XTL.Interpreter\ValueExpression.cs -Covered lines:21 +Covered lines:18 Uncovered lines:0 -Coverable lines:21 +Coverable lines:18 Total lines:46 -Line coverage:100% (21 of 21) +Line coverage:100% (18 of 18) Covered branches:6 Total branches:8 Branch coverage:75% (6 of 8) @@ -31,9 +31,9 @@

Metrics

- - - + + +
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
.ctor(...)10100%100%1
.ctor(...)10100%100%1
.ctor(...)20100%100%2
.ctor(...)10100%100%2
.ctor(...)10100%100%2
.ctor(...)20100%100%6

File(s)

@@ -55,32 +55,32 @@

 12        public string Text  13        {  14            get - 56115            { - 56116                return _text.Value; - 55517            } + 60115            { + 60116                return _text.Value; + 59517            }  18        }  19  20        public object Value  21        {  22            get - 102023            { - 102024                return _value.Value; - 102025            } + 118023            { + 118024                return _value.Value; + 118025            }  26        }  27 - 79228        public ValueExpression(string text, object value) - 79229        { - 112130            _text = new Lazy<string>(() => text); - 134831            _value = new Lazy<object>(() => value); - 79232        }28        public ValueExpression(string text, object value) + 87929        { + 122730            _text = new Lazy<string>(() => text); + 149031            _value = new Lazy<object>(() => value); + 87932        }  33 - 37934        public ValueExpression(Lazy<ValueExpression> expression) - 37935        { - 58036            _text = new Lazy<string>(() => expression?.Value?.Text); - 54337            _value = new Lazy<object>(() => expression?.Value?.Value); - 37938        }34        public ValueExpression(Lazy<ValueExpression> expression) + 42335        { + 64536            _text = new Lazy<string>(() => expression?.Value?.Text); + 61037            _value = new Lazy<object>(() => expression?.Value?.Value); + 42338        }  39 - 440        public ValueExpression(Func<List<ValueExpression>, ValueExpression> expression, Dictionary<string, ValueExpressi40        public ValueExpression(Func<List<ValueExpression>, ValueExpression> expression, Dictionary<string, ValueExpressi  441        {  442            _text = new Lazy<string>(() => string.Empty);  843            _value = new Lazy<object>(() => expression); @@ -89,15 +89,15 @@

 46} -

+
diff --git a/reports/Xrm.Oss.XTL.Templating_XTLInterpreter.htm b/reports/Xrm.Oss.XTL.Templating_XTLInterpreter.htm index a2de78e..8ea49b1 100644 --- a/reports/Xrm.Oss.XTL.Templating_XTLInterpreter.htm +++ b/reports/Xrm.Oss.XTL.Templating_XTLInterpreter.htm @@ -17,31 +17,31 @@

Summary

Class:Xrm.Oss.XTL.Interpreter.XTLInterpreter Assembly:Xrm.Oss.XTL.Templating File(s):D:\Entwicklung\Xrm-Templating-Language\src\lib\Xrm.Oss.XTL.Interpreter\XTLInterpreter.cs -Covered lines:290 +Covered lines:293 Uncovered lines:4 -Coverable lines:294 -Total lines:440 -Line coverage:98.6% (290 of 294) -Covered branches:117 +Coverable lines:297 +Total lines:443 +Line coverage:98.6% (293 of 297) +Covered branches:118 Total branches:124 -Branch coverage:94.3% (117 of 124) +Branch coverage:95.1% (118 of 124)

Metrics

- - - - - - - - - - - + + + + + + + + + + +
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
.ctor(...)22100%100%2
GetChar(...)48100%100%4
Expected(...)10100%100%1
IsEof()10100%100%1
SkipWhiteSpace()34100%100%3
Match(...)2287.5%100%2.01
GetName()4893.33%100%4
Expression(...)222097152100%100%22
ApplyExpression(...)516100%100%5
Formula(...)25838860897.44%89.36%25.01
Produce()44100%80%4
.ctor(...)22100%100%6
GetChar(...)616100%100%42
Expected(...)10100%100%2
IsEof()10100%100%2
SkipWhiteSpace()34100%100%12
Match(...)2287.5%100%6
GetName()4893.33%100%20
Expression(...)222097152100%100%506
ApplyExpression(...)516100%100%30
Formula(...)24419430497.44%91.11%600
Produce()44100%80%20

File(s)

@@ -60,7 +60,7 @@

 9{  10    public class XTLInterpreter  11    { - 14612        private StringReader _reader = null; + 16212        private StringReader _reader = null;  13        private int _position;  14        private string _input;  15        private char _previous; @@ -73,439 +73,442 @@

 22  23        public delegate ValueExpression FunctionHandler(Entity primary, IOrganizationService service, ITracingService tr  24 - 14625        private Dictionary<string, FunctionHandler> _handlers = new Dictionary<string, FunctionHandler> - 14626        { - 14627            { "And", FunctionHandlers.And }, - 14628            { "Array", FunctionHandlers.Array }, - 14629            { "Concat", FunctionHandlers.Concat }, - 14630            { "ConvertDateTime", FunctionHandlers.ConvertDateTime }, - 14631            { "DateTimeNow", FunctionHandlers.DateTimeNow }, - 14632            { "DateTimeUtcNow", FunctionHandlers.DateTimeUtcNow }, - 14633            { "DateToString", FunctionHandlers.DateToString }, - 14634            { "Fetch", FunctionHandlers.Fetch }, - 14635            { "First", FunctionHandlers.First }, - 14636            { "Format", FunctionHandlers.Format }, - 14637            { "If", FunctionHandlers.If }, - 14638            { "IndexOf", FunctionHandlers.IndexOf }, - 14639            { "IsEqual", FunctionHandlers.IsEqual }, - 14640            { "IsGreater", FunctionHandlers.IsGreater }, - 14641            { "IsGreaterEqual", FunctionHandlers.IsGreaterEqual }, - 14642            { "IsLess", FunctionHandlers.IsLess }, - 14643            { "IsLessEqual", FunctionHandlers.IsLessEqual }, - 14644            { "IsNull", FunctionHandlers.IsNull }, - 14645            { "Join", FunctionHandlers.Join }, - 14646            { "Last", FunctionHandlers.Last}, - 14647            { "Map", FunctionHandlers.Map }, - 14648            { "NewLine", FunctionHandlers.NewLine }, - 14649            { "Not", FunctionHandlers.Not }, - 14650            { "Or", FunctionHandlers.Or }, - 14651            { "OrganizationUrl", FunctionHandlers.GetOrganizationUrl }, - 14652            { "PrimaryRecord", FunctionHandlers.GetPrimaryRecord }, - 14653            { "RecordTable", FunctionHandlers.RenderRecordTable }, - 14654            { "RecordUrl", FunctionHandlers.GetRecordUrl }, - 14655            { "Replace", FunctionHandlers.Replace }, - 14656            { "Snippet", FunctionHandlers.Snippet }, - 14657            { "Sort", FunctionHandlers.Sort }, - 14658            { "Static", FunctionHandlers.Static }, - 14659            { "Substring", FunctionHandlers.Substring }, - 14660            { "Union", FunctionHandlers.Union }, - 14661            { "Value", FunctionHandlers.GetValue } - 14662        };63 - 14664        public XTLInterpreter(string input, Entity primary, OrganizationConfig organizationConfig, IOrganizationService  - 14665        { - 14666            _primary = primary; - 14667            _service = service; - 14668            _tracing = tracing; - 14669            _organizationConfig = organizationConfig; - 14670            _input = input; - 14671            _position = 0;72 - 14673            _reader = new StringReader(input ?? string.Empty); - 14674            GetChar(); - 14675            SkipWhiteSpace(); - 14676        }7778        /// <summary>79        /// Reads the next character and sets it as current. Old current char becomes previous.80        /// </summary>81        /// <returns>True if read succeeded, false if end of input</returns>82        private void GetChar(int? index = null) - 1245883        { - 1245884            if (index != null) - 1485            {86                // Initialize a new reader to move back to the beginning - 1487                _reader = new StringReader(_input); - 1488                _position = index.Value;8990                // Skip to searched index - 430691                for (var i = 0; i < index; i++) - 213992                { - 213993                    _reader.Read(); - 213994                } - 1495            }96 - 1245897            _previous = _current; - 1245898            var character = _reader.Read(); - 1245899            _current = (char)character;100 - 12458101            if (character != -1) - 12314102            { - 12314103                _position++; - 12314104            } - 12458105        }106107        private void Expected(string expected) - 3108        { - 3109            throw new InvalidPluginExecutionException($"{expected} expected after '{_previous}' at position {_position},110        }111112        private bool IsEof() - 10902113        { - 10902114            return _current == '\uffff'; - 10902115        }116117        private void SkipWhiteSpace() - 3795118        { - 5463119            while(char.IsWhiteSpace(_current) && !IsEof()) { - 834120                GetChar(); - 834121            } - 3795122        }123124        private void Match (char c) - 950125        { - 950126            if (_current != c) - 2127            { - 2128                Expected(c.ToString(CultureInfo.InvariantCulture)); - 0129            }130 - 948131            GetChar(); - 948132            SkipWhiteSpace(); - 948133        }134135        private string GetName() - 467136        { - 467137            SkipWhiteSpace();138 - 468139            if (!char.IsLetter(_current)) { - 1140                Expected($"Identifier"); - 0141            }142 - 466143            var name = string.Empty;144 - 6602145            while (char.IsLetterOrDigit(_current) && !IsEof()) { - 3068146                name += _current; - 3068147                GetChar(); - 3068148            }149 - 466150            SkipWhiteSpace(); - 466151            return name; - 466152        }153154        private List<ValueExpression> Expression(char[] terminators, Dictionary<string, ValueExpression> formulaArgs) - 404155        { - 404156            var returnValue = new List<ValueExpression>();157158            do - 858159            { - 1085160                if (_current == ',') { - 227161                    GetChar(); - 227162                } - 631163                else if (_current == '"' || _current == '\'') - 288164                { - 288165                    var delimiter = _current; - 288166                    var stringConstant = string.Empty;167168                    // Skip opening quote - 288169                    GetChar(); + 16225        private Dictionary<string, FunctionHandler> _handlers = new Dictionary<string, FunctionHandler> + 16226        { + 16227            { "And", FunctionHandlers.And }, + 16228            { "Array", FunctionHandlers.Array }, + 16229            { "Concat", FunctionHandlers.Concat }, + 16230            { "ConvertDateTime", FunctionHandlers.ConvertDateTime }, + 16231            { "DateTimeNow", FunctionHandlers.DateTimeNow }, + 16232            { "DateTimeUtcNow", FunctionHandlers.DateTimeUtcNow }, + 16233            { "DateToString", FunctionHandlers.DateToString }, + 16234            { "Fetch", FunctionHandlers.Fetch }, + 16235            { "First", FunctionHandlers.First }, + 16236            { "Format", FunctionHandlers.Format }, + 16237            { "If", FunctionHandlers.If }, + 16238            { "IndexOf", FunctionHandlers.IndexOf }, + 16239            { "IsEqual", FunctionHandlers.IsEqual }, + 16240            { "IsGreater", FunctionHandlers.IsGreater }, + 16241            { "IsGreaterEqual", FunctionHandlers.IsGreaterEqual }, + 16242            { "IsLess", FunctionHandlers.IsLess }, + 16243            { "IsLessEqual", FunctionHandlers.IsLessEqual }, + 16244            { "IsNull", FunctionHandlers.IsNull }, + 16245            { "Join", FunctionHandlers.Join }, + 16246            { "Last", FunctionHandlers.Last}, + 16247            { "Map", FunctionHandlers.Map }, + 16248            { "NewLine", FunctionHandlers.NewLine }, + 16249            { "Not", FunctionHandlers.Not }, + 16250            { "Or", FunctionHandlers.Or }, + 16251            { "OrganizationUrl", FunctionHandlers.GetOrganizationUrl }, + 16252            { "PrimaryRecord", FunctionHandlers.GetPrimaryRecord }, + 16253            { "RecordId", FunctionHandlers.GetRecordId }, + 16254            { "RecordLogicalName", FunctionHandlers.GetRecordLogicalName }, + 16255            { "RecordTable", FunctionHandlers.RenderRecordTable }, + 16256            { "RecordUrl", FunctionHandlers.GetRecordUrl }, + 16257            { "Replace", FunctionHandlers.Replace }, + 16258            { "RetrieveAudit", FunctionHandlers.RetrieveAudit }, + 16259            { "Snippet", FunctionHandlers.Snippet }, + 16260            { "Sort", FunctionHandlers.Sort }, + 16261            { "Static", FunctionHandlers.Static }, + 16262            { "Substring", FunctionHandlers.Substring }, + 16263            { "Union", FunctionHandlers.Union }, + 16264            { "Value", FunctionHandlers.GetValue } + 16265        };66 + 16267        public XTLInterpreter(string input, Entity primary, OrganizationConfig organizationConfig, IOrganizationService  + 16268        { + 16269            _primary = primary; + 16270            _service = service; + 16271            _tracing = tracing; + 16272            _organizationConfig = organizationConfig; + 16273            _input = input; + 16274            _position = 0;75 + 16276            _reader = new StringReader(input ?? string.Empty); + 16277            GetChar(); + 16278            SkipWhiteSpace(); + 16279        }8081        /// <summary>82        /// Reads the next character and sets it as current. Old current char becomes previous.83        /// </summary>84        /// <returns>True if read succeeded, false if end of input</returns>85        private void GetChar(int? index = null) + 1336986        { + 1336987            if (index != null) + 1488            {89                // Initialize a new reader to move back to the beginning + 1490                _reader = new StringReader(_input); + 1491                _position = index.Value;9293                // Skip to searched index + 430694                for (var i = 0; i < index; i++) + 213995                { + 213996                    _reader.Read(); + 213997                } + 1498            }99 + 13369100            _previous = _current; + 13369101            var character = _reader.Read(); + 13369102            _current = (char)character;103 + 13369104            if (character != -1) + 13209105            { + 13209106                _position++; + 13209107            } + 13369108        }109110        private void Expected(string expected) + 3111        { + 3112            throw new InvalidPluginExecutionException($"{expected} expected after '{_previous}' at position {_position},113        }114115        private bool IsEof() + 11701116        { + 11701117            return _current == '\uffff'; + 11701118        }119120        private void SkipWhiteSpace() + 4168121        { + 6020122            while(char.IsWhiteSpace(_current) && !IsEof()) { + 926123                GetChar(); + 926124            } + 4168125        }126127        private void Match (char c) + 1029128        { + 1029129            if (_current != c) + 2130            { + 2131                Expected(c.ToString(CultureInfo.InvariantCulture)); + 0132            }133 + 1027134            GetChar(); + 1027135            SkipWhiteSpace(); + 1027136        }137138        private string GetName() + 523139        { + 523140            SkipWhiteSpace();141 + 524142            if (!char.IsLetter(_current)) { + 1143                Expected($"Identifier"); + 0144            }145 + 522146            var name = string.Empty;147 + 7386148            while (char.IsLetterOrDigit(_current) && !IsEof()) { + 3432149                name += _current; + 3432150                GetChar(); + 3432151            }152 + 522153            SkipWhiteSpace(); + 522154            return name; + 522155        }156157        private List<ValueExpression> Expression(char[] terminators, Dictionary<string, ValueExpression> formulaArgs) + 443158        { + 443159            var returnValue = new List<ValueExpression>();160161            do + 963162            { + 1223163                if (_current == ',') { + 260164                    GetChar(); + 260165                } + 703166                else if (_current == '"' || _current == '\'') + 313167                { + 313168                    var delimiter = _current; + 313169                    var stringConstant = string.Empty;  170171                    // Allow to escape quotes by backslashes - 6747172                    while ((_current != delimiter || _previous == '\\') && !IsEof()) - 6459173                    { - 6459174                        stringConstant += _current; - 6459175                        GetChar(); - 6459176                    }177178                    // Skip closing quote - 288179                    GetChar(); - 288180                    returnValue.Add(new ValueExpression(stringConstant, stringConstant)); - 288181                } - 343182                else if (char.IsDigit(_current) || _current == '-') - 68183                { - 68184                    var digit = 0; - 68185                    var fractionalPart = 0; - 68186                    var processingFractionalPart = false;187188                    // Multiply by -1 for negative numbers - 68189                    var multiplicator = 1;171                    // Skip opening quote + 313172                    GetChar();173174                    // Allow to escape quotes by backslashes + 7049175                    while ((_current != delimiter || _previous == '\\') && !IsEof()) + 6736176                    { + 6736177                        stringConstant += _current; + 6736178                        GetChar(); + 6736179                    }180181                    // Skip closing quote + 313182                    GetChar(); + 313183                    returnValue.Add(new ValueExpression(stringConstant, stringConstant)); + 313184                } + 390185                else if (char.IsDigit(_current) || _current == '-') + 68186                { + 68187                    var digit = 0; + 68188                    var fractionalPart = 0; + 68189                    var processingFractionalPart = false;  190191                    do - 153192                    { - 153193                        if (_current == '-') - 3194                        { - 3195                            multiplicator = -1; - 3196                        } - 150197                        else if (_current != '.') - 121198                        { - 121199                            if (processingFractionalPart) - 34200                            { - 34201                                fractionalPart = fractionalPart * 10 + int.Parse(_current.ToString(CultureInfo.Invariant - 34202                            }203                            else - 87204                            { - 87205                                digit = digit * 10 + int.Parse(_current.ToString(CultureInfo.InvariantCulture)); - 87206                            } - 121207                        }208                        else - 29209                        { - 29210                            processingFractionalPart = true; - 29211                        }212 - 153213                        GetChar(); - 306214                    } while ((char.IsDigit(_current) || _current == '.') && !IsEof());191                    // Multiply by -1 for negative numbers + 68192                    var multiplicator = 1;193194                    do + 153195                    { + 153196                        if (_current == '-') + 3197                        { + 3198                            multiplicator = -1; + 3199                        } + 150200                        else if (_current != '.') + 121201                        { + 121202                            if (processingFractionalPart) + 34203                            { + 34204                                fractionalPart = fractionalPart * 10 + int.Parse(_current.ToString(CultureInfo.Invariant + 34205                            }206                            else + 87207                            { + 87208                                digit = digit * 10 + int.Parse(_current.ToString(CultureInfo.InvariantCulture)); + 87209                            } + 121210                        }211                        else + 29212                        { + 29213                            processingFractionalPart = true; + 29214                        }  215 - 68216                    switch(_current)217                    {218                        case 'd': - 15219                            double doubleValue = multiplicator * (digit + fractionalPart / Math.Pow(10, (fractionalPart. - 15220                            returnValue.Add(new ValueExpression(doubleValue.ToString(CultureInfo.InvariantCulture), doub - 15221                            GetChar(); - 15222                            break;223                        case 'm': - 15224                            decimal decimalValue = multiplicator * (digit + fractionalPart / (decimal) Math.Pow(10, (fra - 15225                            returnValue.Add(new ValueExpression(decimalValue.ToString(CultureInfo.InvariantCulture), dec - 15226                            GetChar(); - 15227                            break;228                        default: - 38229                            if (processingFractionalPart) - 1230                            { - 1231                                throw new InvalidDataException("For defining numbers with fractional parts, please appen232                            } - 37233                            var value = digit * multiplicator;234 - 37235                            returnValue.Add(new ValueExpression(value.ToString(CultureInfo.InvariantCulture), value)); - 37236                            break;237                    }238 - 67239                } - 275240                else if (terminators.Contains(_current)) - 12241                {242                    // Parameterless function or empty array encountered - 12243                }244                // The first char of a function must not be a digit245                else - 263246                { - 263247                    var value = Formula(formulaArgs);248 - 262249                    if (value != null) - 258250                    { - 258251                        returnValue.Add(value); - 258252                    } - 262253                }254 - 856255                SkipWhiteSpace(); - 1712256            } while (!terminators.Contains(_current) && !IsEof()); + 153216                        GetChar(); + 306217                    } while ((char.IsDigit(_current) || _current == '.') && !IsEof());218 + 68219                    switch(_current)220                    {221                        case 'd': + 15222                            double doubleValue = multiplicator * (digit + fractionalPart / Math.Pow(10, (fractionalPart. + 15223                            returnValue.Add(new ValueExpression(doubleValue.ToString(CultureInfo.InvariantCulture), doub + 15224                            GetChar(); + 15225                            break;226                        case 'm': + 15227                            decimal decimalValue = multiplicator * (digit + fractionalPart / (decimal) Math.Pow(10, (fra + 15228                            returnValue.Add(new ValueExpression(decimalValue.ToString(CultureInfo.InvariantCulture), dec + 15229                            GetChar(); + 15230                            break;231                        default: + 38232                            if (processingFractionalPart) + 1233                            { + 1234                                throw new InvalidDataException("For defining numbers with fractional parts, please appen235                            } + 37236                            var value = digit * multiplicator;237 + 37238                            returnValue.Add(new ValueExpression(value.ToString(CultureInfo.InvariantCulture), value)); + 37239                            break;240                    }241 + 67242                } + 322243                else if (terminators.Contains(_current)) + 19244                {245                    // Parameterless function or empty array encountered + 19246                }247                // The first char of a function must not be a digit248                else + 303249                { + 303250                    var value = Formula(formulaArgs);251 + 302252                    if (value != null) + 298253                    { + 298254                        returnValue.Add(value); + 298255                    } + 302256                }  257 - 402258            return returnValue; - 402259        } + 961258                SkipWhiteSpace(); + 1922259            } while (!terminators.Contains(_current) && !IsEof());  260261        private ValueExpression ApplyExpression (string name, List<ValueExpression> parameters, Dictionary<string, Value - 347262        { - 348263            if (!_handlers.ContainsKey(name)) { - 1264                throw new InvalidPluginExecutionException($"Function {name} is not known!");265            }266267            // In this case we're only stepping through in the initial interpreting of the lambda - 381268            if (formulaArgs != null && formulaArgs.Any(a => a.Value == null)) - 11269            { - 11270                return new ValueExpression(null);271            }272 - 335273            var lazyExecution = new Lazy<ValueExpression>(() => - 661274            { - 661275                _tracing.Trace($"Processing handler {name}"); - 661276                var result = _handlers[name](_primary, _service, _tracing, _organizationConfig, parameters); - 655277                _tracing.Trace($"Successfully processed handler {name}"); - 335278 - 655279                return result; - 655280            });281 - 335282            return new ValueExpression(lazyExecution); - 346283        } + 441261            return returnValue; + 441262        }263264        private ValueExpression ApplyExpression (string name, List<ValueExpression> parameters, Dictionary<string, Value + 385265        { + 386266            if (!_handlers.ContainsKey(name)) { + 1267                throw new InvalidPluginExecutionException($"Function {name} is not known!");268            }269270            // In this case we're only stepping through in the initial interpreting of the lambda + 419271            if (formulaArgs != null && formulaArgs.Any(a => a.Value == null)) + 11272            { + 11273                return new ValueExpression(null);274            }275 + 373276            var lazyExecution = new Lazy<ValueExpression>(() => + 737277            { + 737278                _tracing.Trace($"Processing handler {name}"); + 737279                var result = _handlers[name](_primary, _service, _tracing, _organizationConfig, parameters); + 731280                _tracing.Trace($"Successfully processed handler {name}"); + 373281 + 731282                return result; + 731283            });  284285        private ValueExpression Formula(Dictionary<string, ValueExpression> args) - 507286        { - 507287            SkipWhiteSpace();288 - 526289            if (_current == '[') { - 19290                Match('['); - 19291                var arrayParameters = Expression(new[] { ']' }, args); - 19292                Match(']');293 - 19294                return ApplyExpression("Array", arrayParameters);295            } - 488296            else if(_current == '(') - 4297            {298                // Match arrow functions in style of (param) => Convert(param) - 4299                Match('(');300 - 4301                var variableNames = new List<string>();302303                do - 7304                { - 7305                    SkipWhiteSpace(); - 7306                    variableNames.Add(GetName()); - 7307                    SkipWhiteSpace();308 - 7309                    if (_current == ',') - 3310                    { - 3311                        GetChar(); - 3312                    } - 14313                } while (_current != ')');314315                // Initialize variables as null - 18316                var formulaArgs = variableNames.ToDictionary(n => n, v => (ValueExpression) null); - 4317                Match(')');318 - 4319                var usedReservedWords = variableNames - 11320                    .Where(n => new List<string> { "true", "false", "null" }.Concat(_handlers.Keys).Contains(n)) - 4321                    .ToList();322 - 4323                if (usedReservedWords.Count > 0) - 0324                { - 0325                    throw new InvalidPluginExecutionException($"Your variable names {string.Join(", ", usedReservedWords326                }327 - 4328                SkipWhiteSpace(); - 4329                Match('='); - 4330                Match('>'); + 373285            return new ValueExpression(lazyExecution); + 384286        }287288        private ValueExpression Formula(Dictionary<string, ValueExpression> args) + 564289        { + 564290            SkipWhiteSpace();291 + 583292            if (_current == '[') { + 19293                Match('['); + 19294                var arrayParameters = Expression(new[] { ']' }, args); + 19295                Match(']');296 + 19297                return ApplyExpression("Array", arrayParameters);298            } + 545299            else if(_current == '(') + 4300            {301                // Match arrow functions in style of (param) => Convert(param) + 4302                Match('(');303 + 4304                var variableNames = new List<string>();305306                do + 7307                { + 7308                    SkipWhiteSpace(); + 7309                    variableNames.Add(GetName()); + 7310                    SkipWhiteSpace();311 + 7312                    if (_current == ',') + 3313                    { + 3314                        GetChar(); + 3315                    } + 14316                } while (_current != ')');317318                // Initialize variables as null + 18319                var formulaArgs = variableNames.ToDictionary(n => n, v => (ValueExpression) null); + 4320                Match(')');321 + 4322                var usedReservedWords = variableNames + 11323                    .Where(n => new List<string> { "true", "false", "null" }.Concat(_handlers.Keys).Contains(n)) + 4324                    .ToList();325 + 4326                if (usedReservedWords.Count > 0) + 0327                { + 0328                    throw new InvalidPluginExecutionException($"Your variable names {string.Join(", ", usedReservedWords329                }330  4331                SkipWhiteSpace();332 - 4333                var lambdaPosition = this._position - 1;334 - 4335                var lazyExecution = new Func<List<ValueExpression>, ValueExpression>((lambdaArgs) => - 11336                { - 11337                    var currentIndex = this._position; - 11338                    GetChar(lambdaPosition); - 4339 - 11340                    var arguments = formulaArgs.ToList(); - 48341                    for (var i = 0; i < lambdaArgs.Count; i++) { - 14342                        if (i < formulaArgs.Count) - 14343                        { - 14344                            var parameterName = arguments[i].Key; - 14345                            formulaArgs[parameterName] = lambdaArgs[i]; - 14346                        } - 14347                    } - 4348 - 11349                    var result = Formula(formulaArgs); - 11350                    GetChar(currentIndex - 1); + 4332                Match('='); + 4333                Match('>'); + 4334                SkipWhiteSpace();335 + 4336                var lambdaPosition = this._position - 1;337 + 4338                var lazyExecution = new Func<List<ValueExpression>, ValueExpression>((lambdaArgs) => + 11339                { + 11340                    var currentIndex = this._position; + 11341                    GetChar(lambdaPosition); + 4342 + 11343                    var arguments = formulaArgs.ToList(); + 48344                    for (var i = 0; i < lambdaArgs.Count; i++) { + 14345                        if (i < formulaArgs.Count) + 14346                        { + 14347                            var parameterName = arguments[i].Key; + 14348                            formulaArgs[parameterName] = lambdaArgs[i]; + 14349                        } + 14350                    }  4351 - 11352                    return result; - 11353                });354355                // Run only for skipping the formula part - 4356                Formula(formulaArgs); + 11352                    var result = Formula(formulaArgs); + 11353                    GetChar(currentIndex - 1); + 4354 + 11355                    return result; + 11356                });  357 - 4358                return new ValueExpression(lazyExecution, formulaArgs);359            } - 484360            else if (_current == '{') - 59361            { - 59362                Match('{'); - 59363                var dictionary = new Dictionary<string, object>(); - 59364                var firstRunPassed = false;365366                do - 89367                { - 89368                    SkipWhiteSpace();369 - 89370                    if (firstRunPassed) - 30371                    { - 30372                        Match(','); - 30373                        SkipWhiteSpace(); - 30374                    }375                    else - 59376                    { - 59377                        firstRunPassed = true; - 59378                    }379 - 89380                    var name = GetName();381 - 88382                    SkipWhiteSpace(); - 88383                    Match(':'); - 88384                    SkipWhiteSpace();385 - 88386                    dictionary[name] = Formula(args)?.Value;387 - 88388                    SkipWhiteSpace(); - 176389                } while (_current != '}');358                // Run only for skipping the formula part + 4359                Formula(formulaArgs);360 + 4361                return new ValueExpression(lazyExecution, formulaArgs);362            } + 541363            else if (_current == '{') + 60364            { + 60365                Match('{'); + 60366                var dictionary = new Dictionary<string, object>(); + 60367                var firstRunPassed = false;368369                do + 90370                { + 90371                    SkipWhiteSpace();372 + 90373                    if (firstRunPassed) + 30374                    { + 30375                        Match(','); + 30376                        SkipWhiteSpace(); + 30377                    }378                    else + 60379                    { + 60380                        firstRunPassed = true; + 60381                    }382 + 90383                    var name = GetName();384 + 89385                    SkipWhiteSpace(); + 89386                    Match(':'); + 89387                    SkipWhiteSpace();388 + 89389                    dictionary[name] = Formula(args)?.Value;  390 - 58391                Match('}');392 - 146393                return new ValueExpression(string.Join(", ", dictionary.Select(p => $"{p.Key}: {p.Value}")), dictionary)394            } - 425395            else if (char.IsDigit(_current) || _current == '"' || _current == '\'' || _current == '-') - 54396            {397                // This is only called in object initializers / dictionaries. Only one value should be entered here - 54398                return Expression(new[] { '}', ',' }, args).First();399            } - 371400            else { - 371401                var name = GetName();402 - 371403                if (args != null && args.ContainsKey(name)) - 19404                { - 19405                    return args[name];406                }407 - 352408                switch(name)409                {410                    case "true": - 15411                        return new ValueExpression(bool.TrueString, true);412                    case "false": - 4413                        return new ValueExpression(bool.FalseString, false);414                    case "null": - 1415                        return new ValueExpression( null );416                    default: - 332417                        Match('('); - 331418                        var parameters = Expression(new[] { ')' }, args); - 329419                        Match(')');420 - 328421                        return ApplyExpression(name, parameters, args);422                }423            } - 501424        }425426        public string Produce() - 146427        { - 146428            _tracing.Trace($"Initiating interpreter");429 - 147430            if (string.IsNullOrWhiteSpace(_input)) { - 1431                _tracing.Trace("No formula passed, exiting"); - 1432                return string.Empty;433            }434 - 145435            var output = Formula(new Dictionary<string, ValueExpression> { });436 - 140437            return output?.Text; - 135438        }439    }440} + 89391                    SkipWhiteSpace(); + 178392                } while (_current != '}');393 + 59394                Match('}');395 + 148396                return new ValueExpression(string.Join(", ", dictionary.Select(p => $"{p.Key}: {p.Value}")), dictionary)397            } + 481398            else if (char.IsDigit(_current) || _current == '"' || _current == '\'' || _current == '-') + 55399            {400                // This is only called in object initializers / dictionaries. Only one value should be entered here + 55401                return Expression(new[] { '}', ',' }, args).First();402            } + 426403            else { + 426404                var name = GetName();405 + 426406                if (args != null && args.ContainsKey(name)) + 19407                { + 19408                    return args[name];409                }410 + 407411                switch(name)412                {413                    case "true": + 26414                        return new ValueExpression(bool.TrueString, true);415                    case "false": + 10416                        return new ValueExpression(bool.FalseString, false);417                    case "null": + 1418                        return new ValueExpression( null );419                    default: + 370420                        Match('('); + 369421                        var parameters = Expression(new[] { ')' }, args); + 367422                        Match(')');423 + 366424                        return ApplyExpression(name, parameters, args);425                }426            } + 558427        }428429        public string Produce() + 162430        { + 162431            _tracing.Trace($"Initiating interpreter");432 + 163433            if (string.IsNullOrWhiteSpace(_input)) { + 1434                _tracing.Trace("No formula passed, exiting"); + 1435                return string.Empty;436            }437 + 161438            var output = Formula(new Dictionary<string, ValueExpression> { });439 + 156440            return output?.Text; + 151441        }442    }443} - + diff --git a/reports/Xrm.Oss.XTL.Templating_XTLProcessor.htm b/reports/Xrm.Oss.XTL.Templating_XTLProcessor.htm index f7cca78..64d31b3 100644 --- a/reports/Xrm.Oss.XTL.Templating_XTLProcessor.htm +++ b/reports/Xrm.Oss.XTL.Templating_XTLProcessor.htm @@ -31,17 +31,17 @@

Metrics

- - - - - - - - - - - + + + + + + + + + + +
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
.ctor()10100%100%1
.ctor(...)10100%100%1
Execute(...)22100%100%2
TriggerUpdateConditionally(...)516100%100%5
HandleCustomAction(...)812892.31%86.67%8.03
SerializeResult(...)30100%100%3
HandleNonCustomAction(...)61691.3%77.78%6.02
RetrieveTemplate(...)4890%85.71%4.02
ValidateConfig(...)4875%71.43%4.25
CheckExecutionCriteria(...)34100%100%3
GenerateDataSource(...)70100%100%7
.ctor()10100%100%2
.ctor(...)10100%100%2
Execute(...)22100%100%6
TriggerUpdateConditionally(...)516100%100%30
HandleCustomAction(...)812892.31%86.67%72
SerializeResult(...)30100%100%12
HandleNonCustomAction(...)61691.3%77.78%42
RetrieveTemplate(...)4890%85.71%20
ValidateConfig(...)4875%71.43%20
CheckExecutionCriteria(...)34100%100%12
GenerateDataSource(...)70100%100%56

File(s)

@@ -342,7 +342,7 @@

 291} - +

Methods/Properties

diff --git a/reports/badge_branchcoverage.png b/reports/badge_branchcoverage.png index 8d23cb3..4e05b7f 100644 Binary files a/reports/badge_branchcoverage.png and b/reports/badge_branchcoverage.png differ diff --git a/reports/badge_branchcoverage.svg b/reports/badge_branchcoverage.svg index 4168935..96f46f2 100644 --- a/reports/badge_branchcoverage.svg +++ b/reports/badge_branchcoverage.svg @@ -78,7 +78,7 @@ Coverage Coverage - 80.8%80.8% + 79%79% diff --git a/reports/badge_combined.svg b/reports/badge_combined.svg index 3c17201..4bf759a 100644 --- a/reports/badge_combined.svg +++ b/reports/badge_combined.svg @@ -77,8 +77,8 @@ Coverage Coverage - 98.5%98.5% - 80.8%80.8% + 98.6%98.6% + 79%79% diff --git a/reports/badge_linecoverage.png b/reports/badge_linecoverage.png index 52bff47..1cfef29 100644 Binary files a/reports/badge_linecoverage.png and b/reports/badge_linecoverage.png differ diff --git a/reports/badge_linecoverage.svg b/reports/badge_linecoverage.svg index 9c37996..cc009b8 100644 --- a/reports/badge_linecoverage.svg +++ b/reports/badge_linecoverage.svg @@ -77,7 +77,7 @@ Coverage Coverage - 98.5%98.5% + 98.6%98.6% diff --git a/reports/index.htm b/reports/index.htm index ff5f6f0..ec80a08 100644 --- a/reports/index.htm +++ b/reports/index.htm @@ -14,19 +14,19 @@

Summary

-Generated on:20.10.2020 - 12:31:39 +Generated on:08.06.2021 - 07:21:20 Parser:OpenCoverParser Assemblies:1 Classes:12 Files:12 -Covered lines:1618 +Covered lines:1733 Uncovered lines:24 -Coverable lines:1642 -Total lines:2241 -Line coverage:98.5% (1618 of 1642) -Covered branches:487 -Total branches:602 -Branch coverage:80.8% (487 of 602) +Coverable lines:1757 +Total lines:2362 +Line coverage:98.6% (1733 of 1757) +Covered branches:531 +Total branches:672 +Branch coverage:79% (531 of 672)

Risk Hotspots

@@ -51,23 +51,121 @@

Risk Hotspots

Xrm.Oss.XTL.Templating Xrm.Oss.XTL.Interpreter.XTLInterpreter -Formula(...)25 -8388608 -25.01 +Formula(...)24 +4194304 +600 Xrm.Oss.XTL.Templating Xrm.Oss.XTL.Interpreter.XTLInterpreter -Expression(...)22 +Expression(...)22 2097152 -22 +506 Xrm.Oss.XTL.Templating Xrm.Oss.XTL.Interpreter.PropertyStringifier StringifyProperty(...)12 1024 -12 +156 + + +Xrm.Oss.XTL.Templating +Xrm.Oss.XTL.Interpreter.DataRetriever +ResolveTokenValue(...)9 +64 +90 + + +Xrm.Oss.XTL.Templating +Xrm.Oss.XTL.Templating.XTLProcessor +HandleCustomAction(...)8 +128 +72 + + +Xrm.Oss.XTL.Templating +Xrm.Oss.XTL.Templating.XTLProcessor +GenerateDataSource(...)7 +0 +56 + + +Xrm.Oss.XTL.Templating +Xrm.Oss.XTL.Interpreter.FunctionHandlers +FetchSnippet(...)6 +16 +42 + + +Xrm.Oss.XTL.Templating +Xrm.Oss.XTL.Interpreter.XTLInterpreter +GetChar(...)6 +16 +42 + + +Xrm.Oss.XTL.Templating +Xrm.Oss.XTL.Templating.XTLProcessor +HandleNonCustomAction(...)6 +16 +42 + + +Xrm.Oss.XTL.Templating +Xrm.Oss.XTL.Interpreter.FunctionHandlers +GetConfig(...)5 +8 +30 + + +Xrm.Oss.XTL.Templating +Xrm.Oss.XTL.Interpreter.FunctionHandlers +CheckedCast(...)5 +16 +30 + + +Xrm.Oss.XTL.Templating +Xrm.Oss.XTL.Interpreter.XTLInterpreter +ApplyExpression(...)5 +16 +30 + + +Xrm.Oss.XTL.Templating +Xrm.Oss.XTL.Templating.XTLProcessor +TriggerUpdateConditionally(...)5 +16 +30 + + +Xrm.Oss.XTL.Templating +Xrm.Oss.XTL.Interpreter.XTLInterpreter +GetName()4 +8 +20 + + +Xrm.Oss.XTL.Templating +Xrm.Oss.XTL.Interpreter.XTLInterpreter +Produce()4 +4 +20 + + +Xrm.Oss.XTL.Templating +Xrm.Oss.XTL.Templating.XTLProcessor +RetrieveTemplate(...)4 +8 +20 + + +Xrm.Oss.XTL.Templating +Xrm.Oss.XTL.Templating.XTLProcessor +ValidateConfig(...)4 +8 +20 @@ -88,15 +186,15 @@

Coverage

NameCoveredUncoveredCoverableTotalLine coverageBranch coverage -Xrm.Oss.XTL.Templating1618241642224198.5%
  
80.8%
  
+Xrm.Oss.XTL.Templating1733241757236298.6%
  
79%
  
Xrm.Oss.XTL.Interpreter.ConfigHandler192214490.4%
  
66.6%
  
Xrm.Oss.XTL.Interpreter.DataRetriever2202243100%
 
91.6%
  
-Xrm.Oss.XTL.Interpreter.FunctionHandlers9578965106399.1%
  
75.2%
  
+Xrm.Oss.XTL.Interpreter.FunctionHandlers107281080118199.2%
  
73.1%
  
Xrm.Oss.XTL.Interpreter.OrganizationConfig1301338100%
 
100%
 
-Xrm.Oss.XTL.Interpreter.PropertyStringifier491509498%
  
86.3%
  
+Xrm.Oss.XTL.Interpreter.PropertyStringifier491509498%
  
83.3%
  
Xrm.Oss.XTL.Interpreter.TokenMatcher3203252100%
 
100%
 
-Xrm.Oss.XTL.Interpreter.ValueExpression2102146100%
 
75%
  
-Xrm.Oss.XTL.Interpreter.XTLInterpreter290429444098.6%
  
94.3%
  
+Xrm.Oss.XTL.Interpreter.ValueExpression1801846100%
 
75%
  
+Xrm.Oss.XTL.Interpreter.XTLInterpreter293429744398.6%
  
95.1%
  
Xrm.Oss.XTL.Templating.PersistentTracingService1201235100%
 
 
Xrm.Oss.XTL.Templating.ProcessingResult40425100%
 
 
Xrm.Oss.XTL.Templating.ProcessorConfig2302370100%
 
100%
 
@@ -104,6 +202,6 @@

Coverage

-
+ \ No newline at end of file diff --git a/reports/main.js b/reports/main.js index 7ff260e..d1ca477 100644 --- a/reports/main.js +++ b/reports/main.js @@ -212,12 +212,12 @@ var assemblies = [ "classes": [ { "name": "Xrm.Oss.XTL.Interpreter.ConfigHandler", "rp": "Xrm.Oss.XTL.Templating_ConfigHandler.htm", "cl": 19, "ucl": 2, "cal": 21, "tl": 44, "ct": "LineCoverage", "mc": "-", "cb": 4, "tb": 6, "lch": [], "bch": [], "hc": [] }, { "name": "Xrm.Oss.XTL.Interpreter.DataRetriever", "rp": "Xrm.Oss.XTL.Templating_DataRetriever.htm", "cl": 22, "ucl": 0, "cal": 22, "tl": 43, "ct": "LineCoverage", "mc": "-", "cb": 11, "tb": 12, "lch": [], "bch": [], "hc": [] }, - { "name": "Xrm.Oss.XTL.Interpreter.FunctionHandlers", "rp": "Xrm.Oss.XTL.Templating_FunctionHandlers.htm", "cl": 957, "ucl": 8, "cal": 965, "tl": 1063, "ct": "LineCoverage", "mc": "-", "cb": 283, "tb": 376, "lch": [], "bch": [], "hc": [] }, + { "name": "Xrm.Oss.XTL.Interpreter.FunctionHandlers", "rp": "Xrm.Oss.XTL.Templating_FunctionHandlers.htm", "cl": 1072, "ucl": 8, "cal": 1080, "tl": 1181, "ct": "LineCoverage", "mc": "-", "cb": 325, "tb": 444, "lch": [], "bch": [], "hc": [] }, { "name": "Xrm.Oss.XTL.Interpreter.OrganizationConfig", "rp": "Xrm.Oss.XTL.Templating_OrganizationConfig.htm", "cl": 13, "ucl": 0, "cal": 13, "tl": 38, "ct": "LineCoverage", "mc": "-", "cb": 2, "tb": 2, "lch": [], "bch": [], "hc": [] }, - { "name": "Xrm.Oss.XTL.Interpreter.PropertyStringifier", "rp": "Xrm.Oss.XTL.Templating_PropertyStringifier.htm", "cl": 49, "ucl": 1, "cal": 50, "tl": 94, "ct": "LineCoverage", "mc": "-", "cb": 19, "tb": 22, "lch": [], "bch": [], "hc": [] }, + { "name": "Xrm.Oss.XTL.Interpreter.PropertyStringifier", "rp": "Xrm.Oss.XTL.Templating_PropertyStringifier.htm", "cl": 49, "ucl": 1, "cal": 50, "tl": 94, "ct": "LineCoverage", "mc": "-", "cb": 20, "tb": 24, "lch": [], "bch": [], "hc": [] }, { "name": "Xrm.Oss.XTL.Interpreter.TokenMatcher", "rp": "Xrm.Oss.XTL.Templating_TokenMatcher.htm", "cl": 32, "ucl": 0, "cal": 32, "tl": 52, "ct": "LineCoverage", "mc": "-", "cb": 2, "tb": 2, "lch": [], "bch": [], "hc": [] }, - { "name": "Xrm.Oss.XTL.Interpreter.ValueExpression", "rp": "Xrm.Oss.XTL.Templating_ValueExpression.htm", "cl": 21, "ucl": 0, "cal": 21, "tl": 46, "ct": "LineCoverage", "mc": "-", "cb": 6, "tb": 8, "lch": [], "bch": [], "hc": [] }, - { "name": "Xrm.Oss.XTL.Interpreter.XTLInterpreter", "rp": "Xrm.Oss.XTL.Templating_XTLInterpreter.htm", "cl": 290, "ucl": 4, "cal": 294, "tl": 440, "ct": "LineCoverage", "mc": "-", "cb": 117, "tb": 124, "lch": [], "bch": [], "hc": [] }, + { "name": "Xrm.Oss.XTL.Interpreter.ValueExpression", "rp": "Xrm.Oss.XTL.Templating_ValueExpression.htm", "cl": 18, "ucl": 0, "cal": 18, "tl": 46, "ct": "LineCoverage", "mc": "-", "cb": 6, "tb": 8, "lch": [], "bch": [], "hc": [] }, + { "name": "Xrm.Oss.XTL.Interpreter.XTLInterpreter", "rp": "Xrm.Oss.XTL.Templating_XTLInterpreter.htm", "cl": 293, "ucl": 4, "cal": 297, "tl": 443, "ct": "LineCoverage", "mc": "-", "cb": 118, "tb": 124, "lch": [], "bch": [], "hc": [] }, { "name": "Xrm.Oss.XTL.Templating.PersistentTracingService", "rp": "Xrm.Oss.XTL.Templating_PersistentTracingService.htm", "cl": 12, "ucl": 0, "cal": 12, "tl": 35, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, { "name": "Xrm.Oss.XTL.Templating.ProcessingResult", "rp": "Xrm.Oss.XTL.Templating_ProcessingResult.htm", "cl": 4, "ucl": 0, "cal": 4, "tl": 25, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, { "name": "Xrm.Oss.XTL.Templating.ProcessorConfig", "rp": "Xrm.Oss.XTL.Templating_ProcessorConfig.htm", "cl": 23, "ucl": 0, "cal": 23, "tl": 70, "ct": "LineCoverage", "mc": "-", "cb": 2, "tb": 2, "lch": [], "bch": [], "hc": [] }, @@ -235,25 +235,123 @@ var riskHotspotMetrics = [ var riskHotspots = [ { - "assembly": "Xrm.Oss.XTL.Templating", "class": "Xrm.Oss.XTL.Interpreter.XTLInterpreter", "reportPath": "Xrm.Oss.XTL.Templating_XTLInterpreter.htm", "methodName": "Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.XTLInterpreter::Formula(System.Collections.Generic.Dictionary`2)", "methodShortName": "Formula(...)", "fileIndex": 0, "line": 286, + "assembly": "Xrm.Oss.XTL.Templating", "class": "Xrm.Oss.XTL.Interpreter.XTLInterpreter", "reportPath": "Xrm.Oss.XTL.Templating_XTLInterpreter.htm", "methodName": "Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.XTLInterpreter::Formula(System.Collections.Generic.Dictionary`2)", "methodShortName": "Formula(...)", "fileIndex": 0, "line": 289, "metrics": [ - { "value": 25, "exceeded": false }, - { "value": 8388608, "exceeded": true }, - { "value": 25.01, "exceeded": true }, + { "value": 24, "exceeded": false }, + { "value": 4194304, "exceeded": true }, + { "value": 600, "exceeded": true }, ]}, { - "assembly": "Xrm.Oss.XTL.Templating", "class": "Xrm.Oss.XTL.Interpreter.XTLInterpreter", "reportPath": "Xrm.Oss.XTL.Templating_XTLInterpreter.htm", "methodName": "System.Collections.Generic.List`1 Xrm.Oss.XTL.Interpreter.XTLInterpreter::Expression(System.Char[],System.Collections.Generic.Dictionary`2)", "methodShortName": "Expression(...)", "fileIndex": 0, "line": 155, + "assembly": "Xrm.Oss.XTL.Templating", "class": "Xrm.Oss.XTL.Interpreter.XTLInterpreter", "reportPath": "Xrm.Oss.XTL.Templating_XTLInterpreter.htm", "methodName": "System.Collections.Generic.List`1 Xrm.Oss.XTL.Interpreter.XTLInterpreter::Expression(System.Char[],System.Collections.Generic.Dictionary`2)", "methodShortName": "Expression(...)", "fileIndex": 0, "line": 158, "metrics": [ { "value": 22, "exceeded": false }, { "value": 2097152, "exceeded": true }, - { "value": 22, "exceeded": true }, + { "value": 506, "exceeded": true }, ]}, { "assembly": "Xrm.Oss.XTL.Templating", "class": "Xrm.Oss.XTL.Interpreter.PropertyStringifier", "reportPath": "Xrm.Oss.XTL.Templating_PropertyStringifier.htm", "methodName": "System.String Xrm.Oss.XTL.Interpreter.PropertyStringifier::StringifyProperty(System.String,System.Object,Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Xrm.Oss.XTL.Interpreter.ConfigHandler)", "methodShortName": "StringifyProperty(...)", "fileIndex": 0, "line": 15, "metrics": [ { "value": 12, "exceeded": false }, { "value": 1024, "exceeded": true }, - { "value": 12, "exceeded": false }, + { "value": 156, "exceeded": true }, + ]}, + { + "assembly": "Xrm.Oss.XTL.Templating", "class": "Xrm.Oss.XTL.Interpreter.DataRetriever", "reportPath": "Xrm.Oss.XTL.Templating_DataRetriever.htm", "methodName": "Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.DataRetriever::ResolveTokenValue(System.String,Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Xrm.Oss.XTL.Interpreter.ConfigHandler)", "methodShortName": "ResolveTokenValue(...)", "fileIndex": 0, "line": 12, + "metrics": [ + { "value": 9, "exceeded": false }, + { "value": 64, "exceeded": false }, + { "value": 90, "exceeded": true }, + ]}, + { + "assembly": "Xrm.Oss.XTL.Templating", "class": "Xrm.Oss.XTL.Templating.XTLProcessor", "reportPath": "Xrm.Oss.XTL.Templating_XTLProcessor.htm", "methodName": "System.Void Xrm.Oss.XTL.Templating.XTLProcessor::HandleCustomAction(Microsoft.Xrm.Sdk.IPluginExecutionContext,Xrm.Oss.XTL.Templating.PersistentTracingService,Microsoft.Xrm.Sdk.IOrganizationService)", "methodShortName": "HandleCustomAction(...)", "fileIndex": 0, "line": 74, + "metrics": [ + { "value": 8, "exceeded": false }, + { "value": 128, "exceeded": false }, + { "value": 72, "exceeded": true }, + ]}, + { + "assembly": "Xrm.Oss.XTL.Templating", "class": "Xrm.Oss.XTL.Templating.XTLProcessor", "reportPath": "Xrm.Oss.XTL.Templating_XTLProcessor.htm", "methodName": "Microsoft.Xrm.Sdk.Entity Xrm.Oss.XTL.Templating.XTLProcessor::GenerateDataSource(Microsoft.Xrm.Sdk.IPluginExecutionContext,Microsoft.Xrm.Sdk.Entity)", "methodShortName": "GenerateDataSource(...)", "fileIndex": 0, "line": 267, + "metrics": [ + { "value": 7, "exceeded": false }, + { "value": 0, "exceeded": false }, + { "value": 56, "exceeded": true }, + ]}, + { + "assembly": "Xrm.Oss.XTL.Templating", "class": "Xrm.Oss.XTL.Interpreter.FunctionHandlers", "reportPath": "Xrm.Oss.XTL.Templating_FunctionHandlers.htm", "methodName": "Microsoft.Xrm.Sdk.Entity Xrm.Oss.XTL.Interpreter.FunctionHandlers::FetchSnippet(System.String,System.String,Microsoft.Xrm.Sdk.Entity,Xrm.Oss.XTL.Interpreter.OrganizationConfig,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService)", "methodShortName": "FetchSnippet(...)", "fileIndex": 0, "line": 978, + "metrics": [ + { "value": 6, "exceeded": false }, + { "value": 16, "exceeded": false }, + { "value": 42, "exceeded": true }, + ]}, + { + "assembly": "Xrm.Oss.XTL.Templating", "class": "Xrm.Oss.XTL.Interpreter.XTLInterpreter", "reportPath": "Xrm.Oss.XTL.Templating_XTLInterpreter.htm", "methodName": "System.Void Xrm.Oss.XTL.Interpreter.XTLInterpreter::GetChar(System.Nullable`1)", "methodShortName": "GetChar(...)", "fileIndex": 0, "line": 86, + "metrics": [ + { "value": 6, "exceeded": false }, + { "value": 16, "exceeded": false }, + { "value": 42, "exceeded": true }, + ]}, + { + "assembly": "Xrm.Oss.XTL.Templating", "class": "Xrm.Oss.XTL.Templating.XTLProcessor", "reportPath": "Xrm.Oss.XTL.Templating_XTLProcessor.htm", "methodName": "System.Void Xrm.Oss.XTL.Templating.XTLProcessor::HandleNonCustomAction(Microsoft.Xrm.Sdk.IPluginExecutionContext,Microsoft.Xrm.Sdk.ITracingService,Microsoft.Xrm.Sdk.IOrganizationService)", "methodShortName": "HandleNonCustomAction(...)", "fileIndex": 0, "line": 167, + "metrics": [ + { "value": 6, "exceeded": false }, + { "value": 16, "exceeded": false }, + { "value": 42, "exceeded": true }, + ]}, + { + "assembly": "Xrm.Oss.XTL.Templating", "class": "Xrm.Oss.XTL.Interpreter.FunctionHandlers", "reportPath": "Xrm.Oss.XTL.Templating_FunctionHandlers.htm", "methodName": "Xrm.Oss.XTL.Interpreter.ConfigHandler Xrm.Oss.XTL.Interpreter.FunctionHandlers::GetConfig(System.Collections.Generic.List`1)", "methodShortName": "GetConfig(...)", "fileIndex": 0, "line": 23, + "metrics": [ + { "value": 5, "exceeded": false }, + { "value": 8, "exceeded": false }, + { "value": 30, "exceeded": true }, + ]}, + { + "assembly": "Xrm.Oss.XTL.Templating", "class": "Xrm.Oss.XTL.Interpreter.FunctionHandlers", "reportPath": "Xrm.Oss.XTL.Templating_FunctionHandlers.htm", "methodName": "T Xrm.Oss.XTL.Interpreter.FunctionHandlers::CheckedCast(System.Object,System.String,System.Boolean)", "methodShortName": "CheckedCast(...)", "fileIndex": 0, "line": 804, + "metrics": [ + { "value": 5, "exceeded": false }, + { "value": 16, "exceeded": false }, + { "value": 30, "exceeded": true }, + ]}, + { + "assembly": "Xrm.Oss.XTL.Templating", "class": "Xrm.Oss.XTL.Interpreter.XTLInterpreter", "reportPath": "Xrm.Oss.XTL.Templating_XTLInterpreter.htm", "methodName": "Xrm.Oss.XTL.Interpreter.ValueExpression Xrm.Oss.XTL.Interpreter.XTLInterpreter::ApplyExpression(System.String,System.Collections.Generic.List`1,System.Collections.Generic.Dictionary`2)", "methodShortName": "ApplyExpression(...)", "fileIndex": 0, "line": 265, + "metrics": [ + { "value": 5, "exceeded": false }, + { "value": 16, "exceeded": false }, + { "value": 30, "exceeded": true }, + ]}, + { + "assembly": "Xrm.Oss.XTL.Templating", "class": "Xrm.Oss.XTL.Templating.XTLProcessor", "reportPath": "Xrm.Oss.XTL.Templating_XTLProcessor.htm", "methodName": "System.Void Xrm.Oss.XTL.Templating.XTLProcessor::TriggerUpdateConditionally(System.String,Microsoft.Xrm.Sdk.Entity,Xrm.Oss.XTL.Templating.ProcessorConfig,Microsoft.Xrm.Sdk.IOrganizationService)", "methodShortName": "TriggerUpdateConditionally(...)", "fileIndex": 0, "line": 48, + "metrics": [ + { "value": 5, "exceeded": false }, + { "value": 16, "exceeded": false }, + { "value": 30, "exceeded": true }, + ]}, + { + "assembly": "Xrm.Oss.XTL.Templating", "class": "Xrm.Oss.XTL.Interpreter.XTLInterpreter", "reportPath": "Xrm.Oss.XTL.Templating_XTLInterpreter.htm", "methodName": "System.String Xrm.Oss.XTL.Interpreter.XTLInterpreter::GetName()", "methodShortName": "GetName()", "fileIndex": 0, "line": 139, + "metrics": [ + { "value": 4, "exceeded": false }, + { "value": 8, "exceeded": false }, + { "value": 20, "exceeded": true }, + ]}, + { + "assembly": "Xrm.Oss.XTL.Templating", "class": "Xrm.Oss.XTL.Interpreter.XTLInterpreter", "reportPath": "Xrm.Oss.XTL.Templating_XTLInterpreter.htm", "methodName": "System.String Xrm.Oss.XTL.Interpreter.XTLInterpreter::Produce()", "methodShortName": "Produce()", "fileIndex": 0, "line": 430, + "metrics": [ + { "value": 4, "exceeded": false }, + { "value": 4, "exceeded": false }, + { "value": 20, "exceeded": true }, + ]}, + { + "assembly": "Xrm.Oss.XTL.Templating", "class": "Xrm.Oss.XTL.Templating.XTLProcessor", "reportPath": "Xrm.Oss.XTL.Templating_XTLProcessor.htm", "methodName": "System.String Xrm.Oss.XTL.Templating.XTLProcessor::RetrieveTemplate(System.String,System.String,Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk.IOrganizationService,Microsoft.Xrm.Sdk.ITracingService)", "methodShortName": "RetrieveTemplate(...)", "fileIndex": 0, "line": 203, + "metrics": [ + { "value": 4, "exceeded": false }, + { "value": 8, "exceeded": false }, + { "value": 20, "exceeded": true }, + ]}, + { + "assembly": "Xrm.Oss.XTL.Templating", "class": "Xrm.Oss.XTL.Templating.XTLProcessor", "reportPath": "Xrm.Oss.XTL.Templating_XTLProcessor.htm", "methodName": "System.Void Xrm.Oss.XTL.Templating.XTLProcessor::ValidateConfig(System.String,System.String,System.String)", "methodShortName": "ValidateConfig(...)", "fileIndex": 0, "line": 233, + "metrics": [ + { "value": 4, "exceeded": false }, + { "value": 8, "exceeded": false }, + { "value": 20, "exceeded": true }, ]}, ]; diff --git a/src/lib/Xrm.Oss.XTL.Interpreter/FunctionHandlers.cs b/src/lib/Xrm.Oss.XTL.Interpreter/FunctionHandlers.cs index 2257e73..49600b9 100644 --- a/src/lib/Xrm.Oss.XTL.Interpreter/FunctionHandlers.cs +++ b/src/lib/Xrm.Oss.XTL.Interpreter/FunctionHandlers.cs @@ -542,7 +542,7 @@ private static int Compare(List parameters) { stringBuilder.AppendLine($"URL"); } - stringBuilder.AppendLine(""); + stringBuilder.AppendLine(""); if (records != null) { @@ -609,7 +609,7 @@ private static int Compare(List parameters) stringBuilder.AppendLine($"{GetRecordUrl(primary, service, tracing, organizationConfig, new List { new ValueExpression(string.Empty, record), new ValueExpression(string.Empty, config.Dictionary) }).Value}"); } - stringBuilder.AppendLine(""); + stringBuilder.AppendLine(""); } } diff --git a/src/test/Xrm.Oss.XTL.Interpreter.Tests/RecordTableTests.cs b/src/test/Xrm.Oss.XTL.Interpreter.Tests/RecordTableTests.cs index 9717c02..4e5e3e7 100644 --- a/src/test/Xrm.Oss.XTL.Interpreter.Tests/RecordTableTests.cs +++ b/src/test/Xrm.Oss.XTL.Interpreter.Tests/RecordTableTests.cs @@ -89,15 +89,15 @@ public void It_Should_Not_Fail_On_Empty_Table() var expected = @" - + - + - +
Subject Label Description Label
Task 1 Description 1
Task 2 Description 2
".Replace("\r", "").Replace("\n", ""); Assert.That(() => new XTLInterpreter(formula, contact, null, service, tracing).Produce(), Throws.Nothing); @@ -152,15 +152,15 @@ public void It_Should_Use_Custom_Styles() var expected = @" - + - + - +
Subject Label Description Label
Task 1 Description 1
Task 2 Description 2
".Replace("\r", "").Replace("\n", ""); var result = new XTLInterpreter(formula, contact, null, service, tracing).Produce(); @@ -216,15 +216,15 @@ public void It_Should_Use_Uneven_And_Even_Row_Styles() var expected = @" - + - + - +
Subject Label Description Label
Task 1 Description 1
Task 2 Description 2
".Replace("\r", "").Replace("\n", ""); var result = new XTLInterpreter(formula, contact, null, service, tracing).Produce(); @@ -280,15 +280,15 @@ public void It_Should_Add_Custom_Column_Labels() var expected = @" - + - + - +
Overridden Subject Label Description Label
Task 1 Description 1
Task 2 Description 2
".Replace("\r", "").Replace("\n", ""); var result = new XTLInterpreter(formula, contact, null, service, tracing).Produce(); @@ -345,15 +345,15 @@ public void It_Should_Create_Sub_Record_Table_Without_Url() var expected = @" - + - + - +
Subject Label Description Label
Task 1 Description 1
Task 2 Description 2
".Replace("\r", "").Replace("\n", ""); var result = new XTLInterpreter(formula, contact, null, service, tracing).Produce(); @@ -395,13 +395,13 @@ public void It_Should_Be_Able_To_Display_Columns_Per_Entity() var expected = @" - + - + - +
Combined Column
Frodo
Task 1
".Replace("\r", "").Replace("\n", ""); var result = new XTLInterpreter(formula, contact, null, service, tracing).Produce(); @@ -461,15 +461,15 @@ public void It_Should_Sort_Sub_Record_Table() var expected = @" - + - + - +
Subject Label Description Label
Task 2 Description 2
Task 1 Description 1
".Replace("\r", "").Replace("\n", ""); var result = new XTLInterpreter(formula, contact, null, service, tracing).Produce(); @@ -511,13 +511,13 @@ public void It_Should_Insert_Static_Values() var expected = @" - + - + - +
Combined Column
staticContact
staticTask
".Replace("\r", "").Replace("\n", ""); var result = new XTLInterpreter(formula, contact, null, service, tracing).Produce(); @@ -549,10 +549,10 @@ public void It_Should_Use_Simple_Render_Functions() var expected = @" - + - +
Custom Column
F
".Replace("\r", "").Replace("\n", ""); var result = new XTLInterpreter(formula, contact, null, service, tracing).Produce(); @@ -612,10 +612,10 @@ public void It_Should_Use_MultiValued_Render_Functions_With_Primary_Fields() var expected = @" - + - +
Date
2020-02-27 03:00:00
".Replace("\r", "").Replace("\n", ""); var result = new XTLInterpreter(formula, email, null, service, tracing).Produce(); @@ -675,10 +675,10 @@ public void It_Should_Use_MultiValued_Render_Functions_With_Per_Row_Fields() var expected = @" - + - +
Date
2020-02-27 03:00:00
".Replace("\r", "").Replace("\n", ""); var result = new XTLInterpreter(formula, email, null, service, tracing).Produce(); @@ -738,15 +738,15 @@ public void It_Should_Sort_Sub_Record_Table_Descending() var expected = @" - + - + - +
Subject Label Description Label
Task 1 Description 1
Task 2 Description 2
".Replace("\r", "").Replace("\n", ""); var result = new XTLInterpreter(formula, contact, null, service, tracing).Produce(); @@ -805,15 +805,15 @@ public void It_Should_Not_Fail_On_Null_Value_When_Sorting() var expected = @" - + - + - +
Subject Label Description Label
Task 1 Description 1
Task 2 Description 2
".Replace("\r", "").Replace("\n", ""); var result = new XTLInterpreter(formula, contact, null, service, tracing).Produce(); @@ -870,15 +870,15 @@ public void It_Should_Create_Sub_Record_Table_With_Custom_Column_Style() var expected = @" - + - + - +
Custom Label Description Label
Task 1 Description 1
Task 2 Description 2
".Replace("\r", "").Replace("\n", ""); var result = new XTLInterpreter(formula, contact, null, service, tracing).Produce(); @@ -936,17 +936,17 @@ public void It_Should_Create_Sub_Record_Table_With_Custom_Column_Style_And_Url() Custom Label Description Label URL - + Task 1 Description 1 https://test.local/main.aspx?etn=task&id=76f167d6-35b3-44ae-b2a0-9373dee13e82&newWindow=true&pagetype=entityrecord - + Task 2 Description 2 https://test.local/main.aspx?etn=task&id=5c0370f2-9b79-4abc-86d6-09260d5bbfed&newWindow=true&pagetype=entityrecord - + ".Replace("\r", "").Replace("\n", ""); var result = new XTLInterpreter(formula, contact, new OrganizationConfig { OrganizationUrl = "https://test.local" }, service, tracing).Produce(); @@ -1004,17 +1004,17 @@ public void It_Should_Create_Sub_Record_Table_With_Url() Subject Label Description Label URL - + Task 1 Description 1 https://test.local/main.aspx?etn=task&id=76f167d6-35b3-44ae-b2a0-9373dee13e82&newWindow=true&pagetype=entityrecord - + Task 2 Description 2 https://test.local/main.aspx?etn=task&id=5c0370f2-9b79-4abc-86d6-09260d5bbfed&newWindow=true&pagetype=entityrecord - + ".Replace("\r", "").Replace("\n", ""); var result = new XTLInterpreter(formula, contact, new OrganizationConfig { OrganizationUrl = "https://test.local" }, service, tracing).Produce(); @@ -1072,17 +1072,17 @@ public void It_Should_Create_Sub_Record_Table_With_Url_And_Custom_Link_Text() Subject Label Description Label URL - + Task 1 Description 1 Link - + Task 2 Description 2 Link - + ".Replace("\r", "").Replace("\n", ""); var result = new XTLInterpreter(formula, contact, new OrganizationConfig { OrganizationUrl = "https://test.local" }, service, tracing).Produce();