Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -289,6 +289,10 @@ OPTIONS
the format of swaggerType=generatedType,swaggerType=generatedType.
For example: array=List,map=Map,string=String

--reserved-words-mappings <import mappings>
specifies how a reserved name should be escaped to. Otherwise, the
default _<name> is used. For example id=identifier

-v, --verbose
verbose mode

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,11 @@ public class Generate implements Runnable {

@Option(name = {"--http-user-agent"}, title = "http user agent", description = CodegenConstants.HTTP_USER_AGENT_DESC)
private String httpUserAgent;


@Option(name = {"--reserved-words-mappings"}, title = "import mappings",
description = "specifies how a reserved name should be escaped to. Otherwise, the default _<name> is used. For example id=identifier")
private String reservedWordsMappings;

@Override
public void run() {

Expand Down Expand Up @@ -217,7 +221,7 @@ public void run() {
applyTypeMappingsKvp(typeMappings, configurator);
applyAdditionalPropertiesKvp(additionalProperties, configurator);
applyLanguageSpecificPrimitivesCsv(languageSpecificPrimitives, configurator);

applyReservedWordsMappingsKvp(reservedWordsMappings, configurator);
final ClientOptInput clientOptInput = configurator.toClientOptInput();

new DefaultGenerator().opts(clientOptInput).generate();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import static io.swagger.codegen.config.CodegenConfiguratorUtils.applyInstantiationTypesKvp;
import static io.swagger.codegen.config.CodegenConfiguratorUtils.applyLanguageSpecificPrimitivesCsv;
import static io.swagger.codegen.config.CodegenConfiguratorUtils.applyTypeMappingsKvp;
import static io.swagger.codegen.config.CodegenConfiguratorUtils.applyReservedWordsMappingsKvp;
import static org.apache.commons.lang3.StringUtils.isNotEmpty;

import java.io.File;
Expand Down Expand Up @@ -284,6 +285,10 @@ public void execute() throws MojoExecutionException {
if(configOptions.containsKey("additional-properties")) {
applyAdditionalPropertiesKvp(configOptions.get("additional-properties").toString(), configurator);
}

if(configOptions.containsKey("reserved-words-mappings")) {
applyReservedWordsMappingsKvp(configOptions.get("reserved-words-mappings").toString(), configurator);
}
}

if (environmentVariables != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

public interface CodegenConfig {
CodegenType getTag();

String getName();

String getHelp();
Expand Down Expand Up @@ -118,6 +118,8 @@ public interface CodegenConfig {
Map<String, String> modelDocTemplateFiles();

Set<String> languageSpecificPrimitives();

Map<String, String> reservedWordsMappings();

void preprocessSwagger(Swagger swagger);

Expand Down Expand Up @@ -197,4 +199,5 @@ public interface CodegenConfig {
String getHttpUserAgent();

String getCommonTemplateDir();

}
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ public class DefaultCodegen {
protected Map<String, String> modelTestTemplateFiles = new HashMap<String, String>();
protected Map<String, String> apiDocTemplateFiles = new HashMap<String, String>();
protected Map<String, String> modelDocTemplateFiles = new HashMap<String, String>();
protected Map<String, String> reservedWordsMappings = new HashMap<String, String>();
protected String templateDir;
protected String embeddedTemplateDir;
protected String commonTemplateDir = "_common";
Expand Down Expand Up @@ -464,6 +465,10 @@ public Map<String, String> apiDocTemplateFiles() {
public Map<String, String> modelDocTemplateFiles() {
return modelDocTemplateFiles;
}

public Map<String, String> reservedWordsMappings() {
return reservedWordsMappings;
}

public Map<String, String> apiTestTemplateFiles() {
return apiTestTemplateFiles;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ public class CodegenConfigurator {
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
private Map<String, String> importMappings = new HashMap<String, String>();
private Set<String> languageSpecificPrimitives = new HashSet<String>();
private Map<String, String> reservedWordMappings = new HashMap<String, String>();

private String gitUserId="GIT_USER_ID";
private String gitRepoId="GIT_REPO_ID";
private String releaseNote="Minor update";
Expand Down Expand Up @@ -263,7 +265,7 @@ public CodegenConfigurator setAdditionalProperties(Map<String, Object> additiona
this.additionalProperties = additionalProperties;
return this;
}

public CodegenConfigurator addAdditionalProperty(String key, Object value) {
this.additionalProperties.put(key, value);
return this;
Expand Down Expand Up @@ -341,7 +343,21 @@ public CodegenConfigurator setHttpUserAgent(String httpUserAgent) {
this.httpUserAgent= httpUserAgent;
return this;
}


public Map<String, String> getReservedWordsMappings() {
return reservedWordMappings;
}

public CodegenConfigurator setReservedWordsMappings(Map<String, String> reservedWordsMappings) {
this.reservedWordMappings = reservedWordsMappings;
return this;
}

public CodegenConfigurator addAdditionalReservedWordMapping(String key, String value) {
this.reservedWordMappings.put(key, value);
return this;
}

public ClientOptInput toClientOptInput() {

Validate.notEmpty(lang, "language must be specified");
Expand All @@ -360,7 +376,8 @@ public ClientOptInput toClientOptInput() {
config.typeMapping().putAll(typeMappings);
config.importMapping().putAll(importMappings);
config.languageSpecificPrimitives().addAll(languageSpecificPrimitives);

config.reservedWordsMappings().putAll(reservedWordMappings);

checkAndSetAdditionalProperty(apiPackage, CodegenConstants.API_PACKAGE);
checkAndSetAdditionalProperty(modelPackage, CodegenConstants.MODEL_PACKAGE);
checkAndSetAdditionalProperty(invokerPackage, CodegenConstants.INVOKER_PACKAGE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,13 @@ public static void applyLanguageSpecificPrimitivesCsv(String languageSpecificPri
}
}

public static void applyReservedWordsMappingsKvp(String reservedWordMappings, CodegenConfigurator configurator) {
final Map<String, String> map = createMapFromKeyValuePairs(reservedWordMappings);
for (Map.Entry<String, String> entry : map.entrySet()) {
configurator.addAdditionalReservedWordMapping(entry.getKey(), entry.getValue());
}
}

private static Set<String> createSetFromCsvList(String csvProperty) {
final List<String> values = OptionUtils.splitCommaSeparatedList(csvProperty);
return new HashSet<String>(values);
Expand All @@ -74,4 +81,6 @@ private static Map<String, String> createMapFromKeyValuePairs(String commaSepara

return result;
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -401,10 +401,13 @@ public String toParamName(String name) {
}

return name;
}
}

@Override
public String escapeReservedWord(String name) {
public String escapeReservedWord(String name) {
if(this.reservedWordsMappings().containsKey(name)) {
return this.reservedWordsMappings().get(name);
}
return "_" + name;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,10 @@ private void sanitizeConfig() {
}

@Override
public String escapeReservedWord(String name) {
public String escapeReservedWord(String name) {
if(this.reservedWordsMappings().containsKey(name)) {
return this.reservedWordsMappings().get(name);
}
return "_" + name;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -251,8 +251,11 @@ public String toSrcPath(String packageName, String basePath) {
.replaceAll(regLastPathSeparator+ "$", "");
}

@Override
public String escapeReservedWord(String name) {
@Override
public String escapeReservedWord(String name) {
if(this.reservedWordsMappings().containsKey(name)) {
return this.reservedWordsMappings().get(name);
}
return "_" + name;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,10 @@ public String getSourceFolder() {
}

@Override
public String escapeReservedWord(String name) {
public String escapeReservedWord(String name) {
if(this.reservedWordsMappings().containsKey(name)) {
return this.reservedWordsMappings().get(name);
}
return "_" + name;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,10 +114,13 @@ public CodegenType getTag() {
return CodegenType.CLIENT;
}

@Override
public String escapeReservedWord(String name) {
return "_" + name;
}
@Override
public String escapeReservedWord(String name) {
if(this.reservedWordsMappings().containsKey(name)) {
return this.reservedWordsMappings().get(name);
}
return "_" + name;
}

@Override
public String apiFileFolder() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,9 @@ public String getHelp() {

@Override
public String escapeReservedWord(String name) {
if(this.reservedWordsMappings().containsKey(name)) {
return this.reservedWordsMappings().get(name);
}
return "`" + name + "`";
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,10 @@ public String getHelp() {
}

@Override
public String escapeReservedWord(String name) {
public String escapeReservedWord(String name) {
if(this.reservedWordsMappings().containsKey(name)) {
return this.reservedWordsMappings().get(name);
}
return "_" + name;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,10 @@ public String getHelp() {
}

@Override
public String escapeReservedWord(String name) {
public String escapeReservedWord(String name) {
if(this.reservedWordsMappings().containsKey(name)) {
return this.reservedWordsMappings().get(name);
}
return "_" + name;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,10 @@ public void processOpts() {


@Override
public String escapeReservedWord(String name) {
public String escapeReservedWord(String name) {
if(this.reservedWordsMappings().containsKey(name)) {
return this.reservedWordsMappings().get(name);
}
return "_" + name;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -182,8 +182,11 @@ public String toApiName(String name) {
* @return the escaped term
*/
@Override
public String escapeReservedWord(String name) {
return name + "_"; // add an underscore to the name
public String escapeReservedWord(String name) {
if(this.reservedWordsMappings().containsKey(name)) {
return this.reservedWordsMappings().get(name);
}
return "_" + name;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -177,8 +177,11 @@ public String getHelp() {
}

@Override
public String escapeReservedWord(String name) {
return name + "_";
public String escapeReservedWord(String name) {
if(this.reservedWordsMappings().containsKey(name)) {
return this.reservedWordsMappings().get(name);
}
return "_" + name;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -236,10 +236,13 @@ public String toApiTestFilename(String name) {
* @return the escaped term
*/
@Override
public String escapeReservedWord(String name) {
return "_" + name; // add an underscore to the name
public String escapeReservedWord(String name) {
if(this.reservedWordsMappings().containsKey(name)) {
return this.reservedWordsMappings().get(name);
}
return "_" + name; // add an underscore to the name
}

/**
* Location to write api files. You can use the apiPackage() as defined when the class is
* instantiated
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -180,9 +180,10 @@ public String escapeReservedWord(String name)
// - XName
// - X_Name
// ... or maybe a suffix?
// - Name_ ... think this will work.

// FIXME: This should also really be a customizable option
// - Name_ ... think this will work.
if(this.reservedWordsMappings().containsKey(name)) {
return this.reservedWordsMappings().get(name);
}
return camelize(name) + '_';
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,9 @@ public String toApiName(String name) {
*/
@Override
public String escapeReservedWord(String name) {
if(this.reservedWordsMappings().containsKey(name)) {
return this.reservedWordsMappings().get(name);
}
return "_" + name; // add an underscore to the name
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,8 +154,11 @@ public HaskellServantCodegen() {
* @return the escaped term
*/
@Override
public String escapeReservedWord(String name) {
return name + "_";
public String escapeReservedWord(String name) {
if(this.reservedWordsMappings().containsKey(name)) {
return this.reservedWordsMappings().get(name);
}
return "_" + name;
}

public String firstLetterToUpper(String word) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,10 +119,13 @@ public void preprocessSwagger(Swagger swagger) {
*
* @return the escaped term
*/
@Override
public String escapeReservedWord(String name) {
return "_" + name; // add an underscore to the name
}
@Override
public String escapeReservedWord(String name) {
if(this.reservedWordsMappings().containsKey(name)) {
return this.reservedWordsMappings().get(name);
}
return "_" + name;
}

/**
* Location to write model files. You can use the modelPackage() as defined when the class is
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,10 @@ public void preprocessSwagger(Swagger swagger) {
}

@Override
public String escapeReservedWord(String name) {
public String escapeReservedWord(String name) {
if(this.reservedWordsMappings().containsKey(name)) {
return this.reservedWordsMappings().get(name);
}
return "_" + name;
}

Expand Down
Loading