diff --git a/Source/Core/WiRL.Configuration.Errors.pas b/Source/Core/WiRL.Configuration.Errors.pas index 9112b0e..efa628c 100644 --- a/Source/Core/WiRL.Configuration.Errors.pas +++ b/Source/Core/WiRL.Configuration.Errors.pas @@ -91,7 +91,7 @@ function TWiRLConfigurationErrors.SetErrorClass(AClass: ExceptClass): IWiRLConfi function TWiRLConfigurationErrors.SetErrorDebugInfo(ADebug: Boolean): IWiRLConfigurationErrors; begin - FErrorDebugInfo := True; + FErrorDebugInfo := ADebug; Result := Self; end; diff --git a/Source/Core/WiRL.Configuration.Neon.pas b/Source/Core/WiRL.Configuration.Neon.pas index 33f8170..9dd1992 100644 --- a/Source/Core/WiRL.Configuration.Neon.pas +++ b/Source/Core/WiRL.Configuration.Neon.pas @@ -30,6 +30,7 @@ interface function SetIgnoreFieldPrefix(AValue: Boolean): IWiRLConfigurationNeon; function SetUseUTCDate(AValue: Boolean): IWiRLConfigurationNeon; function SetPrettyPrint(AValue: Boolean): IWiRLConfigurationNeon; + function SetRaiseExceptions(AValue: Boolean): IWiRLConfigurationNeon; function AddSerializer(ASerializerClass: TCustomSerializerClass): IWiRLConfigurationNeon; function RemoveSerializer(ASerializerClass: TCustomSerializerClass): IWiRLConfigurationNeon; end; @@ -39,6 +40,7 @@ TWiRLConfigurationNeon = class(TWiRLConfiguration, IWiRLConfigurationNeon) private FNeonConfiguration: INeonConfiguration; FPrettyPrint: Boolean; + FRaiseExceptions: Boolean; FIgnoreFieldPrefix: Boolean; FMemberCustomCase: TCaseFunc; FUseUTCDate: Boolean; @@ -63,6 +65,7 @@ TWiRLConfigurationNeon = class(TWiRLConfiguration, IWiRLConfigurationNeon) function SetIgnoreFieldPrefix(AValue: Boolean): IWiRLConfigurationNeon; function SetUseUTCDate(AValue: Boolean): IWiRLConfigurationNeon; function SetPrettyPrint(AValue: Boolean): IWiRLConfigurationNeon; + function SetRaiseExceptions(AValue: Boolean): IWiRLConfigurationNeon; function AddSerializer(ASerializerClass: TCustomSerializerClass): IWiRLConfigurationNeon; function RemoveSerializer(ASerializerClass: TCustomSerializerClass): IWiRLConfigurationNeon; @@ -78,6 +81,7 @@ TWiRLConfigurationNeon = class(TWiRLConfiguration, IWiRLConfigurationNeon) property Visibility: TNeonVisibility read FVisibility write FVisibility; property IgnoreFieldPrefix: Boolean read FIgnoreFieldPrefix write FIgnoreFieldPrefix; property UseUTCDate: Boolean read FUseUTCDate write FUseUTCDate; + property RaiseExceptions: Boolean read FRaiseExceptions write FRaiseExceptions; public property Serializers: TNeonSerializerRegistry read FSerializers write FSerializers; end; @@ -101,7 +105,7 @@ constructor TWiRLConfigurationNeon.Create; SetVisibility([mvPublic, mvPublished]); SetUseUTCDate(True); SetPrettyPrint(False); - + SetRaiseExceptions(False); end; class function TWiRLConfigurationNeon.Default: IWiRLConfigurationNeon; @@ -177,6 +181,7 @@ function TWiRLConfigurationNeon.GetNewNeonConfig: INeonConfiguration; .SetIgnoreFieldPrefix(FIgnoreFieldPrefix) .SetUseUTCDate(FUseUTCDate) .SetPrettyPrint(FPrettyPrint) + .SetRaiseExceptions(FRaiseExceptions) .GetSerializers .RegisterSerializer(TJSONValueSerializer) .RegisterSerializer(TGUIDSerializer) @@ -232,6 +237,13 @@ function TWiRLConfigurationNeon.SetPrettyPrint(AValue: Boolean): IWiRLConfigurat Result := Self; end; +function TWiRLConfigurationNeon.SetRaiseExceptions( + AValue: Boolean): IWiRLConfigurationNeon; +begin + FRaiseExceptions := AValue; + Result := Self; +end; + function TWiRLConfigurationNeon.SetUseUTCDate(AValue: Boolean): IWiRLConfigurationNeon; begin FUseUTCDate := AValue; diff --git a/Source/Core/WiRL.Core.Exceptions.pas b/Source/Core/WiRL.Core.Exceptions.pas index bf31ff3..de7117a 100755 --- a/Source/Core/WiRL.Core.Exceptions.pas +++ b/Source/Core/WiRL.Core.Exceptions.pas @@ -349,10 +349,7 @@ constructor EWiRLWebApplicationException.Create(const AMessage: string); constructor EWiRLWebApplicationException.Create(const AMessage: string; AStatus: Integer); begin - inherited Create(AMessage); - FStatus := AStatus; - FException := ClassName; - FData := TJSONObject.Create; + Create(AMessage, AStatus, nil); end; constructor EWiRLWebApplicationException.Create(const AMessage: string; @@ -369,10 +366,13 @@ constructor EWiRLWebApplicationException.Create(const AMessage: string; constructor EWiRLWebApplicationException.Create(const AMessage: string; AStatus: Integer; AData: TJSONObject); begin - Create(AMessage, AStatus); + inherited Create(AMessage); + FStatus := AStatus; + FException := ClassName; - if Assigned(AData) then - FData := (AData.Clone as TJSONObject); + if Assigned(AData) + then FData := (AData.Clone as TJSONObject) + else FData := TJSONObject.Create; end; constructor EWiRLWebApplicationException.Create(AInnerException: Exception;