Open blaghed opened 4 weeks ago
@blaghed
This can be fixed by a small change in AbstractJavaCodeGen.java
protected int constructorWithAllArgsMaxArguments=254;
protected boolean isConstructorWithAllArgsAllowed(CodegenModel codegenModel) {
return (this.generateConstructorWithAllArgs &&
(!codegenModel.vars.isEmpty() || codegenModel.parentVars.isEmpty()) &&
cm.vars.size() + cm.parentVars.size() <= constructorWithAllArgsMaxArguments;
}
can you create a PR with that change?
The error happens on the read-only constructor, though. The "all args" one can be disabled correctly. At the moment I am working around this by adding a vendor extension on the pojo.mustache to allow disabling.
Maybe this:
if (property.isReadOnly && property.readOnlyVars.size() <= 255) {
model.getVendorExtensions().put("x-has-readonly-properties", true);
}
That's reasonable. This won't bring back whatever issue with Jackson was fixed? I assume it needs some way to write these properties, and no setters are present since they are read-only.
Description
After upgrading from
7.3.0
, we started gettingerror: too many parameters
on a generated POJO Model of an object that has 255 fields. Tracked it down to Java/pojo.mustache)We've tried manually setting
x-java-all-args-constructor: false
andx-has-readonly-properties: false
, but these result in the same error. As far as I can tell,x-java-all-args-constructor
is respected, butx-has-readonly-properties
is superseded by the property being read only itself -- which makes sense (see AbstractJavaCodegen.java).As such, we're unable to instruct the generator to not add these constructors at all. I understand this was done to fix an issue with Jackson (see #18870 ), but sadly it brings this issue on the other side.
openapi-generator version
7.9.0
Suggest a fix
Issue: Java/pojo.mustache) Commit: #18870