Skip to content

Commit 4bcd81a

Browse files
committed
Merge pull request #2286 from xhh/clj-api-name
[Clojure] Improve api name for the Clojure client
2 parents c636700 + 09a2bb8 commit 4bcd81a

File tree

5 files changed

+60
-16
lines changed

5 files changed

+60
-16
lines changed

modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@ public interface CodegenConfig {
105105

106106
void processSwagger(Swagger swagger);
107107

108+
String sanitizeTag(String tag);
109+
108110
String toApiFilename(String name);
109111

110112
String toModelFilename(String name);

modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2293,6 +2293,19 @@ public String sanitizeName(String name) {
22932293
return name.replaceAll("[^a-zA-Z0-9_]", "");
22942294
}
22952295

2296+
@SuppressWarnings("static-method")
2297+
public String sanitizeTag(String tag) {
2298+
// remove spaces and make strong case
2299+
String[] parts = tag.split(" ");
2300+
StringBuilder buf = new StringBuilder();
2301+
for (String part : parts) {
2302+
if (StringUtils.isNotEmpty(part)) {
2303+
buf.append(StringUtils.capitalize(part));
2304+
}
2305+
}
2306+
return buf.toString().replaceAll("[^a-zA-Z ]", "");
2307+
}
2308+
22962309
/**
22972310
* Only write if the file doesn't exist
22982311
*

modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import java.io.*;
1616
import java.util.*;
1717

18-
import static org.apache.commons.lang3.StringUtils.capitalize;
1918
import static org.apache.commons.lang3.StringUtils.isNotEmpty;
2019

2120
public class DefaultGenerator extends AbstractGenerator implements Generator {
@@ -623,8 +622,8 @@ public void processOperation(String resourcePath, String httpMethod, Operation o
623622
try {
624623
co = config.fromOperation(resourcePath, httpMethod, operation, swagger.getDefinitions(), swagger);
625624
co.tags = new ArrayList<String>();
626-
co.tags.add(sanitizeTag(tag));
627-
config.addOperationToGroup(sanitizeTag(tag), resourcePath, operation, co, operations);
625+
co.tags.add(config.sanitizeTag(tag));
626+
config.addOperationToGroup(config.sanitizeTag(tag), resourcePath, operation, co, operations);
628627

629628
List<Map<String, List<String>>> securities = operation.getSecurity();
630629
if (securities == null && swagger.getSecurity() != null) {
@@ -683,19 +682,6 @@ private static String generateParameterId(Parameter parameter) {
683682
return parameter.getName() + ":" + parameter.getIn();
684683
}
685684

686-
@SuppressWarnings("static-method")
687-
protected String sanitizeTag(String tag) {
688-
// remove spaces and make strong case
689-
String[] parts = tag.split(" ");
690-
StringBuilder buf = new StringBuilder();
691-
for (String part : parts) {
692-
if (isNotEmpty(part)) {
693-
buf.append(capitalize(part));
694-
}
695-
}
696-
return buf.toString().replaceAll("[^a-zA-Z ]", "");
697-
}
698-
699685
@SuppressWarnings("static-method")
700686
public Map<String, Object> processOperations(CodegenConfig config, String tag, List<CodegenOperation> ops) {
701687
Map<String, Object> operations = new HashMap<String, Object>();

modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ClojureClientCodegen.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,11 @@ public void preprocessSwagger(Swagger swagger) {
145145
supportingFiles.add(new SupportingFile("core.mustache", baseNamespaceFolder, "core.clj"));
146146
}
147147

148+
@Override
149+
public String sanitizeTag(String tag) {
150+
return tag.replaceAll("[^a-zA-Z_]+", "_");
151+
}
152+
148153
@Override
149154
public String apiFileFolder() {
150155
return outputFolder + File.separator + sourceFolder + File.separator + namespaceToFolder(apiPackage);
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package io.swagger.codegen.languages;
2+
3+
import org.testng.Assert;
4+
import org.testng.annotations.Test;
5+
6+
public class ClojureClientCodegenTest {
7+
ClojureClientCodegen codegen = new ClojureClientCodegen();
8+
9+
@Test
10+
public void testSanitizeTag() throws Exception {
11+
Assert.assertEquals(codegen.sanitizeTag("users-api"), "users_api");
12+
Assert.assertEquals(codegen.sanitizeTag("users_api"), "users_api");
13+
Assert.assertEquals(codegen.sanitizeTag("users api"), "users_api");
14+
Assert.assertEquals(codegen.sanitizeTag("users.api"), "users_api");
15+
Assert.assertEquals(codegen.sanitizeTag("Users Api"), "Users_Api");
16+
Assert.assertEquals(codegen.sanitizeTag("UsersApi"), "UsersApi");
17+
Assert.assertEquals(codegen.sanitizeTag("usersapi"), "usersapi");
18+
Assert.assertEquals(codegen.sanitizeTag("Usersapi"), "Usersapi");
19+
}
20+
21+
@Test
22+
public void testToApiName() throws Exception {
23+
Assert.assertEquals(codegen.toApiName("users_api"), "users-api");
24+
Assert.assertEquals(codegen.toApiName("Users_Api"), "users-api");
25+
Assert.assertEquals(codegen.toApiName("UsersApi"), "users-api");
26+
Assert.assertEquals(codegen.toApiName("usersapi"), "usersapi");
27+
Assert.assertEquals(codegen.toApiName("Usersapi"), "usersapi");
28+
}
29+
30+
@Test
31+
public void testToApiFilename() throws Exception {
32+
Assert.assertEquals(codegen.toApiFilename("users_api"), "users_api");
33+
Assert.assertEquals(codegen.toApiFilename("Users_Api"), "users_api");
34+
Assert.assertEquals(codegen.toApiFilename("UsersApi"), "users_api");
35+
Assert.assertEquals(codegen.toApiFilename("usersapi"), "usersapi");
36+
Assert.assertEquals(codegen.toApiFilename("Usersapi"), "usersapi");
37+
}
38+
}

0 commit comments

Comments
 (0)