Browse Source

Dependencies improved.

pull/65/head
Sebastian Stehle 9 years ago
parent
commit
351f0b39d7
  1. 8
      src/Squidex.Core/Identity/SquidexRoles.cs
  2. 4
      src/Squidex.Infrastructure/CQRS/Commands/DefaultDomainObjectRepository.cs
  3. 2
      src/Squidex.Infrastructure/Log/ConsoleLogChannel.cs
  4. 12
      src/Squidex.Infrastructure/Log/FileChannel.cs
  5. 4
      src/Squidex.Infrastructure/Log/Internal/AnsiLogConsole.cs
  6. 2
      src/Squidex.Infrastructure/Log/Internal/ConsoleLogProcessor.cs
  7. 41
      src/Squidex.Infrastructure/Log/Internal/FileLogProcessor.cs
  8. 3
      src/Squidex.Infrastructure/Log/Internal/IConsole.cs
  9. 2
      src/Squidex.Infrastructure/Log/Internal/LogMessageEntry.cs
  10. 4
      src/Squidex.Infrastructure/Log/Internal/WindowsLogConsole.cs
  11. 6
      src/Squidex.Infrastructure/Singletons.cs
  12. 2
      src/Squidex.Infrastructure/TypeNameAttribute.cs
  13. 20
      src/Squidex/Controllers/Api/Schemas/Models/Converters/JsonInheritanceConverter.cs

8
src/Squidex.Core/Identity/SquidexRoles.cs

@ -10,12 +10,12 @@ namespace Squidex.Core.Identity
{
public static class SquidexRoles
{
public const string Administrator = "ADMINISTRATOR";
public static readonly string Administrator = "ADMINISTRATOR";
public const string AppOwner = "APP-OWNER";
public static readonly string AppOwner = "APP-OWNER";
public const string AppEditor = "APP-EDITOR";
public static readonly string AppEditor = "APP-EDITOR";
public const string AppDeveloper = "APP-DEVELOPER";
public static readonly string AppDeveloper = "APP-DEVELOPER";
}
}

4
src/Squidex.Infrastructure/CQRS/Commands/DefaultDomainObjectRepository.cs

@ -54,7 +54,7 @@ namespace Squidex.Infrastructure.CQRS.Commands
foreach (var storedEvent in events)
{
var envelope = TryParseEvent(storedEvent);
var envelope = ParseOrNull(storedEvent);
if (envelope != null)
{
@ -91,7 +91,7 @@ namespace Squidex.Infrastructure.CQRS.Commands
}
}
private Envelope<IEvent> TryParseEvent(StoredEvent storedEvent)
private Envelope<IEvent> ParseOrNull(StoredEvent storedEvent)
{
try
{

2
src/Squidex.Infrastructure/Log/ConsoleLogChannel.cs

@ -22,7 +22,7 @@ namespace Squidex.Infrastructure.Log
public void Log(SemanticLogLevel logLevel, string message)
{
processor.EnqueueMessage(new LogMessageEntry { Message = message, Level = logLevel });
processor.EnqueueMessage(new LogMessageEntry { Message = message, IsError = logLevel >= SemanticLogLevel.Error });
}
}
}

12
src/Squidex.Infrastructure/Log/FileChannel.cs

@ -10,7 +10,7 @@ using Squidex.Infrastructure.Log.Internal;
namespace Squidex.Infrastructure.Log
{
public sealed class FileChannel : ILogChannel, IExternalSystem
public sealed class FileChannel : DisposableObjectBase, ILogChannel, IExternalSystem
{
private readonly FileLogProcessor processor;
@ -21,9 +21,17 @@ namespace Squidex.Infrastructure.Log
processor = new FileLogProcessor(path);
}
protected override void DisposeObject(bool disposing)
{
if (disposing)
{
processor.Dispose();
}
}
public void Log(SemanticLogLevel logLevel, string message)
{
processor.EnqueueMessage(new LogMessageEntry { Message = message, Level = logLevel });
processor.EnqueueMessage(new LogMessageEntry { Message = message, IsError = logLevel >= SemanticLogLevel.Error });
}
public void Connect()

4
src/Squidex.Infrastructure/Log/Internal/AnsiLogConsole.cs

@ -21,9 +21,9 @@ namespace Squidex.Infrastructure.Log.Internal
this.logToStdError = logToStdError;
}
public void WriteLine(SemanticLogLevel level, string message)
public void WriteLine(bool isError, string message)
{
if (level >= SemanticLogLevel.Error && logToStdError)
if (isError && logToStdError)
{
Console.Error.WriteLine(message);
}

2
src/Squidex.Infrastructure/Log/Internal/ConsoleLogProcessor.cs

@ -43,7 +43,7 @@ namespace Squidex.Infrastructure.Log.Internal
{
foreach (var entry in messageQueue.GetConsumingEnumerable())
{
console.WriteLine(entry.Level, entry.Message);
console.WriteLine(entry.IsError, entry.Message);
}
}

41
src/Squidex.Infrastructure/Log/Internal/FileLogChannel.cs → src/Squidex.Infrastructure/Log/Internal/FileLogProcessor.cs

@ -1,5 +1,5 @@
// ==========================================================================
// FileLogChannel.cs
// FileLogProcessor.cs
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex Group
@ -12,9 +12,11 @@ using System.IO;
using System.Text;
using System.Threading.Tasks;
// ReSharper disable InvertIf
namespace Squidex.Infrastructure.Log.Internal
{
public class FileLogProcessor : IDisposable
public class FileLogProcessor : DisposableObjectBase
{
private const int MaxQueuedMessages = 1024;
private const int Retries = 10;
@ -29,6 +31,25 @@ namespace Squidex.Infrastructure.Log.Internal
outputTask = Task.Factory.StartNew(ProcessLogQueue, this, TaskCreationOptions.LongRunning);
}
protected override void DisposeObject(bool disposing)
{
if (disposing)
{
messageQueue.CompleteAdding();
try
{
outputTask.Wait(1500);
}
catch (TaskCanceledException)
{
}
catch (AggregateException ex) when (ex.InnerExceptions.Count == 1 && ex.InnerExceptions[0] is TaskCanceledException)
{
}
}
}
public void Connect()
{
var fileInfo = new FileInfo(path);
@ -75,21 +96,5 @@ namespace Squidex.Infrastructure.Log.Internal
return processor.ProcessLogQueue();
}
public void Dispose()
{
messageQueue.CompleteAdding();
try
{
outputTask.Wait(1500);
}
catch (TaskCanceledException)
{
}
catch (AggregateException ex) when (ex.InnerExceptions.Count == 1 && ex.InnerExceptions[0] is TaskCanceledException)
{
}
}
}
}

3
src/Squidex.Infrastructure/Log/Internal/IConsole.cs

@ -5,10 +5,11 @@
// Copyright (c) Squidex Group
// All rights reserved.
// ==========================================================================
namespace Squidex.Infrastructure.Log.Internal
{
public interface IConsole
{
void WriteLine(SemanticLogLevel level, string message);
void WriteLine(bool isError, string message);
}
}

2
src/Squidex.Infrastructure/Log/Internal/LogMessageEntry.cs

@ -10,7 +10,7 @@ namespace Squidex.Infrastructure.Log.Internal
{
public struct LogMessageEntry
{
public SemanticLogLevel Level;
public bool IsError;
public string Message;
}

4
src/Squidex.Infrastructure/Log/Internal/WindowsLogConsole.cs

@ -19,9 +19,9 @@ namespace Squidex.Infrastructure.Log.Internal
this.logToStdError = logToStdError;
}
public void WriteLine(SemanticLogLevel level, string message)
public void WriteLine(bool isError, string message)
{
if (level >= SemanticLogLevel.Error)
if (isError)
{
try
{

6
src/Squidex.Infrastructure/Singletons.cs

@ -13,16 +13,16 @@ namespace Squidex.Infrastructure
{
public static class Singletons<T>
{
private static readonly ConcurrentDictionary<string, T> instances = new ConcurrentDictionary<string, T>(StringComparer.OrdinalIgnoreCase);
private static readonly ConcurrentDictionary<string, T> Instances = new ConcurrentDictionary<string, T>(StringComparer.OrdinalIgnoreCase);
public static T GetOrAdd(string key, Func<string, T> factory)
{
return instances.GetOrAdd(key, factory);
return Instances.GetOrAdd(key, factory);
}
public static Lazy<T> GetOrAddLazy(string key, Func<string, T> factory)
{
return new Lazy<T>(() => instances.GetOrAdd(key, factory));
return new Lazy<T>(() => Instances.GetOrAdd(key, factory));
}
}
}

2
src/Squidex.Infrastructure/TypeNameAttribute.cs

@ -11,7 +11,7 @@ using System;
namespace Squidex.Infrastructure
{
[AttributeUsage(AttributeTargets.Class, Inherited = false)]
public class TypeNameAttribute : Attribute
public sealed class TypeNameAttribute : Attribute
{
public string TypeName { get; }

20
src/Squidex/Controllers/Api/Schemas/Models/Converters/JsonInheritanceConverter.cs

@ -23,21 +23,21 @@ namespace Squidex.Controllers.Api.Schemas.Models.Converters
private readonly string discriminator;
[ThreadStatic]
private static bool isReading;
private static bool IsReading;
[ThreadStatic]
private static bool isWriting;
private static bool IsWriting;
public override bool CanWrite
{
get
{
if (!isWriting)
if (!IsWriting)
{
return true;
}
return isWriting = false;
return IsWriting = false;
}
}
@ -45,12 +45,12 @@ namespace Squidex.Controllers.Api.Schemas.Models.Converters
{
get
{
if (!isReading)
if (!IsReading)
{
return true;
}
return isReading = false;
return IsReading = false;
}
}
@ -66,7 +66,7 @@ namespace Squidex.Controllers.Api.Schemas.Models.Converters
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
isWriting = true;
IsWriting = true;
try
{
var jsonObject = JObject.FromObject(value, serializer);
@ -77,13 +77,13 @@ namespace Squidex.Controllers.Api.Schemas.Models.Converters
}
finally
{
isWriting = false;
IsWriting = false;
}
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
isReading = true;
IsReading = true;
try
{
var jsonObject = serializer.Deserialize<JObject>(reader);
@ -106,7 +106,7 @@ namespace Squidex.Controllers.Api.Schemas.Models.Converters
}
finally
{
isReading = false;
IsReading = false;
}
}

Loading…
Cancel
Save