From 122d94f289f2c80abbe043d95490c96841ca949e Mon Sep 17 00:00:00 2001 From: inoussa Date: Mon, 29 Sep 2008 12:37:11 +0000 Subject: [PATCH] XSD parsing : metadata extraction bug fix and tests git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@579 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../class_properties_extended_metadata_2.wsdl | 36 +++++++++++++++++++ .../class_properties_extended_metadata_2.xsd | 23 ++++++++++++ .../tests/test_suite/wst_test_suite_gui.lpi | 16 +++++---- wst/trunk/ws_helper/ws_parser_imp.pas | 13 ++++++- 4 files changed, 80 insertions(+), 8 deletions(-) create mode 100644 wst/trunk/tests/test_suite/files/class_properties_extended_metadata_2.wsdl create mode 100644 wst/trunk/tests/test_suite/files/class_properties_extended_metadata_2.xsd diff --git a/wst/trunk/tests/test_suite/files/class_properties_extended_metadata_2.wsdl b/wst/trunk/tests/test_suite/files/class_properties_extended_metadata_2.wsdl new file mode 100644 index 000000000..4529dd146 --- /dev/null +++ b/wst/trunk/tests/test_suite/files/class_properties_extended_metadata_2.wsdl @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wst/trunk/tests/test_suite/files/class_properties_extended_metadata_2.xsd b/wst/trunk/tests/test_suite/files/class_properties_extended_metadata_2.xsd new file mode 100644 index 000000000..b878a09fe --- /dev/null +++ b/wst/trunk/tests/test_suite/files/class_properties_extended_metadata_2.xsd @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wst/trunk/tests/test_suite/wst_test_suite_gui.lpi b/wst/trunk/tests/test_suite/wst_test_suite_gui.lpi index 010e37baf..266d38209 100644 --- a/wst/trunk/tests/test_suite/wst_test_suite_gui.lpi +++ b/wst/trunk/tests/test_suite/wst_test_suite_gui.lpi @@ -1,12 +1,12 @@ - + - + @@ -14,13 +14,14 @@ + - + @@ -96,12 +97,12 @@ - + - + @@ -129,12 +130,13 @@ + - - + + diff --git a/wst/trunk/ws_helper/ws_parser_imp.pas b/wst/trunk/ws_helper/ws_parser_imp.pas index dc9330956..0aa13c9d3 100644 --- a/wst/trunk/ws_helper/ws_parser_imp.pas +++ b/wst/trunk/ws_helper/ws_parser_imp.pas @@ -942,7 +942,16 @@ var end; end; end; - + + procedure CopyExtendedMetaData(ASource,ADesc : TPasElement); + var + ls : TStrings; + begin + ls := FSymbols.Properties.FindList(ASource); + if ( ls <> nil ) then + FSymbols.Properties.GetList(ADesc).Assign(ls); + end; + var eltCrs, eltAttCrs : IObjectCursor; internalName : string; @@ -1029,6 +1038,7 @@ begin tmpPropTyp.VarType.AddRef(); tmpPropTyp.StoredAccessorName := propTyp.StoredAccessorName; FSymbols.RegisterExternalAlias(tmpPropTyp,FSymbols.GetExternalName(propTyp)); + CopyExtendedMetaData(propTyp,tmpPropTyp); classDef.Members.Add(tmpPropTyp); end else begin tmpPropTyp := TPasProperty(FSymbols.CreateElement(TPasProperty,propTyp.Name,classDef,visPublished,'',0)); @@ -1036,6 +1046,7 @@ begin tmpPropTyp.VarType := FSymbols.FindElement(Format('%s_%sArray',[internalName,propTyp.Name])) as TPasType; tmpPropTyp.VarType.AddRef(); FSymbols.RegisterExternalAlias(tmpPropTyp,FSymbols.GetExternalName(propTyp)); + CopyExtendedMetaData(propTyp,tmpPropTyp); classDef.Members.Add(tmpPropTyp); end; end;