Last active
July 25, 2018 17:29
-
-
Save jpluimers/2824c03ae816229a53ffa4830b2d6208 to your computer and use it in GitHub Desktop.
Patches for WSDLImp commandline Delphi WSDL importer for WSDL files that include XSD files that use xsd:group at the top level
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From 4e5ff27613499f82380a839968ad2b451c624672 Mon Sep 17 00:00:00 2001 | |
From: Jeroen Pluimers <jeroen.gist.github.com@pluimers.com> | |
Date: Tue, 15 May 2018 15:13:00 +0200 | |
Subject: [PATCH] fix search and output path: | |
- search path $(BDS)\source\soap will find CompVer.inc | |
- old output path $(BDS)\bin only works under UAC and overwrites the | |
stock output; new path .\$(Platform)\$(Config) puts it along the .DCU | |
files | |
--- | |
WSDLImp.dproj | 144 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- | |
1 file changed, 140 insertions(+), 4 deletions(-) | |
diff --git a/WSDLImp.dproj b/WSDLImp.dproj | |
index 842d381..646e287 100644 | |
--- a/WSDLImp.dproj | |
+++ b/WSDLImp.dproj | |
@@ -7,12 +7,32 @@ | |
<TargetedPlatforms>1</TargetedPlatforms> | |
<AppType>Console</AppType> | |
<FrameworkType>None</FrameworkType> | |
- <ProjectVersion>16.0</ProjectVersion> | |
+ <ProjectVersion>18.3</ProjectVersion> | |
<Platform Condition="'$(Platform)'==''">Win32</Platform> | |
</PropertyGroup> | |
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''"> | |
<Base>true</Base> | |
</PropertyGroup> | |
+ <PropertyGroup Condition="('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''"> | |
+ <Base_Android>true</Base_Android> | |
+ <CfgParent>Base</CfgParent> | |
+ <Base>true</Base> | |
+ </PropertyGroup> | |
+ <PropertyGroup Condition="('$(Platform)'=='iOSDevice32' and '$(Base)'=='true') or '$(Base_iOSDevice32)'!=''"> | |
+ <Base_iOSDevice32>true</Base_iOSDevice32> | |
+ <CfgParent>Base</CfgParent> | |
+ <Base>true</Base> | |
+ </PropertyGroup> | |
+ <PropertyGroup Condition="('$(Platform)'=='iOSDevice64' and '$(Base)'=='true') or '$(Base_iOSDevice64)'!=''"> | |
+ <Base_iOSDevice64>true</Base_iOSDevice64> | |
+ <CfgParent>Base</CfgParent> | |
+ <Base>true</Base> | |
+ </PropertyGroup> | |
+ <PropertyGroup Condition="('$(Platform)'=='iOSSimulator' and '$(Base)'=='true') or '$(Base_iOSSimulator)'!=''"> | |
+ <Base_iOSSimulator>true</Base_iOSSimulator> | |
+ <CfgParent>Base</CfgParent> | |
+ <Base>true</Base> | |
+ </PropertyGroup> | |
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_1)'!=''"> | |
<Cfg_1>true</Cfg_1> | |
<CfgParent>Base</CfgParent> | |
@@ -23,11 +43,29 @@ | |
<CfgParent>Base</CfgParent> | |
<Base>true</Base> | |
</PropertyGroup> | |
+ <PropertyGroup Condition="('$(Platform)'=='iOSDevice32' and '$(Cfg_2)'=='true') or '$(Cfg_2_iOSDevice32)'!=''"> | |
+ <Cfg_2_iOSDevice32>true</Cfg_2_iOSDevice32> | |
+ <CfgParent>Cfg_2</CfgParent> | |
+ <Cfg_2>true</Cfg_2> | |
+ <Base>true</Base> | |
+ </PropertyGroup> | |
+ <PropertyGroup Condition="('$(Platform)'=='iOSDevice64' and '$(Cfg_2)'=='true') or '$(Cfg_2_iOSDevice64)'!=''"> | |
+ <Cfg_2_iOSDevice64>true</Cfg_2_iOSDevice64> | |
+ <CfgParent>Cfg_2</CfgParent> | |
+ <Cfg_2>true</Cfg_2> | |
+ <Base>true</Base> | |
+ </PropertyGroup> | |
+ <PropertyGroup Condition="('$(Platform)'=='iOSSimulator' and '$(Cfg_2)'=='true') or '$(Cfg_2_iOSSimulator)'!=''"> | |
+ <Cfg_2_iOSSimulator>true</Cfg_2_iOSSimulator> | |
+ <CfgParent>Cfg_2</CfgParent> | |
+ <Cfg_2>true</Cfg_2> | |
+ <Base>true</Base> | |
+ </PropertyGroup> | |
<PropertyGroup Condition="'$(Base)'!=''"> | |
<SanitizedProjectName>WSDLImp</SanitizedProjectName> | |
<DCC_OutputDRCFile>true</DCC_OutputDRCFile> | |
- <DCC_UnitSearchPath>.\$(Platform)\$(Config);$(DCC_UnitSearchPath)</DCC_UnitSearchPath> | |
- <DCC_ExeOutput>$(BDS)\bin</DCC_ExeOutput> | |
+ <DCC_UnitSearchPath>.\$(Platform)\$(Config);$(BDS)\source\soap;$(DCC_UnitSearchPath)</DCC_UnitSearchPath> | |
+ <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput> | |
<DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput> | |
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys> | |
<Manifest_File>None</Manifest_File> | |
@@ -40,6 +78,87 @@ | |
<DCC_K>false</DCC_K> | |
<DCC_E>false</DCC_E> | |
<DCC_F>false</DCC_F> | |
+ <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon> | |
+ <Icns_MainIcns>$(BDS)\bin\delphi_PROJECTICNS.icns</Icns_MainIcns> | |
+ </PropertyGroup> | |
+ <PropertyGroup Condition="'$(Base_Android)'!=''"> | |
+ <VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=</VerInfo_Keys> | |
+ <BT_BuildType>Debug</BT_BuildType> | |
+ <Android_LauncherIcon36>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png</Android_LauncherIcon36> | |
+ <Android_LauncherIcon48>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png</Android_LauncherIcon48> | |
+ <Android_LauncherIcon72>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png</Android_LauncherIcon72> | |
+ <Android_LauncherIcon96>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png</Android_LauncherIcon96> | |
+ <Android_LauncherIcon144>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png</Android_LauncherIcon144> | |
+ <Android_SplashImage426>$(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png</Android_SplashImage426> | |
+ <Android_SplashImage470>$(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png</Android_SplashImage470> | |
+ <Android_SplashImage640>$(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png</Android_SplashImage640> | |
+ <Android_SplashImage960>$(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png</Android_SplashImage960> | |
+ <AUP_ACCESS_COARSE_LOCATION>true</AUP_ACCESS_COARSE_LOCATION> | |
+ <AUP_ACCESS_FINE_LOCATION>true</AUP_ACCESS_FINE_LOCATION> | |
+ <AUP_CALL_PHONE>true</AUP_CALL_PHONE> | |
+ <AUP_CAMERA>true</AUP_CAMERA> | |
+ <AUP_INTERNET>true</AUP_INTERNET> | |
+ <AUP_READ_CALENDAR>true</AUP_READ_CALENDAR> | |
+ <AUP_READ_EXTERNAL_STORAGE>true</AUP_READ_EXTERNAL_STORAGE> | |
+ <AUP_WRITE_CALENDAR>true</AUP_WRITE_CALENDAR> | |
+ <AUP_WRITE_EXTERNAL_STORAGE>true</AUP_WRITE_EXTERNAL_STORAGE> | |
+ <AUP_READ_PHONE_STATE>true</AUP_READ_PHONE_STATE> | |
+ <EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services.dex.jar</EnabledSysJars> | |
+ </PropertyGroup> | |
+ <PropertyGroup Condition="'$(Base_iOSDevice32)'!=''"> | |
+ <VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;CFBundleResourceSpecification=ResourceRules.plist;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;FMLocalNotificationPermission=false;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSCameraUsageDescription=The reason for accessing the camera</VerInfo_Keys> | |
+ <VerInfo_UIDeviceFamily>iPhoneAndiPad</VerInfo_UIDeviceFamily> | |
+ <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo> | |
+ <BT_BuildType>Debug</BT_BuildType> | |
+ <VerInfo_BundleId>$(MSBuildProjectName)</VerInfo_BundleId> | |
+ <iPhone_AppIcon60>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_60x60.png</iPhone_AppIcon60> | |
+ <iPhone_AppIcon120>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png</iPhone_AppIcon120> | |
+ <iPhone_Spotlight40>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_40x40.png</iPhone_Spotlight40> | |
+ <iPhone_Spotlight80>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png</iPhone_Spotlight80> | |
+ <iPad_SpotLight40>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_40x40.png</iPad_SpotLight40> | |
+ <iPad_SpotLight80>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png</iPad_SpotLight80> | |
+ <iPad_AppIcon76>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_76x76.png</iPad_AppIcon76> | |
+ <iPad_AppIcon152>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png</iPad_AppIcon152> | |
+ <iPad_Launch768x1024>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1024.png</iPad_Launch768x1024> | |
+ <iPad_Launch1024x768>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x768.png</iPad_Launch1024x768> | |
+ <iPad_Launch1536x2048>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2048.png</iPad_Launch1536x2048> | |
+ <iPad_Launch2048x1536>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1536.png</iPad_Launch2048x1536> | |
+ </PropertyGroup> | |
+ <PropertyGroup Condition="'$(Base_iOSDevice64)'!=''"> | |
+ <VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;CFBundleResourceSpecification=ResourceRules.plist;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;FMLocalNotificationPermission=false;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSCameraUsageDescription=The reason for accessing the camera</VerInfo_Keys> | |
+ <VerInfo_UIDeviceFamily>iPhoneAndiPad</VerInfo_UIDeviceFamily> | |
+ <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo> | |
+ <BT_BuildType>Debug</BT_BuildType> | |
+ <VerInfo_BundleId>$(MSBuildProjectName)</VerInfo_BundleId> | |
+ <iPhone_AppIcon60>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_60x60.png</iPhone_AppIcon60> | |
+ <iPhone_AppIcon120>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png</iPhone_AppIcon120> | |
+ <iPhone_Spotlight40>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_40x40.png</iPhone_Spotlight40> | |
+ <iPhone_Spotlight80>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png</iPhone_Spotlight80> | |
+ <iPad_SpotLight40>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_40x40.png</iPad_SpotLight40> | |
+ <iPad_SpotLight80>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png</iPad_SpotLight80> | |
+ <iPad_AppIcon76>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_76x76.png</iPad_AppIcon76> | |
+ <iPad_AppIcon152>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png</iPad_AppIcon152> | |
+ <iPad_Launch768x1024>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1024.png</iPad_Launch768x1024> | |
+ <iPad_Launch1024x768>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x768.png</iPad_Launch1024x768> | |
+ <iPad_Launch1536x2048>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2048.png</iPad_Launch1536x2048> | |
+ <iPad_Launch2048x1536>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1536.png</iPad_Launch2048x1536> | |
+ </PropertyGroup> | |
+ <PropertyGroup Condition="'$(Base_iOSSimulator)'!=''"> | |
+ <VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;CFBundleResourceSpecification=ResourceRules.plist;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;FMLocalNotificationPermission=false;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSCameraUsageDescription=The reason for accessing the camera</VerInfo_Keys> | |
+ <VerInfo_UIDeviceFamily>iPhoneAndiPad</VerInfo_UIDeviceFamily> | |
+ <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo> | |
+ <iPhone_AppIcon60>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_60x60.png</iPhone_AppIcon60> | |
+ <iPhone_AppIcon120>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png</iPhone_AppIcon120> | |
+ <iPhone_Spotlight40>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_40x40.png</iPhone_Spotlight40> | |
+ <iPhone_Spotlight80>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png</iPhone_Spotlight80> | |
+ <iPad_SpotLight40>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_40x40.png</iPad_SpotLight40> | |
+ <iPad_SpotLight80>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png</iPad_SpotLight80> | |
+ <iPad_AppIcon76>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_76x76.png</iPad_AppIcon76> | |
+ <iPad_AppIcon152>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png</iPad_AppIcon152> | |
+ <iPad_Launch768x1024>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1024.png</iPad_Launch768x1024> | |
+ <iPad_Launch1024x768>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x768.png</iPad_Launch1024x768> | |
+ <iPad_Launch1536x2048>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2048.png</iPad_Launch1536x2048> | |
+ <iPad_Launch2048x1536>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1536.png</iPad_Launch2048x1536> | |
</PropertyGroup> | |
<PropertyGroup Condition="'$(Cfg_1)'!=''"> | |
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols> | |
@@ -52,6 +171,15 @@ | |
<DCC_Optimize>false</DCC_Optimize> | |
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames> | |
</PropertyGroup> | |
+ <PropertyGroup Condition="'$(Cfg_2_iOSDevice32)'!=''"> | |
+ <DCC_RemoteDebug>true</DCC_RemoteDebug> | |
+ </PropertyGroup> | |
+ <PropertyGroup Condition="'$(Cfg_2_iOSDevice64)'!=''"> | |
+ <DCC_RemoteDebug>true</DCC_RemoteDebug> | |
+ </PropertyGroup> | |
+ <PropertyGroup Condition="'$(Cfg_2_iOSSimulator)'!=''"> | |
+ <DCC_RemoteDebug>true</DCC_RemoteDebug> | |
+ </PropertyGroup> | |
<ItemGroup> | |
<DelphiCompile Include="$(MainSource)"> | |
<MainSource>MainSource</MainSource> | |
@@ -111,9 +239,17 @@ | |
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys> | |
<VersionInfoKeys Name="Comments"/> | |
</VersionInfoKeys> | |
- <Excluded_Packages/> | |
+ <Excluded_Packages> | |
+ <Excluded_Packages Name="$(BDSBIN)\dcloffice2k250.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages> | |
+ <Excluded_Packages Name="$(BDSBIN)\dclofficexp250.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages> | |
+ </Excluded_Packages> | |
</Delphi.Personality> | |
<Platforms> | |
+ <Platform value="Android">False</Platform> | |
+ <Platform value="iOSDevice32">False</Platform> | |
+ <Platform value="iOSDevice64">False</Platform> | |
+ <Platform value="iOSSimulator">False</Platform> | |
+ <Platform value="Linux64">False</Platform> | |
<Platform value="OSX32">False</Platform> | |
<Platform value="Win32">True</Platform> | |
<Platform value="Win64">False</Platform> | |
-- | |
2.14.3 (Apple Git-98) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From b9e3f63d38b4cc70c4820bcc530ff700b36311c9 Mon Sep 17 00:00:00 2001 | |
From: Jeroen Pluimers <jeroen.gist.github.com@pluimers.com> | |
Date: Wed, 16 May 2018 13:18:19 +0200 | |
Subject: [PATCH] Fixes TWSDLTypeImporter.AddComplexType Access Violation | |
This occurs for instance when a WSDL document includes an XSD document that uses xsd:group at the global level to define a group of elements. | |
It could occur in other circumstances as well, and would allow the importer to continue and emit a .pas file with missing imports. | |
The IDE wizard version willnot display the Access Violation at all (nor any other importer console output), so there would be no clue for the source of the problem. | |
Also adds the $(BDS)\source\xml to the unit search path so it is a lot easier to debug the XML handling of the XSD. | |
--- | |
WSDLImp.dproj | 2 +- | |
WSDLImpWriter.pas | 2 +- | |
2 files changed, 2 insertions(+), 2 deletions(-) | |
diff --git a/WSDLImp.dproj b/WSDLImp.dproj | |
index 646e287..bb03e44 100644 | |
--- a/WSDLImp.dproj | |
+++ b/WSDLImp.dproj | |
@@ -64,7 +64,7 @@ | |
<PropertyGroup Condition="'$(Base)'!=''"> | |
<SanitizedProjectName>WSDLImp</SanitizedProjectName> | |
<DCC_OutputDRCFile>true</DCC_OutputDRCFile> | |
- <DCC_UnitSearchPath>.\$(Platform)\$(Config);$(BDS)\source\soap;$(DCC_UnitSearchPath)</DCC_UnitSearchPath> | |
+ <DCC_UnitSearchPath>.\$(Platform)\$(Config);$(BDS)\source\soap;$(BDS)\source\xml;$(DCC_UnitSearchPath)</DCC_UnitSearchPath> | |
<DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput> | |
<DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput> | |
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys> | |
diff --git a/WSDLImpWriter.pas b/WSDLImpWriter.pas | |
index 3774c31..25a5113 100644 | |
--- a/WSDLImpWriter.pas | |
+++ b/WSDLImpWriter.pas | |
@@ -1960,7 +1960,7 @@ var | |
Part: TWSDLPart; | |
AName, ANamespace: DOMString; | |
begin | |
- if (TypeDef.IsAnonymous) then | |
+ if (TypeDef.IsAnonymous) and Assigned(Context) then | |
begin | |
{$IFDEF COLLAPSE_ANONYMOUS_COMPLEXTYPES} | |
if (Context.DataKind = wtNotDefined) then | |
-- | |
2.14.3 (Apple Git-98) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From 70cd78c58f919c50a8b64c6add83bc1a11bc3a92 Mon Sep 17 00:00:00 2001 | |
From: Jeroen Pluimers <jeroen.gist.github.com@pluimers.com> | |
Date: Wed, 16 May 2018 13:44:29 +0200 | |
Subject: [PATCH] Add -logall option that in one sweep enables all LOG_ defined | |
functions inside WSDLImpWriter. | |
--- | |
WSDLImp.dpr | 1 + | |
WSDLImpConst.pas | 7 ++++ | |
WSDLImpWriter.pas | 118 +++++++++++++++++++++++++++++++----------------------- | |
3 files changed, 75 insertions(+), 51 deletions(-) | |
diff --git a/WSDLImp.dpr b/WSDLImp.dpr | |
index 3bc4928..30731c3 100644 | |
--- a/WSDLImp.dpr | |
+++ b/WSDLImp.dpr | |
@@ -371,6 +371,7 @@ var | |
GetVerboseOption(S, sPassOption, Password) or | |
GetVerboseOption(S, sProxyOption, Proxy) or | |
GetVerboseOption(S, wfDebug) or | |
+ GetVerboseOption(S, wfLogAllImpWriter) or | |
GetVerboseOption(S, sDumpSettingsOption, DumpSettings) or | |
GetVerboseOption(S, sXMLSchemaFile, XMLSchemaFile) or | |
GetVerboseOption(S, sSkipURLOption, WSDLImportInfo.SkipURLs) or | |
diff --git a/WSDLImpConst.pas b/WSDLImpConst.pas | |
index 953b2ca..f0f1b70 100644 | |
--- a/WSDLImpConst.pas | |
+++ b/WSDLImpConst.pas | |
@@ -894,6 +894,7 @@ sUseXSTypeForSimpleNillable = 'Use T&XSxxxx classes for simple nillable types'; | |
sUseScopedEnumerations = '&Generate scoped enumerations'; | |
sCreateArrayElemTypeAlias = 'Generate alias for the element of pure collections'; | |
+sLogAllImpWriterOptForCommandLineHelp = 'Perform much more logging from the Importer/Writer logic'; | |
sVerboseOptForCommandLineHelp = 'Generate verbose information about types and interfaces'; | |
sSkipHTTPBindOptForCommandLineHelp = 'Process only SOAP binding types'; | |
sMapNamedArraysForCommandLineHelp = 'Map pure collections to wrapper class types'; | |
@@ -974,6 +975,7 @@ CannotUnwrapStr: array[CannotUnwrap] of String = ( | |
ProcessFaults = 'ProcessFaults'; { do not localize } | |
SkipUnusedTypes = 'SkipUnusedTypes'; { do not localize } | |
SkipHttpBindings = 'SkipHttpBindings'; { do not localize } | |
+ LogAllImpWriterMode = 'LogAllImpWriterMode'; { do not localize } | |
VerboseMode = 'VerboseMode'; { do not localize } | |
ValidateEnumMembers = 'ValidateEnumMembers'; { do not localize } | |
ProcessHeaders = 'ProcessHeaders'; { do not localize } | |
@@ -991,6 +993,7 @@ CannotUnwrapStr: array[CannotUnwrap] of String = ( | |
OptStrings: array[WSDLGenFlags] of string = | |
('', { wfDebug } | |
+ LogAllImpWriterMode, { wfLogAllImpWriter } | |
VerboseMode, { wfVerbose } | |
SkipHttpBindings, { wfSkipHttpBindings } | |
OneParamIsReturnSetting, { wfOneOutIsReturn } | |
@@ -1029,6 +1032,7 @@ CannotUnwrapStr: array[CannotUnwrap] of String = ( | |
OptDescriptions: array[WSDLGenFlags] of string = | |
('', { wfDebug } | |
+ '', { wfLogAllImpWriter } | |
sVerboseOpt, { wfVerbose } | |
sSkipHTTPBindOpt, { wfSkipHttpBindings } | |
sOneOutParamIsReturn, { wfOneOutIsReturn } | |
@@ -1067,6 +1071,7 @@ CannotUnwrapStr: array[CannotUnwrap] of String = ( | |
OptDescriptionsForCommandLineHelp: array[WSDLGenFlags] of string = | |
('', { wfDebug } | |
+ sLogAllImpWriterOptForCommandLineHelp, { wfLogAllImpWriter } | |
sVerboseOptForCommandLineHelp, { wfVerbose } | |
sSkipHTTPBindOptForCommandLineHelp, { wfSkipHttpBindings } | |
sOneOutParamIsReturnForCommandLineHelp, { wfOneOutIsReturn } | |
@@ -1105,6 +1110,7 @@ CannotUnwrapStr: array[CannotUnwrap] of String = ( | |
OptHiddenOptions: array[WSDLGenFlags] of Boolean = | |
(True, { wfDebug } // Debugging output | |
+ False, { wfLogAllImpWriter } | |
False, { wfVerbose } | |
True, { wfSkipHttpBindings } //Removed temporarily until it can be properly implemented | |
False, { wfOneOutIsReturn } | |
@@ -1143,6 +1149,7 @@ CannotUnwrapStr: array[CannotUnwrap] of String = ( | |
OptCommandLineFlags: array[WSDLGenFlags] of string = | |
('debug', { wfDebug } | |
+ 'logall', { wfLogAllImpWriter } | |
'v', { wfVerbose } | |
'', { wfSkipHttpBindings } | |
'o', { wfOneOutIsReturn } | |
diff --git a/WSDLImpWriter.pas b/WSDLImpWriter.pas | |
index 25a5113..905e3a9 100644 | |
--- a/WSDLImpWriter.pas | |
+++ b/WSDLImpWriter.pas | |
@@ -48,6 +48,14 @@ uses | |
Classes, TypInfo, xmldom, XmlSchema, WSDLIntf, WSDLBind, InvokeRegistry, WSDLItems, | |
UDDIHlprDesign, Contnrs, WSDLModelIntf; | |
+const | |
+ LogTypesReading = {$IFDEF LOG_TYPES_READING} True {$ELSE} False {$ENDIF LOG_TYPES_READING}; | |
+ LogTypesWriting = {$IFDEF LOG_TYPES_WRITING} True {$ELSE} False {$ENDIF LOG_TYPES_WRITING}; | |
+ LogTypesUnwind = {$IFDEF LOG_TYPES_UNWIND} True {$ELSE} False {$ENDIF LOG_TYPES_UNWIND}; | |
+ LogTypesSorting = {$IFDEF LOG_TYPES_SORTING} True {$ELSE} False {$ENDIF LOG_TYPES_SORTING}; | |
+ LogTypesLookup = {$IFDEF LOG_TYPES_LOOKUP} True {$ELSE} False {$ENDIF LOG_TYPES_LOOKUP}; | |
+ LogTypesDump = {$IFDEF LOG_TYPES_DUMP} True {$ELSE} False {$ENDIF LOG_TYPES_DUMP}; | |
+ | |
const | |
SMultiPart = 'multipartRelated'; | |
SSoapAttachment = 'TSOAPAttachment'; | |
@@ -187,6 +195,7 @@ type | |
{ Flags to configure writer } | |
WSDLGenFlags = (wfDebug, | |
+ wfLogAllImpWriter, { enable all LOG_* functionality } | |
wfVerbose, | |
wfSkipHttpBindings, { Skip http bound bindings } | |
wfOneOutIsReturn, { Convert single out to retval } | |
@@ -304,6 +313,7 @@ type | |
function TypeNameFromTypeInfo(TypeInfo: pTypeInfo): DOMString; virtual; | |
function GetTypeInfoPad: DOMString; virtual; | |
function GetDebugMode: boolean; | |
+ function GetLogAllImpWriterMode: boolean; | |
function GetVerboseMode: boolean; | |
function IsCaseSensitive: Boolean; virtual; | |
function RemapMembersOfTypeName: boolean; virtual; | |
@@ -351,6 +361,7 @@ type | |
property OnWrite: TWriteProc read FOnWrite write FOnWrite; | |
property TypeInfoPad: DOMString read GetTypeInfoPad; | |
property DebugMode: boolean read GetDebugMode; | |
+ property LogAllImpWriterMode: boolean read GetLogAllImpWriterMode; | |
property Verbose: boolean read GetVerboseMode; | |
property WritingEnums: boolean read FWritingEnums write FWritingEnums; | |
end; | |
@@ -574,9 +585,7 @@ type | |
function AddAttribute(const TypeDef: IXMLAttributeDef; const Context: IWSDLType): IWSDLType; | |
procedure UpdateWoHasOptions(Opt: WSDLImporterOpts); | |
-{$IFDEF LOG_TYPES_READING} | |
procedure LogTypeReading(Item: IXMLSchemaItem); | |
-{$ENDIF} | |
public | |
constructor Create; virtual; | |
@@ -1413,10 +1422,11 @@ begin | |
MarkTypes; | |
{ Sort Types } | |
SortTypes; | |
-{$IFDEF LOG_TYPES_DUMP} | |
- { Dump Types } | |
- DumpTypes; | |
-{$ENDIF} | |
+ if LogTypesDump or (wfLogAllImpWriter in Global_WSDLGenFlags) then | |
+ begin | |
+ { Dump Types } | |
+ DumpTypes; | |
+ end; | |
end; | |
procedure TWSDLImporter.ImportsCallback(const Options: IterateImportOptions; | |
@@ -1706,21 +1716,18 @@ begin | |
WriteFeedback(sFeedbackImp+sLineBreak, [SchemaLoc]); | |
end; | |
-{$IFDEF LOG_TYPES_READING} | |
procedure TWSDLTypeImporter.LogTypeReading(Item: IXMLSchemaItem); | |
begin | |
- WriteFeedback(sReadingType+sLineBreak, [Item.Name]); | |
+ if LogTypesReading or (wfLogAllImpWriter in Global_WSDLGenFlags) then | |
+ WriteFeedback(sReadingType+sLineBreak, [Item.Name]); | |
end; | |
-{$ENDIF} | |
function TWSDLTypeImporter.Visit(const Item: IXMLElementDef; | |
const ElementTypes: TElementTypes; | |
const CompositorId: Integer; | |
const Context: XMLVisitorContext): XMLVisitorContext; | |
begin | |
-{$IFDEF LOG_TYPES_READING} | |
LogTypeReading(Item); | |
-{$ENDIF} | |
// Skip Global Groups as it's a top-level that names the group | |
if (ElementTypes = [etGlobal, etElementGroup]) then | |
@@ -1734,33 +1741,25 @@ end; | |
function TWSDLTypeImporter.Visit(const Item: IXMLAttributeDef; const Context: XMLVisitorContext): XMLVisitorContext; | |
begin | |
-{$IFDEF LOG_TYPES_READING} | |
LogTypeReading(Item); | |
-{$ENDIF} | |
Result := AddAttribute(Item, Context); | |
end; | |
function TWSDLTypeImporter.Visit(const Item: IXMLComplexTypeDef; const Context: XMLVisitorContext): XMLVisitorContext; | |
begin | |
-{$IFDEF LOG_TYPES_READING} | |
LogTypeReading(Item); | |
-{$ENDIF} | |
Result := AddComplexType(Item, Context); | |
end; | |
function TWSDLTypeImporter.Visit(const Item: IXMLAttributeGroup; const Context: XMLVisitorContext): XMLVisitorContext; | |
begin | |
-{$IFDEF LOG_TYPES_READING} | |
LogTypeReading(Item); | |
-{$ENDIF} | |
Result := AddAttributeGroup(Item, Context); | |
end; | |
function TWSDLTypeImporter.Visit(const Item: IXMLElementGroup; const Context: XMLVisitorContext): XMLVisitorContext; | |
begin | |
-{$IFDEF LOG_TYPES_READING} | |
LogTypeReading(Item); | |
-{$ENDIF} | |
Result := AddElementGroup(Item, Context); | |
end; | |
@@ -1800,9 +1799,7 @@ end; | |
function TWSDLTypeImporter.Visit(const Item: IXMLSimpleTypeDef;const Context: XMLVisitorContext): XMLVisitorContext; | |
begin | |
-{$IFDEF LOG_TYPES_READING} | |
LogTypeReading(Item); | |
-{$ENDIF} | |
Result := AddSimpleType(Item, Context); | |
end; | |
@@ -3504,10 +3501,11 @@ procedure TWSDLImporter.SortTypes; | |
function Compare(const A: IWSDLType; const B: IWSDLType): Integer; | |
begin | |
Result := CompareHelper(A, B); | |
-{$IFDEF LOG_TYPES_SORTING} | |
- if (Result <> 0) and (Result = CompareHelper(B, A)) then | |
- WriteFeedback(sUnableToSortTypes+sLineBreak, [A.Name, B.Name]); | |
-{$ENDIF} | |
+ if LogTypesSorting or (wfLogAllImpWriter in Global_WSDLGenFlags) then | |
+ begin | |
+ if (Result <> 0) and (Result = CompareHelper(B, A)) then | |
+ WriteFeedback(sUnableToSortTypes+sLineBreak, [A.Name, B.Name]); | |
+ end; | |
end; | |
procedure GetDependentTypes(const WSDLType: IWSDLType; var Types: IWSDLTypeArray); overload; | |
@@ -5153,9 +5151,10 @@ begin | |
if ((TypeKinds = []) or (WSDLType.DataKind in TypeKinds)) and | |
((ExcludeKinds=[])or not (WSDLType.DataKind in ExcludeKinds)) then | |
begin | |
-{$IFDEF LOG_TYPES_WRITING} | |
- WriteFeedback(sWritingType+sLineBreak, [WSDLType.Name]); | |
-{$ENDIF} | |
+ if LogTypesWriting or LogAllImpWriterMode then | |
+ begin | |
+ WriteFeedback(sWritingType+sLineBreak, [WSDLType.Name]); | |
+ end; | |
{ ================================================================ | |
The following logic relies on the fact that all enumerations | |
@@ -5223,6 +5222,11 @@ begin | |
Result := wfDebug in Global_WSDLGenFlags; | |
end; | |
+function TWSDLWriter.GetLogAllImpWriterMode: boolean; | |
+begin | |
+ Result := wfLogAllImpWriter in Global_WSDLGenFlags; | |
+end; | |
+ | |
function TWSDLWriter.GetVerboseMode: boolean; | |
begin | |
Result := wfVerbose in Global_WSDLGenFlags; | |
@@ -7171,16 +7175,21 @@ end; | |
{ TWSDLType } | |
function UnwindType(const WSDLType: IWSDLType; ClsOnly: Boolean): IWSDLType; | |
+var | |
+ DoLogTypesUnwind: Boolean; | |
begin | |
Result := WSDLType; | |
-{$IFDEF LOG_TYPES_UNWIND} | |
- WriteLn(sDottedLine); | |
-{$ENDIF} | |
+ DoLogTypesUnwind := LogTypesUnwind { or (wfLogAllImpWriter in Global_WSDLGenFlags) { if you add the "or", you get a truckload of dashed lines }; | |
+ if DoLogTypesUnwind then | |
+ begin | |
+ WriteLn(sDottedLine); | |
+ end; | |
while (Result.DataKind = wtAlias) do | |
begin | |
-{$IFDEF LOG_TYPES_UNWIND} | |
- WriteLn(Result.Name+':'+Result.Namespace); | |
-{$ENDIF} | |
+ if LogTypesUnwind then | |
+ begin | |
+ WriteLn(Result.Name+':'+Result.Namespace); | |
+ end; | |
{ Only unwind class aliases } | |
if ClsOnly and (WSDLType.BaseType.DataKind <> wtClass) then | |
Exit; | |
@@ -7527,6 +7536,7 @@ function TWSDLTypes.FindType(const Name, Namespace: DOMString; | |
Create: Boolean): IWSDLType; | |
var | |
+ DoLogTypesLookup: Boolean; | |
WSDLType: IWSDLType; | |
I: Integer; | |
{$IFDEF CACHE_TYPES} | |
@@ -7534,11 +7544,13 @@ var | |
TypeVals: PointerArray; | |
{$ENDIF} | |
begin | |
-{$IFDEF LOG_TYPES_LOOKUP} | |
- Write('LOOKUP: ' + Name + ':' + Namespace + ', +['+ | |
- SetToStr(TypeInfo(XMLItemInfo), Word(HasThese), False) + '], -['+ | |
- SetToStr(TypeInfo(XMLItemInfo), Word(DoesNotHaveThese), False) + '] '); | |
-{$ENDIF} | |
+ DoLogTypesLookup := LogTypesLookup or (wfLogAllImpWriter in Global_WSDLGenFlags) ; | |
+ if DoLogTypesLookup then | |
+ begin | |
+ Write('LOOKUP: ' + Name + ':' + Namespace + ', +['+ | |
+ SetToStr(TypeInfo(XMLItemInfo), Word(HasThese), False) + '], -['+ | |
+ SetToStr(TypeInfo(XMLItemInfo), Word(DoesNotHaveThese), False) + '] '); | |
+ end; | |
Assert(HasThese * DoesNotHaveThese = [], | |
Format('TWSDLTypes.FindType: "%s:%s " +[%s] -[%s]: Invalid XMLItemInfo', | |
[Name, Namespace, SetToStr(TypeInfo(XMLItemInfo), Word(HasThese), False), | |
@@ -7555,9 +7567,10 @@ begin | |
(DoesNotHaveThese * WSDLType.XMLItemInfo = []) then | |
begin | |
Result := WSDLType; | |
- {$IFDEF LOG_TYPES_LOOKUP} | |
- WriteLn('FOUND'); | |
- {$ENDIF} | |
+ if DoLogTypesLookup then | |
+ begin | |
+ WriteLn('FOUND'); | |
+ end; | |
Exit; | |
end; | |
end; | |
@@ -7572,9 +7585,10 @@ begin | |
(DoesNotHaveThese * WSDLType.XMLItemInfo = []) then | |
begin | |
Result := WSDLType; | |
-{$IFDEF LOG_TYPES_LOOKUP} | |
- WriteLn('FOUND'); | |
-{$ENDIF} | |
+ if DoLogTypesLookup then | |
+ begin | |
+ WriteLn('FOUND'); | |
+ end; | |
Exit; | |
end; | |
end; | |
@@ -7583,15 +7597,17 @@ begin | |
if Create then | |
begin | |
Result := AddType(Name, Namespace, HasThese); | |
-{$IFDEF LOG_TYPES_LOOKUP} | |
- WriteLn('CREATED'); | |
-{$ENDIF} | |
+ if DoLogTypesLookup then | |
+ begin | |
+ WriteLn('CREATED'); | |
+ end; | |
end | |
else | |
begin | |
-{$IFDEF LOG_TYPES_LOOKUP} | |
- WriteLn('NOT FOUND'); | |
-{$ENDIF} | |
+ if DoLogTypesLookup then | |
+ begin | |
+ WriteLn('NOT FOUND'); | |
+ end; | |
Result := nil; | |
end; | |
end; | |
-- | |
2.14.3 (Apple Git-98) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From 084e0cc64fd7ccd76ea6ec71ad57a177987eefe3 | |
From: Jeroen Wiert Pluimers <jeroen.gitlab.com@pluimers.com> | |
Date: Wed Jul 25 19:04:12 2018 +0200 | |
simpletype fix: Francisco Armando Dueñas Rodriguez | |
See test case and fix at https://wiert.me/2018/05/24/fixing-the-wsdlimp-command-line-delphi-wsdl-importer-to-parse-wsdl-files-including-xsd-files-using-xsdgroup-at-the-top-level/#comment-429126 | |
which demonstrate another access violation when defining an | |
xsd:simpletype at the top level | |
The below change fixes that. | |
diff --git a/WSDLImpWriter.pas b/WSDLImpWriter.pas | |
index 905e3a9..f3ab241 100644 | |
--- a/WSDLImpWriter.pas | |
+++ b/WSDLImpWriter.pas | |
@@ -2489,7 +2489,7 @@ begin | |
if IsKnownType(TypeDef) then | |
ItemInfo := [xtiKnownType]; | |
- if (TypeDef.IsAnonymous) then | |
+ if (TypeDef.IsAnonymous) and Assigned(Context) then | |
begin | |
Result := AddType(TypeDef.Name, GetNamespaceOf(Typedef), [xtiSimple]); | |
if (Context.DataKind = wtNotDefined) then |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment