mirror of
https://github.com/danieleteti/delphimvcframework.git
synced 2024-11-15 07:45:54 +01:00
This commit is contained in:
parent
9a9b74ee22
commit
c2d3cbc859
@ -687,6 +687,8 @@ The current beta release is named 3.2.2-nitrogen. If you want to stay on the-edg
|
||||
|
||||
- Fix https://github.com/danieleteti/delphimvcframework/issues/451
|
||||
|
||||
- Merged [PR#543](https://github.com/danieleteti/delphimvcframework/pull/543) (Now the `PathInfo` is trimmed so the router convert this "http://myserver.com/one " to this "http://myserver.com/one")
|
||||
|
||||
- Fix for nil objects in lists during serialization
|
||||
|
||||
- Fix a very subtle bug in `MaxRecordCount` parameter for RQL based methods in `TMVCActiveRecord`
|
||||
@ -701,6 +703,8 @@ The current beta release is named 3.2.2-nitrogen. If you want to stay on the-edg
|
||||
|
||||
- Fix https://github.com/danieleteti/delphimvcframework/issues/526 (Thanks to [David Moorhouse](https://github.com/fastbike))
|
||||
|
||||
- Fix https://github.com/danieleteti/delphimvcframework/issues/542 (Thanks to [Lamberto Lodi](https://github.com/llodi-csw) for the hints)
|
||||
|
||||
- Fixed *fileupload* sample
|
||||
|
||||
- Fixed an `IFDEF` compatibility problem on mobile platforms (Thanks to Marco Cotroneo)
|
||||
|
@ -26,7 +26,7 @@ package loggerproRT;
|
||||
{$DEFINE DEBUG}
|
||||
{$ENDIF IMPLICITBUILDING}
|
||||
{$DESCRIPTION 'LoggerPro'}
|
||||
{$LIBSUFFIX '110'}
|
||||
{$LIBSUFFIX '111'}
|
||||
{$RUNONLY}
|
||||
{$IMPLICITBUILD ON}
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{1611FBE6-5266-48FE-BDF5-E46EEAA922BE}</ProjectGuid>
|
||||
<MainSource>loggerproRT.dpk</MainSource>
|
||||
<ProjectVersion>19.3</ProjectVersion>
|
||||
<ProjectVersion>19.4</ProjectVersion>
|
||||
<FrameworkType>None</FrameworkType>
|
||||
<Base>True</Base>
|
||||
<Config Condition="'$(Config)'==''">Debug</Config>
|
||||
@ -94,6 +94,7 @@
|
||||
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||
<DCC_Description>LoggerPro</DCC_Description>
|
||||
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=Daniele Teti;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
||||
<DllSuffix>111</DllSuffix>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Cfg_2)'!=''">
|
||||
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
|
||||
@ -143,26 +144,13 @@
|
||||
<Source Name="MainSource">loggerproRT.dpk</Source>
|
||||
</Source>
|
||||
<Excluded_Packages>
|
||||
<Excluded_Packages Name="$(BDSBIN)\bcboffice2k280.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
|
||||
<Excluded_Packages Name="$(BDSBIN)\bcbofficexp280.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
|
||||
<Excluded_Packages Name="$(BDSBIN)\dcloffice2k280.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
|
||||
<Excluded_Packages Name="$(BDSBIN)\dclofficexp280.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
|
||||
</Excluded_Packages>
|
||||
</Delphi.Personality>
|
||||
<Deployment Version="3">
|
||||
<DeployFile LocalName="$(BDS)\Redist\osx64\libcgsqlite3.dylib" Class="DependencyModule">
|
||||
<Platform Name="OSX64">
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||
<Platform Name="OSX32">
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\loggerproRT.bpl" Configuration="Debug" Class="ProjectOutput">
|
||||
<Platform Name="Win32">
|
||||
<RemoteName>loggerproRT.bpl</RemoteName>
|
||||
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||
<Platform Name="iOSSimulator">
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
@ -171,16 +159,27 @@
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||
<Platform Name="iOSSimulator">
|
||||
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgsqlite3.dylib" Class="DependencyModule">
|
||||
<Platform Name="OSX32">
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgsqlite3.dylib" Class="DependencyModule">
|
||||
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||
<Platform Name="OSX32">
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="$(BDS)\Redist\osx64\libcgsqlite3.dylib" Class="DependencyModule">
|
||||
<Platform Name="OSX64">
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\loggerproRT.bpl" Configuration="Debug" Class="ProjectOutput">
|
||||
<Platform Name="Win32">
|
||||
<RemoteName>loggerproRT.bpl</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployClass Name="AdditionalDebugSymbols">
|
||||
<Platform Name="OSX32">
|
||||
<Operation>1</Operation>
|
||||
@ -973,17 +972,17 @@
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSXARM64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSXARM64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
|
||||
</Deployment>
|
||||
<Platforms>
|
||||
<Platform value="Android">False</Platform>
|
||||
|
@ -22,6 +22,6 @@
|
||||
{$IMAGEBASE $400000}
|
||||
{$DEFINE DEBUG}
|
||||
{$ENDIF IMPLICITBUILDING}
|
||||
{$DESCRIPTION 'DMVCFramework - Copyright (2010-2021) Daniele Teti and the DMVCFramework Team'}
|
||||
{$DESCRIPTION 'DMVCFramework - Copyright (2010-2022) Daniele Teti and the DMVCFramework Team'}
|
||||
{$RUNONLY}
|
||||
{$IMPLICITBUILD ON}
|
||||
|
@ -2,7 +2,7 @@
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{84344511-1DC2-41BA-8689-9F36C1D475BE}</ProjectGuid>
|
||||
<MainSource>dmvcframeworkDT.dpk</MainSource>
|
||||
<ProjectVersion>19.3</ProjectVersion>
|
||||
<ProjectVersion>19.4</ProjectVersion>
|
||||
<FrameworkType>None</FrameworkType>
|
||||
<Base>True</Base>
|
||||
<Config Condition="'$(Config)'==''">Debug</Config>
|
||||
@ -189,7 +189,7 @@
|
||||
</Excluded_Packages>
|
||||
</Delphi.Personality>
|
||||
<Deployment Version="3">
|
||||
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
|
||||
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||
<Platform Name="iOSSimulator">
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
@ -199,8 +199,8 @@
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||
<Platform Name="OSX32">
|
||||
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
|
||||
<Platform Name="iOSSimulator">
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
@ -209,8 +209,13 @@
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||
<Platform Name="iOSSimulator">
|
||||
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||
<Platform Name="OSX32">
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="$(BDS)\Redist\osx64\libcgsqlite3.dylib" Class="DependencyModule">
|
||||
<Platform Name="OSX64">
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
@ -220,11 +225,6 @@
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="$(BDS)\Redist\osx64\libcgsqlite3.dylib" Class="DependencyModule">
|
||||
<Platform Name="OSX64">
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployClass Name="AdditionalDebugSymbols">
|
||||
<Platform Name="OSX32">
|
||||
<Operation>1</Operation>
|
||||
@ -1248,17 +1248,17 @@
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSXARM64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSXARM64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
|
||||
</Deployment>
|
||||
<Platforms>
|
||||
<Platform value="Android">False</Platform>
|
||||
|
@ -2,7 +2,7 @@
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{96D17257-AF74-48CB-9893-7BCCB56A069D}</ProjectGuid>
|
||||
<MainSource>dmvcframeworkRT.dpk</MainSource>
|
||||
<ProjectVersion>19.3</ProjectVersion>
|
||||
<ProjectVersion>19.4</ProjectVersion>
|
||||
<FrameworkType>None</FrameworkType>
|
||||
<Base>True</Base>
|
||||
<Config Condition="'$(Config)'==''">Debug</Config>
|
||||
@ -222,22 +222,16 @@
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgsqlite3.dylib" Class="DependencyModule">
|
||||
<Platform Name="OSX32">
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\dmvcframeworkRT110.bpl" Configuration="Debug" Class="ProjectOutput">
|
||||
<Platform Name="Win32">
|
||||
<RemoteName>dmvcframeworkRT.bpl</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
|
||||
<Platform Name="iOSSimulator">
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgsqlite3.dylib" Class="DependencyModule">
|
||||
<Platform Name="OSX32">
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||
<Platform Name="OSX32">
|
||||
<Overwrite>true</Overwrite>
|
||||
@ -248,6 +242,12 @@
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\dmvcframeworkRT110.bpl" Configuration="Debug" Class="ProjectOutput">
|
||||
<Platform Name="Win32">
|
||||
<RemoteName>dmvcframeworkRT.bpl</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployClass Name="AdditionalDebugSymbols">
|
||||
<Platform Name="OSX32">
|
||||
<Operation>1</Operation>
|
||||
@ -1271,17 +1271,17 @@
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSXARM64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSXARM64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
|
||||
</Deployment>
|
||||
<Platforms>
|
||||
<Platform value="Android">False</Platform>
|
||||
|
32
packages/d111/dmvcframeworkDT.dpk
Normal file
32
packages/d111/dmvcframeworkDT.dpk
Normal file
@ -0,0 +1,32 @@
|
||||
package dmvcframeworkDT;
|
||||
|
||||
{$I ..\common_defines_design.inc}
|
||||
{$LIBSUFFIX '111'}
|
||||
|
||||
|
||||
requires
|
||||
rtl,
|
||||
designide,
|
||||
ExpertsCreators,
|
||||
IndySystem,
|
||||
IndyProtocols,
|
||||
IndyCore,
|
||||
dbrtl,
|
||||
dmvcframeworkRT;
|
||||
|
||||
contains
|
||||
DMVC.Expert.CodeGen.NewControllerUnit in '..\..\ideexpert\DMVC.Expert.CodeGen.NewControllerUnit.pas',
|
||||
DMVC.Expert.CodeGen.NewDMVCProject in '..\..\ideexpert\DMVC.Expert.CodeGen.NewDMVCProject.pas',
|
||||
DMVC.Expert.CodeGen.NewProject in '..\..\ideexpert\DMVC.Expert.CodeGen.NewProject.pas',
|
||||
DMVC.Expert.CodeGen.NewUnit in '..\..\ideexpert\DMVC.Expert.CodeGen.NewUnit.pas',
|
||||
DMVC.Expert.CodeGen.NewWebModuleUnit in '..\..\ideexpert\DMVC.Expert.CodeGen.NewWebModuleUnit.pas',
|
||||
DMVC.Expert.CodeGen.SourceFile in '..\..\ideexpert\DMVC.Expert.CodeGen.SourceFile.pas',
|
||||
DMVC.Expert.CodeGen.Templates in '..\..\ideexpert\DMVC.Expert.CodeGen.Templates.pas',
|
||||
DMVC.Expert.Forms.NewProjectWizard in '..\..\ideexpert\DMVC.Expert.Forms.NewProjectWizard.pas' {frmDMVCNewProject},
|
||||
DMVC.Expert.Forms.NewUnitWizard in '..\..\ideexpert\DMVC.Expert.Forms.NewUnitWizard.pas' {frmDMVCNewUnit},
|
||||
DMVC.Expert.NewUnitWizardEx in '..\..\ideexpert\DMVC.Expert.NewUnitWizardEx.pas',
|
||||
DMVC.Expert.ProjectWizardEx in '..\..\ideexpert\DMVC.Expert.ProjectWizardEx.pas',
|
||||
DMVC.Expert.Registration in '..\..\ideexpert\DMVC.Expert.Registration.pas',
|
||||
DMVC.Splash.Registration in '..\..\ideexpert\DMVC.Splash.Registration.pas';
|
||||
|
||||
end.
|
1275
packages/d111/dmvcframeworkDT.dproj
Normal file
1275
packages/d111/dmvcframeworkDT.dproj
Normal file
File diff suppressed because it is too large
Load Diff
84
packages/d111/dmvcframeworkRT.dpk
Normal file
84
packages/d111/dmvcframeworkRT.dpk
Normal file
@ -0,0 +1,84 @@
|
||||
package dmvcframeworkRT;
|
||||
|
||||
{$I ..\common_defines.inc}
|
||||
{$LIBSUFFIX '111'}
|
||||
|
||||
requires
|
||||
rtl,
|
||||
inet,
|
||||
FireDAC,
|
||||
IndyCore,
|
||||
IndyProtocols,
|
||||
FireDACIBDriver,
|
||||
FireDACMySQLDriver,
|
||||
loggerproRT,
|
||||
FireDACPgDriver,
|
||||
FireDACSqliteDriver;
|
||||
|
||||
contains
|
||||
{$I '..\common_contains.inc'}
|
||||
MVCFramework in '..\..\sources\MVCFramework.pas',
|
||||
MVCFramework.ActiveRecord in '..\..\sources\MVCFramework.ActiveRecord.pas',
|
||||
MVCFramework.ActiveRecordController in '..\..\sources\MVCFramework.ActiveRecordController.pas',
|
||||
MVCFramework.ApplicationSession in '..\..\sources\MVCFramework.ApplicationSession.pas',
|
||||
MVCFramework.Cache in '..\..\sources\MVCFramework.Cache.pas',
|
||||
MVCFramework.Commons in '..\..\sources\MVCFramework.Commons.pas',
|
||||
MVCFramework.Console in '..\..\sources\MVCFramework.Console.pas',
|
||||
MVCFramework.DataSet.Utils in '..\..\sources\MVCFramework.DataSet.Utils.pas',
|
||||
MVCFramework.DuckTyping in '..\..\sources\MVCFramework.DuckTyping.pas',
|
||||
MVCFramework.FireDAC.Utils in '..\..\sources\MVCFramework.FireDAC.Utils.pas',
|
||||
MVCFramework.HMAC in '..\..\sources\MVCFramework.HMAC.pas',
|
||||
MVCFramework.JSONRPC.Client in '..\..\sources\MVCFramework.JSONRPC.Client.pas',
|
||||
MVCFramework.JSONRPC in '..\..\sources\MVCFramework.JSONRPC.pas',
|
||||
MVCFramework.JWT in '..\..\sources\MVCFramework.JWT.pas',
|
||||
MVCFramework.Logger in '..\..\sources\MVCFramework.Logger.pas',
|
||||
MVCFramework.Middleware.Analytics in '..\..\sources\MVCFramework.Middleware.Analytics.pas',
|
||||
MVCFramework.Middleware.Authentication in '..\..\sources\MVCFramework.Middleware.Authentication.pas',
|
||||
MVCFramework.Middleware.Authentication.RoleBasedAuthHandler in '..\..\sources\MVCFramework.Middleware.Authentication.RoleBasedAuthHandler.pas',
|
||||
MVCFramework.Middleware.Compression in '..\..\sources\MVCFramework.Middleware.Compression.pas',
|
||||
MVCFramework.Middleware.CORS in '..\..\sources\MVCFramework.Middleware.CORS.pas',
|
||||
MVCFramework.Middleware.JWT in '..\..\sources\MVCFramework.Middleware.JWT.pas',
|
||||
MVCFramework.Middleware.SecurityHeaders in '..\..\sources\MVCFramework.Middleware.SecurityHeaders.pas',
|
||||
MVCFramework.MultiMap in '..\..\sources\MVCFramework.MultiMap.pas',
|
||||
MVCFramework.Patches in '..\..\sources\MVCFramework.Patches.pas',
|
||||
MVCFramework.RESTAdapter in '..\..\sources\MVCFramework.RESTAdapter.pas',
|
||||
MVCFramework.Router in '..\..\sources\MVCFramework.Router.pas',
|
||||
MVCFramework.RQL.AST2FirebirdSQL in '..\..\sources\MVCFramework.RQL.AST2FirebirdSQL.pas',
|
||||
MVCFramework.RQL.AST2InterbaseSQL in '..\..\sources\MVCFramework.RQL.AST2InterbaseSQL.pas',
|
||||
MVCFramework.RQL.AST2MySQL in '..\..\sources\MVCFramework.RQL.AST2MySQL.pas',
|
||||
MVCFramework.RQL.AST2PostgreSQL in '..\..\sources\MVCFramework.RQL.AST2PostgreSQL.pas',
|
||||
MVCFramework.RQL.AST2SQLite in '..\..\sources\MVCFramework.RQL.AST2SQLite.pas',
|
||||
MVCFramework.RQL.Parser in '..\..\sources\MVCFramework.RQL.Parser.pas',
|
||||
MVCFramework.Rtti.Utils in '..\..\sources\MVCFramework.Rtti.Utils.pas',
|
||||
MVCFramework.Serializer.Abstract in '..\..\sources\MVCFramework.Serializer.Abstract.pas',
|
||||
MVCFramework.Serializer.Commons in '..\..\sources\MVCFramework.Serializer.Commons.pas',
|
||||
MVCFramework.Serializer.Defaults in '..\..\sources\MVCFramework.Serializer.Defaults.pas',
|
||||
MVCFramework.Serializer.Intf in '..\..\sources\MVCFramework.Serializer.Intf.pas',
|
||||
MVCFramework.Serializer.JsonDataObjects.CustomTypes in '..\..\sources\MVCFramework.Serializer.JsonDataObjects.CustomTypes.pas',
|
||||
MVCFramework.Serializer.JsonDataObjects in '..\..\sources\MVCFramework.Serializer.JsonDataObjects.pas',
|
||||
MVCFramework.Session in '..\..\sources\MVCFramework.Session.pas',
|
||||
MVCFramework.SysControllers in '..\..\sources\MVCFramework.SysControllers.pas',
|
||||
MVCFramework.SystemJSONUtils in '..\..\sources\MVCFramework.SystemJSONUtils.pas',
|
||||
MVCFramework.View.Cache in '..\..\sources\MVCFramework.View.Cache.pas',
|
||||
MVCFramework.Controllers.Register in '..\..\sources\MVCFramework.Controllers.Register.pas',
|
||||
MVCFramework.SQLGenerators.Firebird in '..\..\sources\MVCFramework.SQLGenerators.Firebird.pas',
|
||||
MVCFramework.SQLGenerators.Interbase in '..\..\sources\MVCFramework.SQLGenerators.Interbase.pas',
|
||||
MVCFramework.SQLGenerators.MySQL in '..\..\sources\MVCFramework.SQLGenerators.MySQL.pas',
|
||||
MVCFramework.SQLGenerators.PostgreSQL in '..\..\sources\MVCFramework.SQLGenerators.PostgreSQL.pas',
|
||||
MVCFramework.SQLGenerators.Sqlite in '..\..\sources\MVCFramework.SQLGenerators.Sqlite.pas',
|
||||
MVCFramework.Swagger.Commons in '..\..\sources\MVCFramework.Swagger.Commons.pas',
|
||||
MVCFramework.Middleware.Swagger in '..\..\sources\MVCFramework.Middleware.Swagger.pas',
|
||||
MVCFramework.Middleware.Trace in '..\..\sources\MVCFramework.Middleware.Trace.pas',
|
||||
MVCFramework.Nullables in '..\..\sources\MVCFramework.Nullables.pas',
|
||||
MVCFramework.Serializer.HTML in '..\..\sources\MVCFramework.Serializer.HTML.pas',
|
||||
MVCFramework.LRUCache in '..\..\sources\MVCFramework.LRUCache.pas',
|
||||
MVCFramework.RESTClient.Commons in '..\..\sources\MVCFramework.RESTClient.Commons.pas',
|
||||
MVCFramework.RESTClient.Indy in '..\..\sources\MVCFramework.RESTClient.Indy.pas',
|
||||
MVCFramework.RESTClient.Intf in '..\..\sources\MVCFramework.RESTClient.Intf.pas',
|
||||
MVCFramework.RESTClient in '..\..\sources\MVCFramework.RESTClient.pas',
|
||||
MVCFramework.Utils in '..\..\sources\MVCFramework.Utils.pas';
|
||||
|
||||
end.
|
||||
|
||||
|
||||
|
1298
packages/d111/dmvcframeworkRT.dproj
Normal file
1298
packages/d111/dmvcframeworkRT.dproj
Normal file
File diff suppressed because it is too large
Load Diff
60
packages/d111/dmvcframework_group.groupproj
Normal file
60
packages/d111/dmvcframework_group.groupproj
Normal file
@ -0,0 +1,60 @@
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{EA879EE4-1245-4456-AED9-57FDF63577E6}</ProjectGuid>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Projects Include="..\..\lib\loggerpro\packages\d110\loggerproRT.dproj">
|
||||
<Dependencies/>
|
||||
</Projects>
|
||||
<Projects Include="dmvcframeworkRT.dproj">
|
||||
<Dependencies/>
|
||||
</Projects>
|
||||
<Projects Include="dmvcframeworkDT.dproj">
|
||||
<Dependencies/>
|
||||
</Projects>
|
||||
</ItemGroup>
|
||||
<ProjectExtensions>
|
||||
<Borland.Personality>Default.Personality.12</Borland.Personality>
|
||||
<Borland.ProjectType/>
|
||||
<BorlandProject>
|
||||
<Default.Personality/>
|
||||
</BorlandProject>
|
||||
</ProjectExtensions>
|
||||
<Target Name="loggerproRT">
|
||||
<MSBuild Projects="..\..\lib\loggerpro\packages\d110\loggerproRT.dproj"/>
|
||||
</Target>
|
||||
<Target Name="loggerproRT:Clean">
|
||||
<MSBuild Projects="..\..\lib\loggerpro\packages\d110\loggerproRT.dproj" Targets="Clean"/>
|
||||
</Target>
|
||||
<Target Name="loggerproRT:Make">
|
||||
<MSBuild Projects="..\..\lib\loggerpro\packages\d110\loggerproRT.dproj" Targets="Make"/>
|
||||
</Target>
|
||||
<Target Name="dmvcframeworkRT">
|
||||
<MSBuild Projects="dmvcframeworkRT.dproj"/>
|
||||
</Target>
|
||||
<Target Name="dmvcframeworkRT:Clean">
|
||||
<MSBuild Projects="dmvcframeworkRT.dproj" Targets="Clean"/>
|
||||
</Target>
|
||||
<Target Name="dmvcframeworkRT:Make">
|
||||
<MSBuild Projects="dmvcframeworkRT.dproj" Targets="Make"/>
|
||||
</Target>
|
||||
<Target Name="dmvcframeworkDT">
|
||||
<MSBuild Projects="dmvcframeworkDT.dproj"/>
|
||||
</Target>
|
||||
<Target Name="dmvcframeworkDT:Clean">
|
||||
<MSBuild Projects="dmvcframeworkDT.dproj" Targets="Clean"/>
|
||||
</Target>
|
||||
<Target Name="dmvcframeworkDT:Make">
|
||||
<MSBuild Projects="dmvcframeworkDT.dproj" Targets="Make"/>
|
||||
</Target>
|
||||
<Target Name="Build">
|
||||
<CallTarget Targets="loggerproRT;dmvcframeworkRT;dmvcframeworkDT"/>
|
||||
</Target>
|
||||
<Target Name="Clean">
|
||||
<CallTarget Targets="loggerproRT:Clean;dmvcframeworkRT:Clean;dmvcframeworkDT:Clean"/>
|
||||
</Target>
|
||||
<Target Name="Make">
|
||||
<CallTarget Targets="loggerproRT:Make;dmvcframeworkRT:Make;dmvcframeworkDT:Make"/>
|
||||
</Target>
|
||||
<Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
|
||||
</Project>
|
180
samples/data/activerecorddb_interbase_script.sql
Normal file
180
samples/data/activerecorddb_interbase_script.sql
Normal file
@ -0,0 +1,180 @@
|
||||
create database 'C:\DEV\dmvcframework\samples\data\ACTIVERECORDDB.IB' default character set UTF8;
|
||||
connect 'C:\DEV\dmvcframework\samples\data\ACTIVERECORDDB.IB';
|
||||
|
||||
CREATE TABLE articles (
|
||||
id integer not null,
|
||||
description varchar(100) character set utf8 NOT NULL,
|
||||
price integer NOT NULL,
|
||||
CONSTRAINT articles_pkey PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE customers (
|
||||
id integer not null,
|
||||
code varchar(20) character set utf8,
|
||||
description varchar(200) character set utf8 ,
|
||||
city varchar(200) character set utf8 ,
|
||||
rating INTEGER,
|
||||
NOTE BLOB SUB_TYPE 1,
|
||||
CONSTRAINT customers_pk PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE customers_plain (
|
||||
id integer NOT NULL,
|
||||
code varchar(20) character set utf8 ,
|
||||
description varchar(200) character set utf8 ,
|
||||
city varchar(200) character set utf8 ,
|
||||
note blob sub_type text,
|
||||
rating smallint,
|
||||
creation_time time,
|
||||
creation_date date,
|
||||
CONSTRAINT customers_plain_pk PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE customers_with_code (
|
||||
code varchar(20) character set utf8 NOT null primary key,
|
||||
description varchar(200) character set utf8 ,
|
||||
city varchar(200) character set utf8 ,
|
||||
NOTE BLOB SUB_TYPE 1,
|
||||
rating smallint
|
||||
);
|
||||
|
||||
CREATE TABLE order_details (
|
||||
id integer not null,
|
||||
id_order integer NOT NULL,
|
||||
id_article integer NOT NULL,
|
||||
unit_price numeric(18,2) NOT NULL,
|
||||
discount integer DEFAULT 0 NOT NULL ,
|
||||
quantity integer NOT NULL,
|
||||
description varchar(200) character set utf8 NOT NULL ,
|
||||
total numeric(18,2) NOT NULL,
|
||||
CONSTRAINT order_details_pkey PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE orders (
|
||||
id integer not null,
|
||||
id_customer integer NOT NULL,
|
||||
order_date date NOT NULL,
|
||||
total numeric(18,4) NOT NULL,
|
||||
CONSTRAINT orders_pkey PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE people (
|
||||
id integer not null,
|
||||
last_name varchar(100) character set utf8 NOT NULL ,
|
||||
first_name varchar(100) character set utf8 NOT NULL ,
|
||||
dob date NOT NULL,
|
||||
full_name varchar(80) character set utf8 NOT NULL ,
|
||||
is_male BOOLEAN DEFAULT TRUE NOT NULL,
|
||||
note blob sub_type 1,
|
||||
photo blob sub_type 0,
|
||||
CONSTRAINT people_pkey PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
create table phones (
|
||||
id integer not null,
|
||||
phone_number varchar(200) character set utf8 not null ,
|
||||
number_type varchar(200) character set utf8 not null ,
|
||||
dob date,
|
||||
id_person integer not null references people(id)
|
||||
);
|
||||
|
||||
CREATE TABLE nullables_test (
|
||||
f_int2 smallint ,
|
||||
f_int8 integer ,
|
||||
f_int4 integer ,
|
||||
f_string varchar(200) ,
|
||||
f_bool boolean ,
|
||||
f_date date ,
|
||||
f_time time ,
|
||||
f_datetime timestamp,
|
||||
f_float4 float,
|
||||
f_float8 DOUBLE PRECISION,
|
||||
f_currency numeric(18, 4),
|
||||
f_blob blob sub_type 0
|
||||
);
|
||||
|
||||
CREATE TABLE "customers with spaces" (
|
||||
"id with spaces" INTEGER NOT NULL,
|
||||
"code with spaces" VARCHAR(20),
|
||||
"description with spaces" VARCHAR(200),
|
||||
"city with spaces" VARCHAR(200),
|
||||
"note with spaces" BLOB SUB_TYPE 1,
|
||||
"rating with spaces" INTEGER,
|
||||
CONSTRAINT cust_with_space_pk PRIMARY KEY ("id with spaces")
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE orders ADD CONSTRAINT orders_customers_fk FOREIGN KEY (id_customer) REFERENCES customers(id) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE order_details ADD CONSTRAINT order_details_orders_fk FOREIGN KEY (id_order) REFERENCES orders(id) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
|
||||
CREATE GENERATOR SEQ_ARTICLES_ID;
|
||||
|
||||
CREATE GENERATOR SEQ_CUSTOMERS_ID;
|
||||
|
||||
CREATE GENERATOR SEQ_ORDER_DETAILS_ID;
|
||||
|
||||
CREATE GENERATOR SEQ_ORDERS_ID;
|
||||
|
||||
CREATE GENERATOR SEQ_PEOPLE_ID;
|
||||
|
||||
CREATE GENERATOR SEQ_PHONES_ID;
|
||||
|
||||
|
||||
/* Triggers only will work for SQL triggers */
|
||||
|
||||
CREATE TRIGGER ARTICLES_BI FOR ARTICLES
|
||||
ACTIVE BEFORE INSERT POSITION 0
|
||||
AS BEGIN
|
||||
IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(SEQ_ARTICLES_ID, 1);
|
||||
END
|
||||
;
|
||||
|
||||
|
||||
/* Triggers only will work for SQL triggers */
|
||||
|
||||
CREATE TRIGGER CUSTOMERS_BI FOR CUSTOMERS
|
||||
ACTIVE BEFORE INSERT POSITION 0
|
||||
AS BEGIN
|
||||
IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(SEQ_CUSTOMERS_ID, 1);
|
||||
END
|
||||
;
|
||||
|
||||
/* Triggers only will work for SQL triggers */
|
||||
|
||||
CREATE TRIGGER ORDERS_BI FOR ORDERS
|
||||
ACTIVE BEFORE INSERT POSITION 0
|
||||
AS BEGIN
|
||||
IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(SEQ_ORDERS_ID, 1);
|
||||
END
|
||||
;
|
||||
|
||||
/* Triggers only will work for SQL triggers */
|
||||
|
||||
CREATE TRIGGER ORDER_DETAILS_BI FOR ORDER_DETAILS
|
||||
ACTIVE BEFORE INSERT POSITION 0
|
||||
AS BEGIN
|
||||
IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(SEQ_ORDER_DETAILS_ID, 1);
|
||||
END
|
||||
;
|
||||
|
||||
|
||||
CREATE TRIGGER PEOPLE_BI FOR PEOPLE
|
||||
ACTIVE BEFORE INSERT POSITION 0
|
||||
AS BEGIN
|
||||
IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(SEQ_PEOPLE_ID, 1);
|
||||
END
|
||||
;
|
||||
|
||||
CREATE TRIGGER PHONES_BI FOR PHONES
|
||||
ACTIVE BEFORE INSERT POSITION 0
|
||||
AS BEGIN
|
||||
IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(SEQ_PHONES_ID, 1);
|
||||
END
|
||||
;
|
||||
|
||||
|
||||
|
||||
|
||||
|
3
samples/data/interbase_create_schema.bat
Normal file
3
samples/data/interbase_create_schema.bat
Normal file
@ -0,0 +1,3 @@
|
||||
set ISQL=C:\Program Files (x86)\Embarcadero\InterBase\bin\isql.exe
|
||||
del ACTIVERECORDDB.IB
|
||||
"%ISQL%" -user sysdba -password masterkey -input C:\DEV\dmvcframework\samples\data\activerecorddb_interbase_script.sql C:\ProgramData\Embarcadero\InterBase\gds_db\examples\database\EMPLOYEE.GDB
|
@ -30,7 +30,7 @@ uses
|
||||
FireDAC.Comp.Client,
|
||||
Vcl.ComCtrls,
|
||||
Vcl.ExtCtrls,
|
||||
MVCFramework.JSONRPC.Client;
|
||||
MVCFramework.JSONRPC.Client, Vcl.Mask;
|
||||
|
||||
type
|
||||
TMainForm = class(TForm)
|
||||
|
@ -1641,14 +1641,24 @@ end;
|
||||
function TMVCWebRequest.GetQueryParams: TDictionary<string, string>;
|
||||
var
|
||||
I: Integer;
|
||||
lRow: String;
|
||||
begin
|
||||
if not Assigned(FQueryParams) then
|
||||
begin
|
||||
FQueryParams := TDictionary<string, string>.Create;
|
||||
for I := 0 to Pred(FWebRequest.QueryFields.Count) do
|
||||
begin
|
||||
FQueryParams.Add(LowerCase(FWebRequest.QueryFields.Names[I]),
|
||||
FWebRequest.QueryFields.ValueFromIndex[I]);
|
||||
lRow := FWebRequest.QueryFields[i];
|
||||
if lRow.Contains('=') then
|
||||
begin
|
||||
FQueryParams.Add(
|
||||
LowerCase(Trim(FWebRequest.QueryFields.Names[I])),
|
||||
FWebRequest.QueryFields.ValueFromIndex[I]);
|
||||
end
|
||||
else
|
||||
begin
|
||||
FQueryParams.AddOrSetValue(LowerCase(lRow), '');
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
Result := FQueryParams;
|
||||
|
9
tasks.py
9
tasks.py
@ -12,7 +12,7 @@ from pathlib import Path
|
||||
|
||||
init()
|
||||
|
||||
DEFAULT_DELPHI_VERSION = "11"
|
||||
DEFAULT_DELPHI_VERSION = "11.1"
|
||||
|
||||
g_releases_path = "releases"
|
||||
g_output = "bin"
|
||||
@ -44,12 +44,13 @@ def build_delphi_project(
|
||||
delphi_version=DEFAULT_DELPHI_VERSION,
|
||||
):
|
||||
delphi_versions = {
|
||||
"10": {"path": "17.0", "desc": "Delphi 10 Seattle"},
|
||||
"10": {"path": "17.0", "desc": "Delphi 10 Seattle"},
|
||||
"10.1": {"path": "18.0", "desc": "Delphi 10.1 Berlin"},
|
||||
"10.2": {"path": "19.0", "desc": "Delphi 10.2 Tokyo"},
|
||||
"10.3": {"path": "20.0", "desc": "Delphi 10.3 Rio"},
|
||||
"10.4": {"path": "21.0", "desc": "Delphi 10.4 Sydney"},
|
||||
"11": {"path": "22.0", "desc": "Delphi 11 Alexandria"}
|
||||
"11": {"path": "22.0", "desc": "Delphi 11 Alexandria"},
|
||||
"11.1": {"path": "22.0", "desc": "Delphi 11.1 Alexandria"},
|
||||
}
|
||||
|
||||
assert delphi_version in delphi_versions, (
|
||||
@ -306,7 +307,7 @@ def tests(ctx, delphi_version=DEFAULT_DELPHI_VERSION):
|
||||
import subprocess
|
||||
|
||||
print("\nExecuting tests...")
|
||||
subprocess.Popen([r"unittests\general\TestServer\bin\TestServer.exe"])
|
||||
subprocess.Popen([r"unittests\general\TestServer\bin\TestServer.exe"], shell=True)
|
||||
r = subprocess.run([r"unittests\general\Several\bin\DMVCFrameworkTests.exe"])
|
||||
if r.returncode != 0:
|
||||
return Exit("Compilation failed: \n" + str(r.stdout))
|
||||
|
27
tools/entitygenerator/UtilsU.pas
Normal file
27
tools/entitygenerator/UtilsU.pas
Normal file
@ -0,0 +1,27 @@
|
||||
unit UtilsU;
|
||||
|
||||
interface
|
||||
|
||||
|
||||
function IsReservedKeyword(const Value: String): Boolean;
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
System.SysUtils;
|
||||
|
||||
const PASCAL_KEYWORDS = ';and;array;as;as;asm;begin;break;case;class;class;const;' +
|
||||
'constref;constref;constructor;continue;destructor;dispose;dispose;div;do;downto;' +
|
||||
'else;end;except;except;exit;exit;exports;false;file;finalization;finally;for;function;' +
|
||||
'goto;if;implementation;in;inherited;initialization;inline;interface;is;label;' +
|
||||
'library;mod;new;nil;not;object;of;on;on;operator;or;out;packed;procedure;program;' +
|
||||
'property;raise;record;reference;repeat;self;set;shl;shr;string;then;threadvar;to;' +
|
||||
'true;try;type;unit;until;uses;var;while;with;xor;';
|
||||
|
||||
function IsReservedKeyword(const Value: String): Boolean;
|
||||
begin
|
||||
Result := PASCAL_KEYWORDS.Contains(';' + Value.ToLower + ';');
|
||||
end;
|
||||
|
||||
end.
|
@ -1,7 +1,7 @@
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{0582DE6A-D716-46D3-8CBD-84AD73A4B536}</ProjectGuid>
|
||||
<ProjectVersion>19.3</ProjectVersion>
|
||||
<ProjectVersion>19.4</ProjectVersion>
|
||||
<FrameworkType>VCL</FrameworkType>
|
||||
<Base>True</Base>
|
||||
<Config Condition="'$(Config)'==''">TESTINSIGHT</Config>
|
||||
@ -321,43 +321,13 @@
|
||||
</Excluded_Packages>
|
||||
</Delphi.Personality>
|
||||
<Deployment Version="3">
|
||||
<DeployFile LocalName="Win32\Debug\DMVCFrameworkTests.exe" Configuration="Debug" Class="ProjectOutput">
|
||||
<Platform Name="Win32">
|
||||
<RemoteName>DMVCFrameworkTests.exe</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="bin\DMVCFrameworkTests.rsm" Configuration="GUI" Class="DebugSymbols">
|
||||
<Platform Name="Win32">
|
||||
<RemoteName>DMVCFrameworkTests.rsm</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="bin\DMVCFrameworkTests.rsm" Configuration="TESTINSIGHT" Class="DebugSymbols">
|
||||
<Platform Name="Win32">
|
||||
<RemoteName>DMVCFrameworkTests.rsm</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="Win32\Debug\DMVCFrameworkTests.rsm" Configuration="Debug" Class="DebugSymbols">
|
||||
<Platform Name="Win32">
|
||||
<RemoteName>DMVCFrameworkTests.rsm</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||
<Platform Name="OSX32">
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="$(BDS)\Redist\iossim32\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||
<Platform Name="iOSSimulator">
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="bin\DMVCFrameworkTests.rsm" Configuration="CONSOLE" Class="DebugSymbols">
|
||||
<Platform Name="Win32">
|
||||
<RemoteName>DMVCFrameworkTests.rsm</RemoteName>
|
||||
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||
<Platform Name="OSX32">
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
@ -379,6 +349,36 @@
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="bin\DMVCFrameworkTests.rsm" Configuration="CONSOLE" Class="DebugSymbols">
|
||||
<Platform Name="Win32">
|
||||
<RemoteName>DMVCFrameworkTests.rsm</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="bin\DMVCFrameworkTests.rsm" Configuration="GUI" Class="DebugSymbols">
|
||||
<Platform Name="Win32">
|
||||
<RemoteName>DMVCFrameworkTests.rsm</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="bin\DMVCFrameworkTests.rsm" Configuration="TESTINSIGHT" Class="DebugSymbols">
|
||||
<Platform Name="Win32">
|
||||
<RemoteName>DMVCFrameworkTests.rsm</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="Win32\Debug\DMVCFrameworkTests.exe" Configuration="Debug" Class="ProjectOutput">
|
||||
<Platform Name="Win32">
|
||||
<RemoteName>DMVCFrameworkTests.exe</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="Win32\Debug\DMVCFrameworkTests.rsm" Configuration="Debug" Class="DebugSymbols">
|
||||
<Platform Name="Win32">
|
||||
<RemoteName>DMVCFrameworkTests.rsm</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployClass Name="AdditionalDebugSymbols">
|
||||
<Platform Name="OSX32">
|
||||
<Operation>1</Operation>
|
||||
@ -1398,18 +1398,18 @@
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="iOSDevice" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSXARM64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSXARM64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
|
||||
</Deployment>
|
||||
<Platforms>
|
||||
<Platform value="Win32">True</Platform>
|
||||
|
@ -384,105 +384,6 @@ begin
|
||||
FConfig.Free;
|
||||
end;
|
||||
|
||||
// procedure TTestRouting.TestClassNameMethodNameRouting;
|
||||
// var
|
||||
// Params: TMVCRequestParamsTable;
|
||||
// ResponseContentType: string;
|
||||
// ResponseContentEncoding: string;
|
||||
// begin
|
||||
// Params := TMVCRequestParamsTable.Create;
|
||||
// try
|
||||
// Assert.isTrue(Router.ExecuteRouting('/TNotSoSimpleController/Method1', httpGET, 'text/plain', Controllers,
|
||||
// Params, ResponseContentType, ResponseContentEncoding));
|
||||
// Assert.areEqual(0, Params.Count);
|
||||
// Assert.areEqual('TSimpleController', Router.MVCControllerClass.ClassName);
|
||||
// Assert.areEqual('Index', Router.MethodToCall.Name);
|
||||
// finally
|
||||
// Params.Free;
|
||||
// end;
|
||||
// end;
|
||||
|
||||
// procedure TTestMappers.TestCheckMapperSerializeAsStringIsEmptyStrIfObjIsNil;
|
||||
// var
|
||||
// Obj: TMyStreamObject;
|
||||
// JSONObj: TJSONObject;
|
||||
// DesObj: TMyStreamObject;
|
||||
// begin
|
||||
// // ARRANGE
|
||||
// Obj := TMyStreamObject.Create;
|
||||
// try
|
||||
// Obj.PropStream := nil;
|
||||
// Obj.Prop8Stream := nil;
|
||||
// // ACT
|
||||
// JSONObj := TSystemJSON.ObjectToJSONObject(Obj);
|
||||
// try
|
||||
// GetDefaultSerializer.de
|
||||
// DesObj := TSystemJSON.JSONObjectToObject<TMyStreamObject>(JSONObj);
|
||||
// try
|
||||
// // ASSERT
|
||||
// Assert.isTrue(TStringStream(DesObj.PropStream).DataString.IsEmpty);
|
||||
// Assert.isTrue(TStringStream(DesObj.Prop8Stream).DataString.IsEmpty);
|
||||
// finally
|
||||
// DesObj.Free;
|
||||
// end;
|
||||
// finally
|
||||
// JSONObj.Free;
|
||||
// end;
|
||||
// finally
|
||||
// Obj.Free;
|
||||
// end;
|
||||
// end;
|
||||
|
||||
// procedure TTestMappers.TestComplexObjectToJSONObjectAndBack;
|
||||
// var
|
||||
// Obj: TMyComplexObject;
|
||||
// JObj: TJSONObject;
|
||||
// Obj2: TMyComplexObject;
|
||||
// begin
|
||||
// Obj := GetMyComplexObject;
|
||||
// try
|
||||
// JObj := Mapper.ObjectToJSONObject(Obj);
|
||||
// try
|
||||
// Obj2 := Mapper.JSONObjectToObject<TMyComplexObject>(JObj);
|
||||
// try
|
||||
// Assert.isTrue(Obj.Equals(Obj2));
|
||||
// finally
|
||||
// Obj2.Free;
|
||||
// end;
|
||||
// finally
|
||||
// JObj.Free;
|
||||
// end;
|
||||
// finally
|
||||
// Obj.Free;
|
||||
// end;
|
||||
// end;
|
||||
//
|
||||
// procedure TTestMappers.TestComplexObjectToJSONObjectAndBackWithNilReference;
|
||||
// var
|
||||
// Obj: TMyComplexObject;
|
||||
// JObj: TJSONObject;
|
||||
// Obj2: TMyComplexObject;
|
||||
// begin
|
||||
// Obj := GetMyComplexObject;
|
||||
// try
|
||||
// Obj.ChildObject.Free;
|
||||
// Obj.ChildObject := nil;
|
||||
// JObj := Mapper.ObjectToJSONObject(Obj);
|
||||
// try
|
||||
// Obj2 := Mapper.JSONObjectToObject<TMyComplexObject>(JObj);
|
||||
// try
|
||||
// Assert.isTrue(Obj.Equals(Obj2));
|
||||
// finally
|
||||
// Obj2.Free;
|
||||
// end;
|
||||
// finally
|
||||
// JObj.Free;
|
||||
// end;
|
||||
// finally
|
||||
// Obj.Free;
|
||||
// end;
|
||||
// end;
|
||||
|
||||
procedure TTestRouting.TestComplexRoutings;
|
||||
var
|
||||
Params: TMVCRequestParamsTable;
|
||||
|
@ -289,6 +289,9 @@ type
|
||||
[Category('renders')]
|
||||
procedure TestIssue406;
|
||||
|
||||
[Test]
|
||||
procedure TestIssue542;
|
||||
|
||||
end;
|
||||
|
||||
[TestFixture]
|
||||
@ -1285,6 +1288,79 @@ begin
|
||||
Assert.areEqual('{"message":"The Message"}', r.Content, r.Content);
|
||||
end;
|
||||
|
||||
procedure TServerTest.TestIssue542;
|
||||
var
|
||||
lRes: IMVCRESTResponse;
|
||||
lJSON: TJsonObject;
|
||||
begin
|
||||
lRes := RESTClient.Get('/issues/542?par1&par2');
|
||||
lJSON := StrToJSONObject(lRes.Content);
|
||||
try
|
||||
Assert.AreEqual('par1=,par2=', lJSON.S['QueryStringParams_DelimitedText']);
|
||||
Assert.IsTrue(lJSON.Types['QueryStringParam_par1'] = jdtString);
|
||||
Assert.AreEqual('', lJSON.S['QueryStringParam_par1']);
|
||||
Assert.IsTrue(lJSON.Types['QueryStringParam_par2'] = jdtString);
|
||||
Assert.AreEqual('', lJSON.S['QueryStringParam_par2']);
|
||||
|
||||
Assert.AreEqual(2, lJSON.I['QueryParams_Count']);
|
||||
Assert.AreEqual('', lJSON.S['QueryParams_par1']);
|
||||
Assert.AreEqual('', lJSON.S['QueryParams_par2']);
|
||||
finally
|
||||
lJSON.Free;
|
||||
end;
|
||||
|
||||
lRes := RESTClient.Get('/issues/542?par1=123&par2');
|
||||
lJSON := StrToJSONObject(lRes.Content);
|
||||
try
|
||||
Assert.AreEqual('par1=123,par2=', lJSON.S['QueryStringParams_DelimitedText']);
|
||||
Assert.IsTrue(lJSON.Types['QueryStringParam_par1'] = jdtString);
|
||||
Assert.AreEqual('123', lJSON.S['QueryStringParam_par1']);
|
||||
Assert.IsTrue(lJSON.Types['QueryStringParam_par2'] = jdtString);
|
||||
Assert.AreEqual('', lJSON.S['QueryStringParam_par2']);
|
||||
|
||||
Assert.AreEqual(2, lJSON.I['QueryParams_Count']);
|
||||
Assert.AreEqual('123', lJSON.S['QueryParams_par1']);
|
||||
Assert.AreEqual('', lJSON.S['QueryParams_par2']);
|
||||
|
||||
finally
|
||||
lJSON.Free;
|
||||
end;
|
||||
|
||||
lRes := RESTClient.Get('/issues/542?par1=123&par2=234');
|
||||
lJSON := StrToJSONObject(lRes.Content);
|
||||
try
|
||||
Assert.AreEqual('par1=123,par2=234', lJSON.S['QueryStringParams_DelimitedText']);
|
||||
Assert.IsTrue(lJSON.Types['QueryStringParam_par1'] = jdtString);
|
||||
Assert.AreEqual('123', lJSON.S['QueryStringParam_par1']);
|
||||
Assert.IsTrue(lJSON.Types['QueryStringParam_par2'] = jdtString);
|
||||
Assert.AreEqual('234', lJSON.S['QueryStringParam_par2']);
|
||||
|
||||
Assert.AreEqual(2, lJSON.I['QueryParams_Count']);
|
||||
Assert.AreEqual('123', lJSON.S['QueryParams_par1']);
|
||||
Assert.AreEqual('234', lJSON.S['QueryParams_par2']);
|
||||
|
||||
finally
|
||||
lJSON.Free;
|
||||
end;
|
||||
|
||||
lRes := RESTClient.Get('/issues/542?par1&par2=234');
|
||||
lJSON := StrToJSONObject(lRes.Content);
|
||||
try
|
||||
Assert.AreEqual('par1=,par2=234', lJSON.S['QueryStringParams_DelimitedText']);
|
||||
Assert.IsTrue(lJSON.Types['QueryStringParam_par1'] = jdtString);
|
||||
Assert.AreEqual('', lJSON.S['QueryStringParam_par1']);
|
||||
Assert.IsTrue(lJSON.Types['QueryStringParam_par2'] = jdtString);
|
||||
Assert.AreEqual('234', lJSON.S['QueryStringParam_par2']);
|
||||
|
||||
Assert.AreEqual(2, lJSON.I['QueryParams_Count']);
|
||||
Assert.AreEqual('', lJSON.S['QueryParams_par1']);
|
||||
Assert.AreEqual('234', lJSON.S['QueryParams_par2']);
|
||||
|
||||
finally
|
||||
lJSON.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TServerTest.TestMiddlewareHandler;
|
||||
var
|
||||
r: IMVCRESTResponse;
|
||||
@ -2277,7 +2353,7 @@ begin
|
||||
lValues[3] := '"daniele teti"';
|
||||
lValues[4] := '"daniele" "teti"';
|
||||
lValues[5] := '"daniele" "teti"!';
|
||||
lValues[6] := ' _\"daniele" "teti"!_ ';
|
||||
lValues[6] := ' _\"daniele" "teti"!_';
|
||||
|
||||
for S in lValues do
|
||||
begin
|
||||
@ -2285,31 +2361,6 @@ begin
|
||||
Assert.areEqual(HTTP_STATUS.OK, res.StatusCode, 'Cannot route when param is [' + S + ']');
|
||||
Assert.areEqual('*' + S + '*', res.Content);
|
||||
end;
|
||||
|
||||
// res := RESTClient.doGET('/typed/string1/daniele', []);
|
||||
// Assert.isTrue(res.ResponseCode = HTTP_STATUS.OK, 'Cannot route');
|
||||
// Assert.areEqual('daniele modified from server', res.BodyAsString);
|
||||
//
|
||||
// res := RESTClient.doGET('/typed/string1/dan''iele', []);
|
||||
// Assert.isTrue(res.ResponseCode = HTTP_STATUS.OK, 'Cannot route');
|
||||
// Assert.areEqual('dan''iele modified from server', res.BodyAsString);
|
||||
//
|
||||
// res := RESTClient.doGET('/typed/string1/"the value"', []);
|
||||
// Assert.isTrue(res.ResponseCode = HTTP_STATUS.OK, 'Cannot route');
|
||||
// Assert.areEqual('"the value" modified from server', res.BodyAsString);
|
||||
//
|
||||
// res := RESTClient.doGET('/typed/string1/"the:value"', []);
|
||||
// Assert.isTrue(res.ResponseCode = HTTP_STATUS.OK, 'Cannot route');
|
||||
// Assert.areEqual('"the value" modified from server', res.BodyAsString);
|
||||
//
|
||||
// res := RESTClient.doGET('/typed/string1/"the:value!"', []);
|
||||
// Assert.isTrue(res.ResponseCode = HTTP_STATUS.OK, 'Cannot route');
|
||||
// Assert.areEqual('"the value" modified from server', res.BodyAsString);
|
||||
//
|
||||
// res := RESTClient.doGET('/typed/string1/"the:value!?"', []);
|
||||
// Assert.isTrue(res.ResponseCode = HTTP_STATUS.OK, 'Cannot route');
|
||||
// Assert.areEqual('"the value" modified from server', res.BodyAsString);
|
||||
|
||||
end;
|
||||
|
||||
procedure TServerTest.TestTypedTGuid1;
|
||||
|
@ -7,7 +7,7 @@
|
||||
<TargetedPlatforms>129</TargetedPlatforms>
|
||||
<AppType>Console</AppType>
|
||||
<FrameworkType>None</FrameworkType>
|
||||
<ProjectVersion>19.3</ProjectVersion>
|
||||
<ProjectVersion>19.4</ProjectVersion>
|
||||
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
||||
@ -152,16 +152,8 @@
|
||||
<Platform value="Win64">False</Platform>
|
||||
</Platforms>
|
||||
<Deployment Version="3">
|
||||
<DeployFile LocalName="bin\www\static.html" Configuration="CI" Class="File">
|
||||
<Platform Name="Linux64">
|
||||
<RemoteDir>.\www</RemoteDir>
|
||||
<RemoteName>static.html</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="bin\customers.json" Configuration="CI" Class="File">
|
||||
<Platform Name="Linux64">
|
||||
<RemoteName>customers.json</RemoteName>
|
||||
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||
<Platform Name="iOSSimulator">
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
@ -175,8 +167,9 @@
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||
<Platform Name="iOSSimulator">
|
||||
<DeployFile LocalName="bin\customers.json" Configuration="CI" Class="File">
|
||||
<Platform Name="Linux64">
|
||||
<RemoteName>customers.json</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
@ -186,12 +179,6 @@
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="TestServer" Configuration="CI" Class="ProjectOutput">
|
||||
<Platform Name="Linux64">
|
||||
<RemoteName>TestServer</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="bin\TestServer.exe" Configuration="CI" Class="ProjectOutput">
|
||||
<Platform Name="Win32">
|
||||
<RemoteName>TestServer.exe</RemoteName>
|
||||
@ -205,6 +192,19 @@
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="bin\www\static.html" Configuration="CI" Class="File">
|
||||
<Platform Name="Linux64">
|
||||
<RemoteDir>.\www</RemoteDir>
|
||||
<RemoteName>static.html</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="TestServer" Configuration="CI" Class="ProjectOutput">
|
||||
<Platform Name="Linux64">
|
||||
<RemoteName>TestServer</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployClass Name="AdditionalDebugSymbols">
|
||||
<Platform Name="OSX32">
|
||||
<Operation>1</Operation>
|
||||
@ -1184,17 +1184,17 @@
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSXARM64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSXARM64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
|
||||
</Deployment>
|
||||
</BorlandProject>
|
||||
<ProjectFileVersion>12</ProjectFileVersion>
|
||||
|
@ -264,6 +264,10 @@ type
|
||||
[MVCPath('/issue492/($stringvalue)')]
|
||||
procedure GetIssue492;
|
||||
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCPath('/issue542/($stringvalue)')]
|
||||
procedure GetIssue542;
|
||||
|
||||
{ injectable parameters }
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCPath('/injectable10')]
|
||||
@ -330,6 +334,10 @@ type
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCPath('/issues/526')]
|
||||
procedure TestIssue526;
|
||||
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCPath('/issues/542')]
|
||||
procedure TestIssue542;
|
||||
end;
|
||||
|
||||
[MVCPath('/private')]
|
||||
@ -522,6 +530,11 @@ begin
|
||||
// do nothing
|
||||
end;
|
||||
|
||||
procedure TTestServerController.GetIssue542;
|
||||
begin
|
||||
// do nothing
|
||||
end;
|
||||
|
||||
procedure TTestServerController.GetProject;
|
||||
begin
|
||||
// do nothing
|
||||
@ -805,6 +818,24 @@ begin
|
||||
RenderResponseStream;
|
||||
end;
|
||||
|
||||
procedure TTestServerController.TestIssue542;
|
||||
var
|
||||
lJSON: TJDOJSONObject;
|
||||
begin
|
||||
lJSON := TJDOJSONObject.Create;
|
||||
try
|
||||
lJSON.S['QueryStringParams_DelimitedText'] := Context.Request.QueryStringParams.DelimitedText;
|
||||
lJSON.S['QueryStringParam_par1'] := Context.Request.QueryStringParam('par1');
|
||||
lJSON.S['QueryStringParam_par2'] := Context.Request.QueryStringParam('par2');
|
||||
lJSON.I['QueryParams_Count'] := Context.Request.QueryParams.Count;
|
||||
lJSON.S['QueryParams_par1'] := Context.Request.QueryParams['par1'];
|
||||
lJSON.S['QueryParams_par2'] := Context.Request.QueryParams['par2'];
|
||||
Render(lJSON, False);
|
||||
finally
|
||||
lJSON.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TTestServerController.TestJSONArrayAsObjectList;
|
||||
var
|
||||
lUsers: TObjectList<TCustomer>;
|
||||
|
Loading…
Reference in New Issue
Block a user