You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@syncope.apache.org by "Miroslav.Capkovic" <mi...@gmail.com> on 2020/07/16 10:16:44 UTC
Generatinmg syncope rest client by OPENAPI/swagger from openapi.json
- PolicyTO model is missing in generated code
Hi,
I have problems with generating rest api clients from
/syncope/rest/openapi.json as through swager as throuh openapi for syncope.
Both technologies has problem with the following:
- duplicate (version 2.1.7-SNAPSHOT) parmeter remediationKey or unsued
key (version 2.1.6) on service endpoint /remediations (can be repaired)
- missing schema model PolicyTO , that leads to impossibility to
generate client (openapi) and leads to incorrectly generated classess
(swagger) (seems tha parent of AccountPolicyTO should be PolictyTO but
its is object)
A im not sure if the problem is really syncope related or it is related
to openapi/swagger tools.
Both i have used for generating python swagger_client. (seems be that
there is missing dependecy between AccounPolicyTO and PolicyTO but i'm
not sure )
path to reproduce with swagger - generates code but code is not valid
and ends with error message missing PolicyTO object in AccountPolicyTO
object:
-- snippet of generated python code --
...
class AccountPolicyTO(object):
...
code generates the error code:
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 668, in _load_unlocked
File "<frozen importlib._bootstrap>", line 638, in
_load_backward_compatible
File
"/opt/venv/lib/python3.7/site-packages/swagger_client-1.0.0-py3.7.egg/swagger_client/models/account_policy_to.py",
line 19, in <module>
File
"/opt/venv/lib/python3.7/site-packages/swagger_client-1.0.0-py3.7.egg/swagger_client/models/account_policy_to.py",
line 42, in AccountPolicyTO
*NameError: name 'PolicyTO' is not defined*
path to reproduce with openapi :
./openapi-generator-cli generate -g python -i
http://idm:8080/syncope/rest/openapi.json -o out --skip-validate-sp
generates error message(code is not generated)
....
Exception in thread "main" java.lang.RuntimeException: *Could not
process model 'PolicyTO'.*Please make sure that your schema is correct!
at
org.openapitools.codegen.DefaultGenerator.generateModels(DefaultGenerator.java:496)
at
org.openapitools.codegen.DefaultGenerator.generate(DefaultGenerator.java:1005)
at org.openapitools.codegen.cmd.Generate.execute(Generate.java:431)
at
org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
at
org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:61)
Caused by: java.lang.RuntimeException: Stack overflow hit when looking
for PolicyTO an infinite loop starting and ending at PullPolicyTO was seen
at
org.openapitools.codegen.DefaultCodegen.getAllOfDescendants(DefaultCodegen.java:2670)
at
org.openapitools.codegen.DefaultCodegen.createDiscriminator(DefaultCodegen.java:2722)
at
org.openapitools.codegen.DefaultCodegen.fromModel(DefaultCodegen.java:2152)
at
org.openapitools.codegen.DefaultGenerator.processModels(DefaultGenerator.java:1289)
at
org.openapitools.codegen.DefaultGenerator.generateModels(DefaultGenerator.java:491)
in swagger editor/openapi code gen generate python client for rest api
and test code
Thank U for your help.
Regards, Miro.
Re: Generatinmg syncope rest client by OPENAPI/swagger from
openapi.json - PolicyTO model is missing in generated code
Posted by Francesco Chicchiriccò <il...@apache.org>.
On 16/07/20 12:16, Miroslav.Capkovic wrote:
> Hi,
>
> I have problems with generating rest api clients from
> /syncope/rest/openapi.json as through swager as throuh openapi for syncope.
>
>
> Both technologies has problem with the following:
>
>
> - duplicate (version 2.1.7-SNAPSHOT) parmeter remediationKey or unsued
> key (version 2.1.6) on service endpoint /remediations (can be repaired)
>
> - missing schema model PolicyTO , that leads to impossibility to
> generate client (openapi) and leads to incorrectly generated classess
> (swagger) (seems tha parent of AccountPolicyTO should be PolictyTO but
> its is object)
>
>
> A im not sure if the problem is really syncope related or it is related
> to openapi/swagger tools.
>
>
> Both i have used for generating python swagger_client. (seems be that
> there is missing dependecy between AccounPolicyTO and PolicyTO but i'm
> not sure )
>
> path to reproduce with swagger - generates code but code is not valid and ends with error message missing PolicyTO object in AccountPolicyTO object:
>
> -- snippet of generated python code --
>
> ...
>
> class AccountPolicyTO(object):
> ...
>
> code generates the error code:
>
>
> File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
> File "<frozen importlib._bootstrap>", line 668, in _load_unlocked
> File "<frozen importlib._bootstrap>", line 638, in _load_backward_compatible
> File "/opt/venv/lib/python3.7/site-packages/swagger_client-1.0.0-py3.7.egg/swagger_client/models/account_policy_to.py", line 19, in <module>
> File "/opt/venv/lib/python3.7/site-packages/swagger_client-1.0.0-py3.7.egg/swagger_client/models/account_policy_to.py", line 42, in AccountPolicyTO
> *NameError: name 'PolicyTO' is not defined*
>
>
>
> path to reproduce with openapi :
>
> ./openapi-generator-cli generate -g python -i http://idm:8080/syncope/rest/openapi.json -o out --skip-validate-sp
>
> generates error message(code is not generated)
>
> ....
>
> Exception in thread "main" java.lang.RuntimeException: *Could not process model 'PolicyTO'.*Please make sure that your schema is correct!
> at org.openapitools.codegen.DefaultGenerator.generateModels(DefaultGenerator.java:496)
> at org.openapitools.codegen.DefaultGenerator.generate(DefaultGenerator.java:1005)
> at org.openapitools.codegen.cmd.Generate.execute(Generate.java:431)
> at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
> at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:61)
> Caused by: java.lang.RuntimeException: Stack overflow hit when looking for PolicyTO an infinite loop starting and ending at PullPolicyTO was seen
> at org.openapitools.codegen.DefaultCodegen.getAllOfDescendants(DefaultCodegen.java:2670)
> at org.openapitools.codegen.DefaultCodegen.createDiscriminator(DefaultCodegen.java:2722)
> at org.openapitools.codegen.DefaultCodegen.fromModel(DefaultCodegen.java:2152)
> at org.openapitools.codegen.DefaultGenerator.processModels(DefaultGenerator.java:1289)
> at org.openapitools.codegen.DefaultGenerator.generateModels(DefaultGenerator.java:491)
>
>
> in swagger editor/openapi code gen generate python client for rest api
> and test code
Hi Miro,
thanks for reporting the issue about duplicated remediationKey I have just fixed that in
https://github.com/apache/syncope/commit/66927e35e93e3823720c5bab23180e870b7da726
it should be ok now.
Regarding PolicyTO and children (as AccountPolicyTO, PasswordPolicyTO, PullPolicyTO and PushPolicyTO) I think the real issue is that the related REST service is heavily using Java generics: see
https://github.com/apache/syncope/blob/2_1_X/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/PolicyService.java
and I am not sure how this could be better handled in OpenAPI.
I have generated the Python client via http://editor.swagger.io/ and run
python setup.py build
that went out fine, but I don't know how to move forward to check if the client is actually working or not; can you provide some help?
Regards.
--
Francesco Chicchiriccò
Tirasa - Open Source Excellence
http://www.tirasa.net/
Member at The Apache Software Foundation
Syncope, Cocoon, Olingo, CXF, OpenJPA, PonyMail
http://home.apache.org/~ilgrosso/