From 565841f6b0e7c657e9b3621c4e2aebe7529d1959 Mon Sep 17 00:00:00 2001 From: David Tapiador Date: Fri, 13 Feb 2026 12:47:38 +0100 Subject: [PATCH 1/5] add equals to reserved keywords and escape method names --- .generator/src/generator/formatter.py | 14 ++++++++++++++ .generator/src/generator/templates/modelSimple.j2 | 4 ++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.generator/src/generator/formatter.py b/.generator/src/generator/formatter.py index 58bbfe7784b..e247dad8142 100644 --- a/.generator/src/generator/formatter.py +++ b/.generator/src/generator/formatter.py @@ -23,6 +23,7 @@ "do", "else", "enum", + "equals", "extends", "false", "final", @@ -74,6 +75,11 @@ "\\": "\\\\", } +METHOD_KEYWORDS = { + "getClass", + "setClass", +} + PATTERN_DOUBLE_UNDERSCORE = re.compile(r"__+") PATTERN_LEADING_ALPHA = re.compile(r"(.)([A-Z][a-z0-9]+)") @@ -125,6 +131,14 @@ def untitle_case(value): def upperfirst(value): return value[0].upper() + value[1:] +def escape_method_reserved_names(method_name): + """ + Escape reserved language keywords for method names like getClass, setClass, isClass, etc. + """ + if method_name in METHOD_KEYWORDS: + return f"{method_name}Attribute" + return method_name + def schema_name(schema): if not schema: diff --git a/.generator/src/generator/templates/modelSimple.j2 b/.generator/src/generator/templates/modelSimple.j2 index 3bfd701b44a..dfb64a013c9 100644 --- a/.generator/src/generator/templates/modelSimple.j2 +++ b/.generator/src/generator/templates/modelSimple.j2 @@ -216,7 +216,7 @@ public class {{ name }} {%- if model.get("x-generate-alias-as-model") %} extends {%- if schema.additionalProperties is defined and schema.additionalProperties is not false %}{%- if schema.additionalProperties.nullable %}content = JsonInclude.Include.ALWAYS,{%- endif %}{%- endif %} value = JsonInclude.Include.{%- if isRequired %}ALWAYS{%- else %}USE_DEFAULTS{%- endif %}) {%- endif %} - public {{ dataType }} get{{ attr|camel_case|upperfirst }}() { + public {{ dataType }} get{{ attr|camel_case|upperfirst|escape_reserved_keyword }}() { {%- if not isRequired and isNullable %} {%- if schema.get("readOnly", False) %} @@ -247,7 +247,7 @@ public class {{ name }} {%- if model.get("x-generate-alias-as-model") %} extends {%- endif %} {%- if not schema.get("readOnly", False) %} - public void set{{ attr|camel_case|upperfirst }}({{ dataType }} {{ variableName }}) { + public void set{{ attr|camel_case|upperfirst|escape_reserved_keyword }}({{ dataType }} {{ variableName }}) { {%- if schema.enum is defined %} if (!{{ variableName }}.isValid()) { this.unparsed = true; From 41e32bc208a2b9dc0a3e0d7efcc9475c2b3fac1a Mon Sep 17 00:00:00 2001 From: David Tapiador Date: Fri, 13 Feb 2026 13:42:52 +0100 Subject: [PATCH 2/5] add new function to jinja templates --- .generator/conftest.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.generator/conftest.py b/.generator/conftest.py index a7953852a0a..bd3f7a0eb9c 100644 --- a/.generator/conftest.py +++ b/.generator/conftest.py @@ -24,6 +24,7 @@ format_data_with_schema, get_response_type, upperfirst, + escape_method_reserved_names, ) @@ -75,6 +76,7 @@ def lookup(value, path): JINJA_ENV.globals["format_parameters"] = format_parameters JINJA_ENV.globals["get_response_type"] = get_response_type JINJA_ENV.globals["get_type_at_path"] = openapi.get_type_at_path +JINJA_ENV.filters["escape_method_reserved_names"] = escape_method_reserved_names JAVA_EXAMPLE_J2 = JINJA_ENV.get_template("example.j2") From d714965f4e01442df49cf935e0747c6bf80b2cc7 Mon Sep 17 00:00:00 2001 From: David Tapiador Date: Fri, 13 Feb 2026 15:03:07 +0100 Subject: [PATCH 3/5] fix names --- .generator/conftest.py | 4 ++-- .generator/src/generator/formatter.py | 2 +- .generator/src/generator/templates/modelSimple.j2 | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.generator/conftest.py b/.generator/conftest.py index bd3f7a0eb9c..98a89ec1223 100644 --- a/.generator/conftest.py +++ b/.generator/conftest.py @@ -24,7 +24,7 @@ format_data_with_schema, get_response_type, upperfirst, - escape_method_reserved_names, + escape_method_reserved_name, ) @@ -76,7 +76,7 @@ def lookup(value, path): JINJA_ENV.globals["format_parameters"] = format_parameters JINJA_ENV.globals["get_response_type"] = get_response_type JINJA_ENV.globals["get_type_at_path"] = openapi.get_type_at_path -JINJA_ENV.filters["escape_method_reserved_names"] = escape_method_reserved_names +JINJA_ENV.filters["escape_method_reserved_name"] = escape_method_reserved_name JAVA_EXAMPLE_J2 = JINJA_ENV.get_template("example.j2") diff --git a/.generator/src/generator/formatter.py b/.generator/src/generator/formatter.py index e247dad8142..72ff52eec58 100644 --- a/.generator/src/generator/formatter.py +++ b/.generator/src/generator/formatter.py @@ -131,7 +131,7 @@ def untitle_case(value): def upperfirst(value): return value[0].upper() + value[1:] -def escape_method_reserved_names(method_name): +def escape_method_reserved_name(method_name): """ Escape reserved language keywords for method names like getClass, setClass, isClass, etc. """ diff --git a/.generator/src/generator/templates/modelSimple.j2 b/.generator/src/generator/templates/modelSimple.j2 index dfb64a013c9..7d8a556535e 100644 --- a/.generator/src/generator/templates/modelSimple.j2 +++ b/.generator/src/generator/templates/modelSimple.j2 @@ -216,7 +216,7 @@ public class {{ name }} {%- if model.get("x-generate-alias-as-model") %} extends {%- if schema.additionalProperties is defined and schema.additionalProperties is not false %}{%- if schema.additionalProperties.nullable %}content = JsonInclude.Include.ALWAYS,{%- endif %}{%- endif %} value = JsonInclude.Include.{%- if isRequired %}ALWAYS{%- else %}USE_DEFAULTS{%- endif %}) {%- endif %} - public {{ dataType }} get{{ attr|camel_case|upperfirst|escape_reserved_keyword }}() { + public {{ dataType }} get{{ attr|camel_case|upperfirst|escape_method_reserved_name }}() { {%- if not isRequired and isNullable %} {%- if schema.get("readOnly", False) %} @@ -247,7 +247,7 @@ public class {{ name }} {%- if model.get("x-generate-alias-as-model") %} extends {%- endif %} {%- if not schema.get("readOnly", False) %} - public void set{{ attr|camel_case|upperfirst|escape_reserved_keyword }}({{ dataType }} {{ variableName }}) { + public void set{{ attr|camel_case|upperfirst|escape_method_reserved_name }}({{ dataType }} {{ variableName }}) { {%- if schema.enum is defined %} if (!{{ variableName }}.isValid()) { this.unparsed = true; From 35ec4415080880199ca5810140ad03c6b2a4f7cf Mon Sep 17 00:00:00 2001 From: David Tapiador Date: Fri, 13 Feb 2026 15:14:45 +0100 Subject: [PATCH 4/5] add to missing cli file --- .generator/src/generator/cli.py | 1 + 1 file changed, 1 insertion(+) diff --git a/.generator/src/generator/cli.py b/.generator/src/generator/cli.py index 6319d5f92e5..f774166ffcf 100644 --- a/.generator/src/generator/cli.py +++ b/.generator/src/generator/cli.py @@ -53,6 +53,7 @@ def cli(specs, output): env.filters["inline_docstring"] = formatter.inline_docstring env.filters["un_parameterize_type"] = formatter.un_parameterize_type env.filters["is_parameterized_type"] = formatter.is_parameterized_type + env.filters["escape_method_reserved_name"] = formatter.escape_method_reserved_name env.globals["enumerate"] = enumerate env.globals["get_name"] = openapi.get_name From 3e4f9e19bf282234a03db8bd5d9a24b9bc4e3cb1 Mon Sep 17 00:00:00 2001 From: David Tapiador Date: Mon, 16 Feb 2026 09:05:59 +0100 Subject: [PATCH 5/5] set proper escape method names --- .generator/src/generator/formatter.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.generator/src/generator/formatter.py b/.generator/src/generator/formatter.py index 72ff52eec58..77bbb658a0e 100644 --- a/.generator/src/generator/formatter.py +++ b/.generator/src/generator/formatter.py @@ -76,8 +76,7 @@ } METHOD_KEYWORDS = { - "getClass", - "setClass", + "Class", }