diff --git a/SPMeta2.sln b/SPMeta2.sln
index cec2eae20..638b601fd 100644
--- a/SPMeta2.sln
+++ b/SPMeta2.sln
@@ -123,6 +123,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SPMeta2.Nintex.SSOM", "SPMe
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Regression", "SPMeta2\Regression\Regression.csproj", "{593FFE45-EFCC-43DC-8AA2-27236DD6160D}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SPMeta2.Containers.FarmSolutionWebAppContainer", "SPMeta2\SPMeta2.Containers.FarmSolutionWebAppContainer\SPMeta2.Containers.FarmSolutionWebAppContainer.csproj", "{9A306EC6-DE61-49B9-940D-7C1A36FC15AD}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SPMeta2.Containers.FarmSolutionWebAppContainer1", "SPMeta2\SPMeta2.Containers.FarmSolutionWebAppContainer1\SPMeta2.Containers.FarmSolutionWebAppContainer1.csproj", "{B9DDD9D7-99AF-4849-A559-C02558D4F774}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -386,6 +390,30 @@ Global
{593FFE45-EFCC-43DC-8AA2-27236DD6160D}.Debug45|Any CPU.Build.0 = Debug|Any CPU
{593FFE45-EFCC-43DC-8AA2-27236DD6160D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{593FFE45-EFCC-43DC-8AA2-27236DD6160D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9A306EC6-DE61-49B9-940D-7C1A36FC15AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9A306EC6-DE61-49B9-940D-7C1A36FC15AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9A306EC6-DE61-49B9-940D-7C1A36FC15AD}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {9A306EC6-DE61-49B9-940D-7C1A36FC15AD}.Debug40|Any CPU.ActiveCfg = Debug|Any CPU
+ {9A306EC6-DE61-49B9-940D-7C1A36FC15AD}.Debug40|Any CPU.Build.0 = Debug|Any CPU
+ {9A306EC6-DE61-49B9-940D-7C1A36FC15AD}.Debug40|Any CPU.Deploy.0 = Debug|Any CPU
+ {9A306EC6-DE61-49B9-940D-7C1A36FC15AD}.Debug45|Any CPU.ActiveCfg = Debug|Any CPU
+ {9A306EC6-DE61-49B9-940D-7C1A36FC15AD}.Debug45|Any CPU.Build.0 = Debug|Any CPU
+ {9A306EC6-DE61-49B9-940D-7C1A36FC15AD}.Debug45|Any CPU.Deploy.0 = Debug|Any CPU
+ {9A306EC6-DE61-49B9-940D-7C1A36FC15AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9A306EC6-DE61-49B9-940D-7C1A36FC15AD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9A306EC6-DE61-49B9-940D-7C1A36FC15AD}.Release|Any CPU.Deploy.0 = Release|Any CPU
+ {B9DDD9D7-99AF-4849-A559-C02558D4F774}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B9DDD9D7-99AF-4849-A559-C02558D4F774}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B9DDD9D7-99AF-4849-A559-C02558D4F774}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {B9DDD9D7-99AF-4849-A559-C02558D4F774}.Debug40|Any CPU.ActiveCfg = Debug|Any CPU
+ {B9DDD9D7-99AF-4849-A559-C02558D4F774}.Debug40|Any CPU.Build.0 = Debug|Any CPU
+ {B9DDD9D7-99AF-4849-A559-C02558D4F774}.Debug40|Any CPU.Deploy.0 = Debug|Any CPU
+ {B9DDD9D7-99AF-4849-A559-C02558D4F774}.Debug45|Any CPU.ActiveCfg = Debug|Any CPU
+ {B9DDD9D7-99AF-4849-A559-C02558D4F774}.Debug45|Any CPU.Build.0 = Debug|Any CPU
+ {B9DDD9D7-99AF-4849-A559-C02558D4F774}.Debug45|Any CPU.Deploy.0 = Debug|Any CPU
+ {B9DDD9D7-99AF-4849-A559-C02558D4F774}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B9DDD9D7-99AF-4849-A559-C02558D4F774}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B9DDD9D7-99AF-4849-A559-C02558D4F774}.Release|Any CPU.Deploy.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -432,5 +460,7 @@ Global
{588FC30F-1C85-410E-AB20-C9741DB28857} = {543E02CC-AA4A-4B1F-ABBD-2C88CFAA463C}
{788D7D6E-5347-4D09-BFF8-E83AD7CA1FD3} = {543E02CC-AA4A-4B1F-ABBD-2C88CFAA463C}
{593FFE45-EFCC-43DC-8AA2-27236DD6160D} = {EE9BD842-2CA9-45B2-AB7C-A8EB0353AAB7}
+ {9A306EC6-DE61-49B9-940D-7C1A36FC15AD} = {358E83EE-8ABA-463E-A868-3906865FDA39}
+ {B9DDD9D7-99AF-4849-A559-C02558D4F774} = {358E83EE-8ABA-463E-A868-3906865FDA39}
EndGlobalSection
EndGlobal
diff --git a/SPMeta2/Build/build.json b/SPMeta2/Build/build.json
index 5cf940e86..c904f67b9 100644
--- a/SPMeta2/Build/build.json
+++ b/SPMeta2/Build/build.json
@@ -284,7 +284,7 @@
{
"CustomProjectFolder" : "SPMeta2/SPMeta2",
"Id": "SPMeta2.Core",
- "Version": "1.2.120",
+ "Version": "1.2.130-beta1",
"Dependencies": [ ],
"LicenseUrl": "http://docs.subpointsolutions.com/spmeta2/license",
"ProjectUrl": "https://github.com/SubPointSolutions/spmeta2",
@@ -323,11 +323,11 @@
{
"CustomProjectFolder" : "SPMeta2/SPMeta2.Standard",
"Id": "SPMeta2.Core.Standard",
- "Version": "1.2.120",
+ "Version": "1.2.130-beta1",
"Dependencies": [
{
"Id": "SPMeta2.Core",
- "Version": "1.2.120"
+ "Version": "1.2.130-beta1"
}
],
"LicenseUrl": "http://docs.subpointsolutions.com/spmeta2/license",
@@ -368,11 +368,11 @@
{
"CustomProjectFolder" : "SPMeta2/SPMeta2.CSOM",
"Id": "SPMeta2.CSOM.Foundation",
- "Version": "1.2.120",
+ "Version": "1.2.130-beta1",
"Dependencies": [
{
"Id": "SPMeta2.Core",
- "Version": "1.2.120"
+ "Version": "1.2.130-beta1"
}
],
"LicenseUrl": "http://docs.subpointsolutions.com/spmeta2/license",
@@ -405,15 +405,15 @@
{
"CustomProjectFolder" : "SPMeta2/SPMeta2.CSOM.Standard",
"Id": "SPMeta2.CSOM.Standard",
- "Version": "1.2.120",
+ "Version": "1.2.130-beta1",
"Dependencies": [
{
"Id": "SPMeta2.CSOM.Foundation",
- "Version": "1.2.120"
+ "Version": "1.2.130-beta1"
},
{
"Id": "SPMeta2.Core.Standard",
- "Version": "1.2.120"
+ "Version": "1.2.130-beta1"
}
],
"LicenseUrl": "http://docs.subpointsolutions.com/spmeta2/license",
@@ -446,11 +446,11 @@
{
"CustomProjectFolder" : "SPMeta2/SPMeta2.SSOM",
"Id": "SPMeta2.SSOM.Foundation",
- "Version": "1.2.120",
+ "Version": "1.2.130-beta1",
"Dependencies": [
{
"Id": "SPMeta2.Core",
- "Version": "1.2.120"
+ "Version": "1.2.130-beta1"
}
],
"LicenseUrl": "http://docs.subpointsolutions.com/spmeta2/license",
@@ -483,15 +483,15 @@
{
"CustomProjectFolder" : "SPMeta2/SPMeta2.SSOM.Standard",
"Id": "SPMeta2.SSOM.Standard",
- "Version": "1.2.120",
+ "Version": "1.2.130-beta1",
"Dependencies": [
{
"Id": "SPMeta2.SSOM.Foundation",
- "Version": "1.2.120"
+ "Version": "1.2.130-beta1"
},
{
"Id": "SPMeta2.Core.Standard",
- "Version": "1.2.120"
+ "Version": "1.2.130-beta1"
}
],
"LicenseUrl": "http://docs.subpointsolutions.com/spmeta2/license",
@@ -525,11 +525,11 @@
{
"CustomProjectFolder" : "SPMeta2/SPMeta2.CSOM",
"Id": "SPMeta2.CSOM.Foundation-v14",
- "Version": "1.2.120",
+ "Version": "1.2.130-beta1",
"Dependencies": [
{
"Id": "SPMeta2.Core",
- "Version": "1.2.120"
+ "Version": "1.2.130-beta1"
}
],
"LicenseUrl": "http://docs.subpointsolutions.com/spmeta2/license",
@@ -555,15 +555,15 @@
{
"CustomProjectFolder" : "SPMeta2/SPMeta2.CSOM.Standard",
"Id": "SPMeta2.CSOM.Standard-v14",
- "Version": "1.2.120",
+ "Version": "1.2.130-beta1",
"Dependencies": [
{
"Id": "SPMeta2.CSOM.Foundation-v14",
- "Version": "1.2.120"
+ "Version": "1.2.130-beta1"
},
{
"Id": "SPMeta2.Core.Standard",
- "Version": "1.2.120"
+ "Version": "1.2.130-beta1"
}
],
"LicenseUrl": "http://docs.subpointsolutions.com/spmeta2/license",
@@ -589,11 +589,11 @@
{
"CustomProjectFolder" : "SPMeta2/SPMeta2.SSOM",
"Id": "SPMeta2.SSOM.Foundation-v14",
- "Version": "1.2.120",
+ "Version": "1.2.130-beta1",
"Dependencies": [
{
"Id": "SPMeta2.Core",
- "Version": "1.2.120"
+ "Version": "1.2.130-beta1"
}
],
"LicenseUrl": "http://docs.subpointsolutions.com/spmeta2/license",
@@ -619,15 +619,15 @@
{
"CustomProjectFolder" : "SPMeta2/SPMeta2.SSOM.Standard",
"Id": "SPMeta2.SSOM.Standard-v14",
- "Version": "1.2.120",
+ "Version": "1.2.130-beta1",
"Dependencies": [
{
"Id": "SPMeta2.SSOM.Foundation-v14",
- "Version": "1.2.120"
+ "Version": "1.2.130-beta1"
},
{
"Id": "SPMeta2.Core.Standard",
- "Version": "1.2.120"
+ "Version": "1.2.130-beta1"
}
],
"LicenseUrl": "http://docs.subpointsolutions.com/spmeta2/license",
@@ -653,11 +653,11 @@
{
"CustomProjectFolder" : "SPMeta2/SPMeta2.CSOM",
"Id": "SPMeta2.CSOM.Foundation-v16",
- "Version": "1.2.120",
+ "Version": "1.2.130-beta1",
"Dependencies": [
{
"Id": "SPMeta2.Core",
- "Version": "1.2.120"
+ "Version": "1.2.130-beta1"
},
{
"Id": "Microsoft.SharePointOnline.CSOM",
@@ -694,15 +694,15 @@
{
"CustomProjectFolder" : "SPMeta2/SPMeta2.CSOM.Standard",
"Id": "SPMeta2.CSOM.Standard-v16",
- "Version": "1.2.120",
+ "Version": "1.2.130-beta1",
"Dependencies": [
{
"Id": "SPMeta2.CSOM.Foundation-v16",
- "Version": "1.2.120"
+ "Version": "1.2.130-beta1"
},
{
"Id": "SPMeta2.Core.Standard",
- "Version": "1.2.120"
+ "Version": "1.2.130-beta1"
},
{
"Id": "Microsoft.SharePointOnline.CSOM",
diff --git a/SPMeta2/Regression/_ut_grid_baseline_config.ps1 b/SPMeta2/Regression/_ut_grid_baseline_config.ps1
index 3015fa376..3d64e799f 100644
--- a/SPMeta2/Regression/_ut_grid_baseline_config.ps1
+++ b/SPMeta2/Regression/_ut_grid_baseline_config.ps1
@@ -57,7 +57,19 @@ $configScript = {
$s.Configuration.Alter()
}
- function Ensure-AssociatedGroups() {
+ function Ensure-AssociatedGroups-ForAllSites() {
+
+ Add-PSSnapin Microsoft.SharePoint.PowerShell
+ $sites = Get-SPSite
+
+ foreach($site in $sites)
+ {
+ Write-Host "Ensuring associated security group on site:[$($site.Url)]"
+ Ensure-AssociatedGroups $site.Url
+ }
+ }
+
+ function Ensure-AssociatedGroups($url) {
Add-PSSnapin Microsoft.SharePoint.PowerShell
@@ -66,7 +78,7 @@ $configScript = {
# TODO
- $web = Get-SPWeb ("http://" + $computerName + ":31449")
+ $web = Get-SPWeb ($url)
if ($web.AssociatedVisitorGroup -eq $null) {
Write-Host 'The Visitor Group does not exist. It will be created...' -ForegroundColor DarkYellow
$currentLogin = $web.CurrentUser.LoginName
@@ -127,9 +139,8 @@ $configScript = {
$computerName = [environment]::MachineName
Write-Host "Runing on [$computerName]"
- #return
- Ensure-AssociatedGroups
+ Ensure-AssociatedGroups-ForAllSites
Update-SharePoint-ULS
Limit-SharePoint-Search
diff --git a/SPMeta2/Regression/_ut_grid_dsc_spmeta2_webapp_unittests.ps1 b/SPMeta2/Regression/_ut_grid_dsc_spmeta2_webapp_unittests.ps1
index 22d0001ee..c63bc1104 100644
--- a/SPMeta2/Regression/_ut_grid_dsc_spmeta2_webapp_unittests.ps1
+++ b/SPMeta2/Regression/_ut_grid_dsc_spmeta2_webapp_unittests.ps1
@@ -122,7 +122,18 @@ Configuration SPMeta2_UnitTestSettings
if($onprem -eq $true) {
- $siteUrl = $webApp_Url.TrimEnd('/') + $config.SiteCollectionUrls
+ $siteUrl = $config.SiteCollectionUrls
+
+ if( ($siteUrl -is [System.Object[]]) -eq $true)
+ {
+ $siteUrl = $siteUrl[0]
+ }
+
+ if($siteUrl.StartsWith("http") -eq $false)
+ {
+ $siteUrl = $webApp_Url.TrimEnd('/') + $siteUrl
+ }
+
Write-Host "Fetching default taxoomy store for SharePoint:[$siteUrl]" -fore Green
$o365_UserName = $config.OnlineUserName
@@ -303,9 +314,6 @@ $config = @{
)
}
-#$dsc_nodeNames = @("dev13")
-
-
<#
Apply-Dsc-Configuration -name SPMeta2_UnitTestSettings_Clean `
-nodeNames $dsc_nodeNames `
@@ -316,4 +324,4 @@ Apply-Dsc-Configuration -name SPMeta2_UnitTestSettings_Clean `
Apply-Dsc-Configuration -name SPMeta2_UnitTestSettings `
-nodeNames $dsc_nodeNames `
-isVerbose $true `
- -config $config
+ -config $config
\ No newline at end of file
diff --git a/SPMeta2/SPMeta2.Build/m2.buildbaseline.xml b/SPMeta2/SPMeta2.Build/m2.buildbaseline.xml
index 901cabf4d..409982d94 100644
--- a/SPMeta2/SPMeta2.Build/m2.buildbaseline.xml
+++ b/SPMeta2/SPMeta2.Build/m2.buildbaseline.xml
@@ -1 +1 @@
-SPMeta2.dllSPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.AlternateUrlDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.AnonymousAccessSettingsDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.SharePointDesignerSettingsDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.DeveloperDashboardSettingsDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.AppDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.AuditSettingsDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ClearRecycleBinDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ListItemDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ComposedLookItemDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ComposedLookItemLinkDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ContentDatabaseDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.DeleteQuickLaunchNavigationNodesDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.DeleteWebPartsDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.DiscussionReplyItemDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.FieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.LookupFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.DependentLookupFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.DocumentParserDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.MultiChoiceFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.ChoiceFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.OutcomeChoiceFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.GeolocationFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.DiscussionItemDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ListItemFieldValuesDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.HtmlMasterPageDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.MasterPagePreviewDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.MasterPageDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.PeoplePickerSettingsDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ResetRoleInheritanceDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.SupportedUICultureDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.DeleteTopNavigationNodesDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.TreeViewSettingsDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.RootWebDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.DiagnosticsServiceBaseDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.EventReceiverDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.CalculatedFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.NumberFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.GuidFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.ComputedFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.URLFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.UserFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.DateTimeFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.BooleanFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.NoteFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.CurrencyFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.TextFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.InformationRightsManagementSettingsDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.MasterPageSettingsDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.RegionalSettingsDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.SecureStoreApplicationDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.TargetApplicationDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.TrustedAccessProviderDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.WebConfigModificationDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.WebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.BlogAdminWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.BlogLinksWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.BlogMonthQuickLaunchDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.DataFormWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.GettingStartedWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.ImageWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.MembersWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.PageViewerWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.PictureLibrarySlideshowWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.SilverlightWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.SimpleFormWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.SPTimelineWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.UserCodeWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.UserDocsWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.UserTasksWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.WebPartGalleryFileDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.XmlWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.UserDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.WorkflowAssociationDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.AppPrincipalDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.BreakRoleInheritanceDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ContentTypes.RemoveContentTypeFieldLinksDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ContentTypes.HideContentTypeFieldLinksDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ContentTypes.UniqueContentTypeFieldsOrderDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.FarmSolutionDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.BusinessDataFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ContentTypes.RemoveContentTypeLinksDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.JobDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ManagedAccountDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.SandboxSolutionDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ContentTypes.HideContentTypeLinksDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ContentTypes.UniqueContentTypeOrderDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.ClientWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.ScriptEditorWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.ContentEditorWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.ListViewWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.XsltListViewWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.WelcomePageDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ContentTypeDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ContentTypeFieldLinkDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ContentTypeLinkDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.FolderDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ListFieldLinkDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ModuleFileDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.PrefixDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.QuickLaunchNavigationNodeDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.SP2013WorkflowDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.SP2013WorkflowSubscriptionDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.TopNavigationNodeDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.UserCustomActionDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.FarmDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.PropertyDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.FeatureDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ListDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ListViewDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.SecurityGroupDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.SecurityGroupLinkDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.SecurityRoleDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.SecurityRoleLinkDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.SiteDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.WebApplicationDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.WebDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.WebPartPageDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.WikiPageDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ListItemFieldValueDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Services.ServiceModelHandlers.DiscussionBoardListDefinitionValidationModelHandler, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Services.ServiceModelHandlers.BooleanFieldDefinitionValidationModelHandler, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Services.ServiceModelHandlers.DefaultContentTypeIdPropertyModelHandler, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Services.ServiceModelHandlers.DefaultRequiredPropertiesModelHandler, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Services.ServiceModelHandlers.DefaultNotAbsoluteUrlPropertiesModelHandler, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Services.ServiceModelHandlers.DefaultVersionBasedPropertiesModelHandler, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Services.ServiceModelHandlers.DefaultFieldInternalNamePropertyModelHandler, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Services.ServiceModelHandlers.DefaultXmlBasedPropertiesModelHandler, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.dllSPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.DesignPackageDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.ProfileTypePropertyDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.CorePropertyDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.DocumentSetDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.DisplayTemplates.ControlDisplayTemplateDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.DisplayTemplates.FilterDisplayTemplateDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.ManagedPropertyDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.MetadataNavigationSettingsDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.ReusableHTMLItemDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.ReusableTextItemDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.AdvancedSearchBoxDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.CategoryWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.CommunityAdminWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.CommunityJoinWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.DocumentSetContentsWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.DocumentSetPropertiesWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.MyMembershipWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.ProjectSummaryWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.RefinementScriptWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.RSSAggregatorWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.SearchBoxScriptWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.SearchNavigationWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.SiteDocumentsDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.SocialCommentWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.TableOfContentsWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.TagCloudWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.CustomDocumentIdProviderDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.DisplayTemplates.JavaScriptDisplayTemplateDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.DisplayTemplates.ItemDisplayTemplateDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Fields.MediaFieldDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Fields.SummaryLinkFieldDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Fields.LinkFieldDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Fields.ImageFieldDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Fields.HTMLFieldDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.PageLayoutAndSiteTemplateSettingsDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.AudienceDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Fields.TaxonomyFieldDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.ImageRenditionDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.PublishingPageLayoutDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.PublishingPageDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.SearchConfigurationDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.SearchResultDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.SearchSettingsDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Taxonomy.TaxonomyTermLabelDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.WebNavigationSettingsDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.ContactFieldControlDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.ContentBySearchWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.ContentByQueryWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.ResultScriptWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.SiteFeedWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.SummaryLinkWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Taxonomy.TaxonomyTermDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Taxonomy.TaxonomyTermGroupDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Taxonomy.TaxonomyTermSetDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Taxonomy.TaxonomyTermStoreDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Services.ServiceModelHandlers.PublishingPageDefinitionValidationModelHandler, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.dllSPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.AnonymousAccessSettingsModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.AppModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.AppPrincipalModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Base.WebPartGalleryFileModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.BreakRoleInheritanceModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ClearRecycleBinModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ListItemModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ComposedLookItemLinkModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ContentTypeFieldLinkModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ContentTypeLinkModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ContentTypeModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ContentTypes.HideContentTypeFieldLinksModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ContentTypes.RemoveContentTypeFieldLinksModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ContentTypes.UniqueContentTypeFieldsOrderModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ContentTypes.HideContentTypeLinksModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ContentTypes.RemoveContentTypeLinksModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ContentTypes.UniqueContentTypeOrderModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.QuickLaunchNavigationNodeModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.DeleteQuickLaunchNavigationNodesModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.TopNavigationNodeModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.DeleteTopNavigationNodesModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.DeleteWebPartsModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.DiscussionReplyItemModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.EventReceiverModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.FeatureModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.FieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.LookupFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.DependentLookupFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.MultiChoiceFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.ChoiceFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.OutcomeChoiceFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.GeolocationFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.CalculatedFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.ComputedFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.NumberFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.GuidFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.URLFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.UserFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.BooleanFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.DateTimeFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.TextFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.NoteFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.CurrencyFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.BusinessDataFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.FolderModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.InformationRightsManagementSettingsModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ListFieldLinkModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ListItemFieldValuesModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ListItemFieldValueModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.DiscussionItemModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.SharePointDesignerSettingsModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.UserModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ListModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ListViewModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.HtmlMasterPageModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.MasterPagePreviewModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.MasterPageSettingsModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.PropertyModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.MasterPageModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.RegionalSettingsModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ResetRoleInheritanceModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ComposedLookItemModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.SecurityGroupLinkModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.SecurityGroupModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.SecurityRoleLinkModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.SecurityRoleModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.SiteModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.SP2013WorkflowSubscriptionDefinitionModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.SupportedUICultureModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.TreeViewSettingsModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.UserCustomActionModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.RootWebModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.WebModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.WebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.WebPartPageModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.BlogAdminWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.BlogLinksWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.BlogMonthQuickLaunchModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.DataFormWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.GettingStartedWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.ImageWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.MembersWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.PageViewerWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.PictureLibrarySlideshowWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.SilverlightWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.SimpleFormWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.SPTimelineWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.UserCodePartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.ClientWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.ScriptEditorWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.ContentEditorWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.ListViewWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.UserDocsWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.UserTasksWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.XmlWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.WelcomePageModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.WorkflowAssociationModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.WikiPageModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.XsltListViewWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ModuleFileModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.SP2013WorkflowDefinitionHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.dllSPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.DisplayTemplates.ControlDisplayTemplateModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.DisplayTemplates.FilterDisplayTemplateModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.DisplayTemplates.JavaScriptDisplayTemplateModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.DisplayTemplates.ItemDisplayTemplateModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.SandboxSolutionModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.DesignPackageModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Fields.SummaryLinkFieldModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Fields.MediaFieldModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Fields.LinkFieldModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Fields.HTMLFieldModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Fields.ImageFieldModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Fields.TaxonomyFieldModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.DocumentSetModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.ImageRenditionModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.MetadataNavigationSettingsModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.PageLayoutAndSiteTemplateSettingsModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.PublishingPageLayoutModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.PublishingPageModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.ReusableHTMLItemModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.ReusableTextItemModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.SearchSettingsModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.SearchConfigurationModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.SearchResultModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Taxonomy.TaxonomyGroupModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Taxonomy.TaxonomyTermLabelModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Taxonomy.TaxonomyTermModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Taxonomy.TaxonomyTermSetModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Taxonomy.TaxonomyTermStoreModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.WebNavigationSettingsModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.AdvancedSearchBoxModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.CategoryWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.CommunityAdminWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.CommunityJoinWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.ContentBySearchWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.DocumentSetContentsWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.DocumentSetPropertiesWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.MyMembershipWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.RefinementScriptWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.ResultScriptWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.ProjectSummaryWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.RSSAggregatorWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.SearchBoxScriptWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.SearchNavigationWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.SiteDocumentsModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.SocialCommentWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.SummaryLinkWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.ContactFieldControlModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.ContentByQueryWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.SiteFeedWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.TableOfContentsWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.TagCloudWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.dllSPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.AnonymousAccessSettingsModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.AuditSettingsModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.TopNavigationNodeModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.DeleteTopNavigationNodesModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.QuickLaunchNavigationNodeModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.DeleteQuickLaunchNavigationNodesModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ClearRecycleBinModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ComposedLookItemLinkModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.DeleteWebPartsModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ListItemModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.DiscussionReplyItemModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.DocumentParserModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.AlternateUrlModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.AppModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.AppPrincipalModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ContentTypes.HideContentTypeFieldLinksModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ContentTypes.RemoveContentTypeFieldLinksModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ContentTypes.RemoveContentTypeLinksModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ContentTypes.HideContentTypeLinksModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ContentTypes.UniqueContentTypeFieldsOrderModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.DiagnosticsServiceBaseModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.EventReceiverModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.FarmSolutionModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.FieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.LookupFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.DependentLookupFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.GeolocationFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.MultiChoiceFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.ChoiceFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.OutcomeChoiceFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.URLFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.CalculatedFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.ComputedFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.DateTimeFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.BooleanFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.GuidFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.NumberFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.TextFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.NoteFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.CurrencyFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.UserFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ContentDatabaseModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.InformationRightsManagementSettingsModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ListItemFieldValuesModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.HtmlMasterPageModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.DiscussionItemModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.MasterPagePreviewModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.MasterPageModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.PeoplePickerSettingsModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ResetRoleInheritanceModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ComposedLookItemModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.SharePointDesignerSettingsModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.UserModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.SupportedUICultureModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.TreeViewSettingsModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ManagedAccountModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.MasterPageSettingsModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.PropertyModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.BreakRoleInheritanceModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ContentTypeFieldLinkModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ContentTypeLinkModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ContentTypeModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.FeatureModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.BusinessDataFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.FolderModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.JobModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ListFieldLinkModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ListItemFieldValueModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ModuleFileModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.PrefixModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.RegionalSettingsModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.SandboxSolutionModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.SecureStoreApplicationModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.SP2013WorkflowDefinitionHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.SP2013WorkflowSubscriptionDefinitionModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.TargetApplicationModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ContentTypes.UniqueContentTypeOrderModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.UserCustomActionModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.DeveloperDashboardSettingsModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.TrustedAccessProviderModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.WebApplicationModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.WebConfigModificationModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.RootWebModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.WebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.FarmModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ListModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ListViewModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.SecurityGroupLinkModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.SecurityGroupModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.SecurityRoleLinkModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.SecurityRoleModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.SiteModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.WebModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.WebPartPageModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.BlogAdminWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.BlogLinksWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.BlogMonthQuickLaunchModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.ClientWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.DataFormWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.GettingStartedWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.ImageWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.ListViewWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.MembersWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.PageViewerWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.PictureLibrarySlideshowWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.SilverlightWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.SimpleFormWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.SPTimelineWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.UserCodePartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.UserDocsWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.UserTasksWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.WebPartGalleryFileModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.XmlWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.XsltListViewWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.ScriptEditorWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.ContentEditorWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.WelcomePageModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.WikiPageModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.WorkflowAssociationModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.dllSPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.DesignPackageModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.CorePropertyModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.DocumentSetModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.DisplayTemplates.ControlDisplayTemplateModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.DisplayTemplates.FilterDisplayTemplateModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.DisplayTemplates.JavaScriptDisplayTemplateModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.DisplayTemplates.ItemDisplayTemplateModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Fields.SummaryLinkFieldModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Fields.MediaFieldDefinitionModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Fields.HTMLFieldModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Fields.ImageFieldModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Fields.LinkFieldModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.ManagedPropertyModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.MetadataNavigationSettingsModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.ReusableTextItemModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.ReusableHTMLItemModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.SearchSettingsModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.CustomDocumentIdProviderModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.PageLayoutAndSiteTemplateSettingsModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Fields.TaxonomyFieldModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.AudienceModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.ImageRenditionModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.PublishingPageLayoutModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.PublishingPageModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.SearchResultModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.SearchConfigurationModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Taxonomy.TaxonomyTermLabelModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Taxonomy.TaxonomyTermStoreModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Taxonomy.TaxonomyTermSetModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Taxonomy.TaxonomyTermModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Taxonomy.TaxonomyGroupModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.WebNavigationSettingsModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.AdvancedSearchBoxModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.CategoryWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.CommunityAdminWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.CommunityJoinWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.ContentBySearchWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.DocumentSetContentsWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.DocumentSetPropertiesWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.MyMembershipWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.RefinementScriptWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.ResultScriptWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.RSSAggregatorWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.SearchBoxScriptWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.SearchNavigationWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.SiteDocumentsModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.SocialCommentWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.SummaryLinkWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.ContactFieldControlModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.ContentByQueryWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.SiteFeedWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.TableOfContentsWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.TagCloudWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.ProjectSummaryWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531a
\ No newline at end of file
+SPMeta2.dllSPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.AlternateUrlDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.AnonymousAccessSettingsDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.SuiteBarDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.OfficialFileHostDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.SharePointDesignerSettingsDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.DeveloperDashboardSettingsDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.AppDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.AuditSettingsDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ClearRecycleBinDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ListItemDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ComposedLookItemDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ComposedLookItemLinkDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ContentDatabaseDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.DeleteQuickLaunchNavigationNodesDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.DeleteWebPartsDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.DiscussionReplyItemDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.FieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.LookupFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.DependentLookupFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.DocumentParserDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.MultiChoiceFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.ChoiceFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.OutcomeChoiceFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.GeolocationFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.DiscussionItemDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ListItemFieldValuesDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.HtmlMasterPageDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.MasterPagePreviewDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.MasterPageDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.PeoplePickerSettingsDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ResetRoleInheritanceDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.SupportedUICultureDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.DeleteTopNavigationNodesDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.TreeViewSettingsDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.RootWebDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.DiagnosticsServiceBaseDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.EventReceiverDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.CalculatedFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.NumberFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.GuidFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.ComputedFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.URLFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.UserFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.DateTimeFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.BooleanFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.NoteFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.CurrencyFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.TextFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.InformationRightsManagementSettingsDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.MasterPageSettingsDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.RegionalSettingsDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.SecureStoreApplicationDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.TargetApplicationDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.TrustedAccessProviderDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.WebConfigModificationDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.WebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.BlogAdminWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.BlogLinksWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.BlogMonthQuickLaunchDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.DataFormWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.GettingStartedWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.ImageWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.MembersWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.PageViewerWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.PictureLibrarySlideshowWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.SilverlightWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.SimpleFormWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.SPTimelineWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.UserCodeWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.UserDocsWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.UserTasksWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.WebPartGalleryFileDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.XmlWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.UserDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.WorkflowAssociationDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.AppPrincipalDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.BreakRoleInheritanceDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ContentTypes.RemoveContentTypeFieldLinksDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ContentTypes.HideContentTypeFieldLinksDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ContentTypes.UniqueContentTypeFieldsOrderDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.FarmSolutionDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Fields.BusinessDataFieldDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ContentTypes.RemoveContentTypeLinksDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.JobDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ManagedAccountDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.SandboxSolutionDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ContentTypes.HideContentTypeLinksDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ContentTypes.UniqueContentTypeOrderDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.ClientWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.ScriptEditorWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.ContentEditorWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.ListViewWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.Webparts.XsltListViewWebPartDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.WelcomePageDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ContentTypeDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ContentTypeFieldLinkDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ContentTypeLinkDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.FolderDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ListFieldLinkDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ModuleFileDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.PrefixDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.QuickLaunchNavigationNodeDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.SP2013WorkflowDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.SP2013WorkflowSubscriptionDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.TopNavigationNodeDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.UserCustomActionDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.FarmDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.PropertyDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.FeatureDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ListDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ListViewDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.SecurityGroupDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.SecurityGroupLinkDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.SecurityRoleDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.SecurityRoleLinkDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.SiteDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.WebApplicationDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.WebDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.WebPartPageDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.WikiPageDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Definitions.ListItemFieldValueDefinition, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Services.ServiceModelHandlers.DiscussionBoardListDefinitionValidationModelHandler, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Services.ServiceModelHandlers.BooleanFieldDefinitionValidationModelHandler, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Services.ServiceModelHandlers.DefaultContentTypeIdPropertyModelHandler, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Services.ServiceModelHandlers.DefaultRequiredPropertiesModelHandler, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Services.ServiceModelHandlers.DefaultNotAbsoluteUrlPropertiesModelHandler, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Services.ServiceModelHandlers.DefaultVersionBasedPropertiesModelHandler, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Services.ServiceModelHandlers.DefaultFieldInternalNamePropertyModelHandler, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Services.ServiceModelHandlers.DefaultXmlBasedPropertiesModelHandler, SPMeta2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.dllSPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.DesignPackageDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.ProfileTypePropertyDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.CorePropertyDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.DocumentSetDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.DisplayTemplates.ControlDisplayTemplateDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.DisplayTemplates.FilterDisplayTemplateDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.ManagedPropertyDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.MetadataNavigationSettingsDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.ReusableHTMLItemDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.ReusableTextItemDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.AdvancedSearchBoxDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.CategoryWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.CommunityAdminWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.CommunityJoinWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.DocumentSetContentsWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.DocumentSetPropertiesWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.MyMembershipWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.ProjectSummaryWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.RefinementScriptWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.RSSAggregatorWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.SearchBoxScriptWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.SearchNavigationWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.SiteDocumentsDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.SocialCommentWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.TableOfContentsWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.TagCloudWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.CustomDocumentIdProviderDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.DisplayTemplates.JavaScriptDisplayTemplateDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.DisplayTemplates.ItemDisplayTemplateDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Fields.MediaFieldDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Fields.SummaryLinkFieldDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Fields.LinkFieldDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Fields.ImageFieldDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Fields.HTMLFieldDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.PageLayoutAndSiteTemplateSettingsDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.AudienceDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Fields.TaxonomyFieldDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.ImageRenditionDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.PublishingPageLayoutDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.PublishingPageDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.SearchConfigurationDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.SearchResultDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.SearchSettingsDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Taxonomy.TaxonomyTermLabelDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.WebNavigationSettingsDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.ContactFieldControlDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.ContentBySearchWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.ContentByQueryWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.ResultScriptWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.SiteFeedWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Webparts.SummaryLinkWebPartDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Taxonomy.TaxonomyTermDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Taxonomy.TaxonomyTermGroupDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Taxonomy.TaxonomyTermSetDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Definitions.Taxonomy.TaxonomyTermStoreDefinition, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.Standard.Services.ServiceModelHandlers.PublishingPageDefinitionValidationModelHandler, SPMeta2.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.dllSPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.AnonymousAccessSettingsModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.AppModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.AppPrincipalModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Base.WebPartGalleryFileModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.BreakRoleInheritanceModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ClearRecycleBinModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ListItemModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ComposedLookItemLinkModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ContentTypeFieldLinkModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ContentTypeLinkModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ContentTypeModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ContentTypes.HideContentTypeFieldLinksModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ContentTypes.RemoveContentTypeFieldLinksModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ContentTypes.UniqueContentTypeFieldsOrderModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ContentTypes.HideContentTypeLinksModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ContentTypes.RemoveContentTypeLinksModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ContentTypes.UniqueContentTypeOrderModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.QuickLaunchNavigationNodeModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.DeleteQuickLaunchNavigationNodesModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.TopNavigationNodeModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.DeleteTopNavigationNodesModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.DeleteWebPartsModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.DiscussionReplyItemModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.EventReceiverModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.FeatureModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.FieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.LookupFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.DependentLookupFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.MultiChoiceFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.ChoiceFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.OutcomeChoiceFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.GeolocationFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.CalculatedFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.ComputedFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.NumberFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.GuidFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.URLFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.UserFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.BooleanFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.DateTimeFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.TextFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.NoteFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.CurrencyFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Fields.BusinessDataFieldModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.FolderModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.InformationRightsManagementSettingsModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ListFieldLinkModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ListItemFieldValuesModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ListItemFieldValueModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.DiscussionItemModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.SharePointDesignerSettingsModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.UserModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ListModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ListViewModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.HtmlMasterPageModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.MasterPagePreviewModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.MasterPageSettingsModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.PropertyModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.MasterPageModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.RegionalSettingsModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ResetRoleInheritanceModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ComposedLookItemModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.SecurityGroupLinkModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.SecurityGroupModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.SecurityRoleLinkModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.SecurityRoleModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.SiteModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.SP2013WorkflowSubscriptionDefinitionModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.SupportedUICultureModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.TreeViewSettingsModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.UserCustomActionModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.RootWebModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.WebModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.WebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.WebPartPageModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.BlogAdminWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.BlogLinksWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.BlogMonthQuickLaunchModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.DataFormWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.GettingStartedWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.ImageWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.MembersWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.PageViewerWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.PictureLibrarySlideshowWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.SilverlightWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.SimpleFormWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.SPTimelineWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.UserCodePartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.ClientWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.ScriptEditorWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.ContentEditorWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.ListViewWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.UserDocsWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.UserTasksWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.XmlWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.WelcomePageModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.WorkflowAssociationModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.WikiPageModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.Webparts.XsltListViewWebPartModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.ModuleFileModelHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.ModelHandlers.SP2013WorkflowDefinitionHandler, SPMeta2.CSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.dllSPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.DisplayTemplates.ControlDisplayTemplateModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.DisplayTemplates.FilterDisplayTemplateModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.DisplayTemplates.JavaScriptDisplayTemplateModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.DisplayTemplates.ItemDisplayTemplateModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.SandboxSolutionModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.DesignPackageModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Fields.SummaryLinkFieldModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Fields.MediaFieldModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Fields.LinkFieldModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Fields.HTMLFieldModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Fields.ImageFieldModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Fields.TaxonomyFieldModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.DocumentSetModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.ImageRenditionModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.MetadataNavigationSettingsModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.PageLayoutAndSiteTemplateSettingsModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.PublishingPageLayoutModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.PublishingPageModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.ReusableHTMLItemModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.ReusableTextItemModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.SearchSettingsModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.SearchConfigurationModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.SearchResultModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Taxonomy.TaxonomyGroupModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Taxonomy.TaxonomyTermLabelModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Taxonomy.TaxonomyTermModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Taxonomy.TaxonomyTermSetModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Taxonomy.TaxonomyTermStoreModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.WebNavigationSettingsModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.AdvancedSearchBoxModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.CategoryWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.CommunityAdminWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.CommunityJoinWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.ContentBySearchWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.DocumentSetContentsWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.DocumentSetPropertiesWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.MyMembershipWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.RefinementScriptWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.ResultScriptWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.ProjectSummaryWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.RSSAggregatorWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.SearchBoxScriptWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.SearchNavigationWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.SiteDocumentsModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.SocialCommentWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.SummaryLinkWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.ContactFieldControlModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.ContentByQueryWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.SiteFeedWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.TableOfContentsWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.CSOM.Standard.ModelHandlers.Webparts.TagCloudWebPartModelHandler, SPMeta2.CSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.dllSPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.AnonymousAccessSettingsModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.SuiteBarModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.OfficialFileHostModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.AuditSettingsModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.TopNavigationNodeModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.DeleteTopNavigationNodesModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.QuickLaunchNavigationNodeModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.DeleteQuickLaunchNavigationNodesModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ClearRecycleBinModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ComposedLookItemLinkModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.DeleteWebPartsModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ListItemModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.DiscussionReplyItemModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.DocumentParserModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.AlternateUrlModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.AppModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.AppPrincipalModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ContentTypes.HideContentTypeFieldLinksModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ContentTypes.RemoveContentTypeFieldLinksModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ContentTypes.RemoveContentTypeLinksModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ContentTypes.HideContentTypeLinksModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ContentTypes.UniqueContentTypeFieldsOrderModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.DiagnosticsServiceBaseModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.EventReceiverModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.FarmSolutionModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.FieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.LookupFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.DependentLookupFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.GeolocationFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.MultiChoiceFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.ChoiceFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.OutcomeChoiceFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.URLFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.CalculatedFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.ComputedFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.DateTimeFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.BooleanFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.GuidFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.NumberFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.TextFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.NoteFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.CurrencyFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.UserFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ContentDatabaseModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.InformationRightsManagementSettingsModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ListItemFieldValuesModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.HtmlMasterPageModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.DiscussionItemModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.MasterPagePreviewModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.MasterPageModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.PeoplePickerSettingsModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ResetRoleInheritanceModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ComposedLookItemModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.SharePointDesignerSettingsModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.UserModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.SupportedUICultureModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.TreeViewSettingsModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ManagedAccountModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.MasterPageSettingsModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.PropertyModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.BreakRoleInheritanceModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ContentTypeFieldLinkModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ContentTypeLinkModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ContentTypeModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.FeatureModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Fields.BusinessDataFieldModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.FolderModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.JobModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ListFieldLinkModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ListItemFieldValueModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ModuleFileModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.PrefixModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.RegionalSettingsModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.SandboxSolutionModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.SecureStoreApplicationModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.SP2013WorkflowDefinitionHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.SP2013WorkflowSubscriptionDefinitionModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.TargetApplicationModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ContentTypes.UniqueContentTypeOrderModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.UserCustomActionModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.DeveloperDashboardSettingsModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.TrustedAccessProviderModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.WebApplicationModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.WebConfigModificationModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.RootWebModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.WebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.FarmModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ListModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.ListViewModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.SecurityGroupLinkModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.SecurityGroupModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.SecurityRoleLinkModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.SecurityRoleModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.SiteModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.WebModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.WebPartPageModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.BlogAdminWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.BlogLinksWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.BlogMonthQuickLaunchModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.ClientWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.DataFormWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.GettingStartedWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.ImageWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.ListViewWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.MembersWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.PageViewerWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.PictureLibrarySlideshowWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.SilverlightWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.SimpleFormWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.SPTimelineWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.UserCodePartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.UserDocsWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.UserTasksWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.WebPartGalleryFileModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.XmlWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.XsltListViewWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.ScriptEditorWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.Webparts.ContentEditorWebPartModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.WelcomePageModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.WikiPageModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.ModelHandlers.WorkflowAssociationModelHandler, SPMeta2.SSOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.dllSPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.DesignPackageModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.CorePropertyModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.DocumentSetModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.DisplayTemplates.ControlDisplayTemplateModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.DisplayTemplates.FilterDisplayTemplateModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.DisplayTemplates.JavaScriptDisplayTemplateModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.DisplayTemplates.ItemDisplayTemplateModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Fields.SummaryLinkFieldModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Fields.MediaFieldDefinitionModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Fields.HTMLFieldModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Fields.ImageFieldModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Fields.LinkFieldModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.ManagedPropertyModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.MetadataNavigationSettingsModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.ReusableTextItemModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.ReusableHTMLItemModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.SearchSettingsModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.CustomDocumentIdProviderModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.PageLayoutAndSiteTemplateSettingsModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Fields.TaxonomyFieldModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.AudienceModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.ImageRenditionModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.PublishingPageLayoutModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.PublishingPageModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.SearchResultModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.SearchConfigurationModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Taxonomy.TaxonomyTermLabelModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Taxonomy.TaxonomyTermStoreModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Taxonomy.TaxonomyTermSetModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Taxonomy.TaxonomyTermModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Taxonomy.TaxonomyGroupModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.WebNavigationSettingsModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.AdvancedSearchBoxModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.CategoryWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.CommunityAdminWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.CommunityJoinWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.ContentBySearchWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.DocumentSetContentsWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.DocumentSetPropertiesWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.MyMembershipWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.RefinementScriptWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.ResultScriptWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.RSSAggregatorWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.SearchBoxScriptWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.SearchNavigationWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.SiteDocumentsModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.SocialCommentWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.SummaryLinkWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.ContactFieldControlModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.ContentByQueryWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.SiteFeedWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.TableOfContentsWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.TagCloudWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531aSPMeta2.SSOM.Standard.ModelHandlers.Webparts.ProjectSummaryWebPartModelHandler, SPMeta2.SSOM.Standard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d71faae3bf28531a
\ No newline at end of file
diff --git a/SPMeta2/SPMeta2.CSOM.Standard/ModelHandlers/Fields/TaxonomyFieldModelHandler.cs b/SPMeta2/SPMeta2.CSOM.Standard/ModelHandlers/Fields/TaxonomyFieldModelHandler.cs
index da25d5e70..2e267b50a 100644
--- a/SPMeta2/SPMeta2.CSOM.Standard/ModelHandlers/Fields/TaxonomyFieldModelHandler.cs
+++ b/SPMeta2/SPMeta2.CSOM.Standard/ModelHandlers/Fields/TaxonomyFieldModelHandler.cs
@@ -52,7 +52,10 @@ protected override void ProcessFieldProperties(Field field, FieldDefinition fiel
// let base setting be setup
base.ProcessFieldProperties(taxField, fieldModel);
- taxField.AllowMultipleValues = taxFieldModel.IsMulti;
+ taxField.AllowMultipleValues = taxFieldModel.IsMulti;
+
+ if (taxFieldModel.UserCreated.HasValue)
+ taxField.UserCreated = taxFieldModel.UserCreated.Value;
if (taxFieldModel.Open.HasValue)
taxField.Open = taxFieldModel.Open.Value;
@@ -76,7 +79,9 @@ protected override void ProcessFieldProperties(Field field, FieldDefinition fiel
taxField.TermSetId = termSet.Id;
if (term != null)
- taxField.AnchorId = term.Id;
+ taxField.AnchorId = term.Id;
+
+
}
public static TermStore LookupTermStore(ClientContext clientContext,
diff --git a/SPMeta2/SPMeta2.CSOM.Standard/ModelHandlers/PublishingPageModelHandler.cs b/SPMeta2/SPMeta2.CSOM.Standard/ModelHandlers/PublishingPageModelHandler.cs
index 532a505ae..34c2acfab 100644
--- a/SPMeta2/SPMeta2.CSOM.Standard/ModelHandlers/PublishingPageModelHandler.cs
+++ b/SPMeta2/SPMeta2.CSOM.Standard/ModelHandlers/PublishingPageModelHandler.cs
@@ -1,300 +1,306 @@
-using System;
-using System.Linq;
-using System.Text;
-using Microsoft.SharePoint.Client;
-using SPMeta2.Common;
-using SPMeta2.CSOM.Extensions;
-using SPMeta2.CSOM.ModelHandlers;
-using SPMeta2.CSOM.ModelHosts;
-using SPMeta2.Definitions;
-using SPMeta2.Definitions.Base;
-using SPMeta2.Enumerations;
-using SPMeta2.ModelHosts;
-using SPMeta2.Standard.Definitions;
-using SPMeta2.Utils;
-using SPMeta2.Standard.Enumerations;
-
-namespace SPMeta2.CSOM.Standard.ModelHandlers
-{
- public class PublishingPageModelHandler : CSOMModelHandlerBase
- {
- #region properties
-
- public override Type TargetType
- {
- get { return typeof(PublishingPageDefinition); }
- }
-
- #endregion
-
- #region methods
-
- public override void WithResolvingModelHost(ModelHostResolveContext modelHostContext)
- {
- var modelHost = modelHostContext.ModelHost;
- var model = modelHostContext.Model;
- var childModelType = modelHostContext.ChildModelType;
- var action = modelHostContext.Action;
-
- var folderModelHost = modelHost as FolderModelHost;
- var definition = model as PublishingPageDefinition;
-
-
-
- Folder folder = folderModelHost.CurrentListFolder;
-
- if (folder != null && definition != null)
- {
- var context = folder.Context;
- var currentPage = GetCurrentPage(folderModelHost.CurrentList, folder, GetSafePageFileName(definition));
-
- if (typeof(WebPartDefinitionBase).IsAssignableFrom(childModelType)
- || childModelType == typeof(DeleteWebPartsDefinition))
- {
- var listItemHost = ModelHostBase.Inherit(folderModelHost, itemHost =>
- {
- itemHost.HostFile = currentPage;
- itemHost.HostList = folderModelHost.CurrentList;
- });
-
- action(listItemHost);
-
- //currentListItem.Update();
- }
- else if (typeof(BreakRoleInheritanceDefinition).IsAssignableFrom(childModelType)
- || typeof(SecurityGroupLinkDefinition).IsAssignableFrom(childModelType))
- {
- var currentListItem = currentPage.ListItemAllFields;
- context.Load(currentListItem);
- context.ExecuteQueryWithTrace();
-
- var listItemHost = ModelHostBase.Inherit(folderModelHost, itemHost =>
- {
-
- itemHost.HostListItem = currentListItem;
- });
-
- action(listItemHost);
- }
- else
- {
- action(currentPage);
- }
-
- //context.ExecuteQueryWithTrace();
- }
- else
- {
- action(modelHost);
- }
- }
-
- protected string GetSafePageFileName(PageDefinitionBase page)
- {
- var fileName = page.FileName;
- if (!fileName.EndsWith(".aspx")) fileName += ".aspx";
-
- return fileName;
- }
-
-
- protected File GetCurrentPage(List list, Folder folder, string pageName)
- {
- var item = SearchItemByName(list, folder, pageName);
-
- if (item != null)
- return item.File;
-
- return null;
- }
-
- protected ListItem SearchItemByName(List list, Folder folder, string pageName)
- {
- var context = list.Context;
-
- if (folder != null)
- {
- if (!folder.IsPropertyAvailable("ServerRelativeUrl"))
- {
- folder.Context.Load(folder, f => f.ServerRelativeUrl);
- folder.Context.ExecuteQueryWithTrace();
- }
- }
-
- var dQuery = new CamlQuery();
-
- string QueryString = "" +
- "" +
- "" +
- "" + pageName + "" +
- "" +
- "";
-
- dQuery.ViewXml = QueryString;
-
- if (folder != null)
- dQuery.FolderServerRelativeUrl = folder.ServerRelativeUrl;
-
- var collListItems = list.GetItems(dQuery);
-
- context.Load(collListItems);
- context.ExecuteQueryWithTrace();
-
- return collListItems.FirstOrDefault();
-
- }
-
- protected ListItem FindPublishingPage(List list, Folder folder, PublishingPageDefinition definition)
- {
- var pageName = GetSafePageFileName(definition);
- var file = GetCurrentPage(list, folder, pageName);
-
- if (file != null)
- return file.ListItemAllFields;
-
- return null;
- }
-
- public override void DeployModel(object modelHost, DefinitionBase model)
- {
- var folderModelHost = modelHost.WithAssertAndCast("modelHost", value => value.RequireNotNull());
-
- var folder = folderModelHost.CurrentListFolder;
- var list = folderModelHost.CurrentList;
-
- var definition = model.WithAssertAndCast("model", value => value.RequireNotNull());
-
- var contentTypeId = string.Empty;
-
- // pre load content type
- if (!string.IsNullOrEmpty(definition.ContentTypeId))
- {
- contentTypeId = definition.ContentTypeId;
-
- }
- else if (!string.IsNullOrEmpty(definition.ContentTypeName))
- {
- contentTypeId = ContentTypeLookupService
- .LookupContentTypeByName(folderModelHost.CurrentList, definition.ContentTypeName)
- .Id.ToString();
- }
-
- var context = folder.Context;
-
- var pageName = GetSafePageFileName(definition);
- var currentPageFile = GetCurrentPage(list, folder, pageName);
-
- InvokeOnModelEvent(this, new ModelEventArgs
- {
- CurrentModelNode = null,
- Model = null,
- EventType = ModelEventType.OnProvisioning,
- Object = currentPageFile,
- ObjectType = typeof(File),
- ObjectDefinition = definition,
- ModelHost = modelHost
- });
-
- ModuleFileModelHandler.WithSafeFileOperation(list, currentPageFile, f =>
- {
- // create if only file does not exist
- // overriting spoils the fields's content
- // Investigate publishing page provision, Content property #744
- // https://github.com/SubPointSolutions/spmeta2/issues/744
-
- if (f == null || !f.Exists)
- {
- var file = new FileCreationInformation();
- var pageContent = PublishingPageTemplates.RedirectionPageMarkup;
-
- file.Url = pageName;
- file.Content = Encoding.UTF8.GetBytes(pageContent);
- file.Overwrite = definition.NeedOverride;
-
- return folder.Files.Add(file);
- }
-
- return f;
- },
- newFile =>
- {
- var newFileItem = newFile.ListItemAllFields;
- context.Load(newFileItem);
- context.ExecuteQueryWithTrace();
-
- var site = folderModelHost.HostSite;
- var currentPageLayoutItem = FindPageLayoutItem(site, definition.PageLayoutFileName);
-
- var currentPageLayoutItemContext = currentPageLayoutItem.Context;
- var publishingFile = currentPageLayoutItem.File;
-
- currentPageLayoutItemContext.Load(currentPageLayoutItem);
- currentPageLayoutItemContext.Load(currentPageLayoutItem, i => i.DisplayName);
- currentPageLayoutItemContext.Load(publishingFile);
-
- currentPageLayoutItemContext.ExecuteQueryWithTrace();
-
- // settig up dfault values if there is PublishingPageLayout setup
- FieldLookupService.EnsureDefaultValues(newFileItem, definition.DefaultValues);
-
- if (!string.IsNullOrEmpty(definition.Title))
- newFileItem[BuiltInInternalFieldNames.Title] = definition.Title;
-
- if (!string.IsNullOrEmpty(definition.Description))
- newFileItem[BuiltInInternalFieldNames.Comments] = definition.Description;
-
- if (!string.IsNullOrEmpty(definition.Content))
- newFileItem[BuiltInInternalPublishingFieldNames.PublishingPageContent] = definition.Content;
-
- newFileItem[BuiltInInternalFieldNames.PublishingPageLayout] = publishingFile.ServerRelativeUrl + ", " + currentPageLayoutItem.DisplayName;
-
- var associatedContentTypeStringValue = ConvertUtils.ToString(currentPageLayoutItem[BuiltInInternalFieldNames.PublishingAssociatedContentType]);
-
- if (!string.IsNullOrEmpty(associatedContentTypeStringValue))
- {
- var contentTypeValues = associatedContentTypeStringValue.Split(new string[] { ";#" }, StringSplitOptions.None);
- var associatedContentTypeName = contentTypeValues[1];
- var associatedContentTypeId = contentTypeValues[2];
-
- newFileItem[BuiltInInternalFieldNames.ContentTypeId] = associatedContentTypeId;
- }
-
- if (!string.IsNullOrEmpty(contentTypeId))
- newFileItem[BuiltInInternalFieldNames.ContentTypeId] = contentTypeId;
-
- FieldLookupService.EnsureValues(newFileItem, definition.Values, true);
-
- newFileItem.Update();
-
- context.ExecuteQueryWithTrace();
- });
-
- currentPageFile = GetCurrentPage(folderModelHost.CurrentList, folder, pageName);
-
- InvokeOnModelEvent(this, new ModelEventArgs
- {
- CurrentModelNode = null,
- Model = null,
- EventType = ModelEventType.OnProvisioned,
- Object = currentPageFile,
- ObjectType = typeof(File),
- ObjectDefinition = definition,
- ModelHost = modelHost
- });
-
- context.ExecuteQueryWithTrace();
- }
-
- private ListItem FindPageLayoutItem(Site site, string pageLayoutFileName)
- {
- var rootWeb = site.RootWeb;
- var layoutsList = rootWeb.GetCatalog((int)ListTemplateType.MasterPageCatalog);
-
- var layoutItem = SearchItemByName(layoutsList, layoutsList.RootFolder, pageLayoutFileName);
-
- return layoutItem;
- }
-
- #endregion
- }
-}
+using System;
+using System.Linq;
+using System.Text;
+using Microsoft.SharePoint.Client;
+using SPMeta2.Common;
+using SPMeta2.CSOM.Extensions;
+using SPMeta2.CSOM.ModelHandlers;
+using SPMeta2.CSOM.ModelHosts;
+using SPMeta2.Definitions;
+using SPMeta2.Definitions.Base;
+using SPMeta2.Enumerations;
+using SPMeta2.ModelHosts;
+using SPMeta2.Standard.Definitions;
+using SPMeta2.Utils;
+using SPMeta2.Standard.Enumerations;
+using SPMeta2.Exceptions;
+
+namespace SPMeta2.CSOM.Standard.ModelHandlers
+{
+ public class PublishingPageModelHandler : CSOMModelHandlerBase
+ {
+ #region properties
+
+ public override Type TargetType
+ {
+ get { return typeof(PublishingPageDefinition); }
+ }
+
+ #endregion
+
+ #region methods
+
+ public override void WithResolvingModelHost(ModelHostResolveContext modelHostContext)
+ {
+ var modelHost = modelHostContext.ModelHost;
+ var model = modelHostContext.Model;
+ var childModelType = modelHostContext.ChildModelType;
+ var action = modelHostContext.Action;
+
+ var folderModelHost = modelHost as FolderModelHost;
+ var definition = model as PublishingPageDefinition;
+
+ Folder folder = folderModelHost.CurrentListFolder;
+
+ if (folder != null && definition != null)
+ {
+ var context = folder.Context;
+ var currentPage = GetCurrentPage(folderModelHost.CurrentList, folder, GetSafePageFileName(definition));
+
+ if (currentPage == null)
+ {
+ throw new SPMeta2Exception(
+ string.Format("Cannot find publishing page fo definition:[{0}]",
+ definition));
+ }
+
+ if (typeof(WebPartDefinitionBase).IsAssignableFrom(childModelType)
+ || childModelType == typeof(DeleteWebPartsDefinition))
+ {
+ var listItemHost = ModelHostBase.Inherit(folderModelHost, itemHost =>
+ {
+ itemHost.HostFile = currentPage;
+ itemHost.HostList = folderModelHost.CurrentList;
+ });
+
+ action(listItemHost);
+
+ //currentListItem.Update();
+ }
+ else if (typeof(BreakRoleInheritanceDefinition).IsAssignableFrom(childModelType)
+ || typeof(SecurityGroupLinkDefinition).IsAssignableFrom(childModelType))
+ {
+ var currentListItem = currentPage.ListItemAllFields;
+ context.Load(currentListItem);
+ context.ExecuteQueryWithTrace();
+
+ var listItemHost = ModelHostBase.Inherit(folderModelHost, itemHost =>
+ {
+
+ itemHost.HostListItem = currentListItem;
+ });
+
+ action(listItemHost);
+ }
+ else
+ {
+ action(currentPage);
+ }
+
+ //context.ExecuteQueryWithTrace();
+ }
+ else
+ {
+ action(modelHost);
+ }
+ }
+
+ protected string GetSafePageFileName(PageDefinitionBase page)
+ {
+ var fileName = page.FileName;
+ if (!fileName.EndsWith(".aspx")) fileName += ".aspx";
+
+ return fileName;
+ }
+
+
+ protected File GetCurrentPage(List list, Folder folder, string pageName)
+ {
+ var item = SearchItemByName(list, folder, pageName);
+
+ if (item != null)
+ return item.File;
+
+ return null;
+ }
+
+ protected ListItem SearchItemByName(List list, Folder folder, string pageName)
+ {
+ var context = list.Context;
+
+ if (folder != null)
+ {
+ if (!folder.IsPropertyAvailable("ServerRelativeUrl"))
+ {
+ folder.Context.Load(folder, f => f.ServerRelativeUrl);
+ folder.Context.ExecuteQueryWithTrace();
+ }
+ }
+
+ var dQuery = new CamlQuery();
+
+ string QueryString = "" +
+ "" +
+ "" +
+ "" + pageName + "" +
+ "" +
+ "";
+
+ dQuery.ViewXml = QueryString;
+
+ if (folder != null)
+ dQuery.FolderServerRelativeUrl = folder.ServerRelativeUrl;
+
+ var collListItems = list.GetItems(dQuery);
+
+ context.Load(collListItems);
+ context.ExecuteQueryWithTrace();
+
+ return collListItems.FirstOrDefault();
+
+ }
+
+ protected ListItem FindPublishingPage(List list, Folder folder, PublishingPageDefinition definition)
+ {
+ var pageName = GetSafePageFileName(definition);
+ var file = GetCurrentPage(list, folder, pageName);
+
+ if (file != null)
+ return file.ListItemAllFields;
+
+ return null;
+ }
+
+ public override void DeployModel(object modelHost, DefinitionBase model)
+ {
+ var folderModelHost = modelHost.WithAssertAndCast("modelHost", value => value.RequireNotNull());
+
+ var folder = folderModelHost.CurrentListFolder;
+ var list = folderModelHost.CurrentList;
+
+ var definition = model.WithAssertAndCast("model", value => value.RequireNotNull());
+
+ var contentTypeId = string.Empty;
+
+ // pre load content type
+ if (!string.IsNullOrEmpty(definition.ContentTypeId))
+ {
+ contentTypeId = definition.ContentTypeId;
+
+ }
+ else if (!string.IsNullOrEmpty(definition.ContentTypeName))
+ {
+ contentTypeId = ContentTypeLookupService
+ .LookupContentTypeByName(folderModelHost.CurrentList, definition.ContentTypeName)
+ .Id.ToString();
+ }
+
+ var context = folder.Context;
+
+ var pageName = GetSafePageFileName(definition);
+ var currentPageFile = GetCurrentPage(list, folder, pageName);
+
+ InvokeOnModelEvent(this, new ModelEventArgs
+ {
+ CurrentModelNode = null,
+ Model = null,
+ EventType = ModelEventType.OnProvisioning,
+ Object = currentPageFile,
+ ObjectType = typeof(File),
+ ObjectDefinition = definition,
+ ModelHost = modelHost
+ });
+
+ ModuleFileModelHandler.WithSafeFileOperation(list, currentPageFile, f =>
+ {
+ // create if only file does not exist
+ // overriting spoils the fields's content
+ // Investigate publishing page provision, Content property #744
+ // https://github.com/SubPointSolutions/spmeta2/issues/744
+
+ if (f == null || !f.Exists)
+ {
+ var file = new FileCreationInformation();
+ var pageContent = PublishingPageTemplates.RedirectionPageMarkup;
+
+ file.Url = pageName;
+ file.Content = Encoding.UTF8.GetBytes(pageContent);
+ file.Overwrite = definition.NeedOverride;
+
+ return folder.Files.Add(file);
+ }
+
+ return f;
+ },
+ newFile =>
+ {
+ var newFileItem = newFile.ListItemAllFields;
+ context.Load(newFileItem);
+ context.ExecuteQueryWithTrace();
+
+ var site = folderModelHost.HostSite;
+ var currentPageLayoutItem = FindPageLayoutItem(site, definition.PageLayoutFileName);
+
+ var currentPageLayoutItemContext = currentPageLayoutItem.Context;
+ var publishingFile = currentPageLayoutItem.File;
+
+ currentPageLayoutItemContext.Load(currentPageLayoutItem);
+ currentPageLayoutItemContext.Load(currentPageLayoutItem, i => i.DisplayName);
+ currentPageLayoutItemContext.Load(publishingFile);
+
+ currentPageLayoutItemContext.ExecuteQueryWithTrace();
+
+ // settig up dfault values if there is PublishingPageLayout setup
+ FieldLookupService.EnsureDefaultValues(newFileItem, definition.DefaultValues);
+
+ if (!string.IsNullOrEmpty(definition.Title))
+ newFileItem[BuiltInInternalFieldNames.Title] = definition.Title;
+
+ if (!string.IsNullOrEmpty(definition.Description))
+ newFileItem[BuiltInInternalFieldNames.Comments] = definition.Description;
+
+ if (!string.IsNullOrEmpty(definition.Content))
+ newFileItem[BuiltInInternalPublishingFieldNames.PublishingPageContent] = definition.Content;
+
+ newFileItem[BuiltInInternalFieldNames.PublishingPageLayout] = publishingFile.ServerRelativeUrl + ", " + currentPageLayoutItem.DisplayName;
+
+ var associatedContentTypeStringValue = ConvertUtils.ToString(currentPageLayoutItem[BuiltInInternalFieldNames.PublishingAssociatedContentType]);
+
+ if (!string.IsNullOrEmpty(associatedContentTypeStringValue))
+ {
+ var contentTypeValues = associatedContentTypeStringValue.Split(new string[] { ";#" }, StringSplitOptions.None);
+ var associatedContentTypeName = contentTypeValues[1];
+ var associatedContentTypeId = contentTypeValues[2];
+
+ newFileItem[BuiltInInternalFieldNames.ContentTypeId] = associatedContentTypeId;
+ }
+
+ if (!string.IsNullOrEmpty(contentTypeId))
+ newFileItem[BuiltInInternalFieldNames.ContentTypeId] = contentTypeId;
+
+ FieldLookupService.EnsureValues(newFileItem, definition.Values, true);
+
+ newFileItem.Update();
+
+ context.ExecuteQueryWithTrace();
+ });
+
+ currentPageFile = GetCurrentPage(folderModelHost.CurrentList, folder, pageName);
+
+ InvokeOnModelEvent(this, new ModelEventArgs
+ {
+ CurrentModelNode = null,
+ Model = null,
+ EventType = ModelEventType.OnProvisioned,
+ Object = currentPageFile,
+ ObjectType = typeof(File),
+ ObjectDefinition = definition,
+ ModelHost = modelHost
+ });
+
+ context.ExecuteQueryWithTrace();
+ }
+
+ private ListItem FindPageLayoutItem(Site site, string pageLayoutFileName)
+ {
+ var rootWeb = site.RootWeb;
+ var layoutsList = rootWeb.GetCatalog((int)ListTemplateType.MasterPageCatalog);
+
+ var layoutItem = SearchItemByName(layoutsList, layoutsList.RootFolder, pageLayoutFileName);
+
+ return layoutItem;
+ }
+
+ #endregion
+ }
+}
diff --git a/SPMeta2/SPMeta2.CSOM.Standard/ModelHandlers/Webparts/ContentByQueryWebPartModelHandler.cs b/SPMeta2/SPMeta2.CSOM.Standard/ModelHandlers/Webparts/ContentByQueryWebPartModelHandler.cs
index 3bb2ada6b..fa8e0a17e 100644
--- a/SPMeta2/SPMeta2.CSOM.Standard/ModelHandlers/Webparts/ContentByQueryWebPartModelHandler.cs
+++ b/SPMeta2/SPMeta2.CSOM.Standard/ModelHandlers/Webparts/ContentByQueryWebPartModelHandler.cs
@@ -243,7 +243,8 @@ protected override string GetWebpartXmlDefinition(ListItemModelHost listItemMode
var targetWeb = webLookup.GetTargetWeb(listItemModelHost.HostSite,
typedDefinition.WebUrl,
- typedDefinition.WebId);
+ typedDefinition.WebId,
+ listItemModelHost);
var list = targetWeb.QueryAndGetListByTitle(typedDefinition.ListName);
wpXml.SetOrUpdateProperty("ListGuid", list.Id.ToString("D"));
@@ -273,7 +274,8 @@ protected override string GetWebpartXmlDefinition(ListItemModelHost listItemMode
var targetWeb = webLookup.GetTargetWeb(listItemModelHost.HostSite,
typedDefinition.WebUrl,
- typedDefinition.WebId);
+ typedDefinition.WebId,
+ listItemModelHost);
var list = targetWeb.QueryAndGetListByUrl(typedDefinition.ListUrl);
wpXml.SetOrUpdateProperty("ListGuid", list.Id.ToString("D"));
diff --git a/SPMeta2/SPMeta2.CSOM.Standard/Properties/AssemblyInfo.cs b/SPMeta2/SPMeta2.CSOM.Standard/Properties/AssemblyInfo.cs
index 49e68f197..a7d971ed4 100644
--- a/SPMeta2/SPMeta2.CSOM.Standard/Properties/AssemblyInfo.cs
+++ b/SPMeta2/SPMeta2.CSOM.Standard/Properties/AssemblyInfo.cs
@@ -32,4 +32,4 @@
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.2.17104.0417")]
+[assembly: AssemblyFileVersion("1.2.17191.0958")]
diff --git a/SPMeta2/SPMeta2.CSOM/ModelHandlers/Base/NavigationNodeModelHandler.cs b/SPMeta2/SPMeta2.CSOM/ModelHandlers/Base/NavigationNodeModelHandler.cs
index ec20d9cd5..8d9783ff5 100644
--- a/SPMeta2/SPMeta2.CSOM/ModelHandlers/Base/NavigationNodeModelHandler.cs
+++ b/SPMeta2/SPMeta2.CSOM/ModelHandlers/Base/NavigationNodeModelHandler.cs
@@ -54,8 +54,6 @@ protected NavigationNode LookupNodeForHost(object modelHost, NavigationNodeDefin
{
if (modelHost is WebModelHost)
{
-
-
return LookupNavigationNode(GetNavigationNodeCollection((modelHost as WebModelHost).HostWeb), definition);
}
else if (modelHost is NavigationNodeModelHost)
diff --git a/SPMeta2/SPMeta2.CSOM/ModelHandlers/ContentTypeLinkModelHandler.cs b/SPMeta2/SPMeta2.CSOM/ModelHandlers/ContentTypeLinkModelHandler.cs
index e980b76f0..19c95738e 100644
--- a/SPMeta2/SPMeta2.CSOM/ModelHandlers/ContentTypeLinkModelHandler.cs
+++ b/SPMeta2/SPMeta2.CSOM/ModelHandlers/ContentTypeLinkModelHandler.cs
@@ -1,4 +1,6 @@
using System;
+using System.Linq;
+using System.Collections.Generic;
using Microsoft.SharePoint.Client;
using SPMeta2.Common;
using SPMeta2.CSOM.Common;
@@ -10,6 +12,7 @@
using SPMeta2.Utils;
using SPMeta2.CSOM.ModelHosts;
using SPMeta2.ModelHosts;
+using SPMeta2.Exceptions;
namespace SPMeta2.CSOM.ModelHandlers
{
@@ -33,7 +36,15 @@ public override void WithResolvingModelHost(ModelHostResolveContext modelHostCon
var list = listModelHost.HostList;
var context = list.Context;
- context.Load(list, l => l.ContentTypes);
+ //context.Load(list, l => l.ContentTypes);
+ context.Load(list, l => l.ContentTypes.Include(
+ ct => ct.Id,
+ ct => ct.Name,
+ ct => ct.ReadOnly,
+
+ ct => ct.Parent.Id
+ ));
+
context.ExecuteQueryWithTrace();
var contentType = FindListContentType(list, contentTypeLinkModel);
@@ -48,7 +59,12 @@ public override void WithResolvingModelHost(ModelHostResolveContext modelHostCon
action(contentTypeLinkHost);
if (contentTypeLinkHost.ShouldUpdateHost)
- contentType.Update(false);
+ {
+ if (!contentType.ReadOnly)
+ {
+ contentType.Update(false);
+ }
+ }
context.ExecuteQueryWithTrace();
}
@@ -72,15 +88,47 @@ public override void DeployModel(object modelHost, DefinitionBase model)
var web = list.ParentWeb;
// context.Load(web, w => w.AvailableContentTypes);
- context.Load(list, l => l.ContentTypes);
+ //context.Load(list, l => l.ContentTypes);
+ context.Load(list, l => l.ContentTypes.Include(
+ ct => ct.Id,
+ ct => ct.Name,
+ ct => ct.ReadOnly,
+
+ ct => ct.Parent.Id));
context.ExecuteQueryWithTrace();
- var targetContentType = web.AvailableContentTypes.GetById(contentTypeLinkModel.ContentTypeId);
- var listContentType = FindListContentType(list, contentTypeLinkModel);
+ // load by id, then fallback on name
+ ContentType targetContentType = null;
- context.Load(targetContentType);
- context.ExecuteQueryWithTrace();
+ if (!string.IsNullOrEmpty(contentTypeLinkModel.ContentTypeId))
+ {
+ targetContentType = web.AvailableContentTypes.GetById(contentTypeLinkModel.ContentTypeId);
+ context.Load(targetContentType);
+ context.ExecuteQueryWithTrace();
+ }
+
+ if (targetContentType == null && !string.IsNullOrEmpty(contentTypeLinkModel.ContentTypeName))
+ {
+ var name = contentTypeLinkModel.ContentTypeName;
+
+ context.Load(web.AvailableContentTypes, c => c.Where(w => w.Name == name));
+ context.ExecuteQueryWithTrace();
+
+ targetContentType = web.AvailableContentTypes[0];
+ }
+
+ if (targetContentType == null)
+ {
+ TraceService.ErrorFormat((int)LogEventId.ModelProvisionCoreCall,
+ "Cannot find site content type by ID: [{0}] or Name:[{1}].",
+ new object[] { contentTypeLinkModel.ContentTypeId, contentTypeLinkModel.ContentTypeName });
+
+ throw new SPMeta2Exception(string.Format("Cannot find site content type by ID: [{0}] or Name:[{1}].",
+ new object[] { contentTypeLinkModel.ContentTypeId, contentTypeLinkModel.ContentTypeName }));
+ }
+
+ var listContentType = FindListContentType(list, contentTypeLinkModel);
InvokeOnModelEvent(this, new ModelEventArgs
{
@@ -175,6 +223,8 @@ protected ContentType FindListContentType(List list, ContentTypeLinkDefinition c
result = list.ContentTypes.FindByName(contentTypeLinkModel.ContentTypeName);
}
+
+
// trying to find by content type id
// will never be resolved, actually
// list content types have different ID
@@ -183,7 +233,7 @@ protected ContentType FindListContentType(List list, ContentTypeLinkDefinition c
// result = list.ContentTypes.GetById(contentTypeLinkModel.ContentTypeId);
// trying to find by beat match
- if (result == null)
+ if (result == null && !string.IsNullOrEmpty(contentTypeLinkModel.ContentTypeId))
{
TraceService.InformationFormat((int)LogEventId.ModelProvisionCoreCall,
"Trying to find list content type by ContentTypeId: [{0}]", contentTypeLinkModel.ContentTypeId);
@@ -192,10 +242,26 @@ protected ContentType FindListContentType(List list, ContentTypeLinkDefinition c
// http://officespdev.uservoice.com/forums/224641-general/suggestions/6356289-expose-spcontenttypecollection-bestmatch-for-csom
// TODO, correct best match impl
+
+ // "Item" ContentTypeLink #1016
+ // replacing best match, it does not work on list scoped content types
+
+ // Content type operations within a list
+ // http://docs.subpointsolutions.com/spmeta2/kb/kb-m2-000003.html
+
+ //foreach (var contentType in list.ContentTypes)
+ //{
+ // if (contentType.Id.ToString().ToUpper().StartsWith(contentTypeLinkModel.ContentTypeId.ToUpper()))
+ // result = contentType;
+ //}
+
foreach (var contentType in list.ContentTypes)
{
- if (contentType.Id.ToString().ToUpper().StartsWith(contentTypeLinkModel.ContentTypeId.ToUpper()))
+ if (contentType.Parent.Id.ToString().ToUpper() == contentTypeLinkModel.ContentTypeId.ToUpper())
+ {
result = contentType;
+ break;
+ }
}
}
diff --git a/SPMeta2/SPMeta2.CSOM/ModelHandlers/ContentTypeModelHandler.cs b/SPMeta2/SPMeta2.CSOM/ModelHandlers/ContentTypeModelHandler.cs
index 935fd45dc..fa969ec13 100644
--- a/SPMeta2/SPMeta2.CSOM/ModelHandlers/ContentTypeModelHandler.cs
+++ b/SPMeta2/SPMeta2.CSOM/ModelHandlers/ContentTypeModelHandler.cs
@@ -82,6 +82,9 @@ public override void WithResolvingModelHost(ModelHostResolveContext modelHostCon
var id = contentTypeModel.GetContentTypeId();
var currentContentType = web.ContentTypes.GetById(id);
+ context.Load(currentContentType);
+ context.Load(currentContentType, c => c.ReadOnly);
+
context.ExecuteQueryWithTrace();
#endif
@@ -96,6 +99,12 @@ public override void WithResolvingModelHost(ModelHostResolveContext modelHostCon
context.ExecuteQueryWithTrace();
var currentContentType = currentContentTypes.FirstOrDefault();
+
+ context.Load(currentContentType);
+ context.Load(currentContentType, c => c.ReadOnly);
+
+ context.ExecuteQueryWithTrace();
+
#endif
if (childModelType == typeof(ModuleFileDefinition))
@@ -124,7 +133,11 @@ public override void WithResolvingModelHost(ModelHostResolveContext modelHostCon
}
TraceService.Information((int)LogEventId.ModelProvisionCoreCall, "Calling currentContentType.Update(true)");
- currentContentType.Update(true);
+
+ if (!currentContentType.ReadOnly)
+ {
+ currentContentType.Update(true);
+ }
context.ExecuteQueryWithTrace();
}
@@ -335,9 +348,12 @@ public override void DeployModel(object modelHost, DefinitionBase model)
if (!currentContentType.Sealed)
{
TraceService.Information((int)LogEventId.ModelProvisionCoreCall, "Calling currentContentType.Update(true)");
- currentContentType.Update(true);
- context.ExecuteQueryWithTrace();
+ if (!currentContentType.ReadOnly)
+ {
+ currentContentType.Update(true);
+ context.ExecuteQueryWithTrace();
+ }
}
#endif
}
diff --git a/SPMeta2/SPMeta2.CSOM/ModelHandlers/ContentTypes/HideContentTypeLinksModelHandler.cs b/SPMeta2/SPMeta2.CSOM/ModelHandlers/ContentTypes/HideContentTypeLinksModelHandler.cs
index d91d4c1ac..3da8393cd 100644
--- a/SPMeta2/SPMeta2.CSOM/ModelHandlers/ContentTypes/HideContentTypeLinksModelHandler.cs
+++ b/SPMeta2/SPMeta2.CSOM/ModelHandlers/ContentTypes/HideContentTypeLinksModelHandler.cs
@@ -39,9 +39,16 @@ private void DeployHideContentTypeLinks(object modelHost, List list, Folder fold
{
var context = folder.Context;
- TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Fetching list content types and the order");
+ TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Fetching list content types and the order");
+
+ context.Load(list, l => l.ContentTypes.Include(
+ ct => ct.Id,
+ ct => ct.Name,
+ ct => ct.ReadOnly,
+
+ ct => ct.Parent.Id
+ ));
- context.Load(list, l => l.ContentTypes);
context.Load(folder, f => f.ContentTypeOrder);
context.ExecuteQueryWithTrace();
@@ -81,8 +88,15 @@ private void DeployHideContentTypeLinks(object modelHost, List list, Folder fold
}
if (listContentType == null && !string.IsNullOrEmpty(srcContentTypeDef.ContentTypeId))
- {
- listContentType = listContentTypes.FirstOrDefault(c => c.Id.ToString().ToUpper().StartsWith(srcContentTypeDef.ContentTypeId.ToUpper()));
+ {
+ foreach (var contentType in list.ContentTypes)
+ {
+ if (contentType.Parent.Id.ToString().ToUpper() == srcContentTypeDef.ContentTypeId.ToUpper())
+ {
+ listContentType = contentType;
+ break;
+ }
+ }
if (listContentType != null)
{
@@ -95,7 +109,7 @@ private void DeployHideContentTypeLinks(object modelHost, List list, Folder fold
{
#if !NET35
- var existingCt = newContentTypeOrder.FirstOrDefault(ct => ct.StringValue.ToUpper() == listContentType.StringId.ToUpper());
+ var existingCt = newContentTypeOrder.FirstOrDefault(ct => ct.ToString().ToUpper() == listContentType.Id.ToString().ToUpper());
if (existingCt != null && newContentTypeOrder.Contains(existingCt))
{
diff --git a/SPMeta2/SPMeta2.CSOM/ModelHandlers/ContentTypes/RemoveContentTypeLinksModelHandler.cs b/SPMeta2/SPMeta2.CSOM/ModelHandlers/ContentTypes/RemoveContentTypeLinksModelHandler.cs
index b7006327a..7ada4b272 100644
--- a/SPMeta2/SPMeta2.CSOM/ModelHandlers/ContentTypes/RemoveContentTypeLinksModelHandler.cs
+++ b/SPMeta2/SPMeta2.CSOM/ModelHandlers/ContentTypes/RemoveContentTypeLinksModelHandler.cs
@@ -37,9 +37,15 @@ private void DeployHideContentTypeLinks(object modelHost, List list, RemoveConte
{
var context = list.Context;
- TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Fetching list content types");
-
- context.Load(list, l => l.ContentTypes);
+ TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Fetching list content types");
+
+ context.Load(list, l => l.ContentTypes.Include(
+ ct => ct.Id,
+ ct => ct.Name,
+ ct => ct.ReadOnly,
+
+ ct => ct.Parent.Id
+ ));
context.ExecuteQueryWithTrace();
var listContentTypes = list.ContentTypes.ToList();
@@ -72,10 +78,15 @@ private void DeployHideContentTypeLinks(object modelHost, List list, RemoveConte
}
if (listContentType == null && !string.IsNullOrEmpty(srcContentTypeDef.ContentTypeId))
- {
- listContentType =
- listContentTypes.FirstOrDefault(
- c => c.Id.ToString().ToUpper().StartsWith(srcContentTypeDef.ContentTypeId.ToUpper()));
+ {
+ foreach (var contentType in list.ContentTypes)
+ {
+ if (contentType.Parent.Id.ToString().ToUpper() == srcContentTypeDef.ContentTypeId.ToUpper())
+ {
+ listContentType = contentType;
+ break;
+ }
+ }
if (listContentType != null)
{
diff --git a/SPMeta2/SPMeta2.CSOM/ModelHandlers/ContentTypes/UniqueContentTypeOrderModelHandler.cs b/SPMeta2/SPMeta2.CSOM/ModelHandlers/ContentTypes/UniqueContentTypeOrderModelHandler.cs
index 40c696780..6c8673df7 100644
--- a/SPMeta2/SPMeta2.CSOM/ModelHandlers/ContentTypes/UniqueContentTypeOrderModelHandler.cs
+++ b/SPMeta2/SPMeta2.CSOM/ModelHandlers/ContentTypes/UniqueContentTypeOrderModelHandler.cs
@@ -40,9 +40,15 @@ private void DeployContentTypeOrder(object modelHost, List list, Folder folder,
{
var context = folder.Context;
- TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Fetching list content types and the order");
-
- context.Load(list, l => l.ContentTypes);
+ TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Fetching list content types and the order");
+
+ context.Load(list, l => l.ContentTypes.Include(
+ ct => ct.Id,
+ ct => ct.Name,
+ ct => ct.ReadOnly,
+
+ ct => ct.Parent.Id
+ ));
context.Load(folder, f => f.ContentTypeOrder);
context.ExecuteQueryWithTrace();
@@ -79,10 +85,16 @@ private void DeployContentTypeOrder(object modelHost, List list, Folder folder,
}
}
-#if !NET35
if (listContentType == null && !string.IsNullOrEmpty(srcContentTypeDef.ContentTypeId))
- {
- listContentType = listContentTypes.FirstOrDefault(c => c.Id.ToString().ToUpper().StartsWith(srcContentTypeDef.ContentTypeId.ToUpper()));
+ {
+ foreach (var contentType in list.ContentTypes)
+ {
+ if (contentType.Parent.Id.ToString().ToUpper() == srcContentTypeDef.ContentTypeId.ToUpper())
+ {
+ listContentType = contentType;
+ break;
+ }
+ }
if (listContentType != null)
{
@@ -90,7 +102,6 @@ private void DeployContentTypeOrder(object modelHost, List list, Folder folder,
string.Format("Found content type by matching ID start:[{0}]", srcContentTypeDef.ContentTypeId));
}
}
-#endif
if (listContentType != null && !newContentTypeOrder.Contains(listContentType.Id))
{
diff --git a/SPMeta2/SPMeta2.CSOM/ModelHandlers/FieldModelHandler.cs b/SPMeta2/SPMeta2.CSOM/ModelHandlers/FieldModelHandler.cs
index b3c87f8d8..4cf6b40f2 100644
--- a/SPMeta2/SPMeta2.CSOM/ModelHandlers/FieldModelHandler.cs
+++ b/SPMeta2/SPMeta2.CSOM/ModelHandlers/FieldModelHandler.cs
@@ -295,6 +295,9 @@ protected virtual void ProcessFieldProperties(Field field, FieldDefinition defin
field.Required = definition.Required;
+ if (definition.ReadOnlyField.HasValue)
+ field.ReadOnlyField = definition.ReadOnlyField.Value;
+
if (!string.IsNullOrEmpty(definition.StaticName))
field.StaticName = definition.StaticName;
diff --git a/SPMeta2/SPMeta2.CSOM/ModelHandlers/Fields/LookupFieldModelHandler.cs b/SPMeta2/SPMeta2.CSOM/ModelHandlers/Fields/LookupFieldModelHandler.cs
index 80a735172..39697d555 100644
--- a/SPMeta2/SPMeta2.CSOM/ModelHandlers/Fields/LookupFieldModelHandler.cs
+++ b/SPMeta2/SPMeta2.CSOM/ModelHandlers/Fields/LookupFieldModelHandler.cs
@@ -8,6 +8,7 @@
using SPMeta2.Enumerations;
using SPMeta2.Services;
using SPMeta2.Utils;
+using SPMeta2.CSOM.ModelHosts;
namespace SPMeta2.CSOM.ModelHandlers.Fields
{
@@ -29,16 +30,38 @@ protected override Type GetTargetFieldType(FieldDefinition model)
#region methods
+ protected override bool PreloadProperties(Field field)
+ {
+ base.PreloadProperties(field);
+
+ var context = field.Context;
+ context.Load(field, f => f.SchemaXml);
+
+ return true;
+ }
+
+
protected override void ProcessFieldProperties(Field field, FieldDefinition fieldModel)
{
+ var typedFieldModel = fieldModel.WithAssertAndCast("model", value => value.RequireNotNull());
+
var site = HostSite;
var context = site.Context;
+ // CountRelated in Lookups in CSOM #1018
+ // https://github.com/SubPointSolutions/spmeta2/issues/673
+ if (typedFieldModel.CountRelated.HasValue)
+ {
+ var fieldXml = XDocument.Parse(field.SchemaXml);
+ fieldXml.Root.SetAttribute("CountRelated", typedFieldModel.CountRelated.ToString().ToUpper());
+
+ field.SchemaXml = fieldXml.ToString();
+ }
+
// let base setting be setup
base.ProcessFieldProperties(field, fieldModel);
var typedField = field.Context.CastTo(field);
- var typedFieldModel = fieldModel.WithAssertAndCast("model", value => value.RequireNotNull());
if (!typedField.IsPropertyAvailable("LookupList"))
{
@@ -118,7 +141,12 @@ public Web GetTargetWeb(Site site, LookupFieldDefinition definition)
return GetTargetWeb(site, definition.LookupWebUrl, definition.LookupWebId);
}
- public Web GetTargetWeb(Site site, string webUrl, Guid? webId)
+ protected Web GetTargetWeb(Site site, string webUrl, Guid? webId)
+ {
+ return GetTargetWeb(site, webUrl, webId, ModelHost);
+ }
+
+ public Web GetTargetWeb(Site site, string webUrl, Guid? webId, object replacementObject)
{
var context = site.Context;
@@ -133,16 +161,23 @@ public Web GetTargetWeb(Site site, string webUrl, Guid? webId)
}
else if (!string.IsNullOrEmpty(webUrl))
{
- var oldValue = CSOMTokenReplacementService.AllowClientContextAsTokenReplacementContext;
+ if (replacementObject == null)
+ throw new ArgumentNullException("replacementObject");
+
+ //var oldValue = CSOMTokenReplacementService.AllowClientContextAsTokenReplacementContext;
try
{
- CSOMTokenReplacementService.AllowClientContextAsTokenReplacementContext = true;
+ // restrict, only site / web
+ // Tokens in LookupWebUrl #1013
+ // https://github.com/SubPointSolutions/spmeta2/issues/1013
+
+ //CSOMTokenReplacementService.AllowClientContextAsTokenReplacementContext = false;
var targetWebUrl = TokenReplacementService.ReplaceTokens(new TokenReplacementContext
{
Value = webUrl,
- Context = context
+ Context = replacementObject
}).Value;
// server relative url, ensure / in the beginning
@@ -158,7 +193,7 @@ public Web GetTargetWeb(Site site, string webUrl, Guid? webId)
}
finally
{
- CSOMTokenReplacementService.AllowClientContextAsTokenReplacementContext = oldValue;
+ //CSOMTokenReplacementService.AllowClientContextAsTokenReplacementContext = oldValue;
}
}
diff --git a/SPMeta2/SPMeta2.CSOM/ModelHandlers/ListViewModelHandler.cs b/SPMeta2/SPMeta2.CSOM/ModelHandlers/ListViewModelHandler.cs
index 57199a4a8..3478ff6df 100644
--- a/SPMeta2/SPMeta2.CSOM/ModelHandlers/ListViewModelHandler.cs
+++ b/SPMeta2/SPMeta2.CSOM/ModelHandlers/ListViewModelHandler.cs
@@ -262,6 +262,9 @@ public virtual void MapListViewProperties(List list, View listView, ListViewDefi
if (definition.RowLimit > 0)
listView.RowLimit = (uint)definition.RowLimit;
+ if (definition.MobileDefaultView.HasValue)
+ listView.MobileDefaultView = definition.MobileDefaultView.Value;
+
listView.DefaultView = definition.IsDefault;
listView.Paged = definition.IsPaged;
diff --git a/SPMeta2/SPMeta2.CSOM/ModelHandlers/UserCustomActionModelHandler.cs b/SPMeta2/SPMeta2.CSOM/ModelHandlers/UserCustomActionModelHandler.cs
index d097fa8c2..0ffbe6025 100644
--- a/SPMeta2/SPMeta2.CSOM/ModelHandlers/UserCustomActionModelHandler.cs
+++ b/SPMeta2/SPMeta2.CSOM/ModelHandlers/UserCustomActionModelHandler.cs
@@ -1,184 +1,200 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Microsoft.SharePoint.Client;
-using SPMeta2.Common;
-using SPMeta2.CSOM.Extensions;
-using SPMeta2.CSOM.ModelHosts;
-using SPMeta2.Definitions;
-using SPMeta2.Enumerations;
-using SPMeta2.ModelHandlers;
-using SPMeta2.Services;
-using SPMeta2.Utils;
-
-namespace SPMeta2.CSOM.ModelHandlers
-{
- public class UserCustomActionModelHandler : CSOMModelHandlerBase
- {
- #region properties
-
- public override Type TargetType
- {
- get { return typeof(UserCustomActionDefinition); }
- }
-
- #endregion
-
- #region methods
-
- public override void DeployModel(object modelHost, DefinitionBase model)
- {
- if (!IsValidHostModelHost(modelHost))
- throw new Exception(string.Format("modelHost of type {0} is not supported.", modelHost.GetType()));
-
- var customAction = model.WithAssertAndCast("model", value => value.RequireNotNull());
-
- DeploySiteCustomAction(modelHost, customAction);
- }
-
- protected UserCustomAction GetCurrentCustomUserAction(object modelHost,
- UserCustomActionDefinition customActionModel)
- {
- UserCustomActionCollection userCustomActions = null;
-
- return GetCurrentCustomUserAction(modelHost, customActionModel, out userCustomActions);
- }
-
- private UserCustomAction GetCurrentCustomUserAction(object modelHost, UserCustomActionDefinition customActionModel
- , out UserCustomActionCollection userCustomActions)
- {
- if (modelHost is SiteModelHost)
- userCustomActions = (modelHost as SiteModelHost).HostSite.UserCustomActions;
- else if (modelHost is WebModelHost)
- userCustomActions = (modelHost as WebModelHost).HostWeb.UserCustomActions;
- else if (modelHost is ListModelHost)
- userCustomActions = (modelHost as ListModelHost).HostList.UserCustomActions;
- else
- {
- throw new Exception(string.Format("modelHost of type {0} is not supported.", modelHost.GetType()));
- }
-
- var context = userCustomActions.Context;
-
- context.Load(userCustomActions);
- context.ExecuteQueryWithTrace();
-
- return userCustomActions.FirstOrDefault(a => !string.IsNullOrEmpty(a.Name) && a.Name.ToUpper() == customActionModel.Name.ToUpper());
- }
-
- private void DeploySiteCustomAction(object modelHost, UserCustomActionDefinition model)
- {
- UserCustomActionCollection userCustomActions = null;
- var existingAction = GetCurrentCustomUserAction(modelHost, model, out userCustomActions);
-
- var context = userCustomActions.Context;
-
- InvokeOnModelEvent(this, new ModelEventArgs
- {
- CurrentModelNode = null,
- Model = null,
- EventType = ModelEventType.OnProvisioning,
- Object = null,
- ObjectType = typeof(UserCustomAction),
- ObjectDefinition = model,
- ModelHost = modelHost
- });
-
- if (existingAction == null)
- {
- TraceService.Information((int)LogEventId.ModelProvisionProcessingNewObject, "Processing new user custom action");
- existingAction = userCustomActions.Add();
- }
- else
- {
- TraceService.Information((int)LogEventId.ModelProvisionProcessingExistingObject, "Processing existing user custom action");
- }
-
- MapCustomAction(existingAction, model);
-
- InvokeOnModelEvent(this, new ModelEventArgs
- {
- CurrentModelNode = null,
- Model = null,
- EventType = ModelEventType.OnProvisioned,
- Object = existingAction,
- ObjectType = typeof(UserCustomAction),
- ObjectDefinition = model,
- ModelHost = modelHost
- });
-
-
- TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Calling existingAction.Update()");
- existingAction.Update();
-
- context.ExecuteQueryWithTrace();
- }
-
- private void MapCustomAction(UserCustomAction existringAction, UserCustomActionDefinition customAction)
- {
- TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Updating user custom action properties.");
-
- existringAction.Sequence = customAction.Sequence;
- existringAction.Description = customAction.Description;
- existringAction.Group = customAction.Group;
- existringAction.Location = customAction.Location;
- existringAction.Name = customAction.Name;
- existringAction.ScriptBlock = customAction.ScriptBlock;
- existringAction.ScriptSrc = customAction.ScriptSrc;
- existringAction.Title = customAction.Title;
- existringAction.Url = customAction.Url;
-
- if (!string.IsNullOrEmpty(customAction.CommandUIExtension))
- existringAction.CommandUIExtension = customAction.CommandUIExtension;
-
- if (!string.IsNullOrEmpty(customAction.RegistrationId))
- existringAction.RegistrationId = customAction.RegistrationId;
-
- if (!string.IsNullOrEmpty(customAction.RegistrationType))
- {
- // skipping setup for List script
- // System.NotSupportedException: Setting this property is not supported. A value of List has already been set and cannot be changed.
- if (customAction.RegistrationType != BuiltInRegistrationTypes.List)
- {
- existringAction.RegistrationType =
- (UserCustomActionRegistrationType)
- Enum.Parse(typeof(UserCustomActionRegistrationType), customAction.RegistrationType, true);
- }
- }
-
- var permissions = new BasePermissions();
-
- if (customAction.Rights != null && customAction.Rights.Count > 0)
- {
- foreach (var permissionString in customAction.Rights)
- permissions.Set((PermissionKind)Enum.Parse(typeof(PermissionKind), permissionString));
- }
-
- existringAction.Rights = permissions;
-
-
- ProcessLocalization(existringAction, customAction);
- }
-
- protected bool IsValidHostModelHost(object modelHost)
- {
- return
- modelHost is SiteModelHost ||
- modelHost is WebModelHost ||
- modelHost is ListModelHost;
- }
-
- protected virtual void ProcessLocalization(UserCustomAction obj, UserCustomActionDefinition definition)
- {
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.SharePoint.Client;
+using SPMeta2.Common;
+using SPMeta2.CSOM.Extensions;
+using SPMeta2.CSOM.ModelHosts;
+using SPMeta2.Definitions;
+using SPMeta2.Enumerations;
+using SPMeta2.ModelHandlers;
+using SPMeta2.Services;
+using SPMeta2.Utils;
+
+namespace SPMeta2.CSOM.ModelHandlers
+{
+ public class UserCustomActionModelHandler : CSOMModelHandlerBase
+ {
+ #region properties
+
+ public override Type TargetType
+ {
+ get { return typeof(UserCustomActionDefinition); }
+ }
+
+ #endregion
+
+ #region methods
+
+ public override void DeployModel(object modelHost, DefinitionBase model)
+ {
+ if (!IsValidHostModelHost(modelHost))
+ throw new Exception(string.Format("modelHost of type {0} is not supported.", modelHost.GetType()));
+
+ var customAction = model.WithAssertAndCast("model", value => value.RequireNotNull());
+
+ DeploySiteCustomAction(modelHost, customAction);
+ }
+
+ protected UserCustomAction GetCurrentCustomUserAction(object modelHost,
+ UserCustomActionDefinition customActionModel)
+ {
+ UserCustomActionCollection userCustomActions = null;
+
+ return GetCurrentCustomUserAction(modelHost, customActionModel, out userCustomActions);
+ }
+
+ private UserCustomAction GetCurrentCustomUserAction(object modelHost, UserCustomActionDefinition customActionModel
+ , out UserCustomActionCollection userCustomActions)
+ {
+ if (modelHost is SiteModelHost)
+ userCustomActions = (modelHost as SiteModelHost).HostSite.UserCustomActions;
+ else if (modelHost is WebModelHost)
+ userCustomActions = (modelHost as WebModelHost).HostWeb.UserCustomActions;
+ else if (modelHost is ListModelHost)
+ userCustomActions = (modelHost as ListModelHost).HostList.UserCustomActions;
+ else
+ {
+ throw new Exception(string.Format("modelHost of type {0} is not supported.", modelHost.GetType()));
+ }
+
+ var context = userCustomActions.Context;
+
+ context.Load(userCustomActions);
+ context.ExecuteQueryWithTrace();
+
+ return userCustomActions.FirstOrDefault(a => !string.IsNullOrEmpty(a.Name) && a.Name.ToUpper() == customActionModel.Name.ToUpper());
+ }
+
+ private void DeploySiteCustomAction(object modelHost, UserCustomActionDefinition model)
+ {
+ UserCustomActionCollection userCustomActions = null;
+ var existingAction = GetCurrentCustomUserAction(modelHost, model, out userCustomActions);
+
+ var context = userCustomActions.Context;
+
+ InvokeOnModelEvent(this, new ModelEventArgs
+ {
+ CurrentModelNode = null,
+ Model = null,
+ EventType = ModelEventType.OnProvisioning,
+ Object = null,
+ ObjectType = typeof(UserCustomAction),
+ ObjectDefinition = model,
+ ModelHost = modelHost
+ });
+
+ if (existingAction == null)
+ {
+ TraceService.Information((int)LogEventId.ModelProvisionProcessingNewObject, "Processing new user custom action");
+ existingAction = userCustomActions.Add();
+ }
+ else
+ {
+ TraceService.Information((int)LogEventId.ModelProvisionProcessingExistingObject, "Processing existing user custom action");
+ }
+
+ MapCustomAction(existingAction, model);
+
+ InvokeOnModelEvent(this, new ModelEventArgs
+ {
+ CurrentModelNode = null,
+ Model = null,
+ EventType = ModelEventType.OnProvisioned,
+ Object = existingAction,
+ ObjectType = typeof(UserCustomAction),
+ ObjectDefinition = model,
+ ModelHost = modelHost
+ });
+
+
+ TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Calling existingAction.Update()");
+ existingAction.Update();
+
+ context.ExecuteQueryWithTrace();
+ }
+
+ private void MapCustomAction(UserCustomAction existringAction, UserCustomActionDefinition customAction)
+ {
+ TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Updating user custom action properties.");
+
+ existringAction.Sequence = customAction.Sequence;
+ existringAction.Group = customAction.Group;
+ existringAction.Location = customAction.Location;
+ existringAction.Name = customAction.Name;
+ existringAction.ScriptBlock = customAction.ScriptBlock;
+ existringAction.ScriptSrc = customAction.ScriptSrc;
+
+ // fallback for old models
+ // fill out Title/Description with Name if NULLs
+ // that needs for SP2016 to work well with translation exports
+
+ // UserCustomAction without Title/Description breaks Translation Export #937
+ // https://github.com/SubPointSolutions/spmeta2/issues/937
+
+ if (!string.IsNullOrEmpty(customAction.Title))
+ existringAction.Title = customAction.Title;
+ else
+ existringAction.Title = customAction.Name;
+
+ if (!string.IsNullOrEmpty(customAction.Description))
+ existringAction.Description = customAction.Description;
+ else
+ existringAction.Description = customAction.Name;
+
+ existringAction.Url = customAction.Url;
+
+ if (!string.IsNullOrEmpty(customAction.CommandUIExtension))
+ existringAction.CommandUIExtension = customAction.CommandUIExtension;
+
+ if (!string.IsNullOrEmpty(customAction.RegistrationId))
+ existringAction.RegistrationId = customAction.RegistrationId;
+
+ if (!string.IsNullOrEmpty(customAction.RegistrationType))
+ {
+ // skipping setup for List script
+ // System.NotSupportedException: Setting this property is not supported. A value of List has already been set and cannot be changed.
+ if (customAction.RegistrationType != BuiltInRegistrationTypes.List)
+ {
+ existringAction.RegistrationType =
+ (UserCustomActionRegistrationType)
+ Enum.Parse(typeof(UserCustomActionRegistrationType), customAction.RegistrationType, true);
+ }
+ }
+
+ var permissions = new BasePermissions();
+
+ if (customAction.Rights != null && customAction.Rights.Count > 0)
+ {
+ foreach (var permissionString in customAction.Rights)
+ permissions.Set((PermissionKind)Enum.Parse(typeof(PermissionKind), permissionString));
+ }
+
+ existringAction.Rights = permissions;
+
+
+ ProcessLocalization(existringAction, customAction);
+ }
+
+ protected bool IsValidHostModelHost(object modelHost)
+ {
+ return
+ modelHost is SiteModelHost ||
+ modelHost is WebModelHost ||
+ modelHost is ListModelHost;
+ }
+
+ protected virtual void ProcessLocalization(UserCustomAction obj, UserCustomActionDefinition definition)
+ {
ProcessGenericLocalization(obj, new Dictionary>
{
{ "TitleResource", definition.TitleResource },
{ "DescriptionResource", definition.DescriptionResource },
{ "CommandUIExtensionResource", definition.CommandUIExtensionResource },
- });
- }
-
- #endregion
- }
-}
+ });
+ }
+
+ #endregion
+ }
+}
diff --git a/SPMeta2/SPMeta2.CSOM/ModelHandlers/WebPartModelHandler.cs b/SPMeta2/SPMeta2.CSOM/ModelHandlers/WebPartModelHandler.cs
index 0d6e61791..84456120c 100644
--- a/SPMeta2/SPMeta2.CSOM/ModelHandlers/WebPartModelHandler.cs
+++ b/SPMeta2/SPMeta2.CSOM/ModelHandlers/WebPartModelHandler.cs
@@ -302,13 +302,15 @@ protected virtual string ProcessCommonWebpartProperties(string webPartXml, WebPa
if (!string.IsNullOrEmpty(definition.ExportMode))
xml.SetExportMode(definition.ExportMode);
+ if (definition.Hidden.HasValue)
+ xml.SetHidden(definition.Hidden.Value);
+
// bindings
ProcessParameterBindings(definition, xml);
// properties
ProcessWebpartProperties(definition, xml);
-
return xml.ToString();
}
diff --git a/SPMeta2/SPMeta2.CSOM/ModelHandlers/Webparts/ListViewWebPartModelHandler.cs b/SPMeta2/SPMeta2.CSOM/ModelHandlers/Webparts/ListViewWebPartModelHandler.cs
index 88f086b4f..fc4319d38 100644
--- a/SPMeta2/SPMeta2.CSOM/ModelHandlers/Webparts/ListViewWebPartModelHandler.cs
+++ b/SPMeta2/SPMeta2.CSOM/ModelHandlers/Webparts/ListViewWebPartModelHandler.cs
@@ -221,7 +221,10 @@ protected override void InternalOnAfterWebPartProvision(WebPartProcessingContext
if (typedDefinition.WebId.HasGuidValue() || !string.IsNullOrEmpty(typedDefinition.WebUrl))
{
targetWeb = new LookupFieldModelHandler()
- .GetTargetWeb(this.CurrentClientContext.Site, typedDefinition.WebUrl, typedDefinition.WebId);
+ .GetTargetWeb(this.CurrentClientContext.Site,
+ typedDefinition.WebUrl,
+ typedDefinition.WebId,
+ provisionContext.ListItemModelHost);
}
var list = XsltListViewWebPartModelHandler.LookupList(targetWeb, typedDefinition.ListUrl, typedDefinition.ListTitle, typedDefinition.ListId);
diff --git a/SPMeta2/SPMeta2.CSOM/ModelHandlers/Webparts/XsltListViewWebPartModelHandler.cs b/SPMeta2/SPMeta2.CSOM/ModelHandlers/Webparts/XsltListViewWebPartModelHandler.cs
index 368e0e32d..0b774cdcd 100644
--- a/SPMeta2/SPMeta2.CSOM/ModelHandlers/Webparts/XsltListViewWebPartModelHandler.cs
+++ b/SPMeta2/SPMeta2.CSOM/ModelHandlers/Webparts/XsltListViewWebPartModelHandler.cs
@@ -210,8 +210,13 @@ protected override void InternalOnAfterWebPartProvision(WebPartProcessingContext
if (typedDefinition.WebId.HasGuidValue() || !string.IsNullOrEmpty(typedDefinition.WebUrl))
{
- targetWeb = new LookupFieldModelHandler()
- .GetTargetWeb(this.CurrentClientContext.Site, typedDefinition.WebUrl, typedDefinition.WebId);
+ var lookupFieldModelHandler = new LookupFieldModelHandler();
+
+ targetWeb = lookupFieldModelHandler.GetTargetWeb(
+ this.CurrentClientContext.Site,
+ typedDefinition.WebUrl,
+ typedDefinition.WebId,
+ provisionContext.ListItemModelHost);
}
var list = LookupList(targetWeb, typedDefinition.ListUrl, typedDefinition.ListTitle, typedDefinition.ListId);
@@ -314,9 +319,14 @@ string webPartTitleUrl
if (webId.HasGuidValue() || !string.IsNullOrEmpty(webUrl))
{
- targetWeb = new LookupFieldModelHandler()
- .GetTargetWeb(listItemModelHost.HostClientContext.Site,
- webUrl, webId);
+ var lookupFieldModelHandler = new LookupFieldModelHandler();
+
+ targetWeb = lookupFieldModelHandler
+ .GetTargetWeb(
+ listItemModelHost.HostClientContext.Site,
+ webUrl,
+ webId,
+ listItemModelHost);
result.WebId = targetWeb.Id;
}
diff --git a/SPMeta2/SPMeta2.CSOM/ModelHandlers/WorkflowAssociationModelHandler.cs b/SPMeta2/SPMeta2.CSOM/ModelHandlers/WorkflowAssociationModelHandler.cs
index 7dee7edce..dcc4198c8 100644
--- a/SPMeta2/SPMeta2.CSOM/ModelHandlers/WorkflowAssociationModelHandler.cs
+++ b/SPMeta2/SPMeta2.CSOM/ModelHandlers/WorkflowAssociationModelHandler.cs
@@ -230,7 +230,11 @@ private void DeployContentTypeWorkflowAssociationDefinition(object modelHost, Co
ModelHost = modelHost
});
- contentType.Update(true);
+ if (!contentType.ReadOnly)
+ {
+ contentType.Update(true);
+ }
+
context.ExecuteQueryWithTrace();
}
else
@@ -256,7 +260,11 @@ private void DeployContentTypeWorkflowAssociationDefinition(object modelHost, Co
//existingWorkflowAssotiation.Update();
- contentType.Update(true);
+ if (!contentType.ReadOnly)
+ {
+ contentType.Update(true);
+ }
+
context.ExecuteQueryWithTrace();
}
}
diff --git a/SPMeta2/SPMeta2.CSOM/Properties/AssemblyInfo.cs b/SPMeta2/SPMeta2.CSOM/Properties/AssemblyInfo.cs
index 46e9cd6f9..9d0043423 100644
--- a/SPMeta2/SPMeta2.CSOM/Properties/AssemblyInfo.cs
+++ b/SPMeta2/SPMeta2.CSOM/Properties/AssemblyInfo.cs
@@ -33,4 +33,4 @@
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.2.17104.0417")]
+[assembly: AssemblyFileVersion("1.2.17191.0958")]
diff --git a/SPMeta2/SPMeta2.CSOM/Services/CSOMProvisionService.cs b/SPMeta2/SPMeta2.CSOM/Services/CSOMProvisionService.cs
index e1554bdaa..16a5c9e32 100644
--- a/SPMeta2/SPMeta2.CSOM/Services/CSOMProvisionService.cs
+++ b/SPMeta2/SPMeta2.CSOM/Services/CSOMProvisionService.cs
@@ -12,6 +12,7 @@
using System.Diagnostics;
using SPMeta2.CSOM.Services.Impl;
using SPMeta2.Exceptions;
+using SPMeta2.Common;
namespace SPMeta2.CSOM.Services
{
@@ -116,4 +117,61 @@ public static void DeployListModel(this CSOMProvisionService modelHost, ClientCo
modelHost.DeployModel(listHost, model);
}
}
+
+ public static class SSOMProvisionServiceIncrementalExtensions
+ {
+ ///
+ /// A shortcut for incremental provision
+ /// Sets incremental provision mode with AutoDetectSharePointPersistenceStorage = true
+ /// Once done, reverts back to default provision mode
+ ///
+ public static void DeploySiteModelIncrementally(this CSOMProvisionService modelHost,
+ ClientContext context,
+ ModelNode model,
+ string incrementalModelId)
+ {
+ DeploySiteModelIncrementally(modelHost, context, model, incrementalModelId, null);
+ }
+
+ ///
+ /// A shortcut for incremental provision
+ /// Sets incremental provision mode with AutoDetectSharePointPersistenceStorage = true
+ /// Once done, reverts back to default provision mode
+ ///
+ public static void DeploySiteModelIncrementally(this CSOMProvisionService modelHost,
+ ClientContext context,
+ ModelNode model,
+ string incrementalModelId,
+ Action config)
+ {
+ modelHost.DeployModelIncrementally(new SiteModelHost(context), model, incrementalModelId, config);
+ }
+
+ ///
+ /// A shortcut for incremental provision
+ /// Sets incremental provision mode with AutoDetectSharePointPersistenceStorage = true
+ /// Once done, reverts back to default provision mode
+ ///
+ public static void DeployWebModelIncrementally(this CSOMProvisionService modelHost,
+ ClientContext context,
+ ModelNode model,
+ string incrementalModelId)
+ {
+ DeployWebModelIncrementally(modelHost, context, model, incrementalModelId, null);
+ }
+
+ ///
+ /// A shortcut for incremental provision
+ /// Sets incremental provision mode with IncrementalProvisionConfig.AutoDetectSharePointPersistenceStorage = true
+ /// Once done, reverts back to default provision mode
+ /// Callback on IncrementalProvisionConfig makes it easy to configure IncrementalProvisionConfig instance
+ public static void DeployWebModelIncrementally(this CSOMProvisionService modelHost,
+ ClientContext context,
+ ModelNode model,
+ string incrementalModelId,
+ Action config)
+ {
+ modelHost.DeployModelIncrementally(new WebModelHost(context), model, incrementalModelId, config);
+ }
+ }
}
diff --git a/SPMeta2/SPMeta2.CSOM/Services/CSOMTokenReplacementService.cs b/SPMeta2/SPMeta2.CSOM/Services/CSOMTokenReplacementService.cs
index 33532627e..ac36d80d2 100644
--- a/SPMeta2/SPMeta2.CSOM/Services/CSOMTokenReplacementService.cs
+++ b/SPMeta2/SPMeta2.CSOM/Services/CSOMTokenReplacementService.cs
@@ -48,6 +48,8 @@ public CSOMTokenReplacementService()
/// Incorrect ~site token resolution for CSOM for the subwebs #863
/// https://github.com/SubPointSolutions/spmeta2/issues/863
///
+ ///
+ [Obsolete("Obsolete, isn't used anymore - Tokens in LookupWebUrl #1013 - https://github.com/SubPointSolutions/spmeta2/issues/1013")]
public static bool AllowClientContextAsTokenReplacementContext { get; set; }
#endregion
@@ -120,6 +122,10 @@ public override TokenReplacementResult ReplaceTokens(TokenReplacementContext con
}
}
+ // remove ending slash, SharePoint removes it everywhere
+ if (result.Value.Length > 1)
+ result.Value = result.Value.TrimEnd('/');
+
if (OnTokenReplaced != null)
{
OnTokenReplaced(this, new TokenReplacementResultEventArgs
@@ -140,8 +146,12 @@ protected virtual string ResolveToken(TokenReplacementContext tokenContext, obje
var site = ExtractSite(contextObject);
- if (site.ServerRelativeUrl == "/")
- return string.Empty;
+ // Incorrect ~site/~sitecollection tokens resolve in NavigationNodes #1025
+ // https://github.com/SubPointSolutions/spmeta2/issues/1025
+ // always return '/' instead of empty string, further replacements would fix up double-'/'
+
+ //if (site.ServerRelativeUrl == "/")
+ // return string.Empty;
return site.ServerRelativeUrl;
}
@@ -156,8 +166,12 @@ protected virtual string ResolveToken(TokenReplacementContext tokenContext, obje
return "/" + web.ServerRelativeUrl.Replace(site.ServerRelativeUrl, string.Empty);
}
- if (web.ServerRelativeUrl == "/")
- return string.Empty;
+ // Incorrect ~site/~sitecollection tokens resolve in NavigationNodes #1025
+ // https://github.com/SubPointSolutions/spmeta2/issues/1025
+ // always return '/' instead of empty string, further replacements would fix up double-'/'
+
+ //if (web.ServerRelativeUrl == "/")
+ // return string.Empty;
return web.ServerRelativeUrl;
}
diff --git a/SPMeta2/SPMeta2.Containers.CSOM/Properties/AssemblyInfo.cs b/SPMeta2/SPMeta2.Containers.CSOM/Properties/AssemblyInfo.cs
index 11f033529..621a0779a 100644
--- a/SPMeta2/SPMeta2.Containers.CSOM/Properties/AssemblyInfo.cs
+++ b/SPMeta2/SPMeta2.Containers.CSOM/Properties/AssemblyInfo.cs
@@ -33,4 +33,4 @@
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.2.17104.0417")]
\ No newline at end of file
+[assembly: AssemblyFileVersion("1.2.17191.0958")]
\ No newline at end of file
diff --git a/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer/Package/Package.Template.xml b/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer/Package/Package.Template.xml
new file mode 100644
index 000000000..8740d4d0d
--- /dev/null
+++ b/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer/Package/Package.Template.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer/Package/Package.package b/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer/Package/Package.package
new file mode 100644
index 000000000..c2e454659
--- /dev/null
+++ b/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer/Package/Package.package
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer/Properties/AssemblyInfo.cs b/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..84a43f4a4
--- /dev/null
+++ b/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer/Properties/AssemblyInfo.cs
@@ -0,0 +1,38 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Security;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("SPMeta2.Containers.FarmSolutionWebAppContainer")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("SPMeta2.Containers.FarmSolutionWebAppContainer")]
+[assembly: AssemblyCopyright("Copyright © 2017")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("9a306ec6-de61-49b9-940d-7c1a36fc15ad")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.17191.0958")]
+
diff --git a/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer/SPMeta2.Containers.FarmSolutionWebAppContainer.csproj b/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer/SPMeta2.Containers.FarmSolutionWebAppContainer.csproj
new file mode 100644
index 000000000..db638d82f
--- /dev/null
+++ b/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer/SPMeta2.Containers.FarmSolutionWebAppContainer.csproj
@@ -0,0 +1,75 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {9A306EC6-DE61-49B9-940D-7C1A36FC15AD}
+ Library
+ Properties
+ SPMeta2.Containers.FarmSolutionWebAppContainer
+ SPMeta2.Containers.FarmSolutionWebAppContainer
+ v4.5
+ 15.0
+ 512
+ {C1CDDADD-2546-481F-9697-4EA41081F2FC};{14822709-B5A1-4724-98CA-57A101D1B079};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ False
+ WebApplication
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+ false
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+ false
+
+
+ true
+
+
+ key.snk
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {c6cf3a69-1a73-4cc5-9c67-e3859a071197}
+
+
+ Package.package
+
+
+
+
+
+
+
+ 10.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+
+
+
\ No newline at end of file
diff --git a/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer/key.snk b/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer/key.snk
new file mode 100644
index 000000000..84a8f8a1a
Binary files /dev/null and b/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer/key.snk differ
diff --git a/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer1/Package/Package.Template.xml b/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer1/Package/Package.Template.xml
new file mode 100644
index 000000000..8740d4d0d
--- /dev/null
+++ b/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer1/Package/Package.Template.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer1/Package/Package.package b/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer1/Package/Package.package
new file mode 100644
index 000000000..b21d14b51
--- /dev/null
+++ b/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer1/Package/Package.package
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer1/Properties/AssemblyInfo.cs b/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer1/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..369a5fa16
--- /dev/null
+++ b/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer1/Properties/AssemblyInfo.cs
@@ -0,0 +1,38 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Security;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("SPMeta2.Containers.FarmSolutionWebAppContainer1")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("SPMeta2.Containers.FarmSolutionWebAppContainer1")]
+[assembly: AssemblyCopyright("Copyright © 2017")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("b9ddd9d7-99af-4849-a559-c02558d4f774")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.17191.0958")]
+
diff --git a/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer1/SPMeta2.Containers.FarmSolutionWebAppContainer1.csproj b/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer1/SPMeta2.Containers.FarmSolutionWebAppContainer1.csproj
new file mode 100644
index 000000000..33a59c31b
--- /dev/null
+++ b/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer1/SPMeta2.Containers.FarmSolutionWebAppContainer1.csproj
@@ -0,0 +1,75 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {B9DDD9D7-99AF-4849-A559-C02558D4F774}
+ Library
+ Properties
+ SPMeta2.Containers.FarmSolutionWebAppContainer1
+ SPMeta2.Containers.FarmSolutionWebAppContainer1
+ v4.5
+ 15.0
+ 512
+ {C1CDDADD-2546-481F-9697-4EA41081F2FC};{14822709-B5A1-4724-98CA-57A101D1B079};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ False
+ WebApplication
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+ false
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+ false
+
+
+ true
+
+
+ key.snk
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {c21f84bc-1af5-4f19-b4bd-19e7047bf211}
+
+
+ Package.package
+
+
+
+
+
+
+
+ 10.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+
+
+
\ No newline at end of file
diff --git a/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer1/key.snk b/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer1/key.snk
new file mode 100644
index 000000000..4e92e1859
Binary files /dev/null and b/SPMeta2/SPMeta2.Containers.FarmSolutionWebAppContainer1/key.snk differ
diff --git a/SPMeta2/SPMeta2.Containers.O365/Properties/AssemblyInfo.cs b/SPMeta2/SPMeta2.Containers.O365/Properties/AssemblyInfo.cs
index 231fa7c70..a32fdaf5a 100644
--- a/SPMeta2/SPMeta2.Containers.O365/Properties/AssemblyInfo.cs
+++ b/SPMeta2/SPMeta2.Containers.O365/Properties/AssemblyInfo.cs
@@ -33,4 +33,4 @@
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.2.17104.0417")]
+[assembly: AssemblyFileVersion("1.2.17191.0958")]
diff --git a/SPMeta2/SPMeta2.Containers.SSOM/Properties/AssemblyInfo.cs b/SPMeta2/SPMeta2.Containers.SSOM/Properties/AssemblyInfo.cs
index 15deea26d..7c0954113 100644
--- a/SPMeta2/SPMeta2.Containers.SSOM/Properties/AssemblyInfo.cs
+++ b/SPMeta2/SPMeta2.Containers.SSOM/Properties/AssemblyInfo.cs
@@ -33,4 +33,4 @@
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.2.17104.0417")]
+[assembly: AssemblyFileVersion("1.2.17191.0958")]
diff --git a/SPMeta2/SPMeta2.Containers.Standard/Properties/AssemblyInfo.cs b/SPMeta2/SPMeta2.Containers.Standard/Properties/AssemblyInfo.cs
index 8c2a30d4f..4321573d9 100644
--- a/SPMeta2/SPMeta2.Containers.Standard/Properties/AssemblyInfo.cs
+++ b/SPMeta2/SPMeta2.Containers.Standard/Properties/AssemblyInfo.cs
@@ -33,4 +33,4 @@
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.2.17104.0417")]
+[assembly: AssemblyFileVersion("1.2.17191.0958")]
diff --git a/SPMeta2/SPMeta2.Containers/Consts/DefaultContainers.cs b/SPMeta2/SPMeta2.Containers/Consts/DefaultContainers.cs
index 724827d8a..65ea0a2ba 100644
--- a/SPMeta2/SPMeta2.Containers/Consts/DefaultContainers.cs
+++ b/SPMeta2/SPMeta2.Containers/Consts/DefaultContainers.cs
@@ -55,6 +55,20 @@ public static class FarmSolution
public static Guid SolutionId = new Guid("a4a2146d-57d1-48bd-a02e-ba97b371903d");
}
+
+
+ public static class FarmSolutionWebScope
+ {
+ public static string FilePath = @"Containers\Farm\SPMeta2.Containers.FarmSolutionWebAppContainer.wsp";
+ public static Guid SolutionId = new Guid("c6cf3a69-1a73-4cc5-9c67-e3859a071197");
+ }
+
+ public static class FarmSolutionWebScope1
+ {
+ public static string FilePath = @"Containers\Farm\SPMeta2.Containers.FarmSolutionWebAppContainer1.wsp";
+ public static Guid SolutionId = new Guid("c21f84bc-1af5-4f19-b4bd-19e7047bf211");
+ }
+
public static class Apps
{
public static Guid ProductId = new Guid("{e81b6820-5d57-4d17-a098-5f4317f6c400}");
diff --git a/SPMeta2/SPMeta2.Containers/Containers/Farm/SPMeta2.Containers.FarmSolutionWebAppContainer.wsp b/SPMeta2/SPMeta2.Containers/Containers/Farm/SPMeta2.Containers.FarmSolutionWebAppContainer.wsp
new file mode 100644
index 000000000..83c3dbbb6
Binary files /dev/null and b/SPMeta2/SPMeta2.Containers/Containers/Farm/SPMeta2.Containers.FarmSolutionWebAppContainer.wsp differ
diff --git a/SPMeta2/SPMeta2.Containers/Containers/Farm/SPMeta2.Containers.FarmSolutionWebAppContainer1.wsp b/SPMeta2/SPMeta2.Containers/Containers/Farm/SPMeta2.Containers.FarmSolutionWebAppContainer1.wsp
new file mode 100644
index 000000000..e29670d30
Binary files /dev/null and b/SPMeta2/SPMeta2.Containers/Containers/Farm/SPMeta2.Containers.FarmSolutionWebAppContainer1.wsp differ
diff --git a/SPMeta2/SPMeta2.Containers/DefinitionGenerators/OfficialFileHostDefinitionGenerator.cs b/SPMeta2/SPMeta2.Containers/DefinitionGenerators/OfficialFileHostDefinitionGenerator.cs
new file mode 100644
index 000000000..4b80b18ba
--- /dev/null
+++ b/SPMeta2/SPMeta2.Containers/DefinitionGenerators/OfficialFileHostDefinitionGenerator.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Collections.ObjectModel;
+using SPMeta2.Containers.Services.Base;
+using SPMeta2.Definitions;
+using SPMeta2.Definitions.Base;
+using SPMeta2.Containers.Services;
+using SPMeta2.Enumerations;
+
+namespace SPMeta2.Containers.DefinitionGenerators
+{
+ public class OfficialFileHostDefinitionGenerator : TypedDefinitionGeneratorServiceBase
+ {
+ public override DefinitionBase GenerateRandomDefinition(Action action)
+ {
+ return WithEmptyDefinition(def =>
+ {
+ def.OfficialFileName = Rnd.String();
+ def.OfficialFileUrl = Rnd.HttpsUrl();
+
+ def.Action = Rnd.RandomFromArray(
+ new[]{
+ OfficialFileAction.Copy,
+ OfficialFileAction.Link,
+ OfficialFileAction.Move
+ });
+ });
+ }
+ }
+}
diff --git a/SPMeta2/SPMeta2.Containers/DefinitionGenerators/SuiteBarDefinitionGenerator.cs b/SPMeta2/SPMeta2.Containers/DefinitionGenerators/SuiteBarDefinitionGenerator.cs
new file mode 100644
index 000000000..cff50ea21
--- /dev/null
+++ b/SPMeta2/SPMeta2.Containers/DefinitionGenerators/SuiteBarDefinitionGenerator.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.ObjectModel;
+using SPMeta2.Containers.Services.Base;
+using SPMeta2.Definitions;
+using SPMeta2.Definitions.Base;
+using SPMeta2.Containers.Services;
+using SPMeta2.Enumerations;
+
+namespace SPMeta2.Containers.DefinitionGenerators
+{
+ public class SuiteBarDefinitionGenerator : TypedDefinitionGeneratorServiceBase
+ {
+ public override DefinitionBase GenerateRandomDefinition(Action action)
+ {
+ return WithEmptyDefinition(def =>
+ {
+ def.SuiteBarBrandingElementHtml = Rnd.String();
+ });
+ }
+ }
+}
diff --git a/SPMeta2/SPMeta2.Containers/DefinitionGenerators/UserCustomActionDefinitionGenerator.cs b/SPMeta2/SPMeta2.Containers/DefinitionGenerators/UserCustomActionDefinitionGenerator.cs
index 59cf2a76e..6b10d311e 100644
--- a/SPMeta2/SPMeta2.Containers/DefinitionGenerators/UserCustomActionDefinitionGenerator.cs
+++ b/SPMeta2/SPMeta2.Containers/DefinitionGenerators/UserCustomActionDefinitionGenerator.cs
@@ -1,23 +1,28 @@
-using System;
-using SPMeta2.Containers.Services.Base;
-using SPMeta2.Definitions;
-using SPMeta2.Definitions.Base;
-
-namespace SPMeta2.Containers.DefinitionGenerators
-{
- public class UserCustomActionDefinitionGenerator : TypedDefinitionGeneratorServiceBase
- {
- public override DefinitionBase GenerateRandomDefinition(Action action)
- {
- return WithEmptyDefinition(def =>
- {
- def.Name = Rnd.String();
- def.Location = "ScriptLink";
- def.ScriptSrc = "~site/style library/spmeta2.js";
- def.Sequence = Rnd.Int(100);
- def.Description = Rnd.String();
- def.Group = Rnd.String();
- });
- }
- }
-}
+using System;
+using SPMeta2.Containers.Services.Base;
+using SPMeta2.Definitions;
+using SPMeta2.Definitions.Base;
+
+namespace SPMeta2.Containers.DefinitionGenerators
+{
+ public class UserCustomActionDefinitionGenerator : TypedDefinitionGeneratorServiceBase
+ {
+ public override DefinitionBase GenerateRandomDefinition(Action action)
+ {
+ return WithEmptyDefinition(def =>
+ {
+ def.Name = Rnd.String();
+ def.Location = "ScriptLink";
+ def.ScriptSrc = "~site/style library/spmeta2.js";
+ def.Sequence = Rnd.Int(100);
+
+ def.Group = Rnd.String();
+
+ // Breaking change: UserCustomAction without Title/Description breaks Translation Export #937
+ // https://github.com/SubPointSolutions/spmeta2/issues/937
+ def.Title = Rnd.String();
+ def.Description = Rnd.String();
+ });
+ }
+ }
+}
diff --git a/SPMeta2/SPMeta2.Containers/Properties/AssemblyInfo.cs b/SPMeta2/SPMeta2.Containers/Properties/AssemblyInfo.cs
index c21723570..9f305a4e9 100644
--- a/SPMeta2/SPMeta2.Containers/Properties/AssemblyInfo.cs
+++ b/SPMeta2/SPMeta2.Containers/Properties/AssemblyInfo.cs
@@ -33,4 +33,4 @@
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.2.17104.0417")]
+[assembly: AssemblyFileVersion("1.2.17191.0958")]
diff --git a/SPMeta2/SPMeta2.Containers/SPMeta2.Containers.csproj b/SPMeta2/SPMeta2.Containers/SPMeta2.Containers.csproj
index 4f58668d6..27663caf9 100644
--- a/SPMeta2/SPMeta2.Containers/SPMeta2.Containers.csproj
+++ b/SPMeta2/SPMeta2.Containers/SPMeta2.Containers.csproj
@@ -116,6 +116,8 @@
True
DefaultWebpartTemplates.resx
+
+
@@ -343,6 +345,12 @@
Always
+
+ Always
+
+
+ Always
+
Always
diff --git a/SPMeta2/SPMeta2.Containers/Services/RegressionTestService.cs b/SPMeta2/SPMeta2.Containers/Services/RegressionTestService.cs
index 31d174353..4898df148 100644
--- a/SPMeta2/SPMeta2.Containers/Services/RegressionTestService.cs
+++ b/SPMeta2/SPMeta2.Containers/Services/RegressionTestService.cs
@@ -124,7 +124,7 @@ protected virtual void InitConfig()
private bool _hasInit = false;
- public static string CurrentProvisionRunnerAsssmbly {get;set;}
+ public static string CurrentProvisionRunnerAsssmbly { get; set; }
protected virtual void InitRunnerImplementations()
{
@@ -206,8 +206,15 @@ public void WithExcpectedExceptions(IEnumerable exceptionTypes, Action act
}
foreach (var allowedType in exceptionTypes)
- if (targetExeption.GetType().IsAssignableFrom(allowedType))
+ {
+ //if (targetExeption.GetType().IsAssignableFrom(allowedType))
+ // we need a specific type matching to avoid missed excpetions
+
+ // SPMeta2.Exceptions.SPMeta2UnsupportedModelHostException: model host should be ListModelHost/WebModelHost/SiteModelHost on deploy a model to a SiteCollection using the Feature Receiver (SSOM) #1035
+ // https://github.com/SubPointSolutions/spmeta2/issues/1035
+ if (targetExeption.GetType() == allowedType)
isAllowedException = true;
+ }
if (isAllowedException)
{
diff --git a/SPMeta2/SPMeta2.Nintex.CSOM/Properties/AssemblyInfo.cs b/SPMeta2/SPMeta2.Nintex.CSOM/Properties/AssemblyInfo.cs
index 66c39bb42..0f3786ef0 100644
--- a/SPMeta2/SPMeta2.Nintex.CSOM/Properties/AssemblyInfo.cs
+++ b/SPMeta2/SPMeta2.Nintex.CSOM/Properties/AssemblyInfo.cs
@@ -33,4 +33,4 @@
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.17104.0417")]
+[assembly: AssemblyFileVersion("1.0.17191.0958")]
diff --git a/SPMeta2/SPMeta2.Nintex.SSOM/Properties/AssemblyInfo.cs b/SPMeta2/SPMeta2.Nintex.SSOM/Properties/AssemblyInfo.cs
index 1ca1da521..4563909aa 100644
--- a/SPMeta2/SPMeta2.Nintex.SSOM/Properties/AssemblyInfo.cs
+++ b/SPMeta2/SPMeta2.Nintex.SSOM/Properties/AssemblyInfo.cs
@@ -33,4 +33,4 @@
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.17104.0417")]
+[assembly: AssemblyFileVersion("1.0.17191.0958")]
diff --git a/SPMeta2/SPMeta2.Nintex/Properties/AssemblyInfo.cs b/SPMeta2/SPMeta2.Nintex/Properties/AssemblyInfo.cs
index f6ac5aa03..68e52f100 100644
--- a/SPMeta2/SPMeta2.Nintex/Properties/AssemblyInfo.cs
+++ b/SPMeta2/SPMeta2.Nintex/Properties/AssemblyInfo.cs
@@ -33,4 +33,4 @@
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.17104.0417")]
+[assembly: AssemblyFileVersion("1.0.17191.0958")]
diff --git a/SPMeta2/SPMeta2.O365/Properties/AssemblyInfo.cs b/SPMeta2/SPMeta2.O365/Properties/AssemblyInfo.cs
index afd37ea9e..ca6390b64 100644
--- a/SPMeta2/SPMeta2.O365/Properties/AssemblyInfo.cs
+++ b/SPMeta2/SPMeta2.O365/Properties/AssemblyInfo.cs
@@ -33,4 +33,4 @@
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.2.17104.0417")]
+[assembly: AssemblyFileVersion("1.2.17191.0958")]
diff --git a/SPMeta2/SPMeta2.Regression.CSOM.Standard/Properties/AssemblyInfo.cs b/SPMeta2/SPMeta2.Regression.CSOM.Standard/Properties/AssemblyInfo.cs
index bc7d8d532..628ac7b7f 100644
--- a/SPMeta2/SPMeta2.Regression.CSOM.Standard/Properties/AssemblyInfo.cs
+++ b/SPMeta2/SPMeta2.Regression.CSOM.Standard/Properties/AssemblyInfo.cs
@@ -33,4 +33,4 @@
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.2.17104.0417")]
+[assembly: AssemblyFileVersion("1.2.17191.0958")]
diff --git a/SPMeta2/SPMeta2.Regression.CSOM.Standard/Validation/Fields/ClientTaxonomyFieldDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.CSOM.Standard/Validation/Fields/ClientTaxonomyFieldDefinitionValidator.cs
index d94be0b5a..be15d40c9 100644
--- a/SPMeta2/SPMeta2.Regression.CSOM.Standard/Validation/Fields/ClientTaxonomyFieldDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.CSOM.Standard/Validation/Fields/ClientTaxonomyFieldDefinitionValidator.cs
@@ -319,7 +319,12 @@ public override void DeployModel(object modelHost, DefinitionBase model)
// etc
assert.SkipProperty(m => m.TermLCID, "TermLCID. Skipping property.");
- assert.SkipProperty(m => m.TermSetLCID, "TermSetLCID. Skipping property.");
+ assert.SkipProperty(m => m.TermSetLCID, "TermSetLCID. Skipping property.");
+
+ if (definition.UserCreated.HasValue)
+ assert.ShouldBeEqual(m => m.UserCreated, o => o.UserCreated);
+ else
+ assert.SkipProperty(m => m.UserCreated, "UserCreated is null. Skipping property.");
}
#endregion
diff --git a/SPMeta2/SPMeta2.Regression.CSOM.Standard/Validation/Webparts/ContentByQueryWebPartDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.CSOM.Standard/Validation/Webparts/ContentByQueryWebPartDefinitionValidator.cs
index b6a9b62b6..c26ebba29 100644
--- a/SPMeta2/SPMeta2.Regression.CSOM.Standard/Validation/Webparts/ContentByQueryWebPartDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.CSOM.Standard/Validation/Webparts/ContentByQueryWebPartDefinitionValidator.cs
@@ -514,7 +514,8 @@ public override void DeployModel(object modelHost, DefinitionBase model)
var targetWeb = webLookup.GetTargetWeb(listItemModelHost.HostSite,
typedDefinition.WebUrl,
- typedDefinition.WebId);
+ typedDefinition.WebId,
+ modelHost);
var list = targetWeb.QueryAndGetListByUrl(typedDefinition.ListUrl);
isValid = CurrentWebPartXml.GetListGuid() == list.Id.ToString("D");
diff --git a/SPMeta2/SPMeta2.Regression.CSOM/Properties/AssemblyInfo.cs b/SPMeta2/SPMeta2.Regression.CSOM/Properties/AssemblyInfo.cs
index f8c7b3998..de35e6b29 100644
--- a/SPMeta2/SPMeta2.Regression.CSOM/Properties/AssemblyInfo.cs
+++ b/SPMeta2/SPMeta2.Regression.CSOM/Properties/AssemblyInfo.cs
@@ -33,4 +33,4 @@
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.2.17104.0417")]
+[assembly: AssemblyFileVersion("1.2.17191.0958")]
diff --git a/SPMeta2/SPMeta2.Regression.CSOM/SPMeta2.Regression.CSOM.csproj b/SPMeta2/SPMeta2.Regression.CSOM/SPMeta2.Regression.CSOM.csproj
index c67580285..6d142d158 100644
--- a/SPMeta2/SPMeta2.Regression.CSOM/SPMeta2.Regression.CSOM.csproj
+++ b/SPMeta2/SPMeta2.Regression.CSOM/SPMeta2.Regression.CSOM.csproj
@@ -27,7 +27,6 @@
-
bin\Debug45-$(spRuntime)\
v4.5
@@ -40,7 +39,6 @@
false
bin\Debug45-$(spRuntime)\SPMeta2.Regression.CSOM.XML
-
..\..\packages\CsQuery.1.3.4\lib\net40\CsQuery.dll
diff --git a/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientContentTypeLinkDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientContentTypeLinkDefinitionValidator.cs
index 7982e44b5..5ef033903 100644
--- a/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientContentTypeLinkDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientContentTypeLinkDefinitionValidator.cs
@@ -22,8 +22,14 @@ public override void DeployModel(object modelHost, DefinitionBase model)
var list = listModelHost.HostList;
var context = list.Context;
- context.Load(list, l => l.ContentTypesEnabled);
- context.Load(list, l => l.ContentTypes);
+ context.Load(list, l => l.ContentTypesEnabled);
+ context.Load(list, l => l.ContentTypes.Include(
+ ct => ct.Id,
+ ct => ct.StringId,
+ ct => ct.Name,
+
+ ct => ct.Parent.Id,
+ ct => ct.Parent.StringId));
context.ExecuteQueryWithTrace();
diff --git a/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientFieldDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientFieldDefinitionValidator.cs
index 06f20e63c..7793aece9 100644
--- a/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientFieldDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientFieldDefinitionValidator.cs
@@ -9,6 +9,7 @@
using SPMeta2.Regression.CSOM.Utils;
using SPMeta2.Services;
using SPMeta2.Utils;
+using SPMeta2.Definitions.Fields;
namespace SPMeta2.Regression.CSOM.Validation
@@ -62,6 +63,47 @@ protected void ValidateField(AssertPair assert, Field sp
assert.ShouldBeEqualIfNotNullOrEmpty(m => m.Group, o => o.Group);
assert.ShouldBeEqualIfNotNullOrEmpty(m => m.StaticName, o => o.StaticName);
+ if (definition is LookupFieldDefinition)
+ {
+ var depLookupDefinition = definition as LookupFieldDefinition;
+
+ // cjeck against CountRelated for lookups
+ if (depLookupDefinition.CountRelated.HasValue
+ && depLookupDefinition.ReadOnlyField.HasValue)
+ {
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(m => m.ReadOnlyField);
+
+ var isValid = (bool)srcProp.Value == depLookupDefinition.CountRelated.Value;
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = null,
+ IsValid = isValid
+ };
+ });
+ }
+ else
+ {
+ assert.SkipProperty(m => m.ReadOnlyField, "CountRelated / ReadOnlyField is null or empty");
+
+ //if (definition.ReadOnlyField.HasValue)
+ // assert.ShouldBeEqual(m => m.ReadOnlyField, o => o.ReadOnlyField);
+ //else
+ // assert.SkipProperty(m => m.ReadOnlyField, "ReadOnlyField is null or empty");
+ }
+ }
+ else
+ {
+ if (definition.ReadOnlyField.HasValue)
+ assert.ShouldBeEqual(m => m.ReadOnlyField, o => o.ReadOnlyField);
+ else
+ assert.SkipProperty(m => m.ReadOnlyField, "ReadOnlyField is null or empty");
+ }
+
assert.SkipProperty(m => m.DefaultFormula, "Not supported in CSOM API yet");
if (!string.IsNullOrEmpty(definition.DefaultFormula))
@@ -267,7 +309,14 @@ protected void ValidateField(AssertPair assert, Field sp
assert.ShouldBeEqualIfHasValue(m => m.ShowInVersionHistory, o => o.GetShowInVersionHistory());
assert.ShouldBeEqualIfHasValue(m => m.ShowInViewForms, o => o.GetShowInViewForms());
- assert.ShouldBeEqual(m => m.Indexed, o => o.Indexed);
+ if (definition is DependentLookupFieldDefinition)
+ {
+ assert.SkipProperty(m => m.Indexed, "Skipping Indexed prop for DependentLookupFieldDefinition");
+ }
+ else
+ {
+ assert.ShouldBeEqual(m => m.Indexed, o => o.Indexed);
+ }
assert.ShouldBeEqualIfHasValue(m => m.AllowDeletion, o => o.GetAllowDeletion());
diff --git a/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientListDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientListDefinitionValidator.cs
index db15188c9..3ab28cf30 100644
--- a/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientListDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientListDefinitionValidator.cs
@@ -1,459 +1,460 @@
-using System;
-using System.Linq;
-
-using Microsoft.SharePoint.Client;
-
-using SPMeta2.Containers.Assertion;
-using SPMeta2.CSOM.DefaultSyntax;
-using SPMeta2.CSOM.Extensions;
-using SPMeta2.CSOM.ModelHandlers;
-using SPMeta2.CSOM.ModelHosts;
-using SPMeta2.Definitions;
-using SPMeta2.Services;
-using SPMeta2.Utils;
-using System.Text;
-
-namespace SPMeta2.Regression.CSOM.Validation
-{
- public class ClientListDefinitionValidator : ListModelHandler
- {
- public override void DeployModel(object modelHost, DefinitionBase model)
- {
- var webModelHost = modelHost.WithAssertAndCast("modelHost", value => value.RequireNotNull());
- var definition = model.WithAssertAndCast("model", value => value.RequireNotNull());
-
- var web = webModelHost.HostWeb;
- var context = web.Context;
-
- context.Load(web, w => w.ServerRelativeUrl);
-
- var lists = context.LoadQuery(web.Lists.Include(l => l.DefaultViewUrl));
- context.ExecuteQueryWithTrace();
-
-#pragma warning disable 618
- var spObject = FindListByUrl(lists, definition.GetListUrl());
-#pragma warning restore 618
-
- context.Load(spObject);
- context.Load(spObject, list => list.RootFolder.Properties);
- context.Load(spObject, list => list.RootFolder.ServerRelativeUrl);
- context.Load(spObject, list => list.RootFolder.Properties);
- context.Load(spObject, list => list.EnableAttachments);
- context.Load(spObject, list => list.EnableFolderCreation);
- context.Load(spObject, list => list.EnableMinorVersions);
- context.Load(spObject, list => list.EnableModeration);
- context.Load(spObject, list => list.EnableVersioning);
- context.Load(spObject, list => list.ForceCheckout);
- context.Load(spObject, list => list.Hidden);
- context.Load(spObject, list => list.NoCrawl);
- context.Load(spObject, list => list.OnQuickLaunch);
- context.Load(spObject, list => list.DocumentTemplateUrl);
- context.Load(spObject, list => list.DraftVersionVisibility);
-
- context.ExecuteQueryWithTrace();
-
- var assert = ServiceFactory.AssertService.NewAssert(model, definition, spObject);
-
- assert
- .ShouldBeEqual(m => m.Title, o => o.Title)
- //.ShouldBeEqual(m => m.Description, o => o.Description)
- //.ShouldBeEqual(m => m.IrmEnabled, o => o.IrmEnabled)
- //.ShouldBeEqual(m => m.IrmExpire, o => o.IrmExpire)
- //.ShouldBeEqual(m => m.IrmReject, o => o.IrmReject)
- //.ShouldBeEndOf(m => m.GetServerRelativeUrl(web), m => m.Url, o => o.GetServerRelativeUrl(), o => o.GetServerRelativeUrl())
- .ShouldBeEqual(m => m.ContentTypesEnabled, o => o.ContentTypesEnabled);
-
-
- if (!string.IsNullOrEmpty(definition.Description))
- assert.ShouldBeEqual(m => m.Description, o => o.Description);
- else
- assert.SkipProperty(m => m.Description, "Description is null or empty. Skipping.");
-
+using System;
+using System.Linq;
+
+using Microsoft.SharePoint.Client;
+
+using SPMeta2.Containers.Assertion;
+using SPMeta2.CSOM.DefaultSyntax;
+using SPMeta2.CSOM.Extensions;
+using SPMeta2.CSOM.ModelHandlers;
+using SPMeta2.CSOM.ModelHosts;
+using SPMeta2.Definitions;
+using SPMeta2.Services;
+using SPMeta2.Utils;
+using System.Text;
+
+namespace SPMeta2.Regression.CSOM.Validation
+{
+ public class ClientListDefinitionValidator : ListModelHandler
+ {
+ public override void DeployModel(object modelHost, DefinitionBase model)
+ {
+ var webModelHost = modelHost.WithAssertAndCast("modelHost", value => value.RequireNotNull());
+ var definition = model.WithAssertAndCast("model", value => value.RequireNotNull());
+
+ var web = webModelHost.HostWeb;
+ var context = web.Context;
+
+ context.Load(web, w => w.ServerRelativeUrl);
+
+ var lists = context.LoadQuery(web.Lists.Include(l => l.DefaultViewUrl));
+ context.ExecuteQueryWithTrace();
+
+#pragma warning disable 618
+ var spObject = FindListByUrl(lists, definition.GetListUrl());
+#pragma warning restore 618
+
+ context.Load(spObject);
+ context.Load(spObject, list => list.RootFolder.Properties);
+ context.Load(spObject, list => list.RootFolder.ServerRelativeUrl);
+ context.Load(spObject, list => list.RootFolder.Properties);
+ context.Load(spObject, list => list.EnableAttachments);
+ context.Load(spObject, list => list.EnableFolderCreation);
+ context.Load(spObject, list => list.EnableMinorVersions);
+ context.Load(spObject, list => list.EnableModeration);
+ context.Load(spObject, list => list.EnableVersioning);
+ context.Load(spObject, list => list.ForceCheckout);
+ context.Load(spObject, list => list.Hidden);
+ context.Load(spObject, list => list.NoCrawl);
+ context.Load(spObject, list => list.OnQuickLaunch);
+ context.Load(spObject, list => list.DocumentTemplateUrl);
+ context.Load(spObject, list => list.DraftVersionVisibility);
+
+ context.ExecuteQueryWithTrace();
+
+ var assert = ServiceFactory.AssertService.NewAssert(model, definition, spObject);
+
+ assert
+ .ShouldBeEqual(m => m.Title, o => o.Title)
+ //.ShouldBeEqual(m => m.Description, o => o.Description)
+ //.ShouldBeEqual(m => m.IrmEnabled, o => o.IrmEnabled)
+ //.ShouldBeEqual(m => m.IrmExpire, o => o.IrmExpire)
+ //.ShouldBeEqual(m => m.IrmReject, o => o.IrmReject)
+ //.ShouldBeEndOf(m => m.GetServerRelativeUrl(web), m => m.Url, o => o.GetServerRelativeUrl(), o => o.GetServerRelativeUrl())
+ .ShouldBeEqual(m => m.ContentTypesEnabled, o => o.ContentTypesEnabled);
+
+
+ if (!string.IsNullOrEmpty(definition.Description))
+ assert.ShouldBeEqual(m => m.Description, o => o.Description);
+ else
+ assert.SkipProperty(m => m.Description, "Description is null or empty. Skipping.");
+
+ assert.SkipProperty(m => m.EnableAssignToEmail, "EnableAssignToEmail is not supported by CSOM");
assert.SkipProperty(m => m.WriteSecurity, "WriteSecurity is not supported by CSOM");
- assert.SkipProperty(m => m.NavigateForFormsPages, "NavigateForFormsPages is not supported by CSOM");
-
- if (!string.IsNullOrEmpty(definition.DraftVersionVisibility))
- {
- var draftOption = (DraftVisibilityType)Enum.Parse(typeof(DraftVisibilityType), definition.DraftVersionVisibility);
-
- assert.ShouldBeEqual((p, s, d) =>
- {
- var srcProp = s.GetExpressionValue(m => m.DraftVersionVisibility);
- var dstProp = d.GetExpressionValue(m => m.DraftVersionVisibility);
-
- return new PropertyValidationResult
- {
- Tag = p.Tag,
- Src = srcProp,
- Dst = null,
- IsValid = draftOption == (DraftVisibilityType)dstProp.Value
- };
- });
- }
- else
- {
- assert.SkipProperty(m => m.DraftVersionVisibility, "Skipping from validation. DraftVersionVisibility IS NULL");
- }
-
- if (definition.Hidden.HasValue)
- assert.ShouldBeEqual(m => m.Hidden, m => m.Hidden);
- else
- assert.SkipProperty(m => m.Hidden, "Skipping from validation. Url IS NULL");
-
-#pragma warning disable 618
- if (!string.IsNullOrEmpty(definition.Url))
- assert.ShouldBeEndOf(m => m.GetListUrl(), m => m.Url, o => o.GetServerRelativeUrl(), o => o.GetServerRelativeUrl());
- else
- assert.SkipProperty(m => m.Url, "Skipping from validation. Url IS NULL");
-#pragma warning restore 618
-
- if (!string.IsNullOrEmpty(definition.CustomUrl))
- assert.ShouldBeEndOf(m => m.CustomUrl, o => o.GetServerRelativeUrl());
- else
- assert.SkipProperty(m => m.CustomUrl, "Skipping from validation. CustomUrl IS NULL");
-
- // common
- if (definition.EnableAttachments.HasValue)
- assert.ShouldBeEqual(m => m.EnableAttachments, o => o.EnableAttachments);
- else
- assert.SkipProperty(m => m.EnableAttachments, "Skipping from validation. EnableAttachments IS NULL");
-
- if (definition.EnableFolderCreation.HasValue)
- assert.ShouldBeEqual(m => m.EnableFolderCreation, o => o.EnableFolderCreation);
- else
- assert.SkipProperty(m => m.EnableFolderCreation, "Skipping from validation. EnableFolderCreation IS NULL");
-
- if (definition.EnableMinorVersions.HasValue)
- assert.ShouldBeEqual(m => m.EnableMinorVersions, o => o.EnableMinorVersions);
- else
- assert.SkipProperty(m => m.EnableMinorVersions, "Skipping from validation. EnableMinorVersions IS NULL");
-
- if (definition.EnableModeration.HasValue)
- assert.ShouldBeEqual(m => m.EnableModeration, o => o.EnableModeration);
- else
- assert.SkipProperty(m => m.EnableModeration, "Skipping from validation. EnableModeration IS NULL");
-
- if (definition.EnableVersioning.HasValue)
- assert.ShouldBeEqual(m => m.EnableVersioning, o => o.EnableVersioning);
- else
- assert.SkipProperty(m => m.EnableVersioning, "Skipping from validation. EnableVersioning IS NULL");
-
- if (definition.ForceCheckout.HasValue)
- assert.ShouldBeEqual(m => m.ForceCheckout, o => o.ForceCheckout);
- else
- assert.SkipProperty(m => m.ForceCheckout, "Skipping from validation. ForceCheckout IS NULL");
-
- if (definition.NoCrawl.HasValue)
- assert.ShouldBeEqual(m => m.NoCrawl, o => o.NoCrawl);
- else
- assert.SkipProperty(m => m.NoCrawl, "Skipping from validation. NoCrawl IS NULL");
-
-
- if (definition.OnQuickLaunch.HasValue)
- assert.ShouldBeEqual(m => m.OnQuickLaunch, o => o.OnQuickLaunch);
- else
- assert.SkipProperty(m => m.OnQuickLaunch, "Skipping from validation. OnQuickLaunch IS NULL");
-
-
- // IRM
- if (definition.IrmEnabled.HasValue)
- assert.ShouldBeEqual(m => m.IrmEnabled, o => o.IrmEnabled);
- else
- assert.SkipProperty(m => m.IrmEnabled, "Skipping from validation. IrmEnabled IS NULL");
-
- if (definition.IrmExpire.HasValue)
- assert.ShouldBeEqual(m => m.IrmExpire, o => o.IrmExpire);
- else
- assert.SkipProperty(m => m.IrmExpire, "Skipping from validation. IrmExpire IS NULL");
-
- if (definition.IrmReject.HasValue)
- assert.ShouldBeEqual(m => m.IrmReject, o => o.IrmReject);
- else
- assert.SkipProperty(m => m.IrmReject, "Skipping from validation. IrmReject IS NULL");
-
- if (definition.TemplateType > 0)
- {
- assert.ShouldBeEqual(m => m.TemplateType, o => o.BaseTemplate);
- }
- else
- {
- assert.SkipProperty(m => m.TemplateType, "TemplateType == 0. Skipping.");
- }
-
- if (!string.IsNullOrEmpty(definition.TemplateName))
- {
- context.Load(web, tmpWeb => tmpWeb.ListTemplates);
- context.ExecuteQueryWithTrace();
-
- TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Fetching all list templates and matching target one.");
- var listTemplate = ResolveListTemplate(webModelHost, definition);
-
- assert.ShouldBeEqual((p, s, d) =>
- {
- var srcProp = s.GetExpressionValue(m => m.TemplateName);
-
- return new PropertyValidationResult
- {
- Tag = p.Tag,
- Src = srcProp,
- Dst = null,
- IsValid =
- (spObject.TemplateFeatureId == listTemplate.FeatureId) &&
- (spObject.BaseTemplate == listTemplate.ListTemplateTypeKind)
- };
- });
- }
- else
- {
- assert.SkipProperty(m => m.TemplateName, "TemplateName is null or empty. Skipping.");
- }
-
- if (definition.MajorVersionLimit.HasValue)
- {
- if (ReflectionUtils.HasProperty(spObject, "MajorVersionLimit"))
- {
- assert.ShouldBeEqual((p, s, d) =>
- {
- var srcProp = s.GetExpressionValue(def => def.MajorVersionLimit);
- var value = (int)ReflectionUtils.GetPropertyValue(spObject, "MajorVersionLimit");
-
- var isValid = value == definition.MajorVersionLimit.Value;
-
- return new PropertyValidationResult
- {
- Tag = p.Tag,
- Src = srcProp,
- Dst = null,
- IsValid = isValid
- };
- });
- }
- else
- {
- assert.SkipProperty(m => m.MajorVersionLimit, "Skipping from validation. MajorVersionLimit does not exist. CSOM runtime is below required.");
- }
- }
- else
- assert.SkipProperty(m => m.MajorVersionLimit, "Skipping from validation. MajorVersionLimit IS NULL");
-
- if (definition.MajorWithMinorVersionsLimit.HasValue)
- {
- if (ReflectionUtils.HasProperty(spObject, "MajorWithMinorVersionsLimit"))
- {
- assert.ShouldBeEqual((p, s, d) =>
- {
- var srcProp = s.GetExpressionValue(def => def.MajorWithMinorVersionsLimit);
- var value = (int)ReflectionUtils.GetPropertyValue(spObject, "MajorWithMinorVersionsLimit");
-
- var isValid = value == definition.MajorWithMinorVersionsLimit.Value;
-
- return new PropertyValidationResult
- {
- Tag = p.Tag,
- Src = srcProp,
- Dst = null,
- IsValid = isValid
- };
- });
- }
- else
- {
- assert.SkipProperty(m => m.MajorWithMinorVersionsLimit, "Skipping from validation. MajorWithMinorVersionsLimit does not exist. CSOM runtime is below required.");
- }
- }
- else
- assert.SkipProperty(m => m.MajorWithMinorVersionsLimit,
- "Skipping from validation. MajorWithMinorVersionsLimit IS NULL");
-
- // template url
- if (string.IsNullOrEmpty(definition.DocumentTemplateUrl))
- {
- assert.SkipProperty(m => m.DocumentTemplateUrl, "Skipping DocumentTemplateUrl or library. Skipping.");
- }
- else
- {
- assert.ShouldBeEqual((p, s, d) =>
- {
- var srcProp = s.GetExpressionValue(def => def.DocumentTemplateUrl);
- var dstProp = d.DocumentTemplateUrl;
-
- var srcUrl = srcProp.Value as string;
- var dstUrl = dstProp;
-
- if (!dstUrl.StartsWith("/"))
- dstUrl = "/" + dstUrl;
-
- bool isValid;
-
- if (s.DocumentTemplateUrl.Contains("~sitecollection"))
- {
- var siteCollectionUrl = webModelHost.HostSite.ServerRelativeUrl == "/" ?
- string.Empty : webModelHost.HostSite.ServerRelativeUrl;
-
- isValid = srcUrl.Replace("~sitecollection", siteCollectionUrl) == dstUrl;
- }
- else if (s.DocumentTemplateUrl.Contains("~site"))
- {
- var siteCollectionUrl = web.ServerRelativeUrl == "/" ? string.Empty : web.ServerRelativeUrl;
-
- isValid = srcUrl.Replace("~site", siteCollectionUrl) == dstUrl;
- }
- else
- {
- isValid = dstUrl.EndsWith(srcUrl);
- }
-
- return new PropertyValidationResult
- {
- Tag = p.Tag,
- Src = srcProp,
- Dst = null,
- IsValid = isValid
- };
- });
- }
-
- if (definition.IndexedRootFolderPropertyKeys.Any())
- {
- assert.ShouldBeEqual((p, s, d) =>
- {
- var srcProp = s.GetExpressionValue(def => def.IndexedRootFolderPropertyKeys);
-
- var isValid = false;
-
- if (d.RootFolder.Properties.FieldValues.ContainsKey("vti_indexedpropertykeys"))
- {
- // check props, TODO
-
- // check vti_indexedpropertykeys
- var indexedPropertyKeys = d.RootFolder.Properties["vti_indexedpropertykeys"]
- .ToString()
- .Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries)
- .Select(es => Encoding.Unicode.GetString(System.Convert.FromBase64String(es)));
-
- // Search if any indexPropertyKey from definition is not in WebModel
- var differentKeys = s.IndexedRootFolderPropertyKeys.Select(o => o.Name)
- .Except(indexedPropertyKeys);
-
- isValid = !differentKeys.Any();
- }
-
- return new PropertyValidationResult
- {
- Tag = p.Tag,
- Src = srcProp,
- Dst = null,
- IsValid = isValid
- };
- });
- }
- else
- assert.SkipProperty(m => m.IndexedRootFolderPropertyKeys, "IndexedRootFolderPropertyKeys is NULL or empty. Skipping.");
-
+ assert.SkipProperty(m => m.NavigateForFormsPages, "NavigateForFormsPages is not supported by CSOM");
+
+ if (!string.IsNullOrEmpty(definition.DraftVersionVisibility))
+ {
+ var draftOption = (DraftVisibilityType)Enum.Parse(typeof(DraftVisibilityType), definition.DraftVersionVisibility);
+
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(m => m.DraftVersionVisibility);
+ var dstProp = d.GetExpressionValue(m => m.DraftVersionVisibility);
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = null,
+ IsValid = draftOption == (DraftVisibilityType)dstProp.Value
+ };
+ });
+ }
+ else
+ {
+ assert.SkipProperty(m => m.DraftVersionVisibility, "Skipping from validation. DraftVersionVisibility IS NULL");
+ }
+
+ if (definition.Hidden.HasValue)
+ assert.ShouldBeEqual(m => m.Hidden, m => m.Hidden);
+ else
+ assert.SkipProperty(m => m.Hidden, "Skipping from validation. Url IS NULL");
+
+#pragma warning disable 618
+ if (!string.IsNullOrEmpty(definition.Url))
+ assert.ShouldBeEndOf(m => m.GetListUrl(), m => m.Url, o => o.GetServerRelativeUrl(), o => o.GetServerRelativeUrl());
+ else
+ assert.SkipProperty(m => m.Url, "Skipping from validation. Url IS NULL");
+#pragma warning restore 618
+
+ if (!string.IsNullOrEmpty(definition.CustomUrl))
+ assert.ShouldBeEndOf(m => m.CustomUrl, o => o.GetServerRelativeUrl());
+ else
+ assert.SkipProperty(m => m.CustomUrl, "Skipping from validation. CustomUrl IS NULL");
+
+ // common
+ if (definition.EnableAttachments.HasValue)
+ assert.ShouldBeEqual(m => m.EnableAttachments, o => o.EnableAttachments);
+ else
+ assert.SkipProperty(m => m.EnableAttachments, "Skipping from validation. EnableAttachments IS NULL");
+
+ if (definition.EnableFolderCreation.HasValue)
+ assert.ShouldBeEqual(m => m.EnableFolderCreation, o => o.EnableFolderCreation);
+ else
+ assert.SkipProperty(m => m.EnableFolderCreation, "Skipping from validation. EnableFolderCreation IS NULL");
+
+ if (definition.EnableMinorVersions.HasValue)
+ assert.ShouldBeEqual(m => m.EnableMinorVersions, o => o.EnableMinorVersions);
+ else
+ assert.SkipProperty(m => m.EnableMinorVersions, "Skipping from validation. EnableMinorVersions IS NULL");
+
+ if (definition.EnableModeration.HasValue)
+ assert.ShouldBeEqual(m => m.EnableModeration, o => o.EnableModeration);
+ else
+ assert.SkipProperty(m => m.EnableModeration, "Skipping from validation. EnableModeration IS NULL");
+
+ if (definition.EnableVersioning.HasValue)
+ assert.ShouldBeEqual(m => m.EnableVersioning, o => o.EnableVersioning);
+ else
+ assert.SkipProperty(m => m.EnableVersioning, "Skipping from validation. EnableVersioning IS NULL");
+
+ if (definition.ForceCheckout.HasValue)
+ assert.ShouldBeEqual(m => m.ForceCheckout, o => o.ForceCheckout);
+ else
+ assert.SkipProperty(m => m.ForceCheckout, "Skipping from validation. ForceCheckout IS NULL");
+
+ if (definition.NoCrawl.HasValue)
+ assert.ShouldBeEqual(m => m.NoCrawl, o => o.NoCrawl);
+ else
+ assert.SkipProperty(m => m.NoCrawl, "Skipping from validation. NoCrawl IS NULL");
+
+
+ if (definition.OnQuickLaunch.HasValue)
+ assert.ShouldBeEqual(m => m.OnQuickLaunch, o => o.OnQuickLaunch);
+ else
+ assert.SkipProperty(m => m.OnQuickLaunch, "Skipping from validation. OnQuickLaunch IS NULL");
+
+
+ // IRM
+ if (definition.IrmEnabled.HasValue)
+ assert.ShouldBeEqual(m => m.IrmEnabled, o => o.IrmEnabled);
+ else
+ assert.SkipProperty(m => m.IrmEnabled, "Skipping from validation. IrmEnabled IS NULL");
+
+ if (definition.IrmExpire.HasValue)
+ assert.ShouldBeEqual(m => m.IrmExpire, o => o.IrmExpire);
+ else
+ assert.SkipProperty(m => m.IrmExpire, "Skipping from validation. IrmExpire IS NULL");
+
+ if (definition.IrmReject.HasValue)
+ assert.ShouldBeEqual(m => m.IrmReject, o => o.IrmReject);
+ else
+ assert.SkipProperty(m => m.IrmReject, "Skipping from validation. IrmReject IS NULL");
+
+ if (definition.TemplateType > 0)
+ {
+ assert.ShouldBeEqual(m => m.TemplateType, o => o.BaseTemplate);
+ }
+ else
+ {
+ assert.SkipProperty(m => m.TemplateType, "TemplateType == 0. Skipping.");
+ }
+
+ if (!string.IsNullOrEmpty(definition.TemplateName))
+ {
+ context.Load(web, tmpWeb => tmpWeb.ListTemplates);
+ context.ExecuteQueryWithTrace();
+
+ TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Fetching all list templates and matching target one.");
+ var listTemplate = ResolveListTemplate(webModelHost, definition);
+
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(m => m.TemplateName);
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = null,
+ IsValid =
+ (spObject.TemplateFeatureId == listTemplate.FeatureId) &&
+ (spObject.BaseTemplate == listTemplate.ListTemplateTypeKind)
+ };
+ });
+ }
+ else
+ {
+ assert.SkipProperty(m => m.TemplateName, "TemplateName is null or empty. Skipping.");
+ }
+
+ if (definition.MajorVersionLimit.HasValue)
+ {
+ if (ReflectionUtils.HasProperty(spObject, "MajorVersionLimit"))
+ {
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(def => def.MajorVersionLimit);
+ var value = (int)ReflectionUtils.GetPropertyValue(spObject, "MajorVersionLimit");
+
+ var isValid = value == definition.MajorVersionLimit.Value;
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = null,
+ IsValid = isValid
+ };
+ });
+ }
+ else
+ {
+ assert.SkipProperty(m => m.MajorVersionLimit, "Skipping from validation. MajorVersionLimit does not exist. CSOM runtime is below required.");
+ }
+ }
+ else
+ assert.SkipProperty(m => m.MajorVersionLimit, "Skipping from validation. MajorVersionLimit IS NULL");
+
+ if (definition.MajorWithMinorVersionsLimit.HasValue)
+ {
+ if (ReflectionUtils.HasProperty(spObject, "MajorWithMinorVersionsLimit"))
+ {
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(def => def.MajorWithMinorVersionsLimit);
+ var value = (int)ReflectionUtils.GetPropertyValue(spObject, "MajorWithMinorVersionsLimit");
+
+ var isValid = value == definition.MajorWithMinorVersionsLimit.Value;
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = null,
+ IsValid = isValid
+ };
+ });
+ }
+ else
+ {
+ assert.SkipProperty(m => m.MajorWithMinorVersionsLimit, "Skipping from validation. MajorWithMinorVersionsLimit does not exist. CSOM runtime is below required.");
+ }
+ }
+ else
+ assert.SkipProperty(m => m.MajorWithMinorVersionsLimit,
+ "Skipping from validation. MajorWithMinorVersionsLimit IS NULL");
+
+ // template url
+ if (string.IsNullOrEmpty(definition.DocumentTemplateUrl))
+ {
+ assert.SkipProperty(m => m.DocumentTemplateUrl, "Skipping DocumentTemplateUrl or library. Skipping.");
+ }
+ else
+ {
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(def => def.DocumentTemplateUrl);
+ var dstProp = d.DocumentTemplateUrl;
+
+ var srcUrl = srcProp.Value as string;
+ var dstUrl = dstProp;
+
+ if (!dstUrl.StartsWith("/"))
+ dstUrl = "/" + dstUrl;
+
+ bool isValid;
+
+ if (s.DocumentTemplateUrl.Contains("~sitecollection"))
+ {
+ var siteCollectionUrl = webModelHost.HostSite.ServerRelativeUrl == "/" ?
+ string.Empty : webModelHost.HostSite.ServerRelativeUrl;
+
+ isValid = srcUrl.Replace("~sitecollection", siteCollectionUrl) == dstUrl;
+ }
+ else if (s.DocumentTemplateUrl.Contains("~site"))
+ {
+ var siteCollectionUrl = web.ServerRelativeUrl == "/" ? string.Empty : web.ServerRelativeUrl;
+
+ isValid = srcUrl.Replace("~site", siteCollectionUrl) == dstUrl;
+ }
+ else
+ {
+ isValid = dstUrl.EndsWith(srcUrl);
+ }
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = null,
+ IsValid = isValid
+ };
+ });
+ }
+
+ if (definition.IndexedRootFolderPropertyKeys.Any())
+ {
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(def => def.IndexedRootFolderPropertyKeys);
+
+ var isValid = false;
+
+ if (d.RootFolder.Properties.FieldValues.ContainsKey("vti_indexedpropertykeys"))
+ {
+ // check props, TODO
+
+ // check vti_indexedpropertykeys
+ var indexedPropertyKeys = d.RootFolder.Properties["vti_indexedpropertykeys"]
+ .ToString()
+ .Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries)
+ .Select(es => Encoding.Unicode.GetString(System.Convert.FromBase64String(es)));
+
+ // Search if any indexPropertyKey from definition is not in WebModel
+ var differentKeys = s.IndexedRootFolderPropertyKeys.Select(o => o.Name)
+ .Except(indexedPropertyKeys);
+
+ isValid = !differentKeys.Any();
+ }
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = null,
+ IsValid = isValid
+ };
+ });
+ }
+ else
+ assert.SkipProperty(m => m.IndexedRootFolderPropertyKeys, "IndexedRootFolderPropertyKeys is NULL or empty. Skipping.");
+
var supportsLocalization = ReflectionUtils.HasProperties(spObject, new[]
{
"TitleResource", "DescriptionResource"
- });
-
- if (supportsLocalization)
- {
- if (definition.TitleResource.Any())
- {
- assert.ShouldBeEqual((p, s, d) =>
- {
- var srcProp = s.GetExpressionValue(def => def.TitleResource);
- var isValid = true;
-
- foreach (var userResource in s.TitleResource)
- {
- var culture = LocalizationService.GetUserResourceCultureInfo(userResource);
- var resourceObject = ReflectionUtils.GetPropertyValue(spObject, "TitleResource");
-
- var value = ReflectionUtils.GetMethod(resourceObject, "GetValueForUICulture")
- .Invoke(resourceObject, new[] { culture.Name }) as ClientResult;
-
- context.ExecuteQuery();
-
- isValid = userResource.Value == value.Value;
-
- if (!isValid)
- break;
- }
-
- return new PropertyValidationResult
- {
- Tag = p.Tag,
- Src = srcProp,
- Dst = null,
- IsValid = isValid
- };
- });
- }
- else
- {
- assert.SkipProperty(m => m.TitleResource, "TitleResource is NULL or empty. Skipping.");
- }
-
- if (definition.DescriptionResource.Any())
- {
- assert.ShouldBeEqual((p, s, d) =>
- {
- var srcProp = s.GetExpressionValue(def => def.DescriptionResource);
- var isValid = true;
-
- foreach (var userResource in s.DescriptionResource)
- {
- var culture = LocalizationService.GetUserResourceCultureInfo(userResource);
- var resourceObject = ReflectionUtils.GetPropertyValue(spObject, "DescriptionResource");
-
- var value = ReflectionUtils.GetMethod(resourceObject, "GetValueForUICulture")
- .Invoke(resourceObject, new[] { culture.Name }) as ClientResult;
-
- context.ExecuteQuery();
-
- isValid = userResource.Value == value.Value;
-
- if (!isValid)
- break;
- }
-
- return new PropertyValidationResult
- {
- Tag = p.Tag,
- Src = srcProp,
- Dst = null,
- IsValid = isValid
- };
- });
- }
- else
- {
- assert.SkipProperty(m => m.DescriptionResource, "DescriptionResource is NULL or empty. Skipping.");
- }
- }
- else
- {
- TraceService.Critical((int)LogEventId.ModelProvisionCoreCall,
- "CSOM runtime doesn't have Web.TitleResource and Web.DescriptionResource() methods support. Skipping validation.");
-
- assert.SkipProperty(m => m.TitleResource, "TitleResource is null or empty. Skipping.");
- assert.SkipProperty(m => m.DescriptionResource, "DescriptionResource is null or empty. Skipping.");
- }
- }
- }
-
- public static class Ex
- {
- public static string GetServerRelativeUrl(this ListDefinition listDef, Web web)
- {
-#pragma warning disable 618
- return UrlUtility.CombineUrl(web.ServerRelativeUrl, listDef.GetListUrl());
-#pragma warning restore 618
- }
-
- public static string GetServerRelativeUrl(this List list)
- {
- return list.RootFolder.ServerRelativeUrl;
- }
- }
-}
+ });
+
+ if (supportsLocalization)
+ {
+ if (definition.TitleResource.Any())
+ {
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(def => def.TitleResource);
+ var isValid = true;
+
+ foreach (var userResource in s.TitleResource)
+ {
+ var culture = LocalizationService.GetUserResourceCultureInfo(userResource);
+ var resourceObject = ReflectionUtils.GetPropertyValue(spObject, "TitleResource");
+
+ var value = ReflectionUtils.GetMethod(resourceObject, "GetValueForUICulture")
+ .Invoke(resourceObject, new[] { culture.Name }) as ClientResult;
+
+ context.ExecuteQuery();
+
+ isValid = userResource.Value == value.Value;
+
+ if (!isValid)
+ break;
+ }
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = null,
+ IsValid = isValid
+ };
+ });
+ }
+ else
+ {
+ assert.SkipProperty(m => m.TitleResource, "TitleResource is NULL or empty. Skipping.");
+ }
+
+ if (definition.DescriptionResource.Any())
+ {
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(def => def.DescriptionResource);
+ var isValid = true;
+
+ foreach (var userResource in s.DescriptionResource)
+ {
+ var culture = LocalizationService.GetUserResourceCultureInfo(userResource);
+ var resourceObject = ReflectionUtils.GetPropertyValue(spObject, "DescriptionResource");
+
+ var value = ReflectionUtils.GetMethod(resourceObject, "GetValueForUICulture")
+ .Invoke(resourceObject, new[] { culture.Name }) as ClientResult;
+
+ context.ExecuteQuery();
+
+ isValid = userResource.Value == value.Value;
+
+ if (!isValid)
+ break;
+ }
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = null,
+ IsValid = isValid
+ };
+ });
+ }
+ else
+ {
+ assert.SkipProperty(m => m.DescriptionResource, "DescriptionResource is NULL or empty. Skipping.");
+ }
+ }
+ else
+ {
+ TraceService.Critical((int)LogEventId.ModelProvisionCoreCall,
+ "CSOM runtime doesn't have Web.TitleResource and Web.DescriptionResource() methods support. Skipping validation.");
+
+ assert.SkipProperty(m => m.TitleResource, "TitleResource is null or empty. Skipping.");
+ assert.SkipProperty(m => m.DescriptionResource, "DescriptionResource is null or empty. Skipping.");
+ }
+ }
+ }
+
+ public static class Ex
+ {
+ public static string GetServerRelativeUrl(this ListDefinition listDef, Web web)
+ {
+#pragma warning disable 618
+ return UrlUtility.CombineUrl(web.ServerRelativeUrl, listDef.GetListUrl());
+#pragma warning restore 618
+ }
+
+ public static string GetServerRelativeUrl(this List list)
+ {
+ return list.RootFolder.ServerRelativeUrl;
+ }
+ }
+}
diff --git a/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientListViewDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientListViewDefinitionValidator.cs
index f6723f957..bf3f93bf0 100644
--- a/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientListViewDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientListViewDefinitionValidator.cs
@@ -30,6 +30,7 @@ public override void DeployModel(object modelHost, DefinitionBase model)
v => v.ViewFields,
v => v.Title,
v => v.DefaultView,
+ v => v.MobileDefaultView,
v => v.ViewQuery,
v => v.RowLimit,
v => v.Paged,
@@ -60,6 +61,12 @@ public override void DeployModel(object modelHost, DefinitionBase model)
.ShouldBeEqual(m => m.RowLimit, o => (int)o.RowLimit)
.ShouldBeEqual(m => m.IsPaged, o => o.Paged);
+ if (definition.MobileDefaultView.HasValue)
+ assert.ShouldBeEqual(m => m.MobileDefaultView, o => o.MobileDefaultView);
+ else
+ assert.SkipProperty(m => m.MobileDefaultView, "MobileDefaultView is null or empty. Skipping.");
+
+
if (!string.IsNullOrEmpty(definition.Scope))
{
assert.ShouldBeEqual((p, s, d) =>
@@ -99,6 +106,9 @@ public override void DeployModel(object modelHost, DefinitionBase model)
srcViewDate = Regex.Replace(srcViewDate, @"\r\n?|\n", string.Empty);
dstViewDate = Regex.Replace(dstViewDate, @"\r\n?|\n", string.Empty);
+ srcViewDate = Regex.Replace(srcViewDate, @"\s+", string.Empty);
+ dstViewDate = Regex.Replace(dstViewDate, @"\s+", string.Empty);
+
var isValid = srcViewDate.ToUpper() == dstViewDate.ToUpper();
return new PropertyValidationResult
@@ -209,6 +219,9 @@ public override void DeployModel(object modelHost, DefinitionBase model)
srcViewDate = Regex.Replace(srcViewDate, @"\r\n?|\n", string.Empty);
dstViewDate = Regex.Replace(dstViewDate, @"\r\n?|\n", string.Empty);
+ srcViewDate = Regex.Replace(srcViewDate, @"\s+", string.Empty);
+ dstViewDate = Regex.Replace(dstViewDate, @"\s+", string.Empty);
+
var isValid = srcViewDate.ToUpper() == dstViewDate.ToUpper();
return new PropertyValidationResult
diff --git a/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientSecurityRoleDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientSecurityRoleDefinitionValidator.cs
index 457bb0595..c49b4761c 100644
--- a/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientSecurityRoleDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientSecurityRoleDefinitionValidator.cs
@@ -24,11 +24,15 @@ public override void DeployModel(object modelHost, DefinitionBase model)
context.Load(web, tmpWeb => tmpWeb.SiteGroups);
context.ExecuteQueryWithTrace();
- var spObject = FindRoleDefinition(web.RoleDefinitions, definition.Name);
+ var spObject = FindRoleDefinition(web.RoleDefinitions, definition.Name);
+
+ context.Load(spObject);
+ context.ExecuteQueryWithTrace();
var assert = ServiceFactory.AssertService.NewAssert(definition, spObject);
- assert
+ assert
+ .ShouldNotBeNull(spObject)
.ShouldBeEqual(m => m.Name, o => o.Name)
.ShouldBeEqualIfNotNullOrEmpty(m => m.Description, o => o.Description)
diff --git a/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientSecurityRoleLinkDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientSecurityRoleLinkDefinitionValidator.cs
index c23ca2b2b..d17586592 100644
--- a/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientSecurityRoleLinkDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.CSOM/Validation/ClientSecurityRoleLinkDefinitionValidator.cs
@@ -1,34 +1,37 @@
-using System.Linq;
-using Microsoft.SharePoint.Client;
-using SPMeta2.Containers.Assertion;
-using SPMeta2.Containers.Extensions;
-using SPMeta2.CSOM.Extensions;
-using SPMeta2.CSOM.ModelHandlers;
-using SPMeta2.CSOM.ModelHosts;
-using SPMeta2.Definitions;
-using SPMeta2.Exceptions;
-using SPMeta2.Utils;
-
-namespace SPMeta2.Regression.CSOM.Validation
-{
- public class ClientSecurityRoleLinkDefinitionValidator : SecurityRoleLinkModelHandler
- {
- public override void DeployModel(object modelHost, DefinitionBase model)
- {
- var securityGroupModelHost = modelHost.WithAssertAndCast("modelHost", value => value.RequireNotNull());
- var definition = model.WithAssertAndCast("model", value => value.RequireNotNull());
-
- var securableObject = securityGroupModelHost.SecurableObject;
- var securityGroup = securityGroupModelHost.SecurityGroup;
- var securityRole = ResolveSecurityRole(ExtractWeb(securableObject), definition);
-
- var securityRoleContext = securityRole.Context;
- securityRoleContext.Load(securityRole);
- securityRoleContext.ExecuteQueryWithTrace();
-
+using System.Linq;
+using Microsoft.SharePoint.Client;
+using SPMeta2.Containers.Assertion;
+using SPMeta2.Containers.Extensions;
+using SPMeta2.CSOM.Extensions;
+using SPMeta2.CSOM.ModelHandlers;
+using SPMeta2.CSOM.ModelHosts;
+using SPMeta2.Definitions;
+using SPMeta2.Exceptions;
+using SPMeta2.Utils;
+
+namespace SPMeta2.Regression.CSOM.Validation
+{
+ public class ClientSecurityRoleLinkDefinitionValidator : SecurityRoleLinkModelHandler
+ {
+ public override void DeployModel(object modelHost, DefinitionBase model)
+ {
+ var securityGroupModelHost = modelHost.WithAssertAndCast("modelHost", value => value.RequireNotNull());
+ var definition = model.WithAssertAndCast("model", value => value.RequireNotNull());
+
+ var securableObject = securityGroupModelHost.SecurableObject;
+ var securityGroup = securityGroupModelHost.SecurityGroup;
+ var securityRole = ResolveSecurityRole(ExtractWeb(securableObject), definition);
+
+ var securityRoleContext = securityRole.Context;
+ securityRoleContext.Load(securityRole);
+ securityRoleContext.ExecuteQueryWithTrace();
+
var roleAssignments = securableObject.RoleAssignments;
- var spObject = roleAssignments
- .OfType()
+
+ securityRoleContext.Load(roleAssignments, d => d.Include(c => c.Member));
+ securityRoleContext.ExecuteQueryWithTrace();
+
+ var spObject = roleAssignments.ToArray()
.FirstOrDefault(r => r.Member.Id == securityGroup.Id);
@@ -38,89 +41,89 @@ public override void DeployModel(object modelHost, DefinitionBase model)
{
throw new SPMeta2Exception("There must be only one RoleAssignments. RegIsMustBeSingleItem() == true");
}
- }
-
- var context = spObject.Context;
- context.Load(spObject, o => o.RoleDefinitionBindings);
- context.ExecuteQueryWithTrace();
-
- var assert = ServiceFactory.AssertService.NewAssert(definition, spObject);
-
- assert
- .ShouldNotBeNull(spObject);
-
- if (!string.IsNullOrEmpty(definition.SecurityRoleName))
- {
- assert.ShouldBeEqual((p, s, d) =>
- {
- var srcProp = s.GetExpressionValue(m => m.SecurityRoleName);
- var dstProp = d.GetExpressionValue(o => o.RoleDefinitionBindings.ToString());
-
- var hasRoleDefinitionBinding = spObject.RoleDefinitionBindings
- .FirstOrDefault(b => b.Id == securityRole.Id) != null;
-
- return new PropertyValidationResult
- {
- Tag = p.Tag,
- Src = srcProp,
- Dst = dstProp,
- IsValid = hasRoleDefinitionBinding
- };
- });
- }
- else
- {
- assert.SkipProperty(m => m.SecurityRoleName, "SecurityRoleName is null or empty. Skipping.");
- }
-
- if (!string.IsNullOrEmpty(definition.SecurityRoleType))
- {
- assert.ShouldBeEqual((p, s, d) =>
- {
- var srcProp = s.GetExpressionValue(m => m.SecurityRoleType);
- var dstProp = d.GetExpressionValue(o => o.RoleDefinitionBindings.ToString());
-
- var hasRoleDefinitionBinding = spObject.RoleDefinitionBindings
- .FirstOrDefault(b => b.Id == securityRole.Id) != null;
-
- return new PropertyValidationResult
- {
- Tag = p.Tag,
- Src = srcProp,
- Dst = dstProp,
- IsValid = hasRoleDefinitionBinding
- };
- });
-
- }
- else
- {
- assert.SkipProperty(m => m.SecurityRoleType, "SecurityRoleType is null or empty. Skipping.");
- }
-
- if (definition.SecurityRoleId > 0)
- {
- assert.ShouldBeEqual((p, s, d) =>
- {
- var srcProp = s.GetExpressionValue(m => m.SecurityRoleId);
- var dstProp = d.GetExpressionValue(o => o.RoleDefinitionBindings.ToString());
-
- var hasRoleDefinitionBinding = spObject.RoleDefinitionBindings
- .FirstOrDefault(b => b.Id == securityRole.Id) != null;
-
- return new PropertyValidationResult
- {
- Tag = p.Tag,
- Src = srcProp,
- Dst = dstProp,
- IsValid = hasRoleDefinitionBinding
- };
- });
- }
- else
- {
- assert.SkipProperty(m => m.SecurityRoleId, "SecurityRoleId == 0. Skipping.");
- }
- }
- }
-}
+ }
+
+ var context = spObject.Context;
+ context.Load(spObject, o => o.RoleDefinitionBindings);
+ context.ExecuteQueryWithTrace();
+
+ var assert = ServiceFactory.AssertService.NewAssert(definition, spObject);
+
+ assert
+ .ShouldNotBeNull(spObject);
+
+ if (!string.IsNullOrEmpty(definition.SecurityRoleName))
+ {
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(m => m.SecurityRoleName);
+ var dstProp = d.GetExpressionValue(o => o.RoleDefinitionBindings.ToString());
+
+ var hasRoleDefinitionBinding = spObject.RoleDefinitionBindings
+ .FirstOrDefault(b => b.Id == securityRole.Id) != null;
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = dstProp,
+ IsValid = hasRoleDefinitionBinding
+ };
+ });
+ }
+ else
+ {
+ assert.SkipProperty(m => m.SecurityRoleName, "SecurityRoleName is null or empty. Skipping.");
+ }
+
+ if (!string.IsNullOrEmpty(definition.SecurityRoleType))
+ {
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(m => m.SecurityRoleType);
+ var dstProp = d.GetExpressionValue(o => o.RoleDefinitionBindings.ToString());
+
+ var hasRoleDefinitionBinding = spObject.RoleDefinitionBindings
+ .FirstOrDefault(b => b.Id == securityRole.Id) != null;
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = dstProp,
+ IsValid = hasRoleDefinitionBinding
+ };
+ });
+
+ }
+ else
+ {
+ assert.SkipProperty(m => m.SecurityRoleType, "SecurityRoleType is null or empty. Skipping.");
+ }
+
+ if (definition.SecurityRoleId > 0)
+ {
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(m => m.SecurityRoleId);
+ var dstProp = d.GetExpressionValue(o => o.RoleDefinitionBindings.ToString());
+
+ var hasRoleDefinitionBinding = spObject.RoleDefinitionBindings
+ .FirstOrDefault(b => b.Id == securityRole.Id) != null;
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = dstProp,
+ IsValid = hasRoleDefinitionBinding
+ };
+ });
+ }
+ else
+ {
+ assert.SkipProperty(m => m.SecurityRoleId, "SecurityRoleId == 0. Skipping.");
+ }
+ }
+ }
+}
diff --git a/SPMeta2/SPMeta2.Regression.CSOM/Validation/ContentTypes/HideContentTypeLinksDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.CSOM/Validation/ContentTypes/HideContentTypeLinksDefinitionValidator.cs
index a73d91dfd..5cb18be5a 100644
--- a/SPMeta2/SPMeta2.Regression.CSOM/Validation/ContentTypes/HideContentTypeLinksDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.CSOM/Validation/ContentTypes/HideContentTypeLinksDefinitionValidator.cs
@@ -1,21 +1,91 @@
-using SPMeta2.CSOM.ModelHandlers.ContentTypes;
-using SPMeta2.Definitions;
-using SPMeta2.Definitions.Base;
-using SPMeta2.Definitions.ContentTypes;
-using SPMeta2.Utils;
-
-namespace SPMeta2.Regression.CSOM.Validation.ContentTypes
-{
- public class HideContentTypeLinksDefinitionValidator : HideContentTypeLinksModelHandler
- {
- public override void DeployModel(object modelHost, DefinitionBase model)
- {
- var definition = model.WithAssertAndCast("model", value => value.RequireNotNull());
- var spObject = ExtractFolderFromHost(modelHost);
-
- ServiceFactory.AssertService
- .NewAssert(definition, spObject)
- .ShouldNotBeNull(spObject);
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Microsoft.SharePoint.Client;
+using SPMeta2.Containers.Assertion;
+using SPMeta2.CSOM.ModelHandlers.ContentTypes;
+using SPMeta2.Definitions;
+using SPMeta2.Definitions.Base;
+using SPMeta2.Definitions.ContentTypes;
+using SPMeta2.Utils;
+using SPMeta2.CSOM.Extensions;
+
+namespace SPMeta2.Regression.CSOM.Validation.ContentTypes
+{
+ public class HideContentTypeLinksDefinitionValidator : HideContentTypeLinksModelHandler
+ {
+ public override void DeployModel(object modelHost, DefinitionBase model)
+ {
+ var definition = model.WithAssertAndCast("model", value => value.RequireNotNull());
+ var list = ExtractListFromHost(modelHost);
+ var spObject = ExtractFolderFromHost(modelHost);
+
+ var context = spObject.Context;
+
+ context.Load(list, l => l.ContentTypes.Include(
+ ct => ct.Id,
+ ct => ct.StringId,
+ ct => ct.Name,
+ ct => ct.ReadOnly,
+
+ ct => ct.Parent.Id
+ ));
+
+ context.Load(spObject, f => f.UniqueContentTypeOrder);
+ context.ExecuteQueryWithTrace();
+
+ var listContentTypes = list.ContentTypes;
+ var contentTypeOrder = spObject.UniqueContentTypeOrder;
+
+ var assert = ServiceFactory.AssertService
+ .NewAssert(definition, spObject)
+ .ShouldNotBeNull(spObject)
+ .ShouldNotBeNull(list)
+ .ShouldNotBeNull(contentTypeOrder);
+
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(def => def.ContentTypes);
+ var dstProp = d.GetExpressionValue(ct => ct.UniqueContentTypeOrder);
+
+ var isValid = true;
+
+ foreach (var srcContentTypeDef in s.ContentTypes)
+ {
+ var exists = false;
+
+ if (!string.IsNullOrEmpty(srcContentTypeDef.ContentTypeId))
+ {
+ var spContentTypeId = srcContentTypeDef.ContentTypeId.ToUpper();
+ var listContentType = contentTypeOrder.FirstOrDefault(c => c.StringValue.ToUpper().StartsWith(spContentTypeId));
+
+ exists = listContentType != null;
+ }
+ else if (!string.IsNullOrEmpty(srcContentTypeDef.ContentTypeName))
+ {
+ var spContentType = listContentTypes.FirstOrDefault(c => c.Name == srcContentTypeDef.ContentTypeName);
+ var spContentTypeId = spContentType.StringId.ToUpper();
+
+ var listContentType = contentTypeOrder.FirstOrDefault(c => c.StringValue.ToUpper().StartsWith(spContentTypeId));
+
+ exists = listContentType != null;
+ }
+
+ if (exists)
+ {
+ isValid = false;
+ break;
+ }
+ }
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = dstProp,
+ IsValid = isValid
+ };
+ });
+ }
+ }
+}
diff --git a/SPMeta2/SPMeta2.Regression.CSOM/Validation/ContentTypes/RemoveContentTypeLinksDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.CSOM/Validation/ContentTypes/RemoveContentTypeLinksDefinitionValidator.cs
index 13ba57dfb..6e28394ae 100644
--- a/SPMeta2/SPMeta2.Regression.CSOM/Validation/ContentTypes/RemoveContentTypeLinksDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.CSOM/Validation/ContentTypes/RemoveContentTypeLinksDefinitionValidator.cs
@@ -1,21 +1,85 @@
-using SPMeta2.CSOM.ModelHandlers.ContentTypes;
-using SPMeta2.Definitions;
-using SPMeta2.Definitions.Base;
-using SPMeta2.Definitions.ContentTypes;
-using SPMeta2.Utils;
-
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Microsoft.SharePoint.Client;
+using SPMeta2.Containers.Assertion;
+using SPMeta2.CSOM.ModelHandlers.ContentTypes;
+using SPMeta2.Definitions;
+using SPMeta2.Definitions.Base;
+using SPMeta2.Definitions.ContentTypes;
+using SPMeta2.Utils;
+using SPMeta2.CSOM.Extensions;
namespace SPMeta2.Regression.CSOM.Validation.ContentTypes
{
public class RemoveContentTypeLinksDefinitionValidator : RemoveContentTypeLinksModelHandler
{
public override void DeployModel(object modelHost, DefinitionBase model)
{
- var definition = model.WithAssertAndCast("model", value => value.RequireNotNull());
- var spObject = ExtractListFromHost(modelHost);
-
- ServiceFactory.AssertService
- .NewAssert(definition, spObject)
- .ShouldNotBeNull(spObject);
+ var definition = model.WithAssertAndCast("model", value => value.RequireNotNull());
+ var list = ExtractListFromHost(modelHost);
+ var spObject = ExtractFolderFromHost(modelHost);
+
+ var context = spObject.Context;
+
+ context.Load(list, l => l.ContentTypes.Include(
+ ct => ct.Id,
+ ct => ct.StringId,
+ ct => ct.Name,
+ ct => ct.ReadOnly,
+
+ ct => ct.Parent.Id
+ ));
+
+ context.Load(spObject, f => f.UniqueContentTypeOrder);
+ context.ExecuteQueryWithTrace();
+
+ var listContentTypes = list.ContentTypes;
+
+ var assert = ServiceFactory.AssertService
+ .NewAssert(definition, spObject)
+ .ShouldNotBeNull(spObject)
+ .ShouldNotBeNull(list);
+
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(def => def.ContentTypes);
+ var dstProp = d.GetExpressionValue(ct => ct.UniqueContentTypeOrder);
+
+ var isValid = true;
+
+ foreach (var srcContentTypeDef in s.ContentTypes)
+ {
+ var exists = false;
+
+ if (!string.IsNullOrEmpty(srcContentTypeDef.ContentTypeId))
+ {
+ var spContentTypeId = srcContentTypeDef.ContentTypeId.ToUpper();
+ var listContentType = listContentTypes.FirstOrDefault(c => c.StringId.StartsWith(spContentTypeId));
+
+ exists = listContentType != null;
+
+ }
+ else if (!string.IsNullOrEmpty(srcContentTypeDef.ContentTypeName))
+ {
+ var listContentType = listContentTypes.FirstOrDefault(c => c.Name.ToUpper() == srcContentTypeDef.ContentTypeName.ToUpper());
+ exists = listContentType != null;
+ }
+
+ if (exists)
+ {
+ isValid = false;
+ break;
+ }
+ }
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = dstProp,
+ IsValid = isValid
+ };
+ });
}
}
}
diff --git a/SPMeta2/SPMeta2.Regression.CSOM/Validation/ContentTypes/UniqueContentTypeOrderDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.CSOM/Validation/ContentTypes/UniqueContentTypeOrderDefinitionValidator.cs
index 1111f0c48..d5e7636aa 100644
--- a/SPMeta2/SPMeta2.Regression.CSOM/Validation/ContentTypes/UniqueContentTypeOrderDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.CSOM/Validation/ContentTypes/UniqueContentTypeOrderDefinitionValidator.cs
@@ -1,21 +1,93 @@
-using SPMeta2.CSOM.ModelHandlers.ContentTypes;
-using SPMeta2.Definitions;
-using SPMeta2.Definitions.Base;
-using SPMeta2.Definitions.ContentTypes;
-using SPMeta2.Utils;
-
-namespace SPMeta2.Regression.CSOM.Validation.ContentTypes
-{
- public class UniqueContentTypeOrderDefinitionValidator : UniqueContentTypeOrderModelHandler
- {
- public override void DeployModel(object modelHost, DefinitionBase model)
- {
- var definition = model.WithAssertAndCast("model", value => value.RequireNotNull());
- var spObject = ExtractFolderFromHost(modelHost);
-
- ServiceFactory.AssertService
- .NewAssert(definition, spObject)
- .ShouldNotBeNull(spObject);
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Microsoft.SharePoint.Client;
+using SPMeta2.CSOM.ModelHandlers.ContentTypes;
+using SPMeta2.Definitions;
+using SPMeta2.Definitions.Base;
+using SPMeta2.Definitions.ContentTypes;
+using SPMeta2.Utils;
+using SPMeta2.CSOM.Extensions;
+using SPMeta2.Containers.Assertion;
+
+namespace SPMeta2.Regression.CSOM.Validation.ContentTypes
+{
+ public class UniqueContentTypeOrderDefinitionValidator : UniqueContentTypeOrderModelHandler
+ {
+ public override void DeployModel(object modelHost, DefinitionBase model)
+ {
+ var definition = model.WithAssertAndCast("model", value => value.RequireNotNull());
+
+ var list = ExtractListFromHost(modelHost);
+ var spObject = ExtractFolderFromHost(modelHost);
+
+ var context = spObject.Context;
+
+ context.Load(list, l => l.ContentTypes.Include(
+ ct => ct.Id,
+ ct => ct.StringId,
+ ct => ct.Name,
+ ct => ct.ReadOnly,
+
+ ct => ct.Parent.Id
+ ));
+
+ context.Load(spObject, f => f.UniqueContentTypeOrder);
+ context.ExecuteQueryWithTrace();
+
+ var listContentTypes = list.ContentTypes;
+ var contentTypeOrder = spObject.UniqueContentTypeOrder;
+
+ var assert = ServiceFactory.AssertService
+ .NewAssert(definition, spObject)
+ .ShouldNotBeNull(spObject)
+ .ShouldNotBeNull(list)
+ .ShouldNotBeNull(contentTypeOrder);
+
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(def => def.ContentTypes);
+ var dstProp = d.GetExpressionValue(ct => ct.UniqueContentTypeOrder);
+
+ var isValid = true;
+
+ foreach (var srcContentTypeDef in s.ContentTypes)
+ {
+ var exists = true;
+
+ if (!string.IsNullOrEmpty(srcContentTypeDef.ContentTypeId))
+ {
+ var spContentTypeId = srcContentTypeDef.ContentTypeId.ToUpper();
+ var listContentType = contentTypeOrder.FirstOrDefault(c => c.StringValue.ToUpper().StartsWith(spContentTypeId));
+
+ exists = listContentType != null;
+ }
+ else if (!string.IsNullOrEmpty(srcContentTypeDef.ContentTypeName))
+ {
+ var spContentType = listContentTypes.FirstOrDefault(c => c.Name == srcContentTypeDef.ContentTypeName);
+ var spContentTypeId = spContentType.StringId.ToUpper();
+
+ var listContentType = contentTypeOrder.FirstOrDefault(c => c.StringValue.ToUpper().StartsWith(spContentTypeId));
+
+ exists = listContentType != null;
+ }
+
+ if (!exists)
+ {
+ isValid = false;
+ break;
+ }
+ }
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = dstProp,
+ IsValid = isValid
+ };
+ });
+
+ }
+ }
+}
diff --git a/SPMeta2/SPMeta2.Regression.CSOM/Validation/Fields/LookupFieldDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.CSOM/Validation/Fields/LookupFieldDefinitionValidator.cs
index 46fe93b91..18db3cfd0 100644
--- a/SPMeta2/SPMeta2.Regression.CSOM/Validation/Fields/LookupFieldDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.CSOM/Validation/Fields/LookupFieldDefinitionValidator.cs
@@ -7,6 +7,7 @@
using SPMeta2.Definitions;
using SPMeta2.Definitions.Fields;
using SPMeta2.Utils;
+using System.Xml.Linq;
namespace SPMeta2.Regression.CSOM.Validation.Fields
{
@@ -70,7 +71,7 @@ public override void DeployModel(object modelHost, DefinitionBase model)
HostList = ExtractListFromHost(modelHost);
HostSite = ExtractSiteFromHost(modelHost);
- CurrentModelHost = modelHost.WithAssertAndCast("modelHost", value => value.RequireNotNull());
+ CurrentModelHost = modelHost.WithAssertAndCast("CurrentModelHost", value => value.RequireNotNull());
var assert = ServiceFactory.AssertService.NewAssert(model, definition, spObject);
@@ -137,6 +138,9 @@ public override void DeployModel(object modelHost, DefinitionBase model)
if (!string.IsNullOrEmpty(typedDefinition.LookupWebUrl))
{
var lookupFieldModelHandler = new LookupFieldModelHandler();
+ ReflectionUtils.SetNonPublicPropertyValue(lookupFieldModelHandler, "CurrentModelHost", CurrentModelHost);
+ ReflectionUtils.SetNonPublicPropertyValue(lookupFieldModelHandler, "ModelHost", CurrentModelHost);
+
var targetWeb = lookupFieldModelHandler.GetTargetWeb(HostSite, typedDefinition);
typedFieldAssert.ShouldBeEqual((p, s, d) =>
@@ -165,9 +169,11 @@ public override void DeployModel(object modelHost, DefinitionBase model)
var context = site.Context;
var lookupFieldModelHandler = new LookupFieldModelHandler();
- var web = lookupFieldModelHandler.GetTargetWeb(site, typedDefinition);
-
+ ReflectionUtils.SetNonPublicPropertyValue(lookupFieldModelHandler, "CurrentModelHost", CurrentModelHost);
+ ReflectionUtils.SetNonPublicPropertyValue(lookupFieldModelHandler, "ModelHost", CurrentModelHost);
+ var web = lookupFieldModelHandler.GetTargetWeb(site, typedDefinition);
+
context.Load(web);
context.ExecuteQueryWithTrace();
@@ -200,12 +206,13 @@ public override void DeployModel(object modelHost, DefinitionBase model)
{
var site = HostSite;
var context = site.Context;
-
-
+
var lookupFieldModelHandler = new LookupFieldModelHandler();
- var web = lookupFieldModelHandler.GetTargetWeb(site, typedDefinition);
-
+ ReflectionUtils.SetNonPublicPropertyValue(lookupFieldModelHandler, "CurrentModelHost", CurrentModelHost);
+ ReflectionUtils.SetNonPublicPropertyValue(lookupFieldModelHandler, "ModelHost", CurrentModelHost);
+ var web = lookupFieldModelHandler.GetTargetWeb(site, typedDefinition);
+
context.Load(web);
context.ExecuteQueryWithTrace();
@@ -290,7 +297,31 @@ public override void DeployModel(object modelHost, DefinitionBase model)
}
}
- typedFieldAssert.SkipProperty(m => m.CountRelated, "CountRelated is not supported by CSOM");
+ if (typedDefinition.CountRelated.HasValue)
+ {
+ typedFieldAssert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(m => m.CountRelated);
+ var dstXmlNode = XDocument.Parse(d.SchemaXml).Root;
+
+ var isValid = bool.Parse(dstXmlNode.Attribute("CountRelated").Value) ==
+ typedDefinition.CountRelated.Value;
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = null,
+ IsValid = isValid
+ };
+ });
+
+ //typedFieldAssert.ShouldBeEqual(m => m.CountRelated, o => o.cou);
+ }
+ else
+ {
+ typedFieldAssert.SkipProperty(m => m.CountRelated, "CountRelated is NULL. Skipping.");
+ }
}
}
}
diff --git a/SPMeta2/SPMeta2.Regression.CSOM/Validation/WebPartDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.CSOM/Validation/WebPartDefinitionValidator.cs
index 9183764de..435f68ac4 100644
--- a/SPMeta2/SPMeta2.Regression.CSOM/Validation/WebPartDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.CSOM/Validation/WebPartDefinitionValidator.cs
@@ -68,7 +68,6 @@ public override void DeployModel(object modelHost, DefinitionBase model)
var webPartXmlString = webClient.DownloadString(webpartExportUrl);
CurrentWebPartXml = WebpartXmlExtensions.LoadWebpartXmlDocument(webPartXmlString);
-
assert.ShouldBeEqual(m => m.Title, o => o.Title);
// checking the web part type, shoul be as expected
@@ -418,6 +417,11 @@ public override void DeployModel(object modelHost, DefinitionBase model)
assert.SkipProperty(m => m.AuthorizationFilter, "AuthorizationFilter is null or empty. Skipping.");
}
+ if (definition.Hidden.HasValue)
+ assert.ShouldBeEqual(m => m.Hidden, o => o.Hidden);
+ else
+ assert.SkipProperty(m => m.Hidden, "Hidden is null or empty. Skipping.");
+
});
}
}
diff --git a/SPMeta2/SPMeta2.Regression.CSOM/Validation/Webparts/ClientListViewWebPartDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.CSOM/Validation/Webparts/ClientListViewWebPartDefinitionValidator.cs
index fae624fa6..307616b6f 100644
--- a/SPMeta2/SPMeta2.Regression.CSOM/Validation/Webparts/ClientListViewWebPartDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.CSOM/Validation/Webparts/ClientListViewWebPartDefinitionValidator.cs
@@ -239,47 +239,47 @@ public override void DeployModel(object modelHost, DefinitionBase model)
else
{
assert.SkipProperty(m => m.ViewName, "ViewName is null or empty. Skipping.");
- }
-
- if (!string.IsNullOrEmpty(definition.ViewUrl))
- {
- var list = LookupList(listItemModelHost, definition);
- var bindContext = LookupBindContext(listItemModelHost, definition);
-
- var viewBindingXml = XDocument.Parse(CurrentWebPartXml.GetListViewWebPartProperty("ListViewXml"));
- var viewId = new Guid(viewBindingXml.Root.GetAttributeValue("Name"));
-
- var bindedView = list.Views.GetById(viewId);
- var targetView = list.Views.GetByTitle(definition.ViewName);
-
- context.Load(bindedView, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit);
- context.Load(targetView, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit);
-
- context.ExecuteQueryWithTrace();
-
- var isValid = false;
-
- // these are two different views, just CAML and field count
- isValid = (bindedView.ViewFields.Count == targetView.ViewFields.Count)
- && (bindedView.ViewQuery == targetView.ViewQuery)
- && (bindedView.RowLimit == targetView.RowLimit);
-
- assert.ShouldBeEqual((p, s, d) =>
- {
- var srcProp = s.GetExpressionValue(m => m.ViewUrl);
-
- return new PropertyValidationResult
- {
- Tag = p.Tag,
- Src = srcProp,
- Dst = null,
- IsValid = isValid
- };
- });
- }
- else
- {
- assert.SkipProperty(m => m.ViewUrl, "ViewUrl is null or empty. Skipping.");
+ }
+
+ if (!string.IsNullOrEmpty(definition.ViewUrl))
+ {
+ var list = LookupList(listItemModelHost, definition);
+ var bindContext = LookupBindContext(listItemModelHost, definition);
+
+ var viewBindingXml = XDocument.Parse(CurrentWebPartXml.GetListViewWebPartProperty("ListViewXml"));
+ var viewId = new Guid(viewBindingXml.Root.GetAttributeValue("Name"));
+
+ var bindedView = list.Views.GetById(viewId);
+ var targetView = list.Views.GetByTitle(definition.ViewName);
+
+ context.Load(bindedView, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit);
+ context.Load(targetView, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit);
+
+ context.ExecuteQueryWithTrace();
+
+ var isValid = false;
+
+ // these are two different views, just CAML and field count
+ isValid = (bindedView.ViewFields.Count == targetView.ViewFields.Count)
+ && (bindedView.ViewQuery == targetView.ViewQuery)
+ && (bindedView.RowLimit == targetView.RowLimit);
+
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(m => m.ViewUrl);
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = null,
+ IsValid = isValid
+ };
+ });
+ }
+ else
+ {
+ assert.SkipProperty(m => m.ViewUrl, "ViewUrl is null or empty. Skipping.");
}
// skip it, it will be part of the .Toolbar validation
@@ -294,7 +294,10 @@ public override void DeployModel(object modelHost, DefinitionBase model)
if (typedDefinition.WebId.HasGuidValue() || !string.IsNullOrEmpty(typedDefinition.WebUrl))
{
targetWeb = new LookupFieldModelHandler()
- .GetTargetWeb(this.CurrentClientContext.Site, typedDefinition.WebUrl, typedDefinition.WebId);
+ .GetTargetWeb(this.CurrentClientContext.Site,
+ typedDefinition.WebUrl,
+ typedDefinition.WebId,
+ modelHost);
}
var list = XsltListViewWebPartModelHandler.LookupList(targetWeb,
@@ -388,16 +391,16 @@ private ClientXsltListViewWebPartDefinitionValidator.ListBindContext
if (wpModel.ViewId.HasValue && wpModel.ViewId != default(Guid))
view = list.Views.GetById(wpModel.ViewId.Value);
else if (!string.IsNullOrEmpty(wpModel.ViewName))
- view = list.Views.GetByTitle(wpModel.ViewName);
- else if (!string.IsNullOrEmpty(wpModel.ViewUrl))
- {
- var views = list.Views;
-
- context.Load(views, v => v.Include(r => r.ServerRelativeUrl));
- context.ExecuteQueryWithTrace();
-
- view = views.ToArray()
- .FirstOrDefault(v => v.ServerRelativeUrl.ToUpper().EndsWith(wpModel.ViewUrl.ToUpper()));
+ view = list.Views.GetByTitle(wpModel.ViewName);
+ else if (!string.IsNullOrEmpty(wpModel.ViewUrl))
+ {
+ var views = list.Views;
+
+ context.Load(views, v => v.Include(r => r.ServerRelativeUrl));
+ context.ExecuteQueryWithTrace();
+
+ view = views.ToArray()
+ .FirstOrDefault(v => v.ServerRelativeUrl.ToUpper().EndsWith(wpModel.ViewUrl.ToUpper()));
}
context.Load(list, l => l.Id);
diff --git a/SPMeta2/SPMeta2.Regression.CSOM/Validation/Webparts/ClientXsltListViewWebPartDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.CSOM/Validation/Webparts/ClientXsltListViewWebPartDefinitionValidator.cs
index 5bae940f9..bcb04b598 100644
--- a/SPMeta2/SPMeta2.Regression.CSOM/Validation/Webparts/ClientXsltListViewWebPartDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.CSOM/Validation/Webparts/ClientXsltListViewWebPartDefinitionValidator.cs
@@ -56,16 +56,16 @@ private ListBindContext LookupBindContext(ListItemModelHost listItemModelHost, X
if (wpModel.ViewId.HasValue && wpModel.ViewId != default(Guid))
view = list.Views.GetById(wpModel.ViewId.Value);
else if (!string.IsNullOrEmpty(wpModel.ViewName))
- view = list.Views.GetByTitle(wpModel.ViewName);
- else if (!string.IsNullOrEmpty(wpModel.ViewUrl))
- {
- var views = list.Views;
-
- context.Load(views, v => v.Include(r => r.ServerRelativeUrl));
- context.ExecuteQueryWithTrace();
-
- view = views.ToArray()
- .FirstOrDefault(v => v.ServerRelativeUrl.ToUpper().EndsWith(wpModel.ViewUrl.ToUpper()));
+ view = list.Views.GetByTitle(wpModel.ViewName);
+ else if (!string.IsNullOrEmpty(wpModel.ViewUrl))
+ {
+ var views = list.Views;
+
+ context.Load(views, v => v.Include(r => r.ServerRelativeUrl));
+ context.ExecuteQueryWithTrace();
+
+ view = views.ToArray()
+ .FirstOrDefault(v => v.ServerRelativeUrl.ToUpper().EndsWith(wpModel.ViewUrl.ToUpper()));
}
context.Load(list, l => l.Id);
@@ -327,14 +327,14 @@ public override void DeployModel(object modelHost, DefinitionBase model)
var viewBindingXml = XDocument.Parse(CurrentWebPartXml.GetProperty("XmlDefinition"));
var viewId = new Guid(viewBindingXml.Root.GetAttributeValue("Name"));
- var bindedView = list.Views.GetById(viewId);
-
- var views = list.Views;
-
- context.Load(views, v => v.Include(r => r.ServerRelativeUrl));
- context.ExecuteQueryWithTrace();
-
- var targetView = views.ToArray()
+ var bindedView = list.Views.GetById(viewId);
+
+ var views = list.Views;
+
+ context.Load(views, v => v.Include(r => r.ServerRelativeUrl));
+ context.ExecuteQueryWithTrace();
+
+ var targetView = views.ToArray()
.FirstOrDefault(v => v.ServerRelativeUrl.ToUpper().EndsWith(definition.ViewUrl.ToUpper()));
context.Load(bindedView, l => l.BaseViewId, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit, l => l.JSLink);
@@ -352,7 +352,7 @@ public override void DeployModel(object modelHost, DefinitionBase model)
&& (bindedView.BaseViewId == targetView.BaseViewId);
assert.ShouldBeEqual((p, s, d) =>
- {
+ {
var srcProp = s.GetExpressionValue(m => m.ViewUrl);
return new PropertyValidationResult
@@ -365,7 +365,7 @@ public override void DeployModel(object modelHost, DefinitionBase model)
});
}
else
- {
+ {
assert.SkipProperty(m => m.ViewUrl, "ViewUrl is null or empty. Skipping.");
}
@@ -726,7 +726,11 @@ public override void DeployModel(object modelHost, DefinitionBase model)
if (typedDefinition.WebId.HasGuidValue() || !string.IsNullOrEmpty(typedDefinition.WebUrl))
{
targetWeb = new LookupFieldModelHandler()
- .GetTargetWeb(this.CurrentClientContext.Site, typedDefinition.WebUrl, typedDefinition.WebId);
+ .GetTargetWeb(
+ this.CurrentClientContext.Site,
+ typedDefinition.WebUrl,
+ typedDefinition.WebId,
+ modelHost);
}
var list = XsltListViewWebPartModelHandler.LookupList(targetWeb,
@@ -818,7 +822,8 @@ XsltListViewWebPartDefinition wpModel
{
web = new LookupFieldModelHandler()
.GetTargetWeb(listItemModelHost.HostClientContext.Site,
- wpModel.WebUrl, wpModel.WebId);
+ wpModel.WebUrl, wpModel.WebId,
+ listItemModelHost);
webId = web.Id;
}
diff --git a/SPMeta2/SPMeta2.Regression.Impl.Tests/Impl/Services/Base/TokenReplacementServiceTestBase.cs b/SPMeta2/SPMeta2.Regression.Impl.Tests/Impl/Services/Base/TokenReplacementServiceTestBase.cs
index c11e5d871..c9de6171a 100644
--- a/SPMeta2/SPMeta2.Regression.Impl.Tests/Impl/Services/Base/TokenReplacementServiceTestBase.cs
+++ b/SPMeta2/SPMeta2.Regression.Impl.Tests/Impl/Services/Base/TokenReplacementServiceTestBase.cs
@@ -88,8 +88,8 @@ protected bool CheckRootSiteOnHost(object context)
var isValid = true;
// ~sitecollection -> string.Empty on the root web
- isValid &= ShouldPass("~sitecollection -> string.Empty", context, "~sitecollection", string.Empty);
- isValid &= ShouldPass("~SiteCollection -> string.Empty", context, "~SiteCollection", string.Empty);
+ isValid &= ShouldPass("~sitecollection -> string.Empty", context, "~sitecollection", "/");
+ isValid &= ShouldPass("~SiteCollection -> string.Empty", context, "~SiteCollection", "/");
// ~sitecollection/something -> /something on the root web
isValid &= ShouldPass("~sitecollection/something1 -> /something1", context, "~sitecollection/something1", "/something1");
@@ -125,14 +125,22 @@ protected bool CheckRootWebOnHost(object context)
{
var isValid = true;
- // ~site -> string.Empty on the root web
- isValid &= ShouldPass("~site -> string.Empty", context, "~site", string.Empty);
- isValid &= ShouldPass("~Site -> string.Empty", context, "~Site", string.Empty);
+ // ~site -> / on the root web
+ isValid &= ShouldPass("~site -> string.Empty", context, "~site", "/");
+ isValid &= ShouldPass("~Site -> string.Empty", context, "~Site", "/");
+
+ // ~site/ -> / on the root web
+ isValid &= ShouldPass("~site/ -> string.Empty", context, "~site/", "/");
+ isValid &= ShouldPass("~Site/ -> string.Empty", context, "~Site/", "/");
// ~site/something -> /something on the root web
isValid &= ShouldPass("~site/something1 -> /something1", context, "~site/something1", "/something1");
isValid &= ShouldPass("~Site/something2 -> /something2", context, "~Site/something2", "/something2");
+ // ~site/something/ -> /something on the root web
+ isValid &= ShouldPass("~site/something1/ -> /something1", context, "~site/something1/", "/something1");
+ isValid &= ShouldPass("~Site/something2/ -> /something2", context, "~Site/something2/", "/something2");
+
// same same
isValid &= ShouldPass("site/something1 -> site/something1", context, "site/something1", "site/something1");
isValid &= ShouldPass("Site/something2 -> site/something2", context, "Site/something2", "Site/something2");
diff --git a/SPMeta2/SPMeta2.Regression.Impl.Tests/Impl/Services/CSOM/CSOMTokenReplacementServiceTests.cs b/SPMeta2/SPMeta2.Regression.Impl.Tests/Impl/Services/CSOM/CSOMTokenReplacementServiceTests.cs
index 6fe5d17b5..a3cd1edc8 100644
--- a/SPMeta2/SPMeta2.Regression.Impl.Tests/Impl/Services/CSOM/CSOMTokenReplacementServiceTests.cs
+++ b/SPMeta2/SPMeta2.Regression.Impl.Tests/Impl/Services/CSOM/CSOMTokenReplacementServiceTests.cs
@@ -66,9 +66,6 @@ public void SelfDiagnostic_TestShouldHaveAllTokens()
[TestCategory("Regression.Impl.CSOMTokenReplacementService")]
public void CSOMTokenReplacementService_Can_Replace_SiteCollection_Token()
{
- if (!CSOMTokenReplacementService.AllowClientContextAsTokenReplacementContext)
- return;
-
var isValid = true;
ProvisionRunner.SiteUrls.ForEach(siteUrl =>
@@ -98,9 +95,6 @@ public void CSOMTokenReplacementService_Can_Replace_SiteCollection_Token()
[TestCategory("Regression.Impl.CSOMTokenReplacementService")]
public void CSOMTokenReplacementService_Can_Replace_Site_Token()
{
- if (!CSOMTokenReplacementService.AllowClientContextAsTokenReplacementContext)
- return;
-
var isValid = true;
var runner = new CSOMProvisionRunner();
@@ -126,6 +120,31 @@ public void CSOMTokenReplacementService_Can_Replace_Site_Token()
Assert.IsTrue(isValid);
}
+ [TestMethod]
+ [TestCategory("Regression.Impl.CSOMTokenReplacementService")]
+ public void CSOMTokenReplacementService_Can_Replace_Site_Token_Raw()
+ {
+ var isValid = true;
+ var runner = new CSOMProvisionRunner();
+
+ runner.SiteUrls.ForEach(siteUrl =>
+ {
+ runner.WithCSOMContext(siteUrl, context =>
+ {
+ PreloadProperties(context);
+
+ var web = context.Web;
+
+ if (web.ServerRelativeUrl == "/")
+ {
+ isValid &= CheckRootWebOnHost(context);
+ }
+ });
+ });
+
+ Assert.IsTrue(isValid);
+ }
+
[TestMethod]
[TestCategory("Regression.Impl.CSOMTokenReplacementService")]
public void CSOMTokenReplacementService_Should_Not_ChangeNonTokenedUrl()
@@ -168,9 +187,6 @@ public void CSOMTokenReplacementService_Should_Not_ChangeNonTokenedUrl()
[TestCategory("Regression.Impl.CSOMTokenReplacementService")]
public void CSOMTokenReplacementService_Should_Support_ClientContext()
{
- if (!CSOMTokenReplacementService.AllowClientContextAsTokenReplacementContext)
- return;
-
var runner = new CSOMProvisionRunner();
runner.SiteUrls.ForEach(siteUrl =>
diff --git a/SPMeta2/SPMeta2.Regression.Impl.Tests/Properties/AssemblyInfo.cs b/SPMeta2/SPMeta2.Regression.Impl.Tests/Properties/AssemblyInfo.cs
index fe8ed4165..3de3afa0d 100644
--- a/SPMeta2/SPMeta2.Regression.Impl.Tests/Properties/AssemblyInfo.cs
+++ b/SPMeta2/SPMeta2.Regression.Impl.Tests/Properties/AssemblyInfo.cs
@@ -33,4 +33,4 @@
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.2.17104.0417")]
+[assembly: AssemblyFileVersion("1.2.17191.0958")]
diff --git a/SPMeta2/SPMeta2.Regression.SSOM.Standard/Properties/AssemblyInfo.cs b/SPMeta2/SPMeta2.Regression.SSOM.Standard/Properties/AssemblyInfo.cs
index 143ef9adf..67eed7979 100644
--- a/SPMeta2/SPMeta2.Regression.SSOM.Standard/Properties/AssemblyInfo.cs
+++ b/SPMeta2/SPMeta2.Regression.SSOM.Standard/Properties/AssemblyInfo.cs
@@ -33,4 +33,4 @@
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.2.17104.0417")]
+[assembly: AssemblyFileVersion("1.2.17191.0958")]
diff --git a/SPMeta2/SPMeta2.Regression.SSOM.Standard/Validation/Fields/TaxonomyFieldDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.SSOM.Standard/Validation/Fields/TaxonomyFieldDefinitionValidator.cs
index bd4f8eaf9..f6724ddb9 100644
--- a/SPMeta2/SPMeta2.Regression.SSOM.Standard/Validation/Fields/TaxonomyFieldDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.SSOM.Standard/Validation/Fields/TaxonomyFieldDefinitionValidator.cs
@@ -301,8 +301,12 @@ public override void DeployModel(object modelHost, DefinitionBase model)
// etc
assert.SkipProperty(m => m.TermLCID, "TermLCID. Skipping property.");
- assert.SkipProperty(m => m.TermSetLCID, "TermSetLCID. Skipping property.");
-
+ assert.SkipProperty(m => m.TermSetLCID, "TermSetLCID. Skipping property.");
+
+ if (definition.UserCreated.HasValue)
+ assert.ShouldBeEqual(m => m.UserCreated, o => o.UserCreated);
+ else
+ assert.SkipProperty(m => m.UserCreated, "UserCreated is null. Skipping property.");
}
}
}
diff --git a/SPMeta2/SPMeta2.Regression.SSOM/Properties/AssemblyInfo.cs b/SPMeta2/SPMeta2.Regression.SSOM/Properties/AssemblyInfo.cs
index c2c5a9ff4..806601555 100644
--- a/SPMeta2/SPMeta2.Regression.SSOM/Properties/AssemblyInfo.cs
+++ b/SPMeta2/SPMeta2.Regression.SSOM/Properties/AssemblyInfo.cs
@@ -33,4 +33,4 @@
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.2.17104.0417")]
+[assembly: AssemblyFileVersion("1.2.17191.0958")]
diff --git a/SPMeta2/SPMeta2.Regression.SSOM/SPMeta2.Regression.SSOM.csproj b/SPMeta2/SPMeta2.Regression.SSOM/SPMeta2.Regression.SSOM.csproj
index 3e938e104..c46ccb62d 100644
--- a/SPMeta2/SPMeta2.Regression.SSOM/SPMeta2.Regression.SSOM.csproj
+++ b/SPMeta2/SPMeta2.Regression.SSOM/SPMeta2.Regression.SSOM.csproj
@@ -132,6 +132,8 @@
+
+
diff --git a/SPMeta2/SPMeta2.Regression.SSOM/Validation/ContentTypes/HideContentTypeLinksDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.SSOM/Validation/ContentTypes/HideContentTypeLinksDefinitionValidator.cs
index 171ebf2f4..84e3cf2bd 100644
--- a/SPMeta2/SPMeta2.Regression.SSOM/Validation/ContentTypes/HideContentTypeLinksDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.SSOM/Validation/ContentTypes/HideContentTypeLinksDefinitionValidator.cs
@@ -1,10 +1,14 @@
-using SPMeta2.Definitions;
+using System;
+using System.Linq;
+using SPMeta2.Definitions;
using SPMeta2.Definitions.Base;
using SPMeta2.Definitions.ContentTypes;
using SPMeta2.SSOM.ModelHandlers;
using SPMeta2.SSOM.ModelHandlers.ContentTypes;
using SPMeta2.SSOM.ModelHosts;
-using SPMeta2.Utils;
+using SPMeta2.Utils;
+using Microsoft.SharePoint;
+using SPMeta2.Containers.Assertion;
namespace SPMeta2.Regression.SSOM.Validation.ContentTypes
{
@@ -13,11 +17,54 @@ public class HideContentTypeLinksDefinitionValidator : HideContentTypeLinksModel
public override void DeployModel(object modelHost, DefinitionBase model)
{
var definition = model.WithAssertAndCast("model", value => value.RequireNotNull());
- var spObject = ExtractFolderFromHost(modelHost);
+
+ var spObject = ExtractFolderFromHost(modelHost);
+ var contentTypeOrder = spObject.UniqueContentTypeOrder;
- ServiceFactory.AssertService
+ var assert = ServiceFactory.AssertService
.NewAssert(definition, spObject)
- .ShouldNotBeNull(spObject);
+ .ShouldNotBeNull(spObject)
+ .ShouldNotBeNull(contentTypeOrder);
+
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(def => def.ContentTypes);
+ var dstProp = d.GetExpressionValue(ct => ct.UniqueContentTypeOrder);
+
+ var isValid = true;
+
+ foreach (var srcContentTypeDef in s.ContentTypes)
+ {
+ var exists = false;
+
+ if (!string.IsNullOrEmpty(srcContentTypeDef.ContentTypeId))
+ {
+ var spContentTypeId = new SPContentTypeId(srcContentTypeDef.ContentTypeId);
+ var listContentType = contentTypeOrder.FirstOrDefault(c => c.Parent.Id == spContentTypeId);
+
+ exists = listContentType != null;
+ }
+ else if (!string.IsNullOrEmpty(srcContentTypeDef.ContentTypeName))
+ {
+ var listContentType = contentTypeOrder.FirstOrDefault(c => c.Name.ToUpper() == srcContentTypeDef.ContentTypeName.ToUpper());
+ exists = listContentType != null;
+ }
+
+ if (exists)
+ {
+ isValid = false;
+ break;
+ }
+ }
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = dstProp,
+ IsValid = isValid
+ };
+ });
}
}
}
diff --git a/SPMeta2/SPMeta2.Regression.SSOM/Validation/ContentTypes/RemoveContentTypeLinksDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.SSOM/Validation/ContentTypes/RemoveContentTypeLinksDefinitionValidator.cs
index b69fed55f..a4cbb0e10 100644
--- a/SPMeta2/SPMeta2.Regression.SSOM/Validation/ContentTypes/RemoveContentTypeLinksDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.SSOM/Validation/ContentTypes/RemoveContentTypeLinksDefinitionValidator.cs
@@ -1,22 +1,72 @@
-using SPMeta2.Definitions;
-using SPMeta2.Definitions.ContentTypes;
-using SPMeta2.SSOM.ModelHandlers;
-using SPMeta2.SSOM.ModelHandlers.ContentTypes;
-using SPMeta2.SSOM.ModelHosts;
-using SPMeta2.Utils;
-
-namespace SPMeta2.Regression.SSOM.Validation.ContentTypes
-{
- public class RemoveContentTypeLinksDefinitionValidator : RemoveContentTypeLinksModelHandler
- {
- public override void DeployModel(object modelHost, DefinitionBase model)
- {
- var definition = model.WithAssertAndCast("model", value => value.RequireNotNull());
- var spObject = ExtractListFromHost(modelHost);
-
- ServiceFactory.AssertService
- .NewAssert(definition, spObject)
- .ShouldNotBeNull(spObject);
- }
- }
-}
+using System;
+using System.Linq;
+using SPMeta2.Containers.Assertion;
+using SPMeta2.Definitions;
+using SPMeta2.Definitions.ContentTypes;
+using SPMeta2.SSOM.ModelHandlers;
+using SPMeta2.SSOM.ModelHandlers.ContentTypes;
+using SPMeta2.SSOM.ModelHosts;
+using SPMeta2.Utils;
+using Microsoft.SharePoint;
+
+namespace SPMeta2.Regression.SSOM.Validation.ContentTypes
+{
+ public class RemoveContentTypeLinksDefinitionValidator : RemoveContentTypeLinksModelHandler
+ {
+ public override void DeployModel(object modelHost, DefinitionBase model)
+ {
+ var definition = model.WithAssertAndCast("model", value => value.RequireNotNull());
+ var spObject = ExtractListFromHost(modelHost);
+
+ var assert = ServiceFactory.AssertService
+ .NewAssert(definition, spObject)
+ .ShouldNotBeNull(spObject);
+
+ // the content type must not be in the list
+ var listContentTypes = spObject.ContentTypes
+ .Cast()
+ .ToList();
+
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(def => def.ContentTypes);
+ var dstProp = d.GetExpressionValue(ct => ct.ContentTypes);
+
+ var isValid = true;
+
+ foreach (var srcContentTypeDef in s.ContentTypes)
+ {
+ var exists = false;
+
+ if (!string.IsNullOrEmpty(srcContentTypeDef.ContentTypeId))
+ {
+ var spContentTypeId = new SPContentTypeId(srcContentTypeDef.ContentTypeId);
+ var listContentType = listContentTypes.FirstOrDefault(c => c.Parent.Id == spContentTypeId);
+
+ exists = listContentType != null;
+
+ }
+ else if (!string.IsNullOrEmpty(srcContentTypeDef.ContentTypeName))
+ {
+ var listContentType = listContentTypes.FirstOrDefault(c => c.Name.ToUpper() == srcContentTypeDef.ContentTypeName.ToUpper());
+ exists = listContentType != null;
+ }
+
+ if (exists)
+ {
+ isValid = false;
+ break;
+ }
+ }
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = dstProp,
+ IsValid = isValid
+ };
+ });
+ }
+ }
+}
diff --git a/SPMeta2/SPMeta2.Regression.SSOM/Validation/ContentTypes/UniqueContentTypeOrderDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.SSOM/Validation/ContentTypes/UniqueContentTypeOrderDefinitionValidator.cs
index a71b799ef..e53695527 100644
--- a/SPMeta2/SPMeta2.Regression.SSOM/Validation/ContentTypes/UniqueContentTypeOrderDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.SSOM/Validation/ContentTypes/UniqueContentTypeOrderDefinitionValidator.cs
@@ -1,10 +1,15 @@
-using SPMeta2.Definitions;
-using SPMeta2.Definitions.Base;
-using SPMeta2.Definitions.ContentTypes;
-using SPMeta2.SSOM.ModelHandlers;
-using SPMeta2.SSOM.ModelHandlers.ContentTypes;
-using SPMeta2.SSOM.ModelHosts;
-using SPMeta2.Utils;
+using System;
+using System.Linq;
+using SPMeta2.Definitions;
+using SPMeta2.Definitions.Base;
+using SPMeta2.Definitions.ContentTypes;
+using SPMeta2.SSOM.ModelHandlers;
+using SPMeta2.SSOM.ModelHandlers.ContentTypes;
+using SPMeta2.SSOM.ModelHosts;
+using SPMeta2.Utils;
+using Microsoft.SharePoint;
+using SPMeta2.Containers.Assertion;
+
namespace SPMeta2.Regression.SSOM.Validation.ContentTypes
{
@@ -12,12 +17,54 @@ public class UniqueContentTypeOrderDefinitionValidator : UniqueContentTypeOrderM
{
public override void DeployModel(object modelHost, DefinitionBase model)
{
- var definition = model.WithAssertAndCast("model", value => value.RequireNotNull());
- var spObject = ExtractFolderFromHost(modelHost);
-
- ServiceFactory.AssertService
- .NewAssert(definition, spObject)
- .ShouldNotBeNull(spObject);
+ var definition = model.WithAssertAndCast("model", value => value.RequireNotNull());
+ var spObject = ExtractFolderFromHost(modelHost);
+ var contentTypeOrder = spObject.UniqueContentTypeOrder;
+
+ var assert = ServiceFactory.AssertService
+ .NewAssert(definition, spObject)
+ .ShouldNotBeNull(spObject)
+ .ShouldNotBeNull(contentTypeOrder);
+
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(def => def.ContentTypes);
+ var dstProp = d.GetExpressionValue(ct => ct.UniqueContentTypeOrder);
+
+ var isValid = true;
+
+ foreach (var srcContentTypeDef in s.ContentTypes)
+ {
+ var exists = false;
+
+ if (!string.IsNullOrEmpty(srcContentTypeDef.ContentTypeId))
+ {
+ var spContentTypeId = new SPContentTypeId(srcContentTypeDef.ContentTypeId);
+ var listContentType = contentTypeOrder.FirstOrDefault(c => c.Parent.Id == spContentTypeId);
+
+ exists = listContentType != null;
+ }
+ else if (!string.IsNullOrEmpty(srcContentTypeDef.ContentTypeName))
+ {
+ var listContentType = contentTypeOrder.FirstOrDefault(c => c.Name.ToUpper() == srcContentTypeDef.ContentTypeName.ToUpper());
+ exists = listContentType != null;
+ }
+
+ if (!exists)
+ {
+ isValid = false;
+ break;
+ }
+ }
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = dstProp,
+ IsValid = isValid
+ };
+ });
}
}
}
diff --git a/SPMeta2/SPMeta2.Regression.SSOM/Validation/FarmSolutionDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.SSOM/Validation/FarmSolutionDefinitionValidator.cs
index 582525a2c..b7162c093 100644
--- a/SPMeta2/SPMeta2.Regression.SSOM/Validation/FarmSolutionDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.SSOM/Validation/FarmSolutionDefinitionValidator.cs
@@ -5,6 +5,8 @@
using SPMeta2.SSOM.ModelHosts;
using SPMeta2.Containers.Assertion;
using SPMeta2.Extensions;
+using Microsoft.SharePoint.Administration;
+using SPMeta2.Exceptions;
namespace SPMeta2.Regression.SSOM.Validation
{
@@ -22,9 +24,27 @@ public FarmSolutionDefinitionValidator()
public override void DeployModel(object modelHost, DefinitionBase model)
{
var definition = model.WithAssertAndCast("model", value => value.RequireNotNull());
- var farmModelHost = modelHost.WithAssertAndCast("modelHost", value => value.RequireNotNull());
- var solution = FindExistingSolution(farmModelHost, definition);
+ SPFarm farm = null;
+ SPWebApplication webApp = null;
+
+ if (modelHost is WebApplicationModelHost)
+ {
+ farm = (modelHost as WebApplicationModelHost).HostWebApplication.Farm;
+ webApp = (modelHost as WebApplicationModelHost).HostWebApplication;
+ }
+ else if (modelHost is FarmModelHost)
+ {
+ farm = (modelHost as FarmModelHost).HostFarm;
+ webApp = null;
+ }
+ else
+ {
+ throw new SPMeta2Exception(
+ string.Format("Unsupported model host type:[{0}]", modelHost.GetType()));
+ }
+
+ var solution = FindExistingSolution(modelHost, farm, webApp, definition);
var assert = ServiceFactory.AssertService
.NewAssert(definition, definition, solution);
@@ -54,6 +74,8 @@ public override void DeployModel(object modelHost, DefinitionBase model)
assert.SkipProperty(m => m.ShouldRetract, "ShouldDelete = true");
assert.SkipProperty(m => m.ShouldUpgrade, "ShouldDelete = true");
+ CheckWebApplicationDeployment(modelHost, farm, webApp, solution, definition);
+
return;
}
@@ -84,8 +106,23 @@ public override void DeployModel(object modelHost, DefinitionBase model)
{
var srcProp = s.GetExpressionValue(def => def.ShouldRetract);
- var isValid = d.Deployed == false
- && definition.HasPropertyBagValue("HadRetractHit");
+ var isValid = false;
+
+ if (webApp == null)
+ {
+ isValid = d.Deployed == false
+ && definition.HasPropertyBagValue("HadRetractHit");
+ }
+ else
+ {
+ isValid = !solution.DeployedWebApplications.Contains(webApp)
+ && definition.HasPropertyBagValue("HadRetractHit");
+ }
+
+ if (isValid == false)
+ {
+
+ }
return new PropertyValidationResult
{
@@ -126,7 +163,7 @@ public override void DeployModel(object modelHost, DefinitionBase model)
{
var srcProp = s.GetExpressionValue(def => def.ShouldUpgrade);
- var isValid = definition.HasPropertyBagValue("HadUpgradetHit");
+ var isValid = definition.HasPropertyBagValue("HadUpgradetHit");
return new PropertyValidationResult
{
@@ -137,6 +174,8 @@ public override void DeployModel(object modelHost, DefinitionBase model)
};
});
+ CheckWebApplicationDeployment(modelHost, farm, webApp, solution, definition);
+
return;
}
@@ -168,7 +207,18 @@ public override void DeployModel(object modelHost, DefinitionBase model)
var srcProp = s.GetExpressionValue(def => def.ShouldDeploy);
var isValid = d.Deployed
- && definition.HasPropertyBagValue("HadDeploymentHit");
+ && definition.HasPropertyBagValue("HadDeploymentHit");
+
+ if (webApp == null)
+ {
+ isValid = d.Deployed == true
+ && definition.HasPropertyBagValue("HadDeploymentHit");
+ }
+ else
+ {
+ isValid = solution.DeployedWebApplications.Contains(webApp)
+ && definition.HasPropertyBagValue("HadDeploymentHit");
+ }
return new PropertyValidationResult
{
@@ -179,6 +229,8 @@ public override void DeployModel(object modelHost, DefinitionBase model)
};
});
+ CheckWebApplicationDeployment(modelHost, farm, webApp, solution, definition);
+
return;
}
@@ -225,6 +277,54 @@ public override void DeployModel(object modelHost, DefinitionBase model)
assert.SkipProperty(m => m.UpgradeDate, "UpgradeDate is NULL");
}
}
+
+ private void CheckWebApplicationDeployment(object modelHost, SPFarm farm, SPWebApplication webApp, SPSolution solution, FarmSolutionDefinition definition)
+ {
+ // might come from the deleting operation
+ if (solution != null)
+ {
+ // web app scope deployment
+ if (webApp != null)
+ {
+ if (!solution.Deployed)
+ return;
+
+ if (solution.DeploymentState == SPSolutionDeploymentState.GlobalDeployed
+ || solution.DeploymentState == SPSolutionDeploymentState.NotDeployed)
+ {
+ throw new SPMeta2Exception(
+ string.Format("Solution is not expected to have deployment state:[{0}]",
+ solution.DeploymentState));
+ }
+
+ if (solution.DeployedWebApplications.Count == 0)
+ {
+ throw new SPMeta2Exception("Web scoped solution is expected to be deployed under at least one web application");
+ }
+
+ if (!solution.DeployedWebApplications.Contains(webApp))
+ {
+ throw new SPMeta2Exception(
+ string.Format("Web scoped solution is expected to be deployed under web application:[{0}]", webApp));
+ }
+ }
+ else
+ {
+ // farm, global deployment
+
+ if (!solution.Deployed)
+ return;
+
+ if (solution.DeploymentState == SPSolutionDeploymentState.WebApplicationDeployed
+ || solution.DeploymentState == SPSolutionDeploymentState.NotDeployed)
+ {
+ throw new SPMeta2Exception(
+ string.Format("Farm scoped solution is not expected to have deployment state:[{0}]",
+ solution.DeploymentState));
+ }
+ }
+ }
+ }
#endregion
}
}
diff --git a/SPMeta2/SPMeta2.Regression.SSOM/Validation/FieldDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.SSOM/Validation/FieldDefinitionValidator.cs
index a547cf45c..f40bf806c 100644
--- a/SPMeta2/SPMeta2.Regression.SSOM/Validation/FieldDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.SSOM/Validation/FieldDefinitionValidator.cs
@@ -10,6 +10,7 @@
using SPMeta2.Utils;
using System.Xml.Linq;
using System.Linq;
+using SPMeta2.Definitions.Fields;
namespace SPMeta2.Regression.SSOM.Validation
{
@@ -66,6 +67,46 @@ protected void ValidateField(AssertPair assert, SPFiel
else
assert.SkipProperty(m => m.Description);
+ if (definition is LookupFieldDefinition)
+ {
+ var depLookupDefinition = definition as LookupFieldDefinition;
+
+ // cjeck against CountRelated for lookups
+ if (depLookupDefinition.CountRelated.HasValue
+ && depLookupDefinition.ReadOnlyField.HasValue)
+ {
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(m => m.ReadOnlyField);
+
+ var isValid = (bool)srcProp.Value == depLookupDefinition.CountRelated.Value;
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = null,
+ IsValid = isValid
+ };
+ });
+ }
+ else
+ {
+ assert.SkipProperty(m => m.ReadOnlyField, "CountRelated / ReadOnlyField is null or empty");
+
+ //if (definition.ReadOnlyField.HasValue)
+ // assert.ShouldBeEqual(m => m.ReadOnlyField, o => o.ReadOnlyField);
+ //else
+ // assert.SkipProperty(m => m.ReadOnlyField, "ReadOnlyField is null or empty");
+ }
+ }
+ else
+ {
+ if (definition.ReadOnlyField.HasValue)
+ assert.ShouldBeEqual(m => m.ReadOnlyField, o => o.ReadOnlyField);
+ else
+ assert.SkipProperty(m => m.ReadOnlyField, "ReadOnlyField is null or empty");
+ }
CustomFieldTypeValidation(assert, spObject, definition);
diff --git a/SPMeta2/SPMeta2.Regression.SSOM/Validation/Fields/LookupFieldDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.SSOM/Validation/Fields/LookupFieldDefinitionValidator.cs
index 7052ac082..1dab2481f 100644
--- a/SPMeta2/SPMeta2.Regression.SSOM/Validation/Fields/LookupFieldDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.SSOM/Validation/Fields/LookupFieldDefinitionValidator.cs
@@ -1,84 +1,84 @@
-using System;
-using Microsoft.SharePoint;
-using Microsoft.SharePoint.BusinessData.MetadataModel;
-using SPMeta2.Containers.Assertion;
-using SPMeta2.Definitions;
-using SPMeta2.Definitions.Fields;
-using SPMeta2.Utils;
-using Microsoft.SharePoint.Utilities;
-using SPMeta2.SSOM.ModelHandlers.Fields;
-
-namespace SPMeta2.Regression.SSOM.Validation.Fields
-{
- public class LookupFieldDefinitionValidator : FieldDefinitionValidator
- {
- public override Type TargetType
- {
- get
- {
- return typeof(LookupFieldDefinition);
- }
- }
- protected override void CustomFieldTypeValidation(AssertPair assert, SPField spObject, FieldDefinition definition)
- {
- var typedObject = spObject as SPFieldLookup;
- var typedDefinition = definition.WithAssertAndCast("model", value => value.RequireNotNull());
-
- // https://github.com/SubPointSolutions/spmeta2/issues/310
- // AllowMultipleValues - TRUE - LookupMulti
- // AllowMultipleValues - FALSE - Lookup
- assert.ShouldBeEqual((p, s, d) =>
- {
- var srcProp = s.GetExpressionValue(m => m.FieldType);
- var dstProp = d.GetExpressionValue(m => d.TypeAsString);
-
- var isValid = typedDefinition.AllowMultipleValues
- ? typedObject.TypeAsString == "LookupMulti"
- : typedObject.TypeAsString == "Lookup";
-
- return new PropertyValidationResult
- {
- Tag = p.Tag,
- Src = srcProp,
- Dst = dstProp,
- IsValid = isValid
- };
- });
- }
- public override void DeployModel(object modelHost, DefinitionBase model)
- {
- ModelHost = modelHost;
-
- var definition = model.WithAssertAndCast("model", value => value.RequireNotNull());
- var spObject = GetField(modelHost, definition);
-
- var assert = ServiceFactory.AssertService.NewAssert(model, definition, spObject);
-
- ValidateField(assert, spObject, definition);
-
- var typedField = spObject as SPFieldLookup;
- var typedDefinition = model.WithAssertAndCast("model", value => value.RequireNotNull());
-
- var typedFieldAssert = ServiceFactory.AssertService.NewAssert(model, typedDefinition, typedField);
-
- typedFieldAssert.ShouldBeEqual(m => m.AllowMultipleValues, o => o.AllowMultipleValues);
-
- if (typedDefinition.LookupWebId.HasValue)
- {
- typedFieldAssert.ShouldBeEqual(m => m.LookupWebId, o => o.LookupWebId);
- }
- else
- {
- typedFieldAssert.SkipProperty(m => m.LookupWebId, "LookupWebId is NULL. Skipping.");
- }
-
- if (!string.IsNullOrEmpty(typedDefinition.RelationshipDeleteBehavior))
- {
- typedFieldAssert.ShouldBeEqual(m => m.RelationshipDeleteBehavior, o => o.GetRelationshipDeleteBehavior());
- }
- else
- {
- typedFieldAssert.SkipProperty(m => m.RelationshipDeleteBehavior, "RelationshipDeleteBehavior is NULL. Skipping.");
+using System;
+using Microsoft.SharePoint;
+using Microsoft.SharePoint.BusinessData.MetadataModel;
+using SPMeta2.Containers.Assertion;
+using SPMeta2.Definitions;
+using SPMeta2.Definitions.Fields;
+using SPMeta2.Utils;
+using Microsoft.SharePoint.Utilities;
+using SPMeta2.SSOM.ModelHandlers.Fields;
+
+namespace SPMeta2.Regression.SSOM.Validation.Fields
+{
+ public class LookupFieldDefinitionValidator : FieldDefinitionValidator
+ {
+ public override Type TargetType
+ {
+ get
+ {
+ return typeof(LookupFieldDefinition);
+ }
+ }
+ protected override void CustomFieldTypeValidation(AssertPair assert, SPField spObject, FieldDefinition definition)
+ {
+ var typedObject = spObject as SPFieldLookup;
+ var typedDefinition = definition.WithAssertAndCast("model", value => value.RequireNotNull());
+
+ // https://github.com/SubPointSolutions/spmeta2/issues/310
+ // AllowMultipleValues - TRUE - LookupMulti
+ // AllowMultipleValues - FALSE - Lookup
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(m => m.FieldType);
+ var dstProp = d.GetExpressionValue(m => d.TypeAsString);
+
+ var isValid = typedDefinition.AllowMultipleValues
+ ? typedObject.TypeAsString == "LookupMulti"
+ : typedObject.TypeAsString == "Lookup";
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = dstProp,
+ IsValid = isValid
+ };
+ });
+ }
+ public override void DeployModel(object modelHost, DefinitionBase model)
+ {
+ ModelHost = modelHost;
+
+ var definition = model.WithAssertAndCast("model", value => value.RequireNotNull());
+ var spObject = GetField(modelHost, definition);
+
+ var assert = ServiceFactory.AssertService.NewAssert(model, definition, spObject);
+
+ ValidateField(assert, spObject, definition);
+
+ var typedField = spObject as SPFieldLookup;
+ var typedDefinition = model.WithAssertAndCast("model", value => value.RequireNotNull());
+
+ var typedFieldAssert = ServiceFactory.AssertService.NewAssert(model, typedDefinition, typedField);
+
+ typedFieldAssert.ShouldBeEqual(m => m.AllowMultipleValues, o => o.AllowMultipleValues);
+
+ if (typedDefinition.LookupWebId.HasValue)
+ {
+ typedFieldAssert.ShouldBeEqual(m => m.LookupWebId, o => o.LookupWebId);
+ }
+ else
+ {
+ typedFieldAssert.SkipProperty(m => m.LookupWebId, "LookupWebId is NULL. Skipping.");
+ }
+
+ if (!string.IsNullOrEmpty(typedDefinition.RelationshipDeleteBehavior))
+ {
+ typedFieldAssert.ShouldBeEqual(m => m.RelationshipDeleteBehavior, o => o.GetRelationshipDeleteBehavior());
+ }
+ else
+ {
+ typedFieldAssert.SkipProperty(m => m.RelationshipDeleteBehavior, "RelationshipDeleteBehavior is NULL. Skipping.");
}
if (!string.IsNullOrEmpty(typedDefinition.RelationshipDeleteBehavior))
@@ -106,135 +106,139 @@ public override void DeployModel(object modelHost, DefinitionBase model)
else
{
typedFieldAssert.SkipProperty(m => m.CountRelated, "CountRelated is NULL. Skipping.");
- }
-
- // web url
- if (!string.IsNullOrEmpty(typedDefinition.LookupWebUrl))
- {
- var lookupFieldModelHandler = new LookupFieldModelHandler();
- var targetWeb = lookupFieldModelHandler.GetTargetWeb(GetCurrentSite(), typedDefinition);
-
- typedFieldAssert.ShouldBeEqual((p, s, d) =>
- {
- var srcProp = s.GetExpressionValue(m => m.LookupWebUrl);
-
- var isValid = d.LookupWebId == targetWeb.ID;
-
- return new PropertyValidationResult
- {
- Tag = p.Tag,
- Src = srcProp,
- Dst = null,
- IsValid = isValid
- };
- });
- }
- else
- {
- typedFieldAssert.SkipProperty(m => m.LookupWebUrl, "LookupWebUrl is NULL. Skipping.");
- }
-
-
- if (!string.IsNullOrEmpty(typedDefinition.LookupListTitle))
- {
- var lookupFieldModelHandler = new LookupFieldModelHandler();
-
- var targetWeb = lookupFieldModelHandler.GetTargetWeb(GetCurrentSite(), typedDefinition);
- var list = targetWeb.Lists[typedDefinition.LookupListTitle];
-
- typedFieldAssert.ShouldBeEqual((p, s, d) =>
- {
- var srcProp = s.GetExpressionValue(m => m.LookupListTitle);
-
- var isValid = list.ID == new Guid(typedField.LookupList);
-
- return new PropertyValidationResult
- {
- Tag = p.Tag,
- Src = srcProp,
- Dst = null,
- IsValid = isValid
- };
- });
- }
- else
- {
- typedFieldAssert.SkipProperty(m => m.LookupListTitle, "LookupListTitle is NULL. Skipping.");
- }
-
- if (!string.IsNullOrEmpty(typedDefinition.LookupListUrl))
- {
- var lookupFieldModelHandler = new LookupFieldModelHandler();
-
- var targetWeb = lookupFieldModelHandler.GetTargetWeb(GetCurrentSite(), typedDefinition);
- var list = targetWeb.GetList(SPUrlUtility.CombineUrl(targetWeb.ServerRelativeUrl, typedDefinition.LookupListUrl));
-
- typedFieldAssert.ShouldBeEqual((p, s, d) =>
- {
- var srcProp = s.GetExpressionValue(m => m.LookupListUrl);
-
- var isValid = list.ID == new Guid(typedField.LookupList);
-
- return new PropertyValidationResult
- {
- Tag = p.Tag,
- Src = srcProp,
- Dst = null,
- IsValid = isValid
- };
- });
- }
- else
- {
- typedFieldAssert.SkipProperty(m => m.LookupListUrl, "LookupListUrl is NULL. Skipping.");
- }
-
-
- if (!string.IsNullOrEmpty(typedDefinition.LookupList))
- {
- if (typedDefinition.LookupList.ToUpper() == "USERINFO")
- {
- typedFieldAssert.ShouldBeEqual((p, s, d) =>
- {
- var srcProp = s.GetExpressionValue(m => m.LookupList);
-
- var isValid = GetCurrentSite().RootWeb.SiteUserInfoList.ID == new Guid(typedField.LookupList);
-
- return new PropertyValidationResult
- {
- Tag = p.Tag,
- Src = srcProp,
- Dst = null,
- IsValid = isValid
- };
- });
- }
- else
- {
- typedFieldAssert.ShouldBeEqual(m => m.LookupList, o => o.LookupList);
- }
- }
- else
- {
- typedFieldAssert.SkipProperty(m => m.LookupList, "LookupList is NULL. Skipping.");
- }
-
- if (!string.IsNullOrEmpty(typedDefinition.LookupField))
- {
- typedFieldAssert.ShouldBeEqual(m => m.LookupField, o => o.LookupField);
- }
- else
- {
- typedFieldAssert.SkipProperty(m => m.LookupField, "LookupField is NULL. Skipping.");
- }
- }
- }
-
- internal static class SPFieldLookupExtensions
- {
- public static string GetRelationshipDeleteBehavior(this SPFieldLookup field)
- {
- return field.RelationshipDeleteBehavior.ToString();
- }
- }
-}
+ }
+
+ // web url
+ if (!string.IsNullOrEmpty(typedDefinition.LookupWebUrl))
+ {
+ var lookupFieldModelHandler = new LookupFieldModelHandler();
+ ReflectionUtils.SetNonPublicPropertyValue(lookupFieldModelHandler, "ModelHost", modelHost);
+
+ var targetWeb = lookupFieldModelHandler.GetTargetWeb(GetCurrentSite(), typedDefinition);
+
+ typedFieldAssert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(m => m.LookupWebUrl);
+
+ var isValid = d.LookupWebId == targetWeb.ID;
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = null,
+ IsValid = isValid
+ };
+ });
+ }
+ else
+ {
+ typedFieldAssert.SkipProperty(m => m.LookupWebUrl, "LookupWebUrl is NULL. Skipping.");
+ }
+
+
+ if (!string.IsNullOrEmpty(typedDefinition.LookupListTitle))
+ {
+ var lookupFieldModelHandler = new LookupFieldModelHandler();
+ ReflectionUtils.SetNonPublicPropertyValue(lookupFieldModelHandler, "ModelHost", modelHost);
+
+ var targetWeb = lookupFieldModelHandler.GetTargetWeb(GetCurrentSite(), typedDefinition);
+ var list = targetWeb.Lists[typedDefinition.LookupListTitle];
+
+ typedFieldAssert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(m => m.LookupListTitle);
+
+ var isValid = list.ID == new Guid(typedField.LookupList);
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = null,
+ IsValid = isValid
+ };
+ });
+ }
+ else
+ {
+ typedFieldAssert.SkipProperty(m => m.LookupListTitle, "LookupListTitle is NULL. Skipping.");
+ }
+
+ if (!string.IsNullOrEmpty(typedDefinition.LookupListUrl))
+ {
+ var lookupFieldModelHandler = new LookupFieldModelHandler();
+ ReflectionUtils.SetNonPublicPropertyValue(lookupFieldModelHandler, "ModelHost", modelHost);
+
+ var targetWeb = lookupFieldModelHandler.GetTargetWeb(GetCurrentSite(), typedDefinition);
+ var list = targetWeb.GetList(SPUrlUtility.CombineUrl(targetWeb.ServerRelativeUrl, typedDefinition.LookupListUrl));
+
+ typedFieldAssert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(m => m.LookupListUrl);
+
+ var isValid = list.ID == new Guid(typedField.LookupList);
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = null,
+ IsValid = isValid
+ };
+ });
+ }
+ else
+ {
+ typedFieldAssert.SkipProperty(m => m.LookupListUrl, "LookupListUrl is NULL. Skipping.");
+ }
+
+
+ if (!string.IsNullOrEmpty(typedDefinition.LookupList))
+ {
+ if (typedDefinition.LookupList.ToUpper() == "USERINFO")
+ {
+ typedFieldAssert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(m => m.LookupList);
+
+ var isValid = GetCurrentSite().RootWeb.SiteUserInfoList.ID == new Guid(typedField.LookupList);
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = null,
+ IsValid = isValid
+ };
+ });
+ }
+ else
+ {
+ typedFieldAssert.ShouldBeEqual(m => m.LookupList, o => o.LookupList);
+ }
+ }
+ else
+ {
+ typedFieldAssert.SkipProperty(m => m.LookupList, "LookupList is NULL. Skipping.");
+ }
+
+ if (!string.IsNullOrEmpty(typedDefinition.LookupField))
+ {
+ typedFieldAssert.ShouldBeEqual(m => m.LookupField, o => o.LookupField);
+ }
+ else
+ {
+ typedFieldAssert.SkipProperty(m => m.LookupField, "LookupField is NULL. Skipping.");
+ }
+ }
+ }
+
+ internal static class SPFieldLookupExtensions
+ {
+ public static string GetRelationshipDeleteBehavior(this SPFieldLookup field)
+ {
+ return field.RelationshipDeleteBehavior.ToString();
+ }
+ }
+}
diff --git a/SPMeta2/SPMeta2.Regression.SSOM/Validation/ListDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.SSOM/Validation/ListDefinitionValidator.cs
index cea956063..2711beca2 100644
--- a/SPMeta2/SPMeta2.Regression.SSOM/Validation/ListDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.SSOM/Validation/ListDefinitionValidator.cs
@@ -47,6 +47,11 @@ public override void DeployModel(object modelHost, DefinitionBase model)
assert.SkipProperty(m => m.Description);
});
+ if (definition.EnableAssignToEmail.HasValue)
+ assert.ShouldBeEqual(m => m.EnableAssignToEmail, o => o.EnableAssignToEmail);
+ else
+ assert.SkipProperty(m => m.EnableAssignToEmail, "EnableAssignToEmail is null or empty");
+
if (definition.NavigateForFormsPages.HasValue)
{
assert.ShouldBeEqual(m => m.NavigateForFormsPages, o => o.NavigateForFormsPages);
@@ -249,8 +254,11 @@ public override void DeployModel(object modelHost, DefinitionBase model)
if (!dstUrl.StartsWith("/"))
dstUrl = "/" + dstUrl;
- if (!srcUrl.StartsWith("/"))
+ if (!srcUrl.StartsWith("/")
+ && !srcUrl.StartsWith("~"))
+ {
srcUrl = "/" + srcUrl;
+ }
srcUrl = srcUrl.ToLower();
dstUrl = dstUrl.ToLower();
@@ -265,7 +273,8 @@ public override void DeployModel(object modelHost, DefinitionBase model)
isValid = srcUrl
.Replace("~sitecollection", siteCollectionUrl)
- .Replace("//", "/") == dstUrl;
+ .Replace("//", "/")
+ .EndsWith(dstUrl);
}
else if (s.DocumentTemplateUrl.Contains("~site"))
{
@@ -273,13 +282,19 @@ public override void DeployModel(object modelHost, DefinitionBase model)
isValid = srcUrl
.Replace("~site", siteCollectionUrl)
- .Replace("//", "/") == dstUrl;
+ .Replace("//", "/")
+ .EndsWith(dstUrl);
}
else
{
isValid = dstUrl.EndsWith(srcUrl);
}
+ if (isValid == false)
+ {
+
+ }
+
return new PropertyValidationResult
{
Tag = p.Tag,
diff --git a/SPMeta2/SPMeta2.Regression.SSOM/Validation/ListViewDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.SSOM/Validation/ListViewDefinitionValidator.cs
index d1b6129f5..3314504ee 100644
--- a/SPMeta2/SPMeta2.Regression.SSOM/Validation/ListViewDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.SSOM/Validation/ListViewDefinitionValidator.cs
@@ -33,6 +33,11 @@ public override void DeployModel(object modelHost, DefinitionBase model)
.ShouldBeEqual(m => m.RowLimit, o => (int)o.RowLimit)
.ShouldBeEqual(m => m.IsPaged, o => o.Paged);
+ if (definition.MobileDefaultView.HasValue)
+ assert.ShouldBeEqual(m => m.MobileDefaultView, o => o.MobileDefaultView);
+ else
+ assert.SkipProperty(m => m.MobileDefaultView, "MobileDefaultView is null or empty. Skipping.");
+
if (definition.InlineEdit.HasValue)
assert.ShouldBeEqual(m => m.InlineEdit.ToString().ToLower(), o => o.InlineEdit.ToLower());
@@ -78,6 +83,8 @@ public override void DeployModel(object modelHost, DefinitionBase model)
srcViewDate = Regex.Replace(srcViewDate, @"\r\n?|\n", string.Empty);
dstViewDate = Regex.Replace(dstViewDate, @"\r\n?|\n", string.Empty);
+ srcViewDate = Regex.Replace(srcViewDate, @"\s+", string.Empty);
+ dstViewDate = Regex.Replace(dstViewDate, @"\s+", string.Empty);
var isValid = srcViewDate.ToUpper() == dstViewDate.ToUpper();
diff --git a/SPMeta2/SPMeta2.Regression.SSOM/Validation/MasterPageSettingsDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.SSOM/Validation/MasterPageSettingsDefinitionValidator.cs
index d67f3f986..86b7b1b35 100644
--- a/SPMeta2/SPMeta2.Regression.SSOM/Validation/MasterPageSettingsDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.SSOM/Validation/MasterPageSettingsDefinitionValidator.cs
@@ -37,7 +37,7 @@ public override void DeployModel(object modelHost, DefinitionBase model)
var srcProp = s.GetExpressionValue(def => def.SiteMasterPageUrl);
var dstProp = d.GetExpressionValue(def => def.CustomMasterUrl);
- var isValid = url == (string)dstProp.Value;
+ var isValid = ((string)dstProp.Value).EndsWith((string)url);
return new PropertyValidationResult
{
@@ -70,7 +70,7 @@ public override void DeployModel(object modelHost, DefinitionBase model)
var srcProp = s.GetExpressionValue(def => def.SystemMasterPageUrl);
var dstProp = d.GetExpressionValue(def => def.MasterUrl);
- var isValid = (string)url == (string)dstProp.Value;
+ var isValid = ((string)dstProp.Value).EndsWith((string)url);
return new PropertyValidationResult
{
diff --git a/SPMeta2/SPMeta2.Regression.SSOM/Validation/OfficialFileHostDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.SSOM/Validation/OfficialFileHostDefinitionValidator.cs
new file mode 100644
index 000000000..2bcf28b87
--- /dev/null
+++ b/SPMeta2/SPMeta2.Regression.SSOM/Validation/OfficialFileHostDefinitionValidator.cs
@@ -0,0 +1,98 @@
+using SPMeta2.Definitions.Base;
+using SPMeta2.SSOM.ModelHandlers;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+
+using SPMeta2.Utils;
+using SPMeta2.SSOM.ModelHosts;
+using SPMeta2.Definitions;
+using SPMeta2.Containers.Assertion;
+
+namespace SPMeta2.Regression.SSOM.Validation
+{
+ public class OfficialFileHostDefinitionValidator : OfficialFileHostModelHandler
+ {
+ #region methods
+
+ public override void DeployModel(object modelHost, DefinitionBase model)
+ {
+ var typedModelHost = modelHost.WithAssertAndCast("modelHost", value => value.RequireNotNull());
+ var typedDefinition = model.WithAssertAndCast("model", value => value.RequireNotNull());
+
+ var spObject = FindExistingObject(typedModelHost.HostWebApplication, typedDefinition);
+
+ var assert = ServiceFactory.AssertService
+ .NewAssert(typedDefinition, spObject)
+ .ShouldNotBeNull(spObject)
+ .ShouldBeEqual(m => m.OfficialFileName, o => o.OfficialFileName)
+ .ShouldBeEqual(m => m.ShowOnSendToMenu, o => o.ShowOnSendToMenu);
+
+ if (!string.IsNullOrEmpty(typedDefinition.Explanation))
+ assert.ShouldBeEqual(m => m.Explanation, o => o.Explanation);
+ else
+ assert.SkipProperty(m => m.Explanation);
+
+ if (!string.IsNullOrEmpty(typedDefinition.Explanation))
+ assert.ShouldBeEqual(m => m.Explanation, o => o.Explanation);
+ else
+ assert.SkipProperty(m => m.Explanation);
+
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(m => m.OfficialFileUrl);
+ var dstProp = d.GetExpressionValue(m => m.OfficialFileUrl);
+
+ var isValid = srcProp.ToString() == dstProp.ToString();
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = dstProp,
+ IsValid = isValid
+ };
+ });
+
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(m => m.Action);
+ var dstProp = d.GetExpressionValue(m => m.Action);
+
+ var isValid = srcProp.ToString() == dstProp.ToString();
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = dstProp,
+ IsValid = isValid
+ };
+ });
+
+
+ assert.ShouldBeEqual((p, s, d) =>
+ {
+ var srcProp = s.GetExpressionValue(m => m.CreateUniqueId);
+ var dstProp = d.GetExpressionValue(m => m.UniqueId);
+
+ var isValid = s.CreateUniqueId
+ ? d.UniqueId != default(Guid)
+ : d.UniqueId == default(Guid);
+
+ return new PropertyValidationResult
+ {
+ Tag = p.Tag,
+ Src = srcProp,
+ Dst = dstProp,
+ IsValid = isValid
+ };
+ });
+
+ }
+
+ #endregion
+ }
+}
diff --git a/SPMeta2/SPMeta2.Regression.SSOM/Validation/SecurityGroupDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.SSOM/Validation/SecurityGroupDefinitionValidator.cs
index 7a875bd41..2cc9d52cb 100644
--- a/SPMeta2/SPMeta2.Regression.SSOM/Validation/SecurityGroupDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.SSOM/Validation/SecurityGroupDefinitionValidator.cs
@@ -14,13 +14,19 @@ namespace SPMeta2.Regression.SSOM.Validation
{
public class SecurityGroupDefinitionValidator : SecurityGroupModelHandler
{
- protected string GetSafeUserLoging(string userLoginString)
+ protected string GetSafeUserLogin(string userLoginString)
{
var result = userLoginString.ToString().ToUpper().Replace("\\", "/");
if (result.Contains("|"))
result = result.Split('|')[1];
+ if (result.Contains('\\'))
+ result = result.Split('\\')[1];
+
+ if (result.Contains('/'))
+ result = result.Split('/')[1];
+
return result;
}
@@ -71,8 +77,8 @@ public override void DeployModel(object modelHost, DefinitionBase model)
var srcProp = s.GetExpressionValue(def => def.Owner);
var dstProp = d.GetExpressionValue(ct => ct.GetOwnerLogin());
- var srcUserLogin = GetSafeUserLoging(srcProp.Value.ToString());
- var dstsUserLogin = GetSafeUserLoging(dstProp.Value.ToString());
+ var srcUserLogin = GetSafeUserLogin(srcProp.Value.ToString());
+ var dstsUserLogin = GetSafeUserLogin(dstProp.Value.ToString());
var isValid = srcUserLogin == dstsUserLogin;
@@ -105,8 +111,8 @@ public override void DeployModel(object modelHost, DefinitionBase model)
foreach (var userName in userNames)
{
- var srcUserLogin = GetSafeUserLoging(srcProp.Value.ToString());
- var dstsUserLogin = GetSafeUserLoging(userName);
+ var srcUserLogin = GetSafeUserLogin(srcProp.Value.ToString());
+ var dstsUserLogin = GetSafeUserLogin(userName);
if (srcUserLogin == dstsUserLogin)
{
diff --git a/SPMeta2/SPMeta2.Regression.SSOM/Validation/SecurityRoleLinkDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.SSOM/Validation/SecurityRoleLinkDefinitionValidator.cs
index b0bffb91b..ed558137e 100644
--- a/SPMeta2/SPMeta2.Regression.SSOM/Validation/SecurityRoleLinkDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.SSOM/Validation/SecurityRoleLinkDefinitionValidator.cs
@@ -24,7 +24,18 @@ public override void DeployModel(object modelHost, DefinitionBase model)
var securableObject = modelHostContext.SecurableObject;
var securityGroup = modelHostContext.SecurityGroup;
- var securityRole = ResolveSecurityRole(ExtractWeb(securableObject), definition);
+ SPWeb web = null;
+
+ if (securableObject != null)
+ web = ExtractWeb(securableObject);
+ else
+ web = securityGroup.ParentWeb;
+
+ var securityRole = ResolveSecurityRole(web, definition);
+
+ // security group -> roles
+ if (securableObject == null)
+ securableObject = web;
var roleAssignments = securableObject.RoleAssignments;
var spObject = roleAssignments.OfType()
diff --git a/SPMeta2/SPMeta2.Regression.SSOM/Validation/SuiteBarDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.SSOM/Validation/SuiteBarDefinitionValidator.cs
new file mode 100644
index 000000000..5fdb1ac7b
--- /dev/null
+++ b/SPMeta2/SPMeta2.Regression.SSOM/Validation/SuiteBarDefinitionValidator.cs
@@ -0,0 +1,36 @@
+using SPMeta2.Definitions.Base;
+using SPMeta2.SSOM.ModelHandlers;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+
+using SPMeta2.Utils;
+using SPMeta2.SSOM.ModelHosts;
+using SPMeta2.Definitions;
+using SPMeta2.Containers.Assertion;
+
+namespace SPMeta2.Regression.SSOM.Validation
+{
+ public class SuiteBarDefinitionValidator : SuiteBarModelHandler
+ {
+ #region methods
+
+ public override void DeployModel(object modelHost, DefinitionBase model)
+ {
+ var typedModelHost = modelHost.WithAssertAndCast("modelHost", value => value.RequireNotNull());
+ var typedDefinition = model.WithAssertAndCast("model", value => value.RequireNotNull());
+
+ var spObject = typedModelHost.HostWebApplication;
+
+ var assert = ServiceFactory.AssertService
+ .NewAssert(typedDefinition, spObject)
+ .ShouldNotBeNull(spObject)
+ .ShouldBeEqual(m => m.SuiteBarBrandingElementHtml, o => o.SuiteBarBrandingElementHtml);
+
+ }
+
+ #endregion
+ }
+}
diff --git a/SPMeta2/SPMeta2.Regression.SSOM/Validation/WebPartDefinitionValidator.cs b/SPMeta2/SPMeta2.Regression.SSOM/Validation/WebPartDefinitionValidator.cs
index 92524a852..4ddecffa8 100644
--- a/SPMeta2/SPMeta2.Regression.SSOM/Validation/WebPartDefinitionValidator.cs
+++ b/SPMeta2/SPMeta2.Regression.SSOM/Validation/WebPartDefinitionValidator.cs
@@ -416,6 +416,11 @@ public override void DeployModel(object modelHost, DefinitionBase model)
assert.ShouldBeEqual(m => m.AuthorizationFilter, o => o.AuthorizationFilter);
else
assert.SkipProperty(m => m.AuthorizationFilter, "AuthorizationFilter is null or empty. Skipping.");
+
+ if (definition.Hidden.HasValue)
+ assert.ShouldBeEqual(m => m.Hidden, o => o.Hidden);
+ else
+ assert.SkipProperty(m => m.Hidden, "Hidden is null or empty. Skipping.");
});
}
diff --git a/SPMeta2/SPMeta2.Regression.Tests/Containers/Farm/SPMeta2.Containers.FarmSolutionWebAppContainer.wsp b/SPMeta2/SPMeta2.Regression.Tests/Containers/Farm/SPMeta2.Containers.FarmSolutionWebAppContainer.wsp
new file mode 100644
index 000000000..83c3dbbb6
Binary files /dev/null and b/SPMeta2/SPMeta2.Regression.Tests/Containers/Farm/SPMeta2.Containers.FarmSolutionWebAppContainer.wsp differ
diff --git a/SPMeta2/SPMeta2.Regression.Tests/Containers/Farm/SPMeta2.Containers.FarmSolutionWebAppContainer1.wsp b/SPMeta2/SPMeta2.Regression.Tests/Containers/Farm/SPMeta2.Containers.FarmSolutionWebAppContainer1.wsp
new file mode 100644
index 000000000..e29670d30
Binary files /dev/null and b/SPMeta2/SPMeta2.Regression.Tests/Containers/Farm/SPMeta2.Containers.FarmSolutionWebAppContainer1.wsp differ
diff --git a/SPMeta2/SPMeta2.Regression.Tests/Impl/ModelAPI/SPMeta2ModelTests.cs b/SPMeta2/SPMeta2.Regression.Tests/Impl/ModelAPI/SPMeta2ModelTests.cs
index 4fe4ce32d..ff469fa65 100644
--- a/SPMeta2/SPMeta2.Regression.Tests/Impl/ModelAPI/SPMeta2ModelTests.cs
+++ b/SPMeta2/SPMeta2.Regression.Tests/Impl/ModelAPI/SPMeta2ModelTests.cs
@@ -13,6 +13,7 @@
using SPMeta2.Containers.Utils;
using SPMeta2.Enumerations;
using SPMeta2.Models;
+using SPMeta2.Extensions;
namespace SPMeta2.Regression.Tests.Impl.ModelAPI
{
@@ -198,6 +199,9 @@ public void Should_Pass_On_Valid_SSOM_CSOM()
// both CSOM / SSOM
Assert.IsTrue(SPMeta2Model.IsCSOMCompatible(model));
Assert.IsTrue(SPMeta2Model.IsSSOMCompatible(model));
+
+ Assert.IsTrue(model.IsCSOMCompatible());
+ Assert.IsTrue(model.IsSSOMCompatible());
}
[TestMethod]
@@ -213,6 +217,9 @@ public void Should_Pass_On_Valid_SSOM_Invalid_CSOM()
// - CSOM / + SSOM
Assert.IsFalse(SPMeta2Model.IsCSOMCompatible(model));
Assert.IsTrue(SPMeta2Model.IsSSOMCompatible(model));
+
+ Assert.IsFalse(model.IsCSOMCompatible());
+ Assert.IsTrue(model.IsSSOMCompatible());
}
[TestMethod]
@@ -228,6 +235,9 @@ public void Should_Pass_On_Valid_SSOM_Invalid_CSOM_2()
// - CSOM / + SSOM
Assert.IsFalse(SPMeta2Model.IsCSOMCompatible(model));
Assert.IsTrue(SPMeta2Model.IsSSOMCompatible(model));
+
+ Assert.IsFalse(model.IsCSOMCompatible());
+ Assert.IsTrue(model.IsSSOMCompatible());
}
#endregion
diff --git a/SPMeta2/SPMeta2.Regression.Tests/Impl/ModelNodes/ModelNodesTests.cs b/SPMeta2/SPMeta2.Regression.Tests/Impl/ModelNodes/ModelNodesTests.cs
index d2d4eb426..6108f3de8 100644
--- a/SPMeta2/SPMeta2.Regression.Tests/Impl/ModelNodes/ModelNodesTests.cs
+++ b/SPMeta2/SPMeta2.Regression.Tests/Impl/ModelNodes/ModelNodesTests.cs
@@ -83,5 +83,47 @@ public void Can_Use_ModelNode_SetNonPersistentPropertyBagValue()
}
#endregion
+
+ #region compatibility
+
+ [TestMethod]
+ [TestCategory("Regression.ModelNodes.Compatibility")]
+ [TestCategory("CI.Core")]
+ public void Should_Pass_On_Valid_SSOM_CSOM()
+ {
+ var validDefinitions = new DefinitionBase[]{
+ new FieldDefinition(),
+ new WebDefinition(),
+ new ListDefinition(),
+ };
+
+ // both CSOM / SSOM
+ foreach (var def in validDefinitions)
+ {
+ Assert.IsTrue(def.IsCSOMCompatible());
+ Assert.IsTrue(def.IsSSOMCompatible());
+ }
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.ModelNodes.Compatibility")]
+ [TestCategory("CI.Core")]
+ public void Should_Pass_On_Valid_SSOM_Invalid_CSOM()
+ {
+ var validDefinitions = new DefinitionBase[]{
+ new FarmDefinition(),
+ new WebApplicationDefinition(),
+ new SiteDefinition()
+ };
+
+ // both CSOM / SSOM
+ foreach (var def in validDefinitions)
+ {
+ Assert.IsFalse(def.IsCSOMCompatible());
+ Assert.IsTrue(def.IsSSOMCompatible());
+ }
+ }
+
+ #endregion
}
}
diff --git a/SPMeta2/SPMeta2.Regression.Tests/Impl/Random/RandomDefinitionTest.cs b/SPMeta2/SPMeta2.Regression.Tests/Impl/Random/RandomDefinitionTest.cs
index bd9782694..23f035448 100644
--- a/SPMeta2/SPMeta2.Regression.Tests/Impl/Random/RandomDefinitionTest.cs
+++ b/SPMeta2/SPMeta2.Regression.Tests/Impl/Random/RandomDefinitionTest.cs
@@ -672,6 +672,26 @@ public void CanDeployRandom_ContentTypeFieldLinkDefinition()
TestRandomDefinition();
}
+ [TestMethod]
+ [TestCategory("Regression.Rnd.WebApplication")]
+ public void CanDeployRandom_OfficialFileHostDefinition()
+ {
+ WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
+ {
+ TestRandomDefinition();
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Rnd.WebApplication")]
+ public void CanDeployRandom_SuiteBarDefinition()
+ {
+ WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
+ {
+ TestRandomDefinition();
+ });
+ }
+
#endregion
#region web scope
diff --git a/SPMeta2/SPMeta2.Regression.Tests/Impl/Scenarios/ContentTypeScenariosTest.cs b/SPMeta2/SPMeta2.Regression.Tests/Impl/Scenarios/ContentTypeScenariosTest.cs
index d224c4580..00be0b94b 100644
--- a/SPMeta2/SPMeta2.Regression.Tests/Impl/Scenarios/ContentTypeScenariosTest.cs
+++ b/SPMeta2/SPMeta2.Regression.Tests/Impl/Scenarios/ContentTypeScenariosTest.cs
@@ -779,5 +779,65 @@ protected ContentTypeDefinition GetLocalizedDefinition()
}
#endregion
+
+ #region addint out of the box content types
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.ContentTypes.OOTB")]
+ public void CanDeploy_Item_ContentType_To_List()
+ {
+ // "Item" ContentTypeLink #1016
+ // https://github.com/SubPointSolutions/spmeta2/issues/1016
+
+ var announcementList = ModelGeneratorService.GetRandomDefinition(def =>
+ {
+ def.TemplateType = BuiltInListTemplateTypeId.Announcements;
+ def.ContentTypesEnabled = true;
+ });
+
+ var model = SPMeta2Model.NewWebModel(web =>
+ {
+ web.AddList(announcementList, list =>
+ {
+ list.AddContentTypeLink(new ContentTypeLinkDefinition
+ {
+ ContentTypeId = BuiltInContentTypeId.Item,
+ ContentTypeName = "Item"
+ });
+ });
+ });
+
+ TestModel(model);
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.ContentTypes.OOTB")]
+ public void CanDeploy_Item_ContentType_To_Library()
+ {
+ // "Item" ContentTypeLink #1016
+ // https://github.com/SubPointSolutions/spmeta2/issues/1016
+
+ var announcementList = ModelGeneratorService.GetRandomDefinition(def =>
+ {
+ def.TemplateType = BuiltInListTemplateTypeId.DocumentLibrary;
+ def.ContentTypesEnabled = true;
+ });
+
+ var model = SPMeta2Model.NewWebModel(web =>
+ {
+ web.AddList(announcementList, list =>
+ {
+ list.AddContentTypeLink(new ContentTypeLinkDefinition
+ {
+ ContentTypeId = BuiltInContentTypeId.Item,
+ ContentTypeName = "Item"
+ });
+ });
+ });
+
+ TestModel(model);
+ }
+
+ #endregion
}
}
diff --git a/SPMeta2/SPMeta2.Regression.Tests/Impl/Scenarios/FarmSolutionScenariosTest.cs b/SPMeta2/SPMeta2.Regression.Tests/Impl/Scenarios/FarmSolutionScenariosTest.cs
index ae63b9162..22190f97e 100644
--- a/SPMeta2/SPMeta2.Regression.Tests/Impl/Scenarios/FarmSolutionScenariosTest.cs
+++ b/SPMeta2/SPMeta2.Regression.Tests/Impl/Scenarios/FarmSolutionScenariosTest.cs
@@ -15,6 +15,10 @@
using SPMeta2.Standard.Definitions;
using SPMeta2.Syntax.Default;
using SPMeta2.Validation.Validators.Relationships;
+using SPMeta2.Containers.Consts;
+using System.IO;
+
+using SPMeta2.Containers.Extensions;
namespace SPMeta2.Regression.Tests.Impl.Scenarios
{
@@ -50,373 +54,812 @@ public static void Cleanup()
#region default
[TestMethod]
- [TestCategory("Regression.Scenarios.FarmSolution.Default")]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm")]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm.Default")]
public void CanDeploy_FarmSolution_As_Default()
{
WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
{
- var solutionDef = ModelGeneratorService.GetRandomDefinition(def =>
+ var solutionDef = GetFarmSolutionDefinition(false, def =>
{
});
- TestFarmSolutionModel(solutionDef);
+ TestFarmSolutionModel(solutionDef, false);
});
}
- #endregion
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication")]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication.Default")]
+ public void CanDeploy_FarmSolution_As_Default_UnderWebApplication()
+ {
+ WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
+ {
+ var solutionDef = GetFarmSolutionDefinition(true, def =>
+ {
- #region add operations
+ });
+
+ TestFarmSolutionModel(solutionDef, true);
+ });
+ }
[TestMethod]
- [TestCategory("Regression.Scenarios.FarmSolution.Add")]
- public void CanDeploy_FarmSolution_As_Add_FromDeleted_State()
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication")]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication.Default")]
+ public void CanDeploy_FarmSolution_As_Default_UnderTwoWebApplication()
{
+ // the same wsp package is to be deployed under different web app
+ // checking that the same *.wsp package can be sfaely deployed under two web app
+ // such deployment and retraction should only be scoped to a particular web app not affecting other web app deployments
+
WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
{
- var solutionDef = ModelGeneratorService.GetRandomDefinition(def =>
+ var webApp1 = ModelGeneratorService.GetRandomDefinition(def =>
{
+ def.Port = 31401;
+ def.UseSecureSocketsLayer = false;
+ });
+ var webApp2 = ModelGeneratorService.GetRandomDefinition(def =>
+ {
+ def.Port = 31402;
+ def.UseSecureSocketsLayer = false;
});
- PrepareDeletedState(solutionDef);
+ var solutionDef1 = GetFarmSolutionDefinition(true, def =>
+ {
+ //def.ShouldRetract = true;
+ def.ShouldDeploy = true;
+ });
- TestFarmSolutionModel(solutionDef);
+ var solutionDef2 = GetFarmSolutionDefinition(true, def =>
+ {
+ // the same wsp package is to be deployed under different web app
+ def.FileName = solutionDef1.FileName;
+
+ //def.ShouldRetract = true;
+ def.ShouldDeploy = true;
+ });
+
+ var farmModel = SPMeta2Model.NewFarmModel(farm =>
+ {
+ farm.AddWebApplication(webApp1, webApp =>
+ {
+ webApp.RegExcludeFromValidation();
+
+ webApp.AddFarmSolution(solutionDef1, solution =>
+ {
+
+ });
+ });
+
+
+ farm.AddWebApplication(webApp2, webApp =>
+ {
+ webApp.RegExcludeFromValidation();
+
+ webApp.AddFarmSolution(solutionDef2, solution =>
+ {
+
+ });
+ });
+
+ });
+
+ TestModel(farmModel);
});
}
[TestMethod]
- [TestCategory("Regression.Scenarios.FarmSolution.Add")]
- public void CanDeploy_FarmSolution_As_Add_FromRetracted_State()
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication")]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication.Default")]
+ public void CanDeploy_FarmSolution_As_Upgrade_UnderTwoWebApplication()
+ {
+ // the same wsp package is to be deployed under different web app
+ // checking that the same *.wsp package can be sfaely deployed under two web app
+ // such deployment and retraction should only be scoped to a particular web app not affecting other web app deployments
+
+ WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
+ {
+ var webApp1 = ModelGeneratorService.GetRandomDefinition(def =>
+ {
+ def.Port = 31401;
+ def.UseSecureSocketsLayer = false;
+ });
+
+ var webApp2 = ModelGeneratorService.GetRandomDefinition(def =>
+ {
+ def.Port = 31402;
+ def.UseSecureSocketsLayer = false;
+ });
+
+ var solutionDef1 = GetFarmSolutionDefinition(true, def =>
+ {
+ def.ShouldUpgrade = true;
+ def.ShouldDeploy = true;
+ });
+
+ var solutionDef2 = GetFarmSolutionDefinition(true, def =>
+ {
+ // the same wsp package is to be deployed under different web app
+ def.FileName = solutionDef1.FileName;
+
+ def.ShouldUpgrade = true;
+ def.ShouldDeploy = true;
+ });
+
+ var farmModel = SPMeta2Model.NewFarmModel(farm =>
+ {
+ farm.AddWebApplication(webApp1, webApp =>
+ {
+ webApp.RegExcludeFromValidation();
+
+ webApp.AddFarmSolution(solutionDef1, solution =>
+ {
+
+ });
+ });
+
+
+ farm.AddWebApplication(webApp2, webApp =>
+ {
+ webApp.RegExcludeFromValidation();
+
+ webApp.AddFarmSolution(solutionDef2, solution =>
+ {
+
+ });
+ });
+
+ });
+
+ TestModel(farmModel);
+ });
+ }
+
+ #endregion
+
+ #region add operations
+
+ public void CanDeploy_FarmSolution_As_Add_FromDeleted_State_Internal(bool isWebApplication)
{
WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
{
- var solutionDef = ModelGeneratorService.GetRandomDefinition(def =>
+ var solutionDef = GetFarmSolutionDefinition(isWebApplication, def =>
{
});
- PrepareRetractedState(solutionDef);
- TestFarmSolutionModel(solutionDef);
+ PrepareDeletedState(solutionDef, isWebApplication);
+ TestFarmSolutionModel(solutionDef, isWebApplication);
});
}
[TestMethod]
- [TestCategory("Regression.Scenarios.FarmSolution.Add")]
- public void CanDeploy_FarmSolution_As_Add_FromAdded_State()
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm")]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm.Add")]
+ public void CanDeploy_FarmSolution_As_Add_FromDeleted_State()
+ {
+ CanDeploy_FarmSolution_As_Add_FromDeleted_State_Internal(false);
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication")]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication.Add")]
+ public void CanDeploy_FarmSolution_As_Add_FromDeleted_State_UnderWebApplication()
+ {
+ CanDeploy_FarmSolution_As_Add_FromDeleted_State_Internal(true);
+ }
+
+ protected FarmSolutionDefinition GetFarmSolutionDefinition(bool isWebApplication, Action action)
+ {
+ var solutionDef = ModelGeneratorService.GetRandomDefinition(def =>
+ {
+ action(def);
+ });
+
+ if (isWebApplication)
+ {
+ solutionDef.SolutionId = DefaultContainers.FarmSolutionWebScope.SolutionId;
+ solutionDef.Content = File.ReadAllBytes(DefaultContainers.FarmSolutionWebScope.FilePath);
+ }
+
+ return solutionDef;
+ }
+
+ public void CanDeploy_FarmSolution_As_Add_FromRetracted_State_Internal(bool isWebApplication)
{
WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
{
- var solutionDef = ModelGeneratorService.GetRandomDefinition(def =>
+ var solutionDef = GetFarmSolutionDefinition(isWebApplication, def =>
{
});
- PrepareAddedState(solutionDef);
- TestFarmSolutionModel(solutionDef);
+ PrepareRetractedState(solutionDef, isWebApplication);
+ TestFarmSolutionModel(solutionDef, isWebApplication);
});
}
[TestMethod]
- [TestCategory("Regression.Scenarios.FarmSolution.Add")]
- public void CanDeploy_FarmSolution_As_Add_FromDeployed_State()
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm")]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm.Add")]
+ public void CanDeploy_FarmSolution_As_Add_FromRetracted_State()
+ {
+ CanDeploy_FarmSolution_As_Add_FromRetracted_State_Internal(false);
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication")]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication.Add")]
+ public void CanDeploy_FarmSolution_As_Add_FromRetracted_State_UnderWebApplication()
+ {
+ CanDeploy_FarmSolution_As_Add_FromRetracted_State_Internal(true);
+ }
+
+ public void CanDeploy_FarmSolution_As_Add_FromAdded_State_Internal(bool isWebApplication)
+ {
+ WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
+ {
+ var solutionDef = GetFarmSolutionDefinition(isWebApplication, def =>
+ {
+
+ });
+
+ PrepareAddedState(solutionDef, isWebApplication);
+ TestFarmSolutionModel(solutionDef, isWebApplication);
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm")]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm.Add")]
+ public void CanDeploy_FarmSolution_As_Add_FromAdded_State()
+ {
+ CanDeploy_FarmSolution_As_Add_FromAdded_State_Internal(false);
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication")]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication.Add")]
+ public void CanDeploy_FarmSolution_As_Add_FromAdded_State_UnderWebApplication()
+ {
+ CanDeploy_FarmSolution_As_Add_FromAdded_State_Internal(true);
+ }
+
+ public void CanDeploy_FarmSolution_As_Add_FromDeployed_State_Internal(bool isWebApplication)
{
WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
{
- var solutionDef = ModelGeneratorService.GetRandomDefinition(def =>
+ var solutionDef = GetFarmSolutionDefinition(isWebApplication, def =>
{
});
- PrepareDeployedState(solutionDef);
- TestFarmSolutionModel(solutionDef);
+ PrepareDeployedState(solutionDef, isWebApplication);
+ TestFarmSolutionModel(solutionDef, isWebApplication);
});
}
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm")]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm.Add")]
+ public void CanDeploy_FarmSolution_As_Add_FromDeployed_State()
+ {
+ CanDeploy_FarmSolution_As_Add_FromDeployed_State_Internal(false);
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication")]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication.Add")]
+ public void CanDeploy_FarmSolution_As_Add_FromDeployed_State_UnderWebApplication()
+ {
+ CanDeploy_FarmSolution_As_Add_FromDeployed_State_Internal(true);
+ }
+
#endregion
#region delete operations
- [TestMethod]
- [TestCategory("Regression.Scenarios.FarmSolution.Delete")]
- public void CanDeploy_FarmSolution_As_Delete_FromDeleted_State()
+ public void CanDeploy_FarmSolution_As_Delete_FromDeleted_State_Internal(bool isWebApplication)
{
WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
{
- var solutionDef = ModelGeneratorService.GetRandomDefinition(def =>
+ var solutionDef = GetFarmSolutionDefinition(isWebApplication, def =>
{
def.ShouldDelete = true;
def.ShouldAdd = false;
});
- PrepareDeletedState(solutionDef);
-
- TestFarmSolutionModel(solutionDef);
+ PrepareDeletedState(solutionDef, isWebApplication);
+ TestFarmSolutionModel(solutionDef, isWebApplication);
});
}
[TestMethod]
- [TestCategory("Regression.Scenarios.FarmSolution.Delete")]
- public void CanDeploy_FarmSolution_As_Delete_FromRetracted_State()
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm")]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm.Delete")]
+ public void CanDeploy_FarmSolution_As_Delete_FromDeleted_State()
+ {
+ CanDeploy_FarmSolution_As_Delete_FromDeleted_State_Internal(false);
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication")]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication.Delete")]
+ public void CanDeploy_FarmSolution_As_Delete_FromDeleted_State_UnderWebApplication()
+ {
+ CanDeploy_FarmSolution_As_Delete_FromDeleted_State_Internal(true);
+ }
+
+ public void CanDeploy_FarmSolution_As_Delete_FromRetracted_State_Internal(bool isWebApplication)
{
WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
{
- var solutionDef = ModelGeneratorService.GetRandomDefinition(def =>
+ var solutionDef = GetFarmSolutionDefinition(isWebApplication, def =>
{
def.ShouldDelete = true;
def.ShouldAdd = false;
});
- PrepareRetractedState(solutionDef);
- TestFarmSolutionModel(solutionDef);
+ PrepareRetractedState(solutionDef, isWebApplication);
+ TestFarmSolutionModel(solutionDef, isWebApplication);
});
}
[TestMethod]
- [TestCategory("Regression.Scenarios.FarmSolution.Delete")]
- public void CanDeploy_FarmSolution_As_Delete_FromAdded_State()
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm")]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm.Delete")]
+ public void CanDeploy_FarmSolution_As_Delete_FromRetracted_State()
+ {
+ CanDeploy_FarmSolution_As_Delete_FromRetracted_State_Internal(false);
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication")]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication.Delete")]
+ public void CanDeploy_FarmSolution_As_Delete_FromRetracted_State_UnderWebApplication()
+ {
+ CanDeploy_FarmSolution_As_Delete_FromRetracted_State_Internal(true);
+ }
+
+ public void CanDeploy_FarmSolution_As_Delete_FromAdded_State_Internal(bool isWebApplication)
{
WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
{
- var solutionDef = ModelGeneratorService.GetRandomDefinition(def =>
+ var solutionDef = GetFarmSolutionDefinition(isWebApplication, def =>
{
def.ShouldDelete = true;
def.ShouldAdd = false;
});
- PrepareAddedState(solutionDef);
- TestFarmSolutionModel(solutionDef);
+ PrepareAddedState(solutionDef, isWebApplication);
+ TestFarmSolutionModel(solutionDef, isWebApplication);
});
}
[TestMethod]
- [TestCategory("Regression.Scenarios.FarmSolution.Delete")]
- public void CanDeploy_FarmSolution_As_Delete_FromDeployed_State()
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm")]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm.Delete")]
+ public void CanDeploy_FarmSolution_As_Delete_FromAdded_State()
+ {
+ CanDeploy_FarmSolution_As_Delete_FromAdded_State_Internal(false);
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication")]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication.Delete")]
+ public void CanDeploy_FarmSolution_As_Delete_FromAdded_State_UnderWebApplication()
+ {
+ CanDeploy_FarmSolution_As_Delete_FromAdded_State_Internal(true);
+ }
+
+ public void CanDeploy_FarmSolution_As_Delete_FromDeployed_State_Internal(bool isWebApplication)
{
WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
{
- var solutionDef = ModelGeneratorService.GetRandomDefinition(def =>
+ var solutionDef = GetFarmSolutionDefinition(isWebApplication, def =>
{
def.ShouldDelete = true;
def.ShouldAdd = false;
});
- PrepareDeployedState(solutionDef);
- TestFarmSolutionModel(solutionDef);
+ PrepareDeployedState(solutionDef, isWebApplication);
+ TestFarmSolutionModel(solutionDef, isWebApplication);
});
}
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm")]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm.Delete")]
+ public void CanDeploy_FarmSolution_As_Delete_FromDeployed_State()
+ {
+ CanDeploy_FarmSolution_As_Delete_FromDeployed_State_Internal(false);
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication")]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication.Delete")]
+ public void CanDeploy_FarmSolution_As_Delete_FromDeployed_State_UnderWebApplication()
+ {
+ CanDeploy_FarmSolution_As_Delete_FromDeployed_State_Internal(true);
+ }
+
#endregion
#region retract operations
- [TestMethod]
- [TestCategory("Regression.Scenarios.FarmSolution.Retract")]
- public void CanDeploy_FarmSolution_As_Retract_FromDeleted_State()
+ public void CanDeploy_FarmSolution_As_Retract_FromDeleted_State_Internal(bool isWebApplication)
{
WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
{
- var solutionDef = ModelGeneratorService.GetRandomDefinition(def =>
+ var solutionDef = GetFarmSolutionDefinition(isWebApplication, def =>
{
def.ShouldRetract = true;
});
- PrepareDeletedState(solutionDef);
-
- TestFarmSolutionModel(solutionDef);
+ PrepareDeletedState(solutionDef, isWebApplication);
+ TestFarmSolutionModel(solutionDef, isWebApplication);
});
}
[TestMethod]
- [TestCategory("Regression.Scenarios.FarmSolution.Retract")]
- public void CanDeploy_FarmSolution_As_Retract_FromRetracted_State()
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm")]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm.Retract")]
+ public void CanDeploy_FarmSolution_As_Retract_FromDeleted_State()
+ {
+ CanDeploy_FarmSolution_As_Retract_FromDeleted_State_Internal(false);
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication")]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication.Retract")]
+ public void CanDeploy_FarmSolution_As_Retract_FromDeleted_State_UnderWebApplication()
+ {
+ CanDeploy_FarmSolution_As_Retract_FromDeleted_State_Internal(true);
+ }
+
+ public void CanDeploy_FarmSolution_As_Retract_FromRetracted_State_Internal(bool isWebApplication)
{
WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
{
- var solutionDef = ModelGeneratorService.GetRandomDefinition(def =>
+ var solutionDef = GetFarmSolutionDefinition(isWebApplication, def =>
{
def.ShouldRetract = true;
});
- PrepareRetractedState(solutionDef);
- TestFarmSolutionModel(solutionDef);
+ PrepareRetractedState(solutionDef, isWebApplication);
+ TestFarmSolutionModel(solutionDef, isWebApplication);
});
}
[TestMethod]
- [TestCategory("Regression.Scenarios.FarmSolution.Retract")]
- public void CanDeploy_FarmSolution_As_Retract_FromAdded_State()
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm")]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm.Retract")]
+ public void CanDeploy_FarmSolution_As_Retract_FromRetracted_State()
+ {
+ CanDeploy_FarmSolution_As_Retract_FromRetracted_State_Internal(false);
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication")]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication.Retract")]
+ public void CanDeploy_FarmSolution_As_Retract_FromRetracted_State_UnderWbApplication()
+ {
+ CanDeploy_FarmSolution_As_Retract_FromRetracted_State_Internal(true);
+ }
+
+ public void CanDeploy_FarmSolution_As_Retract_FromAdded_State_Internal(bool isWebApplication)
{
WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
{
- var solutionDef = ModelGeneratorService.GetRandomDefinition(def =>
+ var solutionDef = GetFarmSolutionDefinition(isWebApplication, def =>
{
def.ShouldRetract = true;
});
- PrepareAddedState(solutionDef);
- TestFarmSolutionModel(solutionDef);
+ PrepareAddedState(solutionDef, isWebApplication);
+ TestFarmSolutionModel(solutionDef, isWebApplication);
});
}
[TestMethod]
- [TestCategory("Regression.Scenarios.FarmSolution.Retract")]
- public void CanDeploy_FarmSolution_As_Retract_FromDeployed_State()
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm")]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm.Retract")]
+ public void CanDeploy_FarmSolution_As_Retract_FromAdded_State()
+ {
+ CanDeploy_FarmSolution_As_Retract_FromAdded_State_Internal(false);
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication")]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication.Retract")]
+ public void CanDeploy_FarmSolution_As_Retract_FromAdded_State_UnderWebApplication()
+ {
+ CanDeploy_FarmSolution_As_Retract_FromAdded_State_Internal(true);
+ }
+
+ public void CanDeploy_FarmSolution_As_Retract_FromDeployed_State_Internal(bool isWebApplication)
{
WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
{
- var solutionDef = ModelGeneratorService.GetRandomDefinition(def =>
+ var solutionDef = GetFarmSolutionDefinition(isWebApplication, def =>
{
def.ShouldRetract = true;
});
- PrepareDeployedState(solutionDef);
- TestFarmSolutionModel(solutionDef);
+ PrepareDeployedState(solutionDef, isWebApplication);
+ TestFarmSolutionModel(solutionDef, isWebApplication);
});
}
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm")]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm.Retract")]
+ public void CanDeploy_FarmSolution_As_Retract_FromDeployed_State()
+ {
+ CanDeploy_FarmSolution_As_Retract_FromDeployed_State_Internal(false);
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication")]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication.Retract")]
+ public void CanDeploy_FarmSolution_As_Retract_FromDeployed_State_UnderWebApplication()
+ {
+ CanDeploy_FarmSolution_As_Retract_FromDeployed_State_Internal(true);
+ }
+
#endregion
#region deploy operations
- [TestMethod]
- [TestCategory("Regression.Scenarios.FarmSolution.Deploy")]
- public void CanDeploy_FarmSolution_As_Deploy_FromDeleted_State()
+ public void CanDeploy_FarmSolution_As_Deploy_FromDeleted_State_Internal(bool isWebApplication)
{
WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
{
- var solutionDef = ModelGeneratorService.GetRandomDefinition(def =>
+ var solutionDef = GetFarmSolutionDefinition(isWebApplication, def =>
{
def.ShouldDeploy = true;
});
- PrepareDeletedState(solutionDef);
- TestFarmSolutionModel(solutionDef);
+ PrepareDeletedState(solutionDef, isWebApplication);
+ TestFarmSolutionModel(solutionDef, isWebApplication);
});
}
[TestMethod]
- [TestCategory("Regression.Scenarios.FarmSolution.Deploy")]
- public void CanDeploy_FarmSolution_As_Deploy_FromRetracted_State()
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm")]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm.Deploy")]
+ public void CanDeploy_FarmSolution_As_Deploy_FromDeleted_State()
+ {
+ CanDeploy_FarmSolution_As_Deploy_FromDeleted_State_Internal(false);
+ }
+
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication")]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication.Deploy")]
+ public void CanDeploy_FarmSolution_As_Deploy_FromDeleted_State_UnderWebApplication()
+ {
+ CanDeploy_FarmSolution_As_Deploy_FromDeleted_State_Internal(true);
+ }
+
+ public void CanDeploy_FarmSolution_As_Deploy_FromRetracted_State_Internal(bool isWebApplication)
{
WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
{
- var solutionDef = ModelGeneratorService.GetRandomDefinition(def =>
+ var solutionDef = GetFarmSolutionDefinition(isWebApplication, def =>
{
def.ShouldDeploy = true;
});
- PrepareRetractedState(solutionDef);
- TestFarmSolutionModel(solutionDef);
+ PrepareRetractedState(solutionDef, isWebApplication);
+ TestFarmSolutionModel(solutionDef, isWebApplication);
});
}
[TestMethod]
- [TestCategory("Regression.Scenarios.FarmSolution.Deploy")]
- public void CanDeploy_FarmSolution_As_Deploy_FromAdded_State()
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm")]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm.Deploy")]
+ public void CanDeploy_FarmSolution_As_Deploy_FromRetracted_State()
+ {
+ CanDeploy_FarmSolution_As_Deploy_FromRetracted_State_Internal(false);
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication")]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication.Deploy")]
+ public void CanDeploy_FarmSolution_As_Deploy_FromRetracted_State_UnderWebApplication()
+ {
+ CanDeploy_FarmSolution_As_Deploy_FromRetracted_State_Internal(true);
+ }
+
+ public void CanDeploy_FarmSolution_As_Deploy_FromAdded_State_Internal(bool isWebApplication)
{
WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
{
- var solutionDef = ModelGeneratorService.GetRandomDefinition(def =>
+ var solutionDef = GetFarmSolutionDefinition(isWebApplication, def =>
{
def.ShouldDeploy = true;
});
- PrepareAddedState(solutionDef);
- TestFarmSolutionModel(solutionDef);
+ PrepareAddedState(solutionDef, isWebApplication);
+ TestFarmSolutionModel(solutionDef, isWebApplication);
});
}
[TestMethod]
- [TestCategory("Regression.Scenarios.FarmSolution.Deploy")]
- public void CanDeploy_FarmSolution_As_Deploy_FromDeployed_State()
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm")]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm.Deploy")]
+ public void CanDeploy_FarmSolution_As_Deploy_FromAdded_State()
+ {
+ CanDeploy_FarmSolution_As_Deploy_FromAdded_State_Internal(false);
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication")]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication.Deploy")]
+ public void CanDeploy_FarmSolution_As_Deploy_FromAdded_State_UnderWebApplication()
+ {
+ CanDeploy_FarmSolution_As_Deploy_FromAdded_State_Internal(true);
+ }
+
+ public void CanDeploy_FarmSolution_As_Deploy_FromDeployed_State_Internal(bool isWebApplication)
{
WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
{
- var solutionDef = ModelGeneratorService.GetRandomDefinition(def =>
+ var solutionDef = GetFarmSolutionDefinition(isWebApplication, def =>
{
def.ShouldDeploy = true;
});
- PrepareDeployedState(solutionDef);
- TestFarmSolutionModel(solutionDef);
+ PrepareDeployedState(solutionDef, isWebApplication);
+ TestFarmSolutionModel(solutionDef, isWebApplication);
});
}
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm")]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm.Deploy")]
+ public void CanDeploy_FarmSolution_As_Deploy_FromDeployed_State()
+ {
+ CanDeploy_FarmSolution_As_Deploy_FromDeployed_State_Internal(false);
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication")]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication.Deploy")]
+ public void CanDeploy_FarmSolution_As_Deploy_FromDeployed_State_UnderWebApplication()
+ {
+ CanDeploy_FarmSolution_As_Deploy_FromDeployed_State_Internal(true);
+ }
+
#endregion
#region upgrade operations
- [TestMethod]
- [TestCategory("Regression.Scenarios.FarmSolution.Upgrade")]
- public void CanDeploy_FarmSolution_As_Upgrade_FromDeleted_State()
+ public void CanDeploy_FarmSolution_As_Upgrade_FromDeleted_State_Internal(bool isWebApplication)
{
WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
{
- var solutionDef = ModelGeneratorService.GetRandomDefinition(def =>
+ var solutionDef = GetFarmSolutionDefinition(isWebApplication, def =>
{
def.ShouldUpgrade = true;
});
- PrepareDeletedState(solutionDef);
- TestFarmSolutionModel(solutionDef);
+ PrepareDeletedState(solutionDef, isWebApplication);
+ TestFarmSolutionModel(solutionDef, isWebApplication);
});
}
[TestMethod]
- [TestCategory("Regression.Scenarios.FarmSolution.Upgrade")]
- public void CanDeploy_FarmSolution_As_Upgrade_FromRetracted_State()
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm.Upgrade")]
+ public void CanDeploy_FarmSolution_As_Upgrade_FromDeleted_State()
+ {
+ CanDeploy_FarmSolution_As_Upgrade_FromDeleted_State_Internal(false);
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication.Upgrade")]
+ public void CanDeploy_FarmSolution_As_Upgrade_FromDeleted_State_UnderWebApplication()
+ {
+ CanDeploy_FarmSolution_As_Upgrade_FromDeleted_State_Internal(true);
+ }
+
+ public void CanDeploy_FarmSolution_As_Upgrade_FromRetracted_State_Internal(bool isWebApplication)
{
WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
{
- var solutionDef = ModelGeneratorService.GetRandomDefinition(def =>
+ var solutionDef = GetFarmSolutionDefinition(isWebApplication, def =>
{
def.ShouldUpgrade = true;
});
- PrepareRetractedState(solutionDef);
- TestFarmSolutionModel(solutionDef);
+ PrepareRetractedState(solutionDef, isWebApplication);
+ TestFarmSolutionModel(solutionDef, isWebApplication);
});
}
[TestMethod]
- [TestCategory("Regression.Scenarios.FarmSolution.Upgrade")]
- public void CanDeploy_FarmSolution_As_Upgrade_FromAdded_State()
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm.Upgrade")]
+ public void CanDeploy_FarmSolution_As_Upgrade_FromRetracted_State()
+ {
+ CanDeploy_FarmSolution_As_Upgrade_FromRetracted_State_Internal(false);
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication.Upgrade")]
+ public void CanDeploy_FarmSolution_As_Upgrade_FromRetracted_State_UnderWebApplication()
+ {
+ CanDeploy_FarmSolution_As_Upgrade_FromRetracted_State_Internal(true);
+ }
+
+ public void CanDeploy_FarmSolution_As_Upgrade_FromAdded_State_Internal(bool isWebApplication)
{
WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
{
- var solutionDef = ModelGeneratorService.GetRandomDefinition(def =>
+ var solutionDef = GetFarmSolutionDefinition(isWebApplication, def =>
{
def.ShouldUpgrade = true;
});
- PrepareAddedState(solutionDef);
+ PrepareAddedState(solutionDef, isWebApplication);
//TestFarmSolutionModel(solutionDef);
});
}
[TestMethod]
- [TestCategory("Regression.Scenarios.FarmSolution.Upgrade")]
- public void CanDeploy_FarmSolution_As_Upgrade_FromDeployed_State()
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm.Upgrade")]
+ public void CanDeploy_FarmSolution_As_Upgrade_FromAdded_State()
+ {
+ CanDeploy_FarmSolution_As_Upgrade_FromAdded_State_Internal(false);
+ }
+
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication.Upgrade")]
+ public void CanDeploy_FarmSolution_As_Upgrade_FromAdded_State_UnderWebApplication()
+ {
+ CanDeploy_FarmSolution_As_Upgrade_FromAdded_State_Internal(true);
+ }
+
+ public void CanDeploy_FarmSolution_As_Upgrade_FromDeployed_State_Internal(bool isWebApplication)
{
WithExpectedUnsupportedCSOMnO365RunnerExceptions(() =>
{
- var solutionDef = ModelGeneratorService.GetRandomDefinition(def =>
+ var solutionDef = GetFarmSolutionDefinition(isWebApplication, def =>
{
def.ShouldUpgrade = true;
});
- PrepareDeployedState(solutionDef);
- TestFarmSolutionModel(solutionDef);
+ PrepareDeployedState(solutionDef, isWebApplication);
+ TestFarmSolutionModel(solutionDef, isWebApplication);
});
}
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.Farm.Upgrade")]
+ public void CanDeploy_FarmSolution_As_Upgrade_FromDeployed_State()
+ {
+ CanDeploy_FarmSolution_As_Upgrade_FromDeployed_State_Internal(false);
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.FarmSolution.WebApplication.Upgrade")]
+ public void CanDeploy_FarmSolution_As_Upgrade_FromDeployed_State_UnderWebApplication()
+ {
+ CanDeploy_FarmSolution_As_Upgrade_FromDeployed_State_Internal(true);
+ }
+
#endregion
#region utils
- private void PrepareDeployedState(FarmSolutionDefinition solutionDef)
+ private void PrepareDeployedState(FarmSolutionDefinition solutionDef,
+ bool isWebAcpplication)
{
var deployDef = solutionDef.Inherit(def =>
{
@@ -428,10 +871,11 @@ private void PrepareDeployedState(FarmSolutionDefinition solutionDef)
def.ShouldDeploy = true;
});
- TestFarmSolutionModel(deployDef);
+ TestFarmSolutionModel(deployDef, isWebAcpplication);
}
- private void PrepareAddedState(FarmSolutionDefinition solutionDef)
+ private void PrepareAddedState(FarmSolutionDefinition solutionDef,
+ bool isWebApplication)
{
var addDef = solutionDef.Inherit(def =>
{
@@ -443,7 +887,7 @@ private void PrepareAddedState(FarmSolutionDefinition solutionDef)
def.ShouldRetract = null;
});
- TestFarmSolutionModel(addDef);
+ TestFarmSolutionModel(addDef, isWebApplication);
var retractDef = solutionDef.Inherit(def =>
{
@@ -455,10 +899,11 @@ private void PrepareAddedState(FarmSolutionDefinition solutionDef)
def.ShouldRetract = true;
});
- TestFarmSolutionModel(retractDef);
+ TestFarmSolutionModel(retractDef, isWebApplication);
}
- private void PrepareRetractedState(FarmSolutionDefinition solutionDef)
+ private void PrepareRetractedState(FarmSolutionDefinition solutionDef,
+ bool isWebApplication)
{
var deployDef = solutionDef.Inherit(def =>
{
@@ -480,11 +925,12 @@ private void PrepareRetractedState(FarmSolutionDefinition solutionDef)
def.ShouldRetract = true;
});
- TestFarmSolutionModel(deployDef);
- TestFarmSolutionModel(retractDef);
+ TestFarmSolutionModel(deployDef, isWebApplication);
+ TestFarmSolutionModel(retractDef, isWebApplication);
}
- private void PrepareDeletedState(FarmSolutionDefinition solutionDef)
+ private void PrepareDeletedState(FarmSolutionDefinition solutionDef,
+ bool isWebApplication)
{
var deletedDef = solutionDef.Inherit(def =>
{
@@ -496,25 +942,43 @@ private void PrepareDeletedState(FarmSolutionDefinition solutionDef)
def.ShouldDelete = true;
});
- TestFarmSolutionModel(deletedDef);
+ TestFarmSolutionModel(deletedDef, isWebApplication);
}
- protected virtual void TestFarmSolutionModel(FarmSolutionDefinition solutionDef)
+ protected virtual void TestFarmSolutionModel(FarmSolutionDefinition solutionDef, bool isWebApplicationLevel)
{
var newSolutiondef = solutionDef.Inherit();
- var originalModel = SPMeta2Model.NewFarmModel(farm =>
+ if (isWebApplicationLevel)
{
- farm.AddFarmSolution(solutionDef);
- });
+ var originalModel = SPMeta2Model.NewWebApplicationModel(webApp =>
+ {
+ webApp.AddFarmSolution(solutionDef);
+ });
- var newModel = SPMeta2Model.NewFarmModel(farm =>
+ var newModel = SPMeta2Model.NewWebApplicationModel(farm =>
+ {
+ farm.AddFarmSolution(newSolutiondef);
+ });
+
+ TestModel(originalModel);
+ TestModel(newModel);
+ }
+ else
{
- farm.AddFarmSolution(newSolutiondef);
- });
+ var originalModel = SPMeta2Model.NewFarmModel(farm =>
+ {
+ farm.AddFarmSolution(solutionDef);
+ });
+
+ var newModel = SPMeta2Model.NewFarmModel(farm =>
+ {
+ farm.AddFarmSolution(newSolutiondef);
+ });
- TestModel(originalModel);
- TestModel(newModel);
+ TestModel(originalModel);
+ TestModel(newModel);
+ }
}
#endregion
diff --git a/SPMeta2/SPMeta2.Regression.Tests/Impl/Scenarios/Fields/LookupFieldScenariousTest.cs b/SPMeta2/SPMeta2.Regression.Tests/Impl/Scenarios/Fields/LookupFieldScenariousTest.cs
index 85b3dfaa2..9ee46e1ab 100644
--- a/SPMeta2/SPMeta2.Regression.Tests/Impl/Scenarios/Fields/LookupFieldScenariousTest.cs
+++ b/SPMeta2/SPMeta2.Regression.Tests/Impl/Scenarios/Fields/LookupFieldScenariousTest.cs
@@ -1,885 +1,1022 @@
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using SPMeta2.BuiltInDefinitions;
-using SPMeta2.Containers;
-
-using SPMeta2.Definitions;
-using SPMeta2.Definitions.Fields;
-using SPMeta2.Enumerations;
-using SPMeta2.Exceptions;
-using SPMeta2.Models;
-using SPMeta2.Regression.Tests.Impl.Scenarios.Base;
-using SPMeta2.Regression.Tests.Utils;
-using SPMeta2.Syntax.Default;
-using SPMeta2.Syntax.Default.Modern;
-using SPMeta2.Utils;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using SPMeta2.BuiltInDefinitions;
+using SPMeta2.Containers;
+
+using SPMeta2.Definitions;
+using SPMeta2.Definitions.Fields;
+using SPMeta2.Enumerations;
+using SPMeta2.Exceptions;
+using SPMeta2.Models;
+using SPMeta2.Regression.Tests.Impl.Scenarios.Base;
+using SPMeta2.Regression.Tests.Utils;
+using SPMeta2.Syntax.Default;
+using SPMeta2.Syntax.Default.Modern;
+using SPMeta2.Utils;
using SPMeta2.Definitions.ContentTypes;
-using SPMeta2.Regression.Tests.Extensions;
-
-namespace SPMeta2.Regression.Tests.Impl.Scenarios.Fields
-{
- [TestClass]
- public class LookupFieldScenariousTest : SPMeta2RegresionScenarioTestBase
- {
- #region internal
-
- [ClassInitialize]
- public static void Init(TestContext context)
- {
- InternalInit();
- }
-
- [ClassCleanup]
- public static void Cleanup()
- {
- InternalCleanup();
- }
-
- #endregion
-
- #region single select
-
- protected LookupFieldDefinition GetSingleSelectLookupDefinition()
- {
- return GetSingleSelectLookupDefinition(null);
- }
-
- protected LookupFieldDefinition GetSingleSelectLookupDefinition(Action action)
- {
- var result = ModelGeneratorService.GetRandomDefinition(def =>
- {
- def.ShowInNewForm = true;
- def.Hidden = false;
- def.Required = false;
- def.AllowMultipleValues = false;
- });
-
- if (action != null)
- action(result);
-
- return result;
- }
-
- protected class LookupFieldEnvironment
- {
- public ModelNode ChildListModel { get; set; }
- public ModelNode MasterListModel { get; set; }
-
- public ModelNode SiteModel { get; set; }
-
- public ModelNode WebModel { get; set; }
-
- public LookupFieldDefinition LookupField { get; set; }
-
- public ListDefinition ChildList { get; set; }
- public ListDefinition MasterList { get; set; }
-
- public ModelNode ChildListNode { get; set; }
- }
-
- protected LookupFieldEnvironment GetLookupFieldEnvironment(Action action)
- {
- return GetLookupFieldEnvironment(action, null);
- }
-
- protected LookupFieldEnvironment GetLookupFieldEnvironment(Action action,
- WebDefinition destinationWebDefinition)
- {
- var result = new LookupFieldEnvironment();
-
- var dataList = ModelGeneratorService.GetRandomDefinition(def =>
- {
- def.TemplateType = BuiltInListTemplateTypeId.GenericList;
- });
-
- var masterList = ModelGeneratorService.GetRandomDefinition(def =>
- {
- def.TemplateType = BuiltInListTemplateTypeId.GenericList;
- });
-
- var lookupField = GetSingleSelectLookupDefinition(def =>
- {
- def.Indexed = false;
- //def.LookupListTitle = dataList.Title;
- });
-
- ModelNode childListNode = null;
-
- var siteModel = SPMeta2Model.NewSiteModel(site =>
- {
- site.AddField(lookupField);
- });
-
- var webModel = SPMeta2Model.NewWebModel(web =>
- {
- web.AddField(lookupField);
- });
-
- var childWebModel = SPMeta2Model.NewWebModel(web =>
- {
- if (destinationWebDefinition != null)
- {
- web.AddWeb(destinationWebDefinition, subWeb =>
- {
- subWeb.AddList(dataList, list =>
- {
- childListNode = list;
-
- list
- .AddRandomListItem()
- .AddRandomListItem()
- .AddRandomListItem();
- });
- });
- }
- else
- {
- web.AddList(dataList, list =>
- {
- childListNode = list;
-
- list
- .AddRandomListItem()
- .AddRandomListItem()
- .AddRandomListItem();
- });
- }
- });
-
- var masterWebModel = SPMeta2Model.NewWebModel(web =>
- {
- web.AddList(masterList, list =>
- {
- list.AddListFieldLink(lookupField);
- });
- });
-
- result.LookupField = lookupField;
-
- result.ChildList = dataList;
- result.ChildListNode = childListNode;
- result.ChildListModel = childWebModel;
-
-
- result.MasterList = masterList;
- result.MasterListModel = masterWebModel;
-
- result.SiteModel = siteModel;
- result.WebModel = webModel;
-
- if (action != null)
- action(result);
-
- return result;
- }
-
- [TestMethod]
- [TestCategory("Regression.Scenarios.Fields.LookupField.SingleSelect")]
- public void CanDeploy_LookupField_AsEmptySingleSelect()
- {
- var field = GetSingleSelectLookupDefinition(def =>
- {
- def.LookupListTitle = string.Empty;
- def.LookupListUrl = string.Empty;
- def.LookupList = string.Empty;
- });
-
- var siteModel = SPMeta2Model.NewSiteModel(site =>
- {
- site.AddField(field);
- });
-
- TestModel(siteModel);
- }
-
- [TestMethod]
- [TestCategory("Regression.Scenarios.Fields.LookupField.SingleSelect")]
- public void CanDeploy_LookupField_AsSingleSelect()
- {
- var field = GetSingleSelectLookupDefinition();
-
- var siteModel = SPMeta2Model.NewSiteModel(site =>
- {
- site.AddField(field);
- });
-
- TestModel(siteModel);
- }
-
- [TestMethod]
- [TestCategory("Regression.Scenarios.Fields.LookupField.SingleSelect")]
- public void CanDeploy_LookupField_AsSingleSelectAndBindToListByTitle()
- {
- WithDisabledPropertyUpdateValidation(() =>
- {
- var lookupEnvironment = GetLookupFieldEnvironment(env =>
- {
- env.LookupField.LookupListTitle = env.ChildList.Title;
- });
-
+using SPMeta2.Regression.Tests.Extensions;
+
+namespace SPMeta2.Regression.Tests.Impl.Scenarios.Fields
+{
+ [TestClass]
+ public class LookupFieldScenariousTest : SPMeta2RegresionScenarioTestBase
+ {
+ #region internal
+
+ [ClassInitialize]
+ public static void Init(TestContext context)
+ {
+ InternalInit();
+ }
+
+ [ClassCleanup]
+ public static void Cleanup()
+ {
+ InternalCleanup();
+ }
+
+ #endregion
+
+ #region single select
+
+ protected LookupFieldDefinition GetSingleSelectLookupDefinition()
+ {
+ return GetSingleSelectLookupDefinition(null);
+ }
+
+ protected LookupFieldDefinition GetSingleSelectLookupDefinition(Action action)
+ {
+ var result = ModelGeneratorService.GetRandomDefinition(def =>
+ {
+ def.ShowInNewForm = true;
+ def.Hidden = false;
+ def.Required = false;
+ def.AllowMultipleValues = false;
+ });
+
+ if (action != null)
+ action(result);
+
+ return result;
+ }
+
+ protected class LookupFieldEnvironment
+ {
+ public ModelNode ChildListModel { get; set; }
+ public ModelNode MasterListModel { get; set; }
+
+ public ModelNode SiteModel { get; set; }
+
+ public ModelNode WebModel { get; set; }
+
+ public LookupFieldDefinition LookupField { get; set; }
+
+ public ListDefinition ChildList { get; set; }
+ public ListDefinition MasterList { get; set; }
+
+ public ModelNode ChildListNode { get; set; }
+ }
+
+ protected LookupFieldEnvironment GetLookupFieldEnvironment(Action action)
+ {
+ return GetLookupFieldEnvironment(action, null);
+ }
+
+ protected LookupFieldEnvironment GetLookupFieldEnvironment(Action action,
+ WebDefinition destinationWebDefinition)
+ {
+ var result = new LookupFieldEnvironment();
+
+ var dataList = ModelGeneratorService.GetRandomDefinition(def =>
+ {
+ def.TemplateType = BuiltInListTemplateTypeId.GenericList;
+ });
+
+ var masterList = ModelGeneratorService.GetRandomDefinition(def =>
+ {
+ def.TemplateType = BuiltInListTemplateTypeId.GenericList;
+ });
+
+ var lookupField = GetSingleSelectLookupDefinition(def =>
+ {
+ def.Indexed = false;
+ //def.LookupListTitle = dataList.Title;
+ });
+
+ ModelNode childListNode = null;
+
+ var siteModel = SPMeta2Model.NewSiteModel(site =>
+ {
+ site.AddField(lookupField);
+ });
+
+ var webModel = SPMeta2Model.NewWebModel(web =>
+ {
+ web.AddField(lookupField);
+ });
+
+ var childWebModel = SPMeta2Model.NewWebModel(web =>
+ {
+ if (destinationWebDefinition != null)
+ {
+ web.AddWeb(destinationWebDefinition, subWeb =>
+ {
+ subWeb.AddList(dataList, list =>
+ {
+ childListNode = list;
+
+ list
+ .AddRandomListItem()
+ .AddRandomListItem()
+ .AddRandomListItem();
+ });
+ });
+ }
+ else
+ {
+ web.AddList(dataList, list =>
+ {
+ childListNode = list;
+
+ list
+ .AddRandomListItem()
+ .AddRandomListItem()
+ .AddRandomListItem();
+ });
+ }
+ });
+
+ var masterWebModel = SPMeta2Model.NewWebModel(web =>
+ {
+ web.AddList(masterList, list =>
+ {
+ list.AddListFieldLink(lookupField);
+ });
+ });
+
+ result.LookupField = lookupField;
+
+ result.ChildList = dataList;
+ result.ChildListNode = childListNode;
+ result.ChildListModel = childWebModel;
+
+
+ result.MasterList = masterList;
+ result.MasterListModel = masterWebModel;
+
+ result.SiteModel = siteModel;
+ result.WebModel = webModel;
+
+ if (action != null)
+ action(result);
+
+ return result;
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.Fields.LookupField.SingleSelect")]
+ public void CanDeploy_LookupField_AsEmptySingleSelect()
+ {
+ var field = GetSingleSelectLookupDefinition(def =>
+ {
+ def.LookupListTitle = string.Empty;
+ def.LookupListUrl = string.Empty;
+ def.LookupList = string.Empty;
+ });
+
+ var siteModel = SPMeta2Model.NewSiteModel(site =>
+ {
+ site.AddField(field);
+ });
+
+ TestModel(siteModel);
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.Fields.LookupField.SingleSelect")]
+ public void CanDeploy_LookupField_AsSingleSelect()
+ {
+ var field = GetSingleSelectLookupDefinition();
+
+ var siteModel = SPMeta2Model.NewSiteModel(site =>
+ {
+ site.AddField(field);
+ });
+
+ TestModel(siteModel);
+ }
+
+ [TestMethod]
+ [TestCategory("Regression.Scenarios.Fields.LookupField.SingleSelect")]
+ public void CanDeploy_LookupField_AsSingleSelectAndBindToListByTitle()
+ {
+ WithDisabledPropertyUpdateValidation(() =>
+ {
+ var lookupEnvironment = GetLookupFieldEnvironment(env =>
+ {
+ env.LookupField.LookupListTitle = env.ChildList.Title;
+ });
+
TestModels(new ModelNode[]{
lookupEnvironment.ChildListModel,
lookupEnvironment.SiteModel,
lookupEnvironment.MasterListModel
- });
- });
-
- }
-
- [TestMethod]
- [TestCategory("Regression.Scenarios.Fields.LookupField.SingleSelect")]
- public void CanDeploy_LookupField_AsSingleSelectAndBindToListById()
- {
- var lookupEnvironment = GetLookupFieldEnvironment(env =>
- {
- env.ChildListNode.OnProvisioned