forked from loafle/openapi-generator-original
Make frequently used IO resources autoclosable (#8181)
* Make frequently used IO resources autoclosable * Autoclose ruby error input stream
This commit is contained in:
@@ -109,15 +109,15 @@ public class TemplateManager implements TemplatingExecutor, TemplateProcessor {
|
||||
if (name == null || name.contains("..")) {
|
||||
throw new IllegalArgumentException("Template location must be constrained to template directory.");
|
||||
}
|
||||
try {
|
||||
Reader reader = getTemplateReader(name);
|
||||
try (Reader reader = getTemplateReader(name)) {
|
||||
if (reader == null) {
|
||||
throw new RuntimeException("no file found");
|
||||
}
|
||||
Scanner s = new Scanner(reader).useDelimiter("\\A");
|
||||
return s.hasNext() ? s.next() : "";
|
||||
try (Scanner s = new Scanner(reader).useDelimiter("\\A")) {
|
||||
return s.hasNext() ? s.next() : "";
|
||||
}
|
||||
} catch (Exception e) {
|
||||
LOGGER.error(e.getMessage());
|
||||
LOGGER.error("{}", e.getMessage(), e);
|
||||
}
|
||||
throw new RuntimeException("can't load template " + name);
|
||||
}
|
||||
@@ -142,7 +142,7 @@ public class TemplateManager implements TemplatingExecutor, TemplateProcessor {
|
||||
if (name == null || name.contains("..")) {
|
||||
throw new IllegalArgumentException("Template location must be constrained to template directory.");
|
||||
}
|
||||
is = new FileInputStream(new File(name)); // May throw but never return a null value
|
||||
is = new FileInputStream(name); // May throw but never return a null value
|
||||
}
|
||||
return is;
|
||||
}
|
||||
|
||||
@@ -172,9 +172,7 @@ abstract public class AbstractRubyCodegen extends DefaultCodegen implements Code
|
||||
|
||||
@Override
|
||||
public String toVarName(final String name) {
|
||||
String varName;
|
||||
// sanitize name
|
||||
varName = sanitizeName(name);
|
||||
String varName = sanitizeName(name);
|
||||
// if it's all uppper case, convert to lower case
|
||||
if (name.matches("^[A-Z_]*$")) {
|
||||
varName = varName.toLowerCase(Locale.ROOT);
|
||||
@@ -207,7 +205,7 @@ abstract public class AbstractRubyCodegen extends DefaultCodegen implements Code
|
||||
// method name cannot use reserved keyword, e.g. return
|
||||
if (isReservedWord(operationId)) {
|
||||
String newOperationId = underscore("call_" + operationId);
|
||||
LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + newOperationId);
|
||||
LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, newOperationId);
|
||||
return newOperationId;
|
||||
}
|
||||
|
||||
@@ -241,15 +239,16 @@ abstract public class AbstractRubyCodegen extends DefaultCodegen implements Code
|
||||
Process p = Runtime.getRuntime().exec(command);
|
||||
int exitValue = p.waitFor();
|
||||
if (exitValue != 0) {
|
||||
BufferedReader br = new BufferedReader(new InputStreamReader(p.getErrorStream(), StandardCharsets.UTF_8));
|
||||
StringBuilder sb = new StringBuilder();
|
||||
String line;
|
||||
while ((line = br.readLine()) != null) {
|
||||
sb.append(line);
|
||||
try(BufferedReader br = new BufferedReader(new InputStreamReader(p.getErrorStream(), StandardCharsets.UTF_8))) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
String line;
|
||||
while ((line = br.readLine()) != null) {
|
||||
sb.append(line);
|
||||
}
|
||||
LOGGER.error("Error running the command ({}). Exit value: {}, Error output: {}", command, exitValue, sb.toString());
|
||||
}
|
||||
LOGGER.error("Error running the command ({}). Exit value: {}, Error output: {}", command, exitValue, sb.toString());
|
||||
} else {
|
||||
LOGGER.info("Successfully executed: " + command);
|
||||
LOGGER.info("Successfully executed: `{}`", command);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage());
|
||||
|
||||
@@ -19,9 +19,14 @@ package org.openapitools.codegen.languages;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.*;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
@@ -116,15 +121,13 @@ public class DartClientCodegen extends DefaultCodegen {
|
||||
modelTestTemplateFiles.put("model_test.mustache", ".dart");
|
||||
apiTestTemplateFiles.put("api_test.mustache", ".dart");
|
||||
|
||||
List<String> reservedWordsList = new ArrayList<>();
|
||||
try {
|
||||
BufferedReader reader = new BufferedReader(
|
||||
final List<String> reservedWordsList = new ArrayList<>();
|
||||
try(BufferedReader reader = new BufferedReader(
|
||||
new InputStreamReader(DartClientCodegen.class.getResourceAsStream("/dart/dart-keywords.txt"),
|
||||
StandardCharsets.UTF_8));
|
||||
StandardCharsets.UTF_8))) {
|
||||
while (reader.ready()) {
|
||||
reservedWordsList.add(reader.readLine());
|
||||
}
|
||||
reader.close();
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("Error reading dart keywords. Exception: {}", e.getMessage());
|
||||
}
|
||||
|
||||
@@ -20,6 +20,8 @@ import com.samskivert.mustache.Mustache;
|
||||
import com.samskivert.mustache.Template;
|
||||
import org.openapitools.codegen.api.TemplatingEngineAdapter;
|
||||
import org.openapitools.codegen.api.TemplatingExecutor;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Reader;
|
||||
@@ -29,6 +31,8 @@ import java.util.Map;
|
||||
|
||||
public class MustacheEngineAdapter implements TemplatingEngineAdapter {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(TemplatingEngineAdapter.class);
|
||||
|
||||
/**
|
||||
* Provides an identifier used to load the adapter. This could be a name, uuid, or any other string.
|
||||
*
|
||||
@@ -64,9 +68,11 @@ public class MustacheEngineAdapter implements TemplatingEngineAdapter {
|
||||
@SuppressWarnings({"java:S108"}) // catch-all is expected, and is later thrown
|
||||
public Reader findTemplate(TemplatingExecutor generator, String name) {
|
||||
for (String extension : extensions) {
|
||||
final String templateName = name + "." + extension;
|
||||
try {
|
||||
return new StringReader(generator.getFullTemplateContents(name + "." + extension));
|
||||
} catch (Exception ignored) {
|
||||
return new StringReader(generator.getFullTemplateContents(templateName));
|
||||
} catch (Exception exception) {
|
||||
LOGGER.error("Failed to read full template {}, {}", templateName, exception.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -248,4 +248,4 @@ public class TemplateManagerTest {
|
||||
target.toFile().delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,7 +68,9 @@ public class DartClientCodegenTest {
|
||||
List<String> reservedWordsList = new ArrayList<String>();
|
||||
try {
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("src/main/resources/dart/dart-keywords.txt"), Charset.forName("UTF-8")));
|
||||
while(reader.ready()) { reservedWordsList.add(reader.readLine()); }
|
||||
while(reader.ready()) {
|
||||
reservedWordsList.add(reader.readLine());
|
||||
}
|
||||
reader.close();
|
||||
} catch (Exception e) {
|
||||
String errorString = String.format(Locale.ROOT, "Error reading dart keywords: %s", e);
|
||||
|
||||
Reference in New Issue
Block a user