|
@@ -30,20 +30,20 @@ Type
|
|
EJsonSchemaLoader = class(EJSONSchema);
|
|
EJsonSchemaLoader = class(EJSONSchema);
|
|
|
|
|
|
{ TJsonSchemaLoader }
|
|
{ TJsonSchemaLoader }
|
|
- TKeywordInfo = Record
|
|
|
|
|
|
+ TLoadKeywordInfo = Record
|
|
Schema : TJSONSChema;
|
|
Schema : TJSONSChema;
|
|
Keyword : TJSONStringType;
|
|
Keyword : TJSONStringType;
|
|
Value : TJSONData;
|
|
Value : TJSONData;
|
|
end;
|
|
end;
|
|
|
|
|
|
- TKeyWordHandler = Procedure(Sender : TObject; const Info : TKeywordInfo; var Handled: Boolean) of object;
|
|
|
|
|
|
+ TLoadKeyWordHandler = Procedure(Sender : TObject; const Info : TLoadKeywordInfo; var Handled: Boolean) of object;
|
|
TSchemaLoadOption = (loSkipUnknownProperties);
|
|
TSchemaLoadOption = (loSkipUnknownProperties);
|
|
TSchemaLoadOptions = Set of TSchemaLoadOption;
|
|
TSchemaLoadOptions = Set of TSchemaLoadOption;
|
|
|
|
|
|
TJsonSchemaLoader = class(TComponent)
|
|
TJsonSchemaLoader = class(TComponent)
|
|
private
|
|
private
|
|
FCurrentKeyword : TJSONSchemaKeyword;
|
|
FCurrentKeyword : TJSONSchemaKeyword;
|
|
- FOnUnknownKeyword: TKeyWordHandler;
|
|
|
|
|
|
+ FOnUnknownKeyword: TLoadKeyWordHandler;
|
|
FOptions: TSchemaLoadOptions;
|
|
FOptions: TSchemaLoadOptions;
|
|
procedure ReadVocabulary(aData: TJSONData; aSchema: TJSONSchema);
|
|
procedure ReadVocabulary(aData: TJSONData; aSchema: TJSONSchema);
|
|
Protected
|
|
Protected
|
|
@@ -61,7 +61,7 @@ Type
|
|
function ReadPositiveInteger(aData : TJSONData): cardinal;
|
|
function ReadPositiveInteger(aData : TJSONData): cardinal;
|
|
function ReadString(aData : TJSONData): String;
|
|
function ReadString(aData : TJSONData): String;
|
|
// Handle unknown props
|
|
// Handle unknown props
|
|
- function HandleUnknownKeyWord(const aInfo : TKeywordInfo) : Boolean; virtual;
|
|
|
|
|
|
+ function HandleUnknownKeyWord(const aInfo : TLoadKeywordInfo) : Boolean; virtual;
|
|
// Read various special properties
|
|
// Read various special properties
|
|
procedure ReadDependentRequired(aData: TJSONData; aList: TSchemaDependentRequiredList);
|
|
procedure ReadDependentRequired(aData: TJSONData; aList: TSchemaDependentRequiredList);
|
|
procedure ReadArray(aData : TJSONData; aValues: TJSONArray);
|
|
procedure ReadArray(aData : TJSONData; aValues: TJSONArray);
|
|
@@ -77,7 +77,7 @@ Type
|
|
public
|
|
public
|
|
procedure ReadFromJSON(aSchema: TJSONSchema; aJSONData : TJSONData);
|
|
procedure ReadFromJSON(aSchema: TJSONSchema; aJSONData : TJSONData);
|
|
Published
|
|
Published
|
|
- property OnUnknownKeyword : TKeyWordHandler read FOnUnknownKeyword Write FOnUnknownKeyword;
|
|
|
|
|
|
+ property OnUnknownKeyword : TLoadKeyWordHandler read FOnUnknownKeyword Write FOnUnknownKeyword;
|
|
property Options : TSchemaLoadOptions Read FOptions Write FOptions;
|
|
property Options : TSchemaLoadOptions Read FOptions Write FOptions;
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -140,7 +140,7 @@ begin
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
-function TJsonSchemaLoader.HandleUnknownKeyWord(const aInfo: TKeywordInfo): Boolean;
|
|
|
|
|
|
+function TJsonSchemaLoader.HandleUnknownKeyWord(const aInfo: TLoadKeywordInfo): Boolean;
|
|
begin
|
|
begin
|
|
Result:=False;
|
|
Result:=False;
|
|
if Assigned(FOnUnknownKeyword) then
|
|
if Assigned(FOnUnknownKeyword) then
|
|
@@ -333,7 +333,7 @@ var
|
|
Enum : TJSONEnum;
|
|
Enum : TJSONEnum;
|
|
aData : TJSONData;
|
|
aData : TJSONData;
|
|
keyword : TJSONSchemaKeyword;
|
|
keyword : TJSONSchemaKeyword;
|
|
- Info : TKeywordInfo;
|
|
|
|
|
|
+ Info : TLoadKeywordInfo;
|
|
|
|
|
|
begin
|
|
begin
|
|
For Enum in aObject do
|
|
For Enum in aObject do
|