Skip to content

Commit b39fb53

Browse files
authored
fix(ruby): rename object_id reserved word to algolia_object_id (#4381)
1 parent c119814 commit b39fb53

33 files changed

+132
-121
lines changed

generators/src/main/java/com/algolia/codegen/AlgoliaCSharpGenerator.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.algolia.codegen.exceptions.*;
44
import com.algolia.codegen.utils.*;
55
import com.google.common.collect.ImmutableMap.Builder;
6-
import com.samskivert.mustache.Mustache;
76
import com.samskivert.mustache.Mustache.Lambda;
87
import io.swagger.v3.oas.models.OpenAPI;
98
import io.swagger.v3.oas.models.Operation;
@@ -23,7 +22,7 @@ public String getName() {
2322
return "algolia-csharp";
2423
}
2524

26-
public static String getClientName(String client) {
25+
public String getClientName(String client) {
2726
return Helpers.createClientName(client, "csharp");
2827
}
2928

@@ -51,11 +50,6 @@ public void processOpts() {
5150
additionalProperties.put("disallowAdditionalPropertiesIfNotPresent", true);
5251
additionalProperties.put(CodegenConstants.EXCLUDE_TESTS, true);
5352

54-
additionalProperties.put(
55-
"lambda.escape-generic",
56-
(Mustache.Lambda) (fragment, writer) -> writer.write(escapeGenericForDoc(fragment.execute()))
57-
);
58-
5953
setApiNameSuffix(Helpers.API_SUFFIX);
6054

6155
String packageName = getClientName(client);
@@ -175,7 +169,8 @@ private String typeToName(String content) {
175169
protected Builder<String, Lambda> addMustacheLambdas() {
176170
Builder<String, Lambda> lambdas = super.addMustacheLambdas();
177171

178-
lambdas.put("type-to-name", (Mustache.Lambda) (fragment, writer) -> writer.write(typeToName(fragment.execute())));
172+
lambdas.put("type-to-name", (fragment, writer) -> writer.write(typeToName(fragment.execute())));
173+
lambdas.put("escape-generic", (fragment, writer) -> writer.write(escapeGenericForDoc(fragment.execute())));
179174

180175
return lambdas;
181176
}

generators/src/main/java/com/algolia/codegen/AlgoliaJavaGenerator.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.algolia.codegen.exceptions.*;
44
import com.algolia.codegen.utils.*;
55
import com.google.common.collect.ImmutableMap.Builder;
6-
import com.samskivert.mustache.Mustache;
76
import com.samskivert.mustache.Mustache.Lambda;
87
import io.swagger.v3.oas.models.OpenAPI;
98
import io.swagger.v3.oas.models.Operation;
@@ -19,9 +18,6 @@
1918
@SuppressWarnings("unchecked")
2019
public class AlgoliaJavaGenerator extends JavaClientCodegen {
2120

22-
// This is used for the CTS generation
23-
private static final AlgoliaJavaGenerator INSTANCE = new AlgoliaJavaGenerator();
24-
2521
@Override
2622
public String getName() {
2723
return "algolia-java";
@@ -157,7 +153,7 @@ private String typeToName(String content) {
157153
protected Builder<String, Lambda> addMustacheLambdas() {
158154
Builder<String, Lambda> lambdas = super.addMustacheLambdas();
159155

160-
lambdas.put("type-to-name", (Mustache.Lambda) (fragment, writer) -> writer.write(typeToName(fragment.execute())));
156+
lambdas.put("type-to-name", (fragment, writer) -> writer.write(typeToName(fragment.execute())));
161157

162158
return lambdas;
163159
}

generators/src/main/java/com/algolia/codegen/AlgoliaPhpGenerator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public String getName() {
2222
return "algolia-php";
2323
}
2424

25-
public static String getClientName(String client) {
25+
public String getClientName(String client) {
2626
return Helpers.createClientName(client, "php");
2727
}
2828

generators/src/main/java/com/algolia/codegen/AlgoliaRubyGenerator.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ public void processOpts() {
4343
apiTestTemplateFiles.clear();
4444
modelTestTemplateFiles.clear();
4545

46+
reservedWords.add("object_id");
47+
reservedWordsMappings.put("object_id", "algolia_object_id");
48+
4649
Helpers.addCommonSupportingFiles(supportingFiles, "");
4750

4851
// Remove some files we don't want to output or change their paths

generators/src/main/java/com/algolia/codegen/AlgoliaScalaGenerator.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import com.algolia.codegen.exceptions.GeneratorException;
44
import com.algolia.codegen.utils.*;
55
import com.google.common.collect.ImmutableMap;
6-
import com.samskivert.mustache.Mustache;
6+
import com.samskivert.mustache.Mustache.Lambda;
77
import io.swagger.v3.oas.models.OpenAPI;
88
import io.swagger.v3.oas.models.Operation;
99
import io.swagger.v3.oas.models.servers.Server;
@@ -57,8 +57,7 @@ public void processOpts() {
5757
additionalProperties.put(CodegenConstants.MODEL_PACKAGE, "algoliasearch." + packageName);
5858
additionalProperties.put(CodegenConstants.API_PACKAGE, "algoliasearch.api");
5959
additionalProperties.put(CodegenConstants.INVOKER_PACKAGE, "algoliasearch");
60-
additionalProperties.put("lambda.type-to-name", (Mustache.Lambda) (fragment, writer) -> writer.write(typeToName(fragment.execute())));
61-
additionalProperties.put("lambda.escape-path", (Mustache.Lambda) (fragment, writer) -> writer.write(escapePath(fragment.execute())));
60+
6261
super.processOpts();
6362
setApiNameSuffix(Helpers.API_SUFFIX);
6463

@@ -92,8 +91,13 @@ public void processOpts() {
9291
}
9392

9493
@Override
95-
protected ImmutableMap.Builder<String, Mustache.Lambda> addMustacheLambdas() {
96-
return super.addMustacheLambdas();
94+
protected ImmutableMap.Builder<String, Lambda> addMustacheLambdas() {
95+
ImmutableMap.Builder<String, Lambda> lambdas = super.addMustacheLambdas();
96+
97+
lambdas.put("type-to-name", (fragment, writer) -> writer.write(typeToName(fragment.execute())));
98+
lambdas.put("escape-path", (fragment, writer) -> writer.write(escapePath(fragment.execute())));
99+
100+
return lambdas;
97101
}
98102

99103
/** Convert a Seq type to a valid class name. */

generators/src/main/java/com/algolia/codegen/AlgoliaSwiftGenerator.java

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import com.algolia.codegen.lambda.ToSecondsLambda;
88
import com.algolia.codegen.utils.*;
99
import com.google.common.collect.ImmutableMap;
10-
import com.samskivert.mustache.Mustache;
10+
import com.samskivert.mustache.Mustache.Lambda;
1111
import io.swagger.v3.oas.models.OpenAPI;
1212
import io.swagger.v3.oas.models.Operation;
1313
import io.swagger.v3.oas.models.media.ComposedSchema;
@@ -190,19 +190,6 @@ public void processOpts() {
190190
additionalProperties.put(USE_BACKTICK_ESCAPES, true);
191191
additionalProperties.put("hashableModels", true);
192192

193-
additionalProperties.put("lambda.type-to-name", (Mustache.Lambda) (fragment, writer) -> writer.write(typeToName(fragment.execute())));
194-
additionalProperties.put(
195-
"lambda.client-to-name",
196-
(Mustache.Lambda) (fragment, writer) -> writer.write(getClientName(fragment.execute()))
197-
);
198-
additionalProperties.put(
199-
"lambda.to-codable",
200-
(Mustache.Lambda) (fragment, writer) -> {
201-
String initialType = fragment.execute();
202-
writer.write(initialType.equalsIgnoreCase("AnyCodable") ? "Codable" : initialType);
203-
}
204-
);
205-
206193
super.processOpts();
207194

208195
supportingFiles.add(
@@ -289,8 +276,18 @@ private String typeToName(String content) {
289276
}
290277

291278
@Override
292-
protected ImmutableMap.Builder<String, Mustache.Lambda> addMustacheLambdas() {
293-
return super.addMustacheLambdas().put("toSeconds", new ToSecondsLambda());
279+
protected ImmutableMap.Builder<String, Lambda> addMustacheLambdas() {
280+
ImmutableMap.Builder<String, Lambda> lambdas = super.addMustacheLambdas();
281+
282+
lambdas.put("toSeconds", new ToSecondsLambda());
283+
lambdas.put("type-to-name", (fragment, writer) -> writer.write(typeToName(fragment.execute())));
284+
lambdas.put("client-to-name", (fragment, writer) -> writer.write(getClientName(fragment.execute())));
285+
lambdas.put("to-codable", (fragment, writer) -> {
286+
String initialType = fragment.execute();
287+
writer.write(initialType.equalsIgnoreCase("AnyCodable") ? "Codable" : initialType);
288+
});
289+
290+
return lambdas;
294291
}
295292

296293
@Override

generators/src/main/java/com/algolia/codegen/cts/AlgoliaCTSGenerator.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -101,12 +101,7 @@ protected Builder<String, Lambda> addMustacheLambdas() {
101101
lambdas.put("escapeQuotes", new EscapeQuotesLambda());
102102
lambdas.put("escapeSlash", new EscapeSlashLambda());
103103
lambdas.put("replaceBacktick", new ReplaceBacktickLambda());
104-
lambdas.put("scalaIdentifier", new ScalaIdentifierLambda());
105-
lambdas.put("csharpIdentifier", new CSharpIdentifierLambda());
106-
lambdas.put("javaEnum", new JavaEnumLambda());
107-
lambdas.put("codeSnakeCase", new CodeSnakeCaseLambda());
108-
lambdas.put("escapeRubyKeywords", new EscapeRubyKeywordsLambda());
109-
lambdas.put("swiftIdentifier", new SwiftIdentifierLambda());
104+
110105
return lambdas;
111106
}
112107

@@ -115,7 +110,7 @@ public Map<String, Object> postProcessSupportingFileData(Map<String, Object> obj
115110
try {
116111
Map<String, CodegenOperation> operations = buildOperations(objs);
117112

118-
Object lambda = objs.get("lambda");
113+
Map<String, Lambda> lambda = new HashMap<>((Map<String, Lambda>) objs.get("lambda"));
119114
List<CodegenServer> servers = (List<CodegenServer>) objs.get("servers");
120115
CodegenServerVariable regionVariable = null;
121116
outerLoop: for (CodegenServer server : servers) {
@@ -163,6 +158,8 @@ public Map<String, Object> postProcessSupportingFileData(Map<String, Object> obj
163158
if (new File("tests/CTS/guides/" + client + ".json").exists()) {
164159
bundle.put("dynamicSnippet", new DynamicSnippetLambda(this, models, operations, language, client));
165160
}
161+
// restore the lambda from the original bundle
162+
ctsManager.addMustacheLambdas(lambda);
166163
bundle.put("lambda", lambda);
167164

168165
String languageVersion = ctsManager.getLanguageVersion((String) additionalProperties.getOrDefault("languageVersion", ""));

generators/src/main/java/com/algolia/codegen/cts/lambda/CodeSnakeCaseLambda.java renamed to generators/src/main/java/com/algolia/codegen/cts/lambda/CodeIdentifierLambda.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,29 @@
11
package com.algolia.codegen.cts.lambda;
22

3-
import com.algolia.codegen.utils.Helpers;
43
import com.samskivert.mustache.Mustache;
54
import com.samskivert.mustache.Template;
65
import java.io.IOException;
76
import java.io.Writer;
7+
import java.util.function.UnaryOperator;
88
import java.util.regex.Matcher;
99
import java.util.regex.Pattern;
1010

11-
public class CodeSnakeCaseLambda implements Mustache.Lambda {
11+
public class CodeIdentifierLambda implements Mustache.Lambda {
12+
13+
private final UnaryOperator<String> convert;
14+
15+
public CodeIdentifierLambda(UnaryOperator<String> convert) {
16+
this.convert = convert;
17+
}
1218

1319
@Override
1420
public void execute(Template.Fragment fragment, Writer writer) throws IOException {
1521
String text = fragment.execute();
16-
Pattern pattern = Pattern.compile("`.*?`");
22+
Pattern pattern = Pattern.compile("`(.*?)`");
1723
Matcher matcher = pattern.matcher(text);
1824

1925
while (matcher.find()) {
20-
text = matcher.replaceAll(m -> Helpers.toSnakeCase(matcher.group(0)));
26+
text = matcher.replaceAll(m -> "`" + convert.apply(matcher.group(1)) + "`");
2127
}
2228

2329
writer.write(text);

generators/src/main/java/com/algolia/codegen/cts/lambda/JavaEnumLambda.java

Lines changed: 0 additions & 17 deletions
This file was deleted.

generators/src/main/java/com/algolia/codegen/cts/lambda/EscapeRubyKeywordsLambda.java renamed to generators/src/main/java/com/algolia/codegen/cts/lambda/RubyIdentifierLambda.java

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,31 @@
88
import java.util.Arrays;
99
import java.util.Map;
1010

11-
public class EscapeRubyKeywordsLambda implements Mustache.Lambda {
11+
public class RubyIdentifierLambda implements Mustache.Lambda {
1212

1313
private static final String[] RUBY_KEYWORDS = new String[] { "until" };
1414

15-
@Override
16-
public void execute(Template.Fragment fragment, Writer writer) throws IOException {
17-
String text = fragment.execute();
15+
public static String formatIdentifier(String text) {
16+
return formatIdentifier(text, false);
17+
}
18+
19+
public static String formatIdentifier(String text, boolean isParentFreeFormObject) {
1820
if (Arrays.stream(RUBY_KEYWORDS).anyMatch(text::equals)) {
1921
text = "_" + text;
2022
}
21-
Map<String, Object> context = (Map<String, Object>) fragment.context();
22-
if (!((boolean) context.get("isParentFreeFormObject"))) {
23+
if (!isParentFreeFormObject) {
24+
if (text.equals("objectID")) {
25+
text = "algolia_object_id";
26+
}
2327
text = Helpers.toSnakeCase(text);
2428
}
2529

26-
writer.write(text);
30+
return text;
31+
}
32+
33+
@Override
34+
public void execute(Template.Fragment fragment, Writer writer) throws IOException {
35+
Map<String, Object> context = (Map<String, Object>) fragment.context();
36+
writer.write(formatIdentifier(fragment.execute(), (boolean) context.get("isParentFreeFormObject")));
2737
}
2838
}

generators/src/main/java/com/algolia/codegen/cts/lambda/ScalaIdentifierLambda.java

Lines changed: 0 additions & 17 deletions
This file was deleted.

generators/src/main/java/com/algolia/codegen/cts/lambda/SwiftIdentifierLambda.java

Lines changed: 0 additions & 17 deletions
This file was deleted.

generators/src/main/java/com/algolia/codegen/cts/manager/CSharpCTSManager.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.algolia.codegen.cts.manager;
22

3+
import com.algolia.codegen.cts.lambda.CSharpIdentifierLambda;
34
import com.algolia.codegen.exceptions.GeneratorException;
45
import com.algolia.codegen.utils.*;
6+
import com.samskivert.mustache.Mustache.Lambda;
57
import java.util.*;
68
import org.openapitools.codegen.SupportingFile;
79

@@ -42,4 +44,9 @@ public void addSnippetsSupportingFiles(List<SupportingFile> supportingFiles, Str
4244
public void addDataToBundle(Map<String, Object> bundle) throws GeneratorException {
4345
bundle.put("packageVersion", getVersion());
4446
}
47+
48+
@Override
49+
public void addMustacheLambdas(Map<String, Lambda> lambdas) {
50+
lambdas.put("identifier", new CSharpIdentifierLambda());
51+
}
4552
}

generators/src/main/java/com/algolia/codegen/cts/manager/CTSManager.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.algolia.codegen.exceptions.GeneratorException;
44
import com.algolia.codegen.utils.Helpers;
5+
import com.samskivert.mustache.Mustache.Lambda;
56
import java.io.IOException;
67
import java.util.*;
78
import org.openapitools.codegen.SupportingFile;
@@ -38,4 +39,8 @@ public default void addSnippetsSupportingFiles(List<SupportingFile> supportingFi
3839
public default void addDataToBundle(Map<String, Object> bundle) throws GeneratorException {
3940
// NO-OP
4041
}
42+
43+
public default void addMustacheLambdas(Map<String, Lambda> lambdas) {
44+
// NO-OP
45+
}
4146
}

generators/src/main/java/com/algolia/codegen/cts/manager/JavaCTSManager.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.algolia.codegen.cts.manager;
22

3+
import com.algolia.codegen.AlgoliaJavaGenerator;
34
import com.algolia.codegen.exceptions.GeneratorException;
45
import com.algolia.codegen.utils.*;
6+
import com.samskivert.mustache.Mustache.Lambda;
57
import java.io.IOException;
68
import java.util.*;
79
import org.openapitools.codegen.SupportingFile;
@@ -47,4 +49,9 @@ public void addDataToBundle(Map<String, Object> bundle) throws GeneratorExceptio
4749
bundle.put("packageVersion", getVersion());
4850
bundle.put("import", Helpers.camelize(this.client).toLowerCase());
4951
}
52+
53+
@Override
54+
public void addMustacheLambdas(Map<String, Lambda> lambdas) {
55+
lambdas.put("javaEnum", (fragment, writer) -> writer.write(AlgoliaJavaGenerator.toEnum(fragment.execute())));
56+
}
5057
}

0 commit comments

Comments
 (0)