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 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) foreach (var storedEvent in events)
{ {
var envelope = TryParseEvent(storedEvent); var envelope = ParseOrNull(storedEvent);
if (envelope != null) 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 try
{ {

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

@ -22,7 +22,7 @@ namespace Squidex.Infrastructure.Log
public void Log(SemanticLogLevel logLevel, string message) 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 namespace Squidex.Infrastructure.Log
{ {
public sealed class FileChannel : ILogChannel, IExternalSystem public sealed class FileChannel : DisposableObjectBase, ILogChannel, IExternalSystem
{ {
private readonly FileLogProcessor processor; private readonly FileLogProcessor processor;
@ -21,9 +21,17 @@ namespace Squidex.Infrastructure.Log
processor = new FileLogProcessor(path); processor = new FileLogProcessor(path);
} }
protected override void DisposeObject(bool disposing)
{
if (disposing)
{
processor.Dispose();
}
}
public void Log(SemanticLogLevel logLevel, string message) 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() public void Connect()

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

@ -21,9 +21,9 @@ namespace Squidex.Infrastructure.Log.Internal
this.logToStdError = logToStdError; 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); 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()) 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 // Squidex Headless CMS
// ========================================================================== // ==========================================================================
// Copyright (c) Squidex Group // Copyright (c) Squidex Group
@ -12,9 +12,11 @@ using System.IO;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
// ReSharper disable InvertIf
namespace Squidex.Infrastructure.Log.Internal namespace Squidex.Infrastructure.Log.Internal
{ {
public class FileLogProcessor : IDisposable public class FileLogProcessor : DisposableObjectBase
{ {
private const int MaxQueuedMessages = 1024; private const int MaxQueuedMessages = 1024;
private const int Retries = 10; private const int Retries = 10;
@ -29,6 +31,25 @@ namespace Squidex.Infrastructure.Log.Internal
outputTask = Task.Factory.StartNew(ProcessLogQueue, this, TaskCreationOptions.LongRunning); 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() public void Connect()
{ {
var fileInfo = new FileInfo(path); var fileInfo = new FileInfo(path);
@ -75,21 +96,5 @@ namespace Squidex.Infrastructure.Log.Internal
return processor.ProcessLogQueue(); 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 // Copyright (c) Squidex Group
// All rights reserved. // All rights reserved.
// ========================================================================== // ==========================================================================
namespace Squidex.Infrastructure.Log.Internal namespace Squidex.Infrastructure.Log.Internal
{ {
public interface IConsole 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 struct LogMessageEntry
{ {
public SemanticLogLevel Level; public bool IsError;
public string Message; public string Message;
} }

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

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

6
src/Squidex.Infrastructure/Singletons.cs

@ -13,16 +13,16 @@ namespace Squidex.Infrastructure
{ {
public static class Singletons<T> 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) 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) 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 namespace Squidex.Infrastructure
{ {
[AttributeUsage(AttributeTargets.Class, Inherited = false)] [AttributeUsage(AttributeTargets.Class, Inherited = false)]
public class TypeNameAttribute : Attribute public sealed class TypeNameAttribute : Attribute
{ {
public string TypeName { get; } 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; private readonly string discriminator;
[ThreadStatic] [ThreadStatic]
private static bool isReading; private static bool IsReading;
[ThreadStatic] [ThreadStatic]
private static bool isWriting; private static bool IsWriting;
public override bool CanWrite public override bool CanWrite
{ {
get get
{ {
if (!isWriting) if (!IsWriting)
{ {
return true; return true;
} }
return isWriting = false; return IsWriting = false;
} }
} }
@ -45,12 +45,12 @@ namespace Squidex.Controllers.Api.Schemas.Models.Converters
{ {
get get
{ {
if (!isReading) if (!IsReading)
{ {
return true; 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) public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{ {
isWriting = true; IsWriting = true;
try try
{ {
var jsonObject = JObject.FromObject(value, serializer); var jsonObject = JObject.FromObject(value, serializer);
@ -77,13 +77,13 @@ namespace Squidex.Controllers.Api.Schemas.Models.Converters
} }
finally finally
{ {
isWriting = false; IsWriting = false;
} }
} }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{ {
isReading = true; IsReading = true;
try try
{ {
var jsonObject = serializer.Deserialize<JObject>(reader); var jsonObject = serializer.Deserialize<JObject>(reader);
@ -106,7 +106,7 @@ namespace Squidex.Controllers.Api.Schemas.Models.Converters
} }
finally finally
{ {
isReading = false; IsReading = false;
} }
} }

Loading…
Cancel
Save