#1 2026-07-07 06:31:30

DirkH
Member
Registered: 2025-09-26
Posts: 17

OpenApi Generator: Wrong Type (packed record) in array constructor

Hi and thanks for the great work.

I have the following Json REST Spec https://testdrive.polarion.com/polarion … nrest.json.
The mopenapi generator creates.

function TPolarionClient.GetAllDocuments(const Fields: TPolarionSparseFields;
  PageSize: integer; PageNumber: integer; const Include: RawUtf8;
  const Query: RawUtf8; const Sort: RawUtf8;
  const Revision: RawUtf8): TPolarionDocumentsListGetResponse;
begin
  fClient.Request('GET', '/all/documents', [], [
    'page[size]', PageSize,
    'page[number]', PageNumber,
    'fields', Fields,
    'include', Include,
    'query', Query,
    'sort', Sort,
    'revision', Revision], [],
    result, TypeInfo(TPolarionDocumentsListGetResponse));
end; 

The compiler says we are not allowed to put a (packed) record into an array constructor sad
polarion.client.pas(7835,15) Error: Wrong type "TPolarionSparseFields" in array constructor

Thanks so much for having a look into it.

Offline

#2 2026-07-07 07:35:46

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 15,534
Website

Re: OpenApi Generator: Wrong Type (packed record) in array constructor

You are right: "deepObject" URI parameters are not supported yet.

(What a complex format OpenAPI is!)

I will look into it.

Offline

#3 2026-07-07 12:05:00

DirkH
Member
Registered: 2025-09-26
Posts: 17

Re: OpenApi Generator: Wrong Type (packed record) in array constructor

I think there is an additional deduplication error.

"usersSingleGetResponse" in JSON has data.attributes.name. But in the DTO.pas file data "points" to a different attributes record, that has no "name" property (i guess it is pagesSingleGetResponse.data in json and not usersSingleGetResponse.data ) .

Offline

#4 2026-07-07 12:31:17

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 15,534
Website

Re: OpenApi Generator: Wrong Type (packed record) in array constructor

So this is not correct?

  TDtoApi2761 = packed record
    _Type: TEnumApi8;
    Id: RawUtf8;
    Revision: RawUtf8;
    Attributes: TDtoApi2764;
    Relationships: TDtoApi2779;
    Links: TDtoApi995;
    Meta: TDtoApi1354;
  end;

  // from #/components/schemas/usersSingleGetResponse
  TUsersSingleGetResponse = packed record
    Data: TDtoApi2761;
    // Related entities might be returned, see <a href="https://docs.sw.siemens.com/en-US/doc/230235217/PL20250606201928474.polarion_help_sc.xid2134849/xid2134871"
    // target="_blank">REST API User Guide</a>.
    Included: variant;
    Links: TDtoApi995;
  end;
  PUsersSingleGetResponse = ^TUsersSingleGetResponse;

Offline

#5 2026-07-07 13:06:07

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 15,534
Website

Re: OpenApi Generator: Wrong Type (packed record) in array constructor

Anyway, please try with
https://github.com/synopse/mORMot2/commit/fe1370e77

It should now at least compile.
Maybe there are still some issues.

Offline

#6 2026-07-07 21:16:50

DirkH
Member
Registered: 2025-09-26
Posts: 17

Re: OpenApi Generator: Wrong Type (packed record) in array constructor

I tried with https://github.com/synopse/mORMot2/commit/fe1370e77
it complies and except for the case mentioned before it seems to work.

one cannot answer the question if the code snippet is correct as one would need to see the content of TDtoApi2764

I draw a small and simplified uml which hopefully shows that the issue becomes apparent one step below the Data record.

https://github.com/D-H-R/various/blob/m … sponse.png

As I'm not sure if the numbers stay constant I also added the generated files: https://github.com/D-H-R/various/tree/m … _generator

Last edited by DirkH (2026-07-07 21:31:29)

Offline

#7 Today 11:49:33

DirkH
Member
Registered: 2025-09-26
Posts: 17

Re: OpenApi Generator: Wrong Type (packed record) in array constructor

I can confirm it is the deduplication, which would also need to check against the actual types / followed records and not only the names (as far as I understand) of the current record.

This "Hotfix" removes the deduplication completely and "fixes" the  issue shown in the previous post.
https://github.com/synopse/mORMot2/comm … a17d1cb762

Offline

#8 Today 14:24:49

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 15,534
Website

Re: OpenApi Generator: Wrong Type (packed record) in array constructor

The problem is that the DTO generated is much bigger.
More than 3 times bigger.
I guess we could do better...

Offline

#9 Today 16:01:51

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 15,534
Website

Re: OpenApi Generator: Wrong Type (packed record) in array constructor

The main issue come from the generator itself, when those actual types were generated inlined, and not as reference or the original Java class.
sad

Offline

Board footer

Powered by FluxBB