Skip to content

Commit ad8d924

Browse files
committed
switch from SiteDefinition to the new Application framework
1 parent 5f9d25f commit ad8d924

14 files changed

Lines changed: 119 additions & 119 deletions

File tree

CHANGELOG.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,17 @@
11
# Changelog
22

33
All notable changes to this project will be documented in this file.
4+
## [5.0.0]
5+
6+
- Switch from SiteDefinition to the new Application framework
7+
- Remove remaining obsolete warnings
8+
9+
### Breaking changes
10+
11+
- IContentFilter: Signature changed on ShouldExcludeContent (removed SiteDefinition parameter)
12+
- All use of ISiteDefinitionRepository replaced by IApplicationRepository
13+
- XmlGenerator: SiteDefinition property replaced by CurrentSite
14+
- HostDefinitionExtensions removed
415

516
## [4.0.0]
617

@@ -28,4 +39,4 @@ All notable changes to this project will be documented in this file.
2839

2940
## [1.0.0]
3041

31-
- Initial version
42+
- Initial version

src/Geta.Optimizely.Sitemaps.Commerce/CommerceAndStandardSitemapXmlGenerator.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
using System.Linq;
66
using System.Xml.Linq;
77
using EPiServer;
8+
using EPiServer.Applications;
89
using EPiServer.DataAbstraction;
910
using EPiServer.Framework.Cache;
10-
using EPiServer.Web;
1111
using EPiServer.Web.Routing;
1212
using Geta.Optimizely.Sitemaps.Repositories;
1313
using Geta.Optimizely.Sitemaps.Services;
@@ -30,7 +30,7 @@ public CommerceAndStandardSitemapXmlGenerator(
3030
ISitemapRepository sitemapRepository,
3131
IContentRepository contentRepository,
3232
IUrlResolver urlResolver,
33-
ISiteDefinitionRepository siteDefinitionRepository,
33+
IApplicationRepository applicationRepository,
3434
ILanguageBranchRepository languageBranchRepository,
3535
ReferenceConverter referenceConverter,
3636
IContentFilter contentFilter,
@@ -42,7 +42,7 @@ public CommerceAndStandardSitemapXmlGenerator(
4242
sitemapRepository,
4343
contentRepository,
4444
urlResolver,
45-
siteDefinitionRepository,
45+
applicationRepository,
4646
languageBranchRepository,
4747
referenceConverter,
4848
contentFilter,
@@ -55,9 +55,9 @@ public CommerceAndStandardSitemapXmlGenerator(
5555

5656
protected override IEnumerable<XElement> GetSitemapXmlElements()
5757
{
58-
var contentDescendants = ContentRepository.GetDescendents(this.SiteSettings.StartPage).ToList();
58+
var contentDescendants = ContentRepository.GetDescendents(this.CurrentSite.EntryPoint).ToList();
5959

60-
contentDescendants.Insert(0, SiteSettings.StartPage);
60+
contentDescendants.Insert(0, CurrentSite.EntryPoint);
6161

6262
var contentElements = GenerateXmlElements(contentDescendants);
6363
return contentElements.Union(base.GetSitemapXmlElements());

src/Geta.Optimizely.Sitemaps.Commerce/CommerceSitemapXmlGenerator.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,12 @@
33

44
using System;
55
using System.Collections.Generic;
6-
using System.Linq;
76
using System.Xml.Linq;
87
using EPiServer;
8+
using EPiServer.Applications;
99
using EPiServer.Core;
1010
using EPiServer.DataAbstraction;
1111
using EPiServer.Framework.Cache;
12-
using EPiServer.Web;
1312
using EPiServer.Web.Routing;
1413
using Geta.Optimizely.Sitemaps.Repositories;
1514
using Geta.Optimizely.Sitemaps.Services;
@@ -33,7 +32,7 @@ public CommerceSitemapXmlGenerator(
3332
ISitemapRepository sitemapRepository,
3433
IContentRepository contentRepository,
3534
IUrlResolver urlResolver,
36-
ISiteDefinitionRepository siteDefinitionRepository,
35+
IApplicationRepository applicationRepository,
3736
ILanguageBranchRepository languageBranchRepository,
3837
ReferenceConverter referenceConverter,
3938
IContentFilter contentFilter,
@@ -45,7 +44,7 @@ public CommerceSitemapXmlGenerator(
4544
sitemapRepository,
4645
contentRepository,
4746
urlResolver,
48-
siteDefinitionRepository,
47+
applicationRepository,
4948
languageBranchRepository,
5049
contentFilter,
5150
uriAugmenterService,

src/Geta.Optimizely.Sitemaps/Areas/GetaOptimizelySitemaps/Pages/Index.cshtml.cs

Lines changed: 27 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
using System.Collections.Generic;
22
using System.Linq;
3+
using EPiServer.Applications;
34
using EPiServer.Data;
45
using EPiServer.DataAbstraction;
5-
using EPiServer.Web;
66
using Geta.Mapping;
77
using Geta.Optimizely.Sitemaps.Entities;
88
using Geta.Optimizely.Sitemaps.Models;
@@ -19,20 +19,20 @@ namespace Geta.Optimizely.Sitemaps.Pages.Geta.Optimizely.Sitemaps;
1919
public class IndexModel : PageModel
2020
{
2121
private readonly ISitemapRepository _sitemapRepository;
22-
private readonly ISiteDefinitionRepository _siteDefinitionRepository;
22+
private readonly IApplicationRepository _applicationRepository;
2323
private readonly ILanguageBranchRepository _languageBranchRepository;
2424
private readonly IMapper<SitemapViewModel, SitemapData> _modelToEntityMapper;
2525
private readonly ICreateFrom<SitemapData, SitemapViewModel> _entityToModelCreator;
2626

2727
public IndexModel(
2828
ISitemapRepository sitemapRepository,
29-
ISiteDefinitionRepository siteDefinitionRepository,
29+
IApplicationRepository applicationRepository,
3030
ILanguageBranchRepository languageBranchRepository,
3131
IMapper<SitemapViewModel, SitemapData> modelToEntityMapper,
3232
ICreateFrom<SitemapData, SitemapViewModel> entityToModelCreator)
3333
{
3434
_sitemapRepository = sitemapRepository;
35-
_siteDefinitionRepository = siteDefinitionRepository;
35+
_applicationRepository = applicationRepository;
3636
_languageBranchRepository = languageBranchRepository;
3737
_modelToEntityMapper = modelToEntityMapper;
3838
_entityToModelCreator = entityToModelCreator;
@@ -161,36 +161,34 @@ private void BindSitemapDataList()
161161

162162
private void LoadSiteHosts()
163163
{
164-
var hosts = _siteDefinitionRepository.List().ToList();
164+
var sites = _applicationRepository
165+
.List()
166+
.OfType<IRoutableApplication>()
167+
.ToList();
165168

166-
var siteUrls = new List<SelectListItem>(hosts.Count);
167-
168-
foreach (var siteInformation in hosts)
169+
var urls = new List<SelectListItem>();
170+
foreach (var site in sites)
169171
{
170-
var siteUrl = siteInformation.SiteUrl.ToString();
171-
siteUrls.Add(new()
172+
if (site.Url != null)
172173
{
173-
Text = siteUrl,
174-
Value = siteUrl
175-
});
176-
177-
var hostUrls = siteInformation.Hosts
178-
.Where(host => ShouldAddToSiteHosts(host, siteInformation))
179-
.Select(host => host.GetUri())
180-
.Select(hostUri => new SelectListItem { Text = hostUri.ToString(), Value = hostUri.ToString() });
181-
siteUrls.AddRange(hostUrls);
182-
}
183-
184-
SiteHosts = siteUrls;
185-
}
174+
urls.Add(new SelectListItem { Text = site.Url.Host, Value = site.Url.Host });
175+
}
186176

187-
private static bool ShouldAddToSiteHosts(HostDefinition host, SiteDefinition siteInformation)
188-
{
189-
if (host.Name == "*")
190-
{
191-
return false;
177+
foreach (var host in site.Hosts.Where(x => x.Url != null))
178+
{
179+
if (UriComparer.SchemeAndServerEquals(site.Url, host.Url))
180+
{
181+
continue;
182+
}
183+
184+
urls.Add(new SelectListItem
185+
{
186+
Text = host.Url!.ToString(),
187+
Value = host.Url!.ToString()
188+
});
189+
}
192190
}
193-
return !UriComparer.SchemeAndServerEquals(host.GetUri(), siteInformation.SiteUrl);
191+
SiteHosts = urls;
194192
}
195193

196194
private void PopulateHostListControl(string selected = null)

src/Geta.Optimizely.Sitemaps/Models/SitemapViewModel.cs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
using System;
22
using System.Collections.Generic;
3+
using EPiServer;
4+
using EPiServer.Applications;
35
using EPiServer.DataAbstraction;
4-
using EPiServer.Web;
56
using Geta.Mapping;
67
using Geta.Optimizely.Sitemaps.Entities;
78

@@ -30,10 +31,12 @@ public class SitemapViewModel
3031
public class MapperFromEntity : Mapper<SitemapData, SitemapViewModel>
3132
{
3233
private readonly ILanguageBranchRepository _languageBranchRepository;
34+
private readonly IApplicationResolver _applicationResolver;
3335

34-
public MapperFromEntity(ILanguageBranchRepository languageBranchRepository)
36+
public MapperFromEntity(ILanguageBranchRepository languageBranchRepository, IApplicationResolver applicationResolver)
3537
{
3638
_languageBranchRepository = languageBranchRepository;
39+
_applicationResolver = applicationResolver;
3740
}
3841

3942
public override void Map(SitemapData @from, SitemapViewModel to)
@@ -57,7 +60,7 @@ public override void Map(SitemapData @from, SitemapViewModel to)
5760

5861
private string GetLanguage(string language)
5962
{
60-
if (string.IsNullOrWhiteSpace(language) || SiteDefinition.WildcardHostName.Equals(language))
63+
if (string.IsNullOrWhiteSpace(language))
6164
{
6265
return string.Empty;
6366
}
@@ -75,9 +78,16 @@ private string GetSitemapUrl(SitemapData sitemapData)
7578
return $"{sitemapData.SiteUrl}{language}{sitemapData.Host}";
7679
}
7780

78-
var site = SiteDefinition.Current.SiteUrl.ToString();
81+
var siteUrl = new Url(sitemapData.SiteUrl);
82+
var app = _applicationResolver.GetByHostname(siteUrl.Host, true).Application;
7983

80-
return $"{site}{language}{sitemapData.Host}";
84+
if (app is IRoutableApplication site)
85+
{
86+
return $"{site.Url}{language}{sitemapData.Host}";
87+
}
88+
89+
site = _applicationResolver.GetByContext() as IRoutableApplication;
90+
return site != null ? $"{site.Url}{language}{sitemapData.Host}" : string.Empty;
8191
}
8292

8393
private static string GetRelativePathEditPart(string hostName)

src/Geta.Optimizely.Sitemaps/Repositories/SitemapRepository.cs

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,27 @@
55
using System.Collections.Generic;
66
using System.Linq;
77
using EPiServer;
8+
using EPiServer.Applications;
89
using EPiServer.Data;
910
using EPiServer.DataAbstraction;
10-
using EPiServer.Web;
1111
using Geta.Optimizely.Sitemaps.Entities;
1212

1313
namespace Geta.Optimizely.Sitemaps.Repositories
1414
{
1515
public class SitemapRepository : ISitemapRepository
1616
{
1717
private readonly ILanguageBranchRepository _languageBranchRepository;
18-
private readonly ISiteDefinitionResolver _siteDefinitionResolver;
18+
private readonly IApplicationResolver _applicationResolver;
1919
private readonly ISitemapLoader _sitemapLoader;
2020

2121

2222
public SitemapRepository(
2323
ILanguageBranchRepository languageBranchRepository,
24-
ISiteDefinitionResolver siteDefinitionResolver,
24+
IApplicationResolver applicationResolver,
2525
ISitemapLoader sitemapLoader)
2626
{
2727
_languageBranchRepository = languageBranchRepository ?? throw new ArgumentNullException(nameof(languageBranchRepository));
28-
_siteDefinitionResolver = siteDefinitionResolver ?? throw new ArgumentNullException(nameof(siteDefinitionResolver));
28+
_applicationResolver = applicationResolver ?? throw new ArgumentNullException(nameof(applicationResolver));
2929
_sitemapLoader = sitemapLoader ?? throw new ArgumentNullException(nameof(sitemapLoader));
3030
}
3131

@@ -46,21 +46,19 @@ public SitemapData GetSitemapData(string requestUrl)
4646
// contains the sitemap URL, for example en/sitemap.xml
4747
var host = url.Path.TrimStart('/').ToLowerInvariant();
4848

49-
//Get the site based on just the host
50-
var siteDefinition = _siteDefinitionResolver.GetByHostname(url.Host, true, out _);
51-
if (siteDefinition == null)
52-
{
53-
//If that didn't work, also include the port
54-
siteDefinition = _siteDefinitionResolver.GetByHostname($"{url.Host}:{url.Port}", true, out _);
55-
}
56-
if (siteDefinition == null)
49+
// First attempt to get the site based on just the host.
50+
// If that fails, try to include the port and fallback to default if none is found.
51+
var app = _applicationResolver.GetByHostname(url.Host, false).Application ??
52+
_applicationResolver.GetByHostname($"{url.Host}:{url.Port}", true).Application;
53+
54+
if (app is not IRoutableApplication site)
5755
{
5856
return null;
5957
}
6058

6159
var sitemapData = GetAllSitemapData()?.Where(x =>
6260
GetHostWithLanguage(x) == host &&
63-
(x.SiteUrl == null || siteDefinition.Hosts.Any(h => h.Name == new Url(x.SiteUrl).Authority))).ToList();
61+
(x.SiteUrl == null || site.Hosts.Any(h => h.Authority == new Url(x.SiteUrl).Authority))).ToList();
6462

6563
if (sitemapData?.Count == 1)
6664
{

src/Geta.Optimizely.Sitemaps/SitemapCreateJob.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
using System.Linq;
77
using System.Text;
88
using EPiServer.Framework.Cache;
9-
using EPiServer.PlugIn;
109
using EPiServer.Scheduler;
1110
using Geta.Optimizely.Sitemaps.Entities;
1211
using Geta.Optimizely.Sitemaps.Repositories;
@@ -15,7 +14,7 @@
1514

1615
namespace Geta.Optimizely.Sitemaps
1716
{
18-
[ScheduledPlugIn(GUID = "EC74D2A3-9D77-4265-B4FF-A1935E3C3110", DisplayName = "Generate search engine sitemaps")]
17+
[ScheduledJob(GUID = "EC74D2A3-9D77-4265-B4FF-A1935E3C3110", DisplayName = "Generate search engine sitemaps")]
1918
public class SitemapCreateJob : ScheduledJobBase
2019
{
2120
public const string SitemapGenerationCacheKey = "SitemapGenerationKey";

src/Geta.Optimizely.Sitemaps/SpecializedProperties/PropertySEOSitemaps.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@
1010
using System.Xml;
1111
using System.Xml.Serialization;
1212
using EPiServer.Core;
13-
using EPiServer.PlugIn;
13+
using EPiServer.DataAnnotations;
1414

1515
namespace Geta.Optimizely.Sitemaps.SpecializedProperties
1616
{
17-
[PropertyDefinitionTypePlugIn(DisplayName = "SEOSitemaps")]
17+
[PropertyDefinitionType(DisplayName = "SEOSitemaps")]
1818
public class PropertySEOSitemaps : PropertyString
1919
{
2020
public const string PropertyName = "SEOSitemaps";

src/Geta.Optimizely.Sitemaps/Utils/ContentFilter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public virtual bool ShouldExcludeContent(IContent content)
8383
return false;
8484
}
8585

86-
public virtual bool ShouldExcludeContent(CurrentLanguageContent languageContentInfo, SiteDefinition siteSettings, SitemapData sitemapData)
86+
public virtual bool ShouldExcludeContent(CurrentLanguageContent languageContentInfo, SitemapData sitemapData)
8787
{
8888
return ShouldExcludeContent(languageContentInfo.Content);
8989
}

src/Geta.Optimizely.Sitemaps/Utils/HostDefinitionExtensions.cs

Lines changed: 0 additions & 23 deletions
This file was deleted.

0 commit comments

Comments
 (0)