DelphiMVCFramework 3.0.0 (helium) - Breaking Changes
DelphiMVCFramework 3.0.0 (helium) - Breaking Changes
- XE6 and previous versions are not more supported.
RenderListAsProperty<T>
has been removed from TMVCController. You can set such kind of specialized serializations in your custom base controller.RenderJSONArrayAsProperty
has been removed from TMVCController. You can set such kind of specialized serializations in your custom base controller.Render
has been removed from TMVCController (was deprecated).Render(TJSONValue)
has been removed from TMVCController (use Render(TObject)).- Trying to deserialize a
TJSONNull
the target instance will not be freed anymore (consistency with serialize). Context.Request.BodyAsJSONObject
dosen’t exist any more. Use BodyAsor the following pattern to migrate:
JSON := TJSONObject.ParseJSONValue(Context.Request.Body) as TJSONObject;
try
if not Assigned(JSON) then
raise EMVCException.Create('Invalid JSON');
// do something here
finally
JSON.Free;
end;
TMVCConfigKey
moved to unitMVCFramework.Commons
.TMVCMimeType
was renamed toTMVCMediaType
.TMVCController.Render;
no parameter method do not exist anymore. If the return is a ResponseStream, use theRenderResponseStream;
.TMVCController.PushJSONToView;
was renamed toPushToView
and Removed SystemJSON dependency, use the ToJSON method if necessary.- There is no more a default view engine for Server Side Views (before 3.0 there was mustache).
- Mustache engine is no more the only view engine available. Now you can implement all the view engines you need (check the serversideviewsprimer).
- On Linux there is no built-in available view engine available. In other words, using only the built-in classes, you cannot use server side views on linux (dmustache is not compatible on linux).
- HTTP File Upload doesn’t work on Linux because of a bug in Delphi 10.2 (https://quality.embarcadero.com/browse/RSP-17216).
[MapperJSONNaming(TJSONNameCase.JSONNameLowerCase)]
now must be changed in[MVCNameCase(ncLowerCase)]
[MapperJSONNaming(TJSONNameCase.JSONNameUpperCase)]
now must be changed in[MVCNameCase(ncUpperCase)]
TRESTClient
Every reference to TJSON* has been removed from the TRESTClient public interface. To port the existing code, you have to include MVCFramework.RESTClient.SystemJSONUtils
and change your code as following:
Before
lMyJSONObject := Response.BodyAsJsonObject.Clone as TJSONObject;
After
delphi
lMyJSONObject := TSystemJSON.BodyAsJsonObject(Response) as TJSONObject;
try
//use the object
finally
lMyJSONObject.Free;
end;
The memory allocated for the TJSONValue descendant (e.g. TJSONObject, TJSONArray and so on) is no more managed by the TRESTClient itself but must be feed by the calling code.
-
DelphiStompClient has been removed from the core. The following method is no more available in TMVCController.
function GetNewStompClient(const AClientId: string = ''): IStompClient;
-
TMVCConfigKey.ISAPIPath
has been substituted withTMVCConfigKey.PathPrefix
and now is applicated to all kind of projects (not only ISAPI); -
MapperSerializeAsString
attribute is nowMVCSerializeAsString
-
ContentCharset
is no more available (everywhere). You have to properly set ContentType. To do that is available the functionCreateContentType
. -
Removed
LogEx
andLogException
. UseLog.ErrorFmt
instead. -
PushObjectToView
has been deprecated. UseViewData
property; -
PushDataSetToView
has been deprecated. UseViewDataSet
property; -
ViewModels
has been renamed inViewModelList
; -
ViewDataSets
has been renamed inViewDatasetList
;
Comments
comments powered by Disqus