diff --git a/.generator/conftest.py b/.generator/conftest.py index a7953852a0a..98a89ec1223 100644 --- a/.generator/conftest.py +++ b/.generator/conftest.py @@ -24,6 +24,7 @@ format_data_with_schema, get_response_type, upperfirst, + escape_method_reserved_name, ) @@ -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_name"] = escape_method_reserved_name JAVA_EXAMPLE_J2 = JINJA_ENV.get_template("example.j2") 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 diff --git a/.generator/src/generator/formatter.py b/.generator/src/generator/formatter.py index 58bbfe7784b..77bbb658a0e 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,10 @@ "\\": "\\\\", } +METHOD_KEYWORDS = { + "Class", +} + PATTERN_DOUBLE_UNDERSCORE = re.compile(r"__+") PATTERN_LEADING_ALPHA = re.compile(r"(.)([A-Z][a-z0-9]+)") @@ -125,6 +130,14 @@ def untitle_case(value): def upperfirst(value): return value[0].upper() + value[1:] +def escape_method_reserved_name(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..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 }}() { + 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 }}({{ 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;