Skip to content

Commit 175527b

Browse files
authored
Add equals to reserved keywords and escape method names (#3499)
* add equals to reserved keywords and escape method names * add new function to jinja templates * fix names * add to missing cli file * set proper escape method names
1 parent eb60bda commit 175527b

File tree

4 files changed

+18
-2
lines changed

4 files changed

+18
-2
lines changed

.generator/conftest.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
format_data_with_schema,
2525
get_response_type,
2626
upperfirst,
27+
escape_method_reserved_name,
2728
)
2829

2930

@@ -75,6 +76,7 @@ def lookup(value, path):
7576
JINJA_ENV.globals["format_parameters"] = format_parameters
7677
JINJA_ENV.globals["get_response_type"] = get_response_type
7778
JINJA_ENV.globals["get_type_at_path"] = openapi.get_type_at_path
79+
JINJA_ENV.filters["escape_method_reserved_name"] = escape_method_reserved_name
7880

7981
JAVA_EXAMPLE_J2 = JINJA_ENV.get_template("example.j2")
8082

.generator/src/generator/cli.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ def cli(specs, output):
5353
env.filters["inline_docstring"] = formatter.inline_docstring
5454
env.filters["un_parameterize_type"] = formatter.un_parameterize_type
5555
env.filters["is_parameterized_type"] = formatter.is_parameterized_type
56+
env.filters["escape_method_reserved_name"] = formatter.escape_method_reserved_name
5657

5758
env.globals["enumerate"] = enumerate
5859
env.globals["get_name"] = openapi.get_name

.generator/src/generator/formatter.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"do",
2424
"else",
2525
"enum",
26+
"equals",
2627
"extends",
2728
"false",
2829
"final",
@@ -74,6 +75,10 @@
7475
"\\": "\\\\",
7576
}
7677

78+
METHOD_KEYWORDS = {
79+
"Class",
80+
}
81+
7782

7883
PATTERN_DOUBLE_UNDERSCORE = re.compile(r"__+")
7984
PATTERN_LEADING_ALPHA = re.compile(r"(.)([A-Z][a-z0-9]+)")
@@ -125,6 +130,14 @@ def untitle_case(value):
125130
def upperfirst(value):
126131
return value[0].upper() + value[1:]
127132

133+
def escape_method_reserved_name(method_name):
134+
"""
135+
Escape reserved language keywords for method names like getClass, setClass, isClass, etc.
136+
"""
137+
if method_name in METHOD_KEYWORDS:
138+
return f"{method_name}Attribute"
139+
return method_name
140+
128141

129142
def schema_name(schema):
130143
if not schema:

.generator/src/generator/templates/modelSimple.j2

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ public class {{ name }} {%- if model.get("x-generate-alias-as-model") %} extends
216216
{%- if schema.additionalProperties is defined and schema.additionalProperties is not false %}{%- if schema.additionalProperties.nullable %}content = JsonInclude.Include.ALWAYS,{%- endif %}{%- endif %}
217217
value = JsonInclude.Include.{%- if isRequired %}ALWAYS{%- else %}USE_DEFAULTS{%- endif %})
218218
{%- endif %}
219-
public {{ dataType }} get{{ attr|camel_case|upperfirst }}() {
219+
public {{ dataType }} get{{ attr|camel_case|upperfirst|escape_method_reserved_name }}() {
220220
{%- if not isRequired and isNullable %}
221221
{%- if schema.get("readOnly", False) %}
222222

@@ -247,7 +247,7 @@ public class {{ name }} {%- if model.get("x-generate-alias-as-model") %} extends
247247
{%- endif %}
248248

249249
{%- if not schema.get("readOnly", False) %}
250-
public void set{{ attr|camel_case|upperfirst }}({{ dataType }} {{ variableName }}) {
250+
public void set{{ attr|camel_case|upperfirst|escape_method_reserved_name }}({{ dataType }} {{ variableName }}) {
251251
{%- if schema.enum is defined %}
252252
if (!{{ variableName }}.isValid()) {
253253
this.unparsed = true;

0 commit comments

Comments
 (0)