Skip to content

Commit 344e1b1

Browse files
committed
Disable template data HTML-escaping on generated code files.
1 parent 07a852f commit 344e1b1

File tree

3 files changed

+44
-7
lines changed

3 files changed

+44
-7
lines changed

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ public List<File> generate() {
176176
config.additionalProperties().put("termsOfService", config.escapeText(info.getTermsOfService()));
177177
}
178178
}
179-
179+
180180
if(swagger.getVendorExtensions() != null) {
181181
config.vendorExtensions().putAll(swagger.getVendorExtensions());
182182
}
@@ -279,21 +279,21 @@ private Model getParent(Model model) {
279279
Map<String, Object> models = processModels(config, modelMap, definitions);
280280
models.put("classname", config.toModelName(name));
281281
models.putAll(config.additionalProperties());
282-
282+
283283
allProcessedModels.put(name, models);
284284

285285
} catch (Exception e) {
286286
throw new RuntimeException("Could not process model '" + name + "'", e);
287287
}
288288
}
289-
289+
290290
// post process all processed models
291291
allProcessedModels = config.postProcessAllModels(allProcessedModels);
292-
292+
293293
// generate files based on processed models
294294
for (String name: allProcessedModels.keySet()) {
295295
Map<String, Object> models = (Map<String, Object>)allProcessedModels.get(name);
296-
296+
297297
try {
298298
//don't generate models that have an import mapping
299299
if(config.importMapping().containsKey(name)) {
@@ -393,7 +393,7 @@ public int compare(CodegenOperation one, CodegenOperation another) {
393393
operation.put("classname", config.toApiName(tag));
394394
operation.put("classVarName", config.toApiVarName(tag));
395395
operation.put("importPath", config.toApiImport(tag));
396-
396+
397397
if(!config.vendorExtensions().isEmpty()) {
398398
operation.put("vendorExtensions", config.vendorExtensions());
399399
}
@@ -631,6 +631,7 @@ private File processTemplateToFile(Map<String, Object> templateData, String temp
631631
String templateFile = getFullTemplateFile(config, templateName);
632632
String template = readTemplate(templateFile);
633633
Template tmpl = Mustache.compiler()
634+
.escapeHTML(false)
634635
.withLoader(new Mustache.TemplateLoader() {
635636
@Override
636637
public Reader getTemplate(String name) {
@@ -704,7 +705,7 @@ public void processOperation(String resourcePath, String httpMethod, Operation o
704705
tags = new ArrayList<String>();
705706
tags.add("default");
706707
}
707-
708+
708709
/*
709710
build up a set of parameter "ids" defined at the operation level
710711
per the swagger 2.0 spec "A unique parameter is defined by a combination of a name and location"

modules/swagger-codegen/src/test/java/io/swagger/codegen/DefaultGeneratorTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.swagger.codegen;
22

33
import io.swagger.codegen.languages.JavaClientCodegen;
4+
import io.swagger.codegen.languages.RubyClientCodegen;
45
import io.swagger.models.Swagger;
56
import io.swagger.parser.SwaggerParser;
67
import org.apache.commons.io.FileUtils;
@@ -221,6 +222,31 @@ public void testGenerateUniqueOperationIds() {
221222
}
222223
}
223224

225+
@Test
226+
public void testGenerateWithHtmlEntity() throws Exception {
227+
final File output = folder.getRoot();
228+
229+
final Swagger swagger = new SwaggerParser().read("src/test/resources/2_0/pathWithHtmlEntity.yaml");
230+
CodegenConfig codegenConfig = new RubyClientCodegen();
231+
codegenConfig.setOutputDir(output.getAbsolutePath());
232+
233+
ClientOptInput clientOptInput = new ClientOptInput().opts(new ClientOpts()).swagger(swagger).config(codegenConfig);
234+
235+
DefaultGenerator generator = new DefaultGenerator();
236+
generator.opts(clientOptInput);
237+
List<File> files = generator.generate();
238+
boolean apiFileGenerated = false;
239+
for (File file : files) {
240+
if (file.getName().equals("default_api.rb")) {
241+
apiFileGenerated = true;
242+
assertTrue(FileUtils.readFileToString(file, StandardCharsets.UTF_8).contains("local_var_path = \"/foo=bar\""));
243+
}
244+
}
245+
if (!apiFileGenerated) {
246+
fail("Default api file is not generated!");
247+
}
248+
}
249+
224250
private static void changeContent(File file) throws IOException {
225251
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), UTF_8));
226252
out.write(TEST_SKIP_OVERWRITE);
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
swagger: "2.0"
3+
basePath: "/"
4+
paths:
5+
/foo=bar:
6+
get:
7+
parameters: []
8+
responses:
9+
200:
10+
description: "success"

0 commit comments

Comments
 (0)