Browse Source

Orleans namings removed.

Detach EventActor states.
pull/195/head
Sebastian Stehle 8 years ago
parent
commit
3810ed169f
  1. 4
      src/Squidex.Domain.Apps.Read/State/AppProvider.cs
  2. 4
      src/Squidex.Domain.Apps.Read/State/AppStateEventConsumer.cs
  3. 2
      src/Squidex.Domain.Apps.Read/State/Grains/AppStateGrain.cs
  4. 2
      src/Squidex.Domain.Apps.Read/State/Grains/AppStateGrainState.cs
  5. 2
      src/Squidex.Domain.Apps.Read/State/Grains/AppStateGrainState_Apps.cs
  6. 2
      src/Squidex.Domain.Apps.Read/State/Grains/AppStateGrainState_Rules.cs
  7. 2
      src/Squidex.Domain.Apps.Read/State/Grains/AppStateGrainState_Schemas.cs
  8. 2
      src/Squidex.Domain.Apps.Read/State/Grains/AppUserGrain.cs
  9. 2
      src/Squidex.Domain.Apps.Read/State/Grains/AppUserGrainState.cs
  10. 2
      src/Squidex.Domain.Apps.Read/State/Grains/JsonAppEntity.cs
  11. 2
      src/Squidex.Domain.Apps.Read/State/Grains/JsonEntity.cs
  12. 2
      src/Squidex.Domain.Apps.Read/State/Grains/JsonRuleEntity.cs
  13. 2
      src/Squidex.Domain.Apps.Read/State/Grains/JsonSchemaEntity.cs
  14. 2
      src/Squidex.Infrastructure/CQRS/Events/Actors/EventConsumerActorManager.cs
  15. 2
      src/Squidex.Infrastructure/States/IStateFactory.cs
  16. 12
      src/Squidex.Infrastructure/States/StateFactory.cs
  17. 3
      src/Squidex/Areas/IdentityServer/Config/LazyClientStore.cs
  18. 8
      src/Squidex/Areas/Portal/Startup.cs
  19. 2
      src/Squidex/Config/Constants.cs
  20. 4
      src/Squidex/Config/Domain/ReadServices.cs
  21. 2
      tests/Benchmarks/Tests/ReadSchemaState.cs
  22. 4
      tests/Benchmarks/Tests/TestData/MyAppState.cs
  23. 4
      tests/Squidex.Infrastructure.Tests/CQRS/Events/Actors/EventConsumerManagerTests.cs
  24. 30
      tests/Squidex.Infrastructure.Tests/States/StatesTests.cs

4
src/Squidex.Domain.Apps.Read/State/AppProvider.cs

@ -13,11 +13,11 @@ using System.Threading.Tasks;
using Squidex.Domain.Apps.Read.Apps;
using Squidex.Domain.Apps.Read.Rules;
using Squidex.Domain.Apps.Read.Schemas;
using Squidex.Domain.Apps.Read.State.Orleans.Grains;
using Squidex.Domain.Apps.Read.State.Grains;
using Squidex.Infrastructure;
using Squidex.Infrastructure.States;
namespace Squidex.Domain.Apps.Read.State.Orleans
namespace Squidex.Domain.Apps.Read.State
{
public sealed class AppProvider : IAppProvider
{

4
src/Squidex.Domain.Apps.Read/State/AppStateEventConsumer.cs

@ -9,13 +9,13 @@
using System.Threading.Tasks;
using Squidex.Domain.Apps.Events;
using Squidex.Domain.Apps.Events.Apps;
using Squidex.Domain.Apps.Read.State.Orleans.Grains;
using Squidex.Domain.Apps.Read.State.Grains;
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
using Squidex.Infrastructure.States;
using Squidex.Infrastructure.Tasks;
namespace Squidex.Domain.Apps.Read.State.Orleans
namespace Squidex.Domain.Apps.Read.State
{
public sealed class AppStateEventConsumer : IEventConsumer
{

2
src/Squidex.Domain.Apps.Read/State/Grains/AppStateGrain.cs

@ -19,7 +19,7 @@ using Squidex.Infrastructure.CQRS.Events;
using Squidex.Infrastructure.States;
using Squidex.Infrastructure.Tasks;
namespace Squidex.Domain.Apps.Read.State.Orleans.Grains
namespace Squidex.Domain.Apps.Read.State.Grains
{
public class AppStateGrain : StatefulObject<AppStateGrainState>
{

2
src/Squidex.Domain.Apps.Read/State/Grains/AppStateGrainState.cs

@ -17,7 +17,7 @@ using Squidex.Domain.Apps.Read.Schemas;
using Squidex.Infrastructure.CQRS.Events;
using Squidex.Infrastructure.Dispatching;
namespace Squidex.Domain.Apps.Read.State.Orleans.Grains
namespace Squidex.Domain.Apps.Read.State.Grains
{
public sealed partial class AppStateGrainState
{

2
src/Squidex.Domain.Apps.Read/State/Grains/AppStateGrainState_Apps.cs

@ -15,7 +15,7 @@ using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
using Squidex.Infrastructure.Reflection;
namespace Squidex.Domain.Apps.Read.State.Orleans.Grains
namespace Squidex.Domain.Apps.Read.State.Grains
{
public sealed partial class AppStateGrainState
{

2
src/Squidex.Domain.Apps.Read/State/Grains/AppStateGrainState_Rules.cs

@ -11,7 +11,7 @@ using Squidex.Domain.Apps.Events.Rules;
using Squidex.Domain.Apps.Events.Rules.Utils;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Read.State.Orleans.Grains
namespace Squidex.Domain.Apps.Read.State.Grains
{
public sealed partial class AppStateGrainState
{

2
src/Squidex.Domain.Apps.Read/State/Grains/AppStateGrainState_Schemas.cs

@ -16,7 +16,7 @@ using Squidex.Infrastructure.Reflection;
#pragma warning disable CS0612 // Type or member is obsolete
namespace Squidex.Domain.Apps.Read.State.Orleans.Grains
namespace Squidex.Domain.Apps.Read.State.Grains
{
public sealed partial class AppStateGrainState
{

2
src/Squidex.Domain.Apps.Read/State/Grains/AppUserGrain.cs

@ -12,7 +12,7 @@ using System.Threading.Tasks;
using Squidex.Infrastructure.States;
using Squidex.Infrastructure.Tasks;
namespace Squidex.Domain.Apps.Read.State.Orleans.Grains
namespace Squidex.Domain.Apps.Read.State.Grains
{
public sealed class AppUserGrain : StatefulObject<AppUserGrainState>
{

2
src/Squidex.Domain.Apps.Read/State/Grains/AppUserGrainState.cs

@ -9,7 +9,7 @@
using System.Collections.Generic;
using Newtonsoft.Json;
namespace Squidex.Domain.Apps.Read.State.Orleans.Grains
namespace Squidex.Domain.Apps.Read.State.Grains
{
public sealed class AppUserGrainState
{

2
src/Squidex.Domain.Apps.Read/State/Grains/JsonAppEntity.cs

@ -10,7 +10,7 @@ using Newtonsoft.Json;
using Squidex.Domain.Apps.Core.Apps;
using Squidex.Domain.Apps.Read.Apps;
namespace Squidex.Domain.Apps.Read.State.Orleans.Grains
namespace Squidex.Domain.Apps.Read.State.Grains
{
public sealed class JsonAppEntity : JsonEntity<JsonAppEntity>, IAppEntity
{

2
src/Squidex.Domain.Apps.Read/State/Grains/JsonEntity.cs

@ -11,7 +11,7 @@ using Newtonsoft.Json;
using NodaTime;
using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Read.State.Orleans.Grains
namespace Squidex.Domain.Apps.Read.State.Grains
{
public abstract class JsonEntity<T> : Cloneable<T>, IUpdateableEntityWithVersion where T : Cloneable
{

2
src/Squidex.Domain.Apps.Read/State/Grains/JsonRuleEntity.cs

@ -12,7 +12,7 @@ using Squidex.Domain.Apps.Core.Rules;
using Squidex.Domain.Apps.Read.Rules;
using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Read.State.Orleans.Grains
namespace Squidex.Domain.Apps.Read.State.Grains
{
public sealed class JsonRuleEntity :
JsonEntity<JsonRuleEntity>,

2
src/Squidex.Domain.Apps.Read/State/Grains/JsonSchemaEntity.cs

@ -12,7 +12,7 @@ using Squidex.Domain.Apps.Core.Schemas;
using Squidex.Domain.Apps.Read.Schemas;
using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Read.State.Orleans.Grains
namespace Squidex.Domain.Apps.Read.State.Grains
{
public sealed class JsonSchemaEntity :
JsonEntity<JsonSchemaEntity>,

2
src/Squidex.Infrastructure/CQRS/Events/Actors/EventConsumerActorManager.cs

@ -39,7 +39,7 @@ namespace Squidex.Infrastructure.CQRS.Events.Actors
foreach (var consumer in consumers)
{
var actor = factory.GetAsync<EventConsumerActor, EventConsumerState>(consumer.Name).Result;
var actor = factory.GetDetachedAsync<EventConsumerActor, EventConsumerState>(consumer.Name).Result;
actors[consumer.Name] = actor;
actor.Activate(consumer);

2
src/Squidex.Infrastructure/States/IStateFactory.cs

@ -13,5 +13,7 @@ namespace Squidex.Infrastructure.States
public interface IStateFactory
{
Task<T> GetAsync<T, TState>(string key) where T : StatefulObject<TState>;
Task<T> GetDetachedAsync<T, TState>(string key) where T : StatefulObject<TState>;
}
}

12
src/Squidex.Infrastructure/States/StateFactory.cs

@ -50,6 +50,18 @@ namespace Squidex.Infrastructure.States
});
}
public async Task<T> GetDetachedAsync<T, TState>(string key) where T : StatefulObject<TState>
{
Guard.NotNull(key, nameof(key));
var stateHolder = new StateHolder<TState>(key, () => { }, store);
var state = (T)services.GetService(typeof(T));
await state.ActivateAsync(stateHolder);
return state;
}
public Task<T> GetAsync<T, TState>(string key) where T : StatefulObject<TState>
{
Guard.NotNull(key, nameof(key));

3
src/Squidex/Areas/IdentityServer/Config/LazyClientStore.cs

@ -131,8 +131,7 @@ namespace Squidex.Areas.IdentityServer.Config
ClientSecrets = new List<Secret> { new Secret(Constants.InternalClientSecret) },
RedirectUris = new List<string>
{
urlsOptions.BuildUrl($"{Constants.PortalPrefix}/signin-oidc", false),
urlsOptions.BuildUrl($"{Constants.OrleansPrefix}/signin-oidc", false)
urlsOptions.BuildUrl($"{Constants.PortalPrefix}/signin-oidc", false)
},
AccessTokenLifetime = (int)TimeSpan.FromDays(30).TotalSeconds,
AllowedGrantTypes = GrantTypes.ImplicitAndClientCredentials,

8
src/Squidex/Areas/Portal/Startup.cs

@ -16,11 +16,11 @@ namespace Squidex.Areas.Portal
{
public static void ConfigurePortal(this IApplicationBuilder app)
{
app.Map(Constants.PortalPrefix, orleansApp =>
app.Map(Constants.PortalPrefix, portalApp =>
{
orleansApp.UseAuthentication();
orleansApp.UseMiddleware<PortalDashboardAuthenticationMiddleware>();
orleansApp.UseMiddleware<PortalRedirectMiddleware>();
portalApp.UseAuthentication();
portalApp.UseMiddleware<PortalDashboardAuthenticationMiddleware>();
portalApp.UseMiddleware<PortalRedirectMiddleware>();
});
}
}

2
src/Squidex/Config/Constants.cs

@ -20,8 +20,6 @@ namespace Squidex.Config
public static readonly string PortalPrefix = "/portal";
public static readonly string OrleansPrefix = "/orleans";
public static readonly string RoleScope = "role";
public static readonly string ProfileScope = "squidex-profile";

4
src/Squidex/Config/Domain/ReadServices.cs

@ -24,8 +24,8 @@ using Squidex.Domain.Apps.Read.Contents.GraphQL;
using Squidex.Domain.Apps.Read.History;
using Squidex.Domain.Apps.Read.Rules;
using Squidex.Domain.Apps.Read.Schemas;
using Squidex.Domain.Apps.Read.State.Orleans;
using Squidex.Domain.Apps.Read.State.Orleans.Grains;
using Squidex.Domain.Apps.Read.State;
using Squidex.Domain.Apps.Read.State.Grains;
using Squidex.Domain.Users;
using Squidex.Infrastructure;
using Squidex.Infrastructure.Assets;

2
tests/Benchmarks/Tests/ReadSchemaState.cs

@ -16,7 +16,7 @@ using Squidex.Domain.Apps.Core.Rules;
using Squidex.Domain.Apps.Core.Rules.Actions;
using Squidex.Domain.Apps.Core.Rules.Triggers;
using Squidex.Domain.Apps.Core.Schemas;
using Squidex.Domain.Apps.Read.State.Orleans.Grains;
using Squidex.Domain.Apps.Read.State.Grains;
using Squidex.Infrastructure;
using Squidex.Infrastructure.States;

4
tests/Benchmarks/Tests/TestData/MyAppState.cs

@ -1,12 +1,12 @@
// ==========================================================================
// ReadSchemaState.cs
// MyAppState.cs
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex Group
// All rights reserved.
// ==========================================================================
using Squidex.Domain.Apps.Read.State.Orleans.Grains;
using Squidex.Domain.Apps.Read.State.Grains;
using Squidex.Infrastructure.States;
namespace Benchmarks.Tests.TestData

4
tests/Squidex.Infrastructure.Tests/CQRS/Events/Actors/EventConsumerManagerTests.cs

@ -33,8 +33,8 @@ namespace Squidex.Infrastructure.CQRS.Events.Actors
A.CallTo(() => consumer1.Name).Returns(consumerName1);
A.CallTo(() => consumer2.Name).Returns(consumerName2);
A.CallTo(() => factory.GetAsync<EventConsumerActor, EventConsumerState>(consumerName1)).Returns(actor1);
A.CallTo(() => factory.GetAsync<EventConsumerActor, EventConsumerState>(consumerName2)).Returns(actor2);
A.CallTo(() => factory.GetDetachedAsync<EventConsumerActor, EventConsumerState>(consumerName1)).Returns(actor1);
A.CallTo(() => factory.GetDetachedAsync<EventConsumerActor, EventConsumerState>(consumerName2)).Returns(actor2);
sut = new EventConsumerActorManager(new IEventConsumer[] { consumer1, consumer2 }, pubSub, factory);
}

30
tests/Squidex.Infrastructure.Tests/States/StatesTests.cs

@ -125,6 +125,16 @@ namespace Squidex.Infrastructure.States
Assert.True(actual.IsDisposed);
}
[Fact]
public async Task Should_not_dispose_detached_when_message_sent()
{
var actual = await sut.GetDetachedAsync<MyStatefulObject, int>(key);
await InvalidateCacheAsync();
Assert.False(actual.IsDisposed);
}
[Fact]
public async Task Should_dispose_states_if_exired()
{
@ -135,6 +145,16 @@ namespace Squidex.Infrastructure.States
Assert.True(actual.IsDisposed);
}
[Fact]
public async Task Should_not_dispose_detached_states_if_exired()
{
var actual = await sut.GetDetachedAsync<MyStatefulObject, int>(key);
await RemoveFromCacheAsync();
Assert.False(actual.IsDisposed);
}
[Fact]
public async Task Should_dispose_states_if_disposed()
{
@ -145,6 +165,16 @@ namespace Squidex.Infrastructure.States
Assert.True(actual.IsDisposed);
}
[Fact]
public async Task Should_not_dispose_detached_states_if_disposed()
{
var actual = await sut.GetDetachedAsync<MyStatefulObject, int>(key);
sut.Dispose();
Assert.False(actual.IsDisposed);
}
private async Task RemoveFromCacheAsync()
{
cache.Remove(key);

Loading…
Cancel
Save