Index: Core/Components/src/Core.Components.BruTile/Configurations/PersistentCacheConfiguration.cs =================================================================== diff -u -r4b24b9c98dd06f31acd9e1282b287c491b07ab2f -rc779a09fcdb11c7263b460e664e93cc36d0daf6f --- Core/Components/src/Core.Components.BruTile/Configurations/PersistentCacheConfiguration.cs (.../PersistentCacheConfiguration.cs) (revision 4b24b9c98dd06f31acd9e1282b287c491b07ab2f) +++ Core/Components/src/Core.Components.BruTile/Configurations/PersistentCacheConfiguration.cs (.../PersistentCacheConfiguration.cs) (revision c779a09fcdb11c7263b460e664e93cc36d0daf6f) @@ -81,10 +81,39 @@ GC.SuppressFinalize(this); } - public abstract IConfiguration Clone(); + public IConfiguration Clone() + { + ThrowExceptionIfDisposed(); - public abstract void Initialize(); + return OnClone(); + } + public void Initialize() + { + ThrowExceptionIfDisposed(); + + OnInitialize(); + } + + /// + /// Gets a deep copy of the configuration. + /// + /// The cloned configuration. + /// Thrown when creating the file + /// cache failed. + protected abstract IConfiguration OnClone(); + + /// + /// Properly initialize the configuration, making it ready for tile fetching. + /// + /// Thrown when the configured + /// cannot be found. + /// Thrown when the configured + /// tile cache cannot be created. + /// Thrown when + /// doesn't allow for tiles to be received. + protected abstract void OnInitialize(); + protected virtual void Dispose(bool disposing) { if (IsDisposed) @@ -109,22 +138,22 @@ /// /// Initializes the configuration based on the given . /// - /// The tile source to initialize for. + /// The tile source to initialize for. /// Thrown when a critical error /// occurs when creating the tile cache. - /// Thrown when + /// Thrown when /// does not allow for tiles to be retrieved. /// Thrown when calling this method while /// this instance is disposed. - protected void InitializeFromTileSource(ITileSource tileSource) + protected void InitializeFromTileSource(ITileSource newTileSource) { ThrowExceptionIfDisposed(); - this.tileSource = tileSource; + tileSource = newTileSource; IPersistentCache tileCache = CreateTileCache(); try { - ITileProvider provider = BruTileReflectionHelper.GetProviderFromTileSource(tileSource); + ITileProvider provider = BruTileReflectionHelper.GetProviderFromTileSource(newTileSource); TileFetcher = new AsyncTileFetcher(provider, BruTileSettings.MemoryCacheMinimum, BruTileSettings.MemoryCacheMaximum, Index: Core/Components/src/Core.Components.BruTile/Configurations/WellKnownTileSourceLayerConfiguration.cs =================================================================== diff -u -r0f778d2d9cc904175274baf4d6a21996ccef8d54 -rc779a09fcdb11c7263b460e664e93cc36d0daf6f --- Core/Components/src/Core.Components.BruTile/Configurations/WellKnownTileSourceLayerConfiguration.cs (.../WellKnownTileSourceLayerConfiguration.cs) (revision 0f778d2d9cc904175274baf4d6a21996ccef8d54) +++ Core/Components/src/Core.Components.BruTile/Configurations/WellKnownTileSourceLayerConfiguration.cs (.../WellKnownTileSourceLayerConfiguration.cs) (revision c779a09fcdb11c7263b460e664e93cc36d0daf6f) @@ -86,40 +86,23 @@ /// cache failed. public static WellKnownTileSourceLayerConfiguration CreateInitializedConfiguration(WellKnownTileSource wellKnownTileSource) { - return CreateInitializedConfiguration(WellKnownTileSourceToKnownTileSource(wellKnownTileSource)); + KnownTileSource knownTileSource = WellKnownTileSourceToKnownTileSource(wellKnownTileSource); + + ITileSource tileSource = TileSourceFactory.Instance.GetKnownTileSource(knownTileSource); + return new WellKnownTileSourceLayerConfiguration(knownTileSource, tileSource); } - public override IConfiguration Clone() + protected override IConfiguration OnClone() { - ThrowExceptionIfDisposed(); - return new WellKnownTileSourceLayerConfiguration(PersistentCacheDirectoryPath, knownTileSource); } - public override void Initialize() + protected override void OnInitialize() { - ThrowExceptionIfDisposed(); - Initialized = true; } /// - /// Creates a fully initialized instance of . - /// - /// The built-in tile provider to be used. - /// The new . - /// Thrown when - /// isn't a supported member. - /// Thrown when creating the file - /// cache failed. - private static WellKnownTileSourceLayerConfiguration CreateInitializedConfiguration(KnownTileSource knownTileSource) - { - ITileSource tileSource = TileSourceFactory.Instance.GetKnownTileSource(knownTileSource); - - return new WellKnownTileSourceLayerConfiguration(knownTileSource, tileSource); - } - - /// /// Returns the equivalent of . /// /// The tile provider to be used. Index: Core/Components/src/Core.Components.BruTile/Configurations/WmtsLayerConfiguration.cs =================================================================== diff -u -r797872a6e0525f12c0f84b03e996a9d42630ad0b -rc779a09fcdb11c7263b460e664e93cc36d0daf6f --- Core/Components/src/Core.Components.BruTile/Configurations/WmtsLayerConfiguration.cs (.../WmtsLayerConfiguration.cs) (revision 797872a6e0525f12c0f84b03e996a9d42630ad0b) +++ Core/Components/src/Core.Components.BruTile/Configurations/WmtsLayerConfiguration.cs (.../WmtsLayerConfiguration.cs) (revision c779a09fcdb11c7263b460e664e93cc36d0daf6f) @@ -106,17 +106,13 @@ return new WmtsLayerConfiguration(wmtsCapabilitiesUrl, tileSource); } - public override IConfiguration Clone() + protected override IConfiguration OnClone() { - ThrowExceptionIfDisposed(); - return new WmtsLayerConfiguration(capabilitiesUri, capabilityIdentifier, preferredFormat, PersistentCacheDirectoryPath); } - public override void Initialize() + protected override void OnInitialize() { - ThrowExceptionIfDisposed(); - if (Initialized) { return; Index: Core/Components/test/Core.Components.BruTile.Test/Configurations/PersistentCacheConfigurationTest.cs =================================================================== diff -u -r4b24b9c98dd06f31acd9e1282b287c491b07ab2f -rc779a09fcdb11c7263b460e664e93cc36d0daf6f --- Core/Components/test/Core.Components.BruTile.Test/Configurations/PersistentCacheConfigurationTest.cs (.../PersistentCacheConfigurationTest.cs) (revision 4b24b9c98dd06f31acd9e1282b287c491b07ab2f) +++ Core/Components/test/Core.Components.BruTile.Test/Configurations/PersistentCacheConfigurationTest.cs (.../PersistentCacheConfigurationTest.cs) (revision c779a09fcdb11c7263b460e664e93cc36d0daf6f) @@ -300,12 +300,12 @@ InitializeFromTileSource(tileSource); } - public override IConfiguration Clone() + protected override IConfiguration OnClone() { throw new NotImplementedException(); } - public override void Initialize() + protected override void OnInitialize() { throw new NotImplementedException(); }