Replaced getProjectDir() with getPropertiesFile().

This commit is contained in:
Erik C. Thauvin 2019-05-25 10:55:34 -07:00
parent 486ed17317
commit d689ade3a1

View file

@ -86,19 +86,18 @@ public class VersionProcessor extends AbstractProcessor {
} }
@SuppressFBWarnings({"PATH_TRAVERSAL_IN", "UAC_UNNECESSARY_API_CONVERSION_FILE_TO_PATH"}) @SuppressFBWarnings({"PATH_TRAVERSAL_IN", "UAC_UNNECESSARY_API_CONVERSION_FILE_TO_PATH"})
private VersionInfo findValues(final Version version) private VersionInfo findValues(final Version version) throws IOException {
throws IOException {
final VersionInfo versionInfo = new VersionInfo(version); final VersionInfo versionInfo = new VersionInfo(version);
if (version.properties().length() > 0) { if (version.properties().length() > 0) {
final File propsFile = new File(getProjectDir(version.properties())); final File propsFile = getPropertiesFile(version.properties());
if (propsFile.isFile() && propsFile.canRead()) { if (propsFile.isFile() && propsFile.canRead()) {
note("Found properties: " + propsFile + " (" + propsFile.getAbsoluteFile().getParent() + ')'); note("Found properties: " + propsFile + " (" + propsFile.getAbsoluteFile().getParent() + ')');
final Properties p = new Properties(); final Properties p = new Properties();
try (final InputStreamReader reader = try (final InputStreamReader reader = new InputStreamReader(Files.newInputStream(propsFile.toPath()),
new InputStreamReader(Files.newInputStream(propsFile.toPath()), StandardCharsets.UTF_8)) { StandardCharsets.UTF_8)) {
p.load(reader); p.load(reader);
versionInfo.setProject( versionInfo.setProject(
@ -112,12 +111,10 @@ public class VersionProcessor extends AbstractProcessor {
versionInfo.setBuildMeta( versionInfo.setBuildMeta(
p.getProperty(version.keysPrefix() + version.buildMetaKey(), version.buildMeta())); p.getProperty(version.keysPrefix() + version.buildMetaKey(), version.buildMeta()));
versionInfo.setBuildMetaPrefix( versionInfo.setBuildMetaPrefix(
p.getProperty(version.keysPrefix() + version.buildMetaPrefixKey(), p.getProperty(version.keysPrefix() + version.buildMetaPrefixKey(), version.buildMetaPrefix()));
version.buildMetaPrefix()));
versionInfo.setPreRelease( versionInfo.setPreRelease(
p.getProperty(version.keysPrefix() + version.preReleaseKey(), version.preRelease())); p.getProperty(version.keysPrefix() + version.preReleaseKey(), version.preRelease()));
versionInfo.setPreReleasePrefix( versionInfo.setPreReleasePrefix(p.getProperty(version.keysPrefix() + version.preReleasePrefixKey(),
p.getProperty(version.keysPrefix() + version.preReleasePrefixKey(),
version.preReleasePrefix())); version.preReleasePrefix()));
versionInfo.setSeparator( versionInfo.setSeparator(
p.getProperty(version.keysPrefix() + version.separatorKey(), version.separator())); p.getProperty(version.keysPrefix() + version.separatorKey(), version.separator()));
@ -130,25 +127,25 @@ public class VersionProcessor extends AbstractProcessor {
findOrRead = "read"; findOrRead = "read";
} }
error("Could not " + findOrRead + ": " + propsFile); error("Could not " + findOrRead + ": " + propsFile);
throw new FileNotFoundException("Could not " + findOrRead + " the specified file: `" throw new FileNotFoundException(
+ propsFile.getAbsolutePath() + '`'); "Could not " + findOrRead + " the specified file: `" + propsFile.getAbsolutePath() + '`');
} }
} }
return versionInfo; return versionInfo;
} }
private String getProjectDir(final String fileName) { @SuppressFBWarnings("PATH_TRAVERSAL_IN")
private File getPropertiesFile(final String fileName) {
if (processingEnv != null) { // null when testing. if (processingEnv != null) { // null when testing.
final String prop = processingEnv.getOptions().get(Constants.SEMVER_PROJECT_DIR_ARG); final String prop = processingEnv.getOptions().get(Constants.SEMVER_PROJECT_DIR_ARG);
if (prop != null) { if (prop != null) {
return prop + File.separator + fileName; return new File(prop, fileName);
} }
} }
return fileName; return new File(fileName);
} }
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
@ -199,8 +196,8 @@ public class VersionProcessor extends AbstractProcessor {
final String template; final String template;
if (isLocalTemplate && Constants.DEFAULT_JAVA_TEMPLATE.equals(version.template())) { if (isLocalTemplate && Constants.DEFAULT_JAVA_TEMPLATE.equals(version.template())) {
template = Constants.DEFAULT_TEMPLATE_NAME; template = Constants.DEFAULT_TEMPLATE_NAME;
} else if (Constants.DEFAULT_JAVA_TEMPLATE.equals(version.template()) } else if (Constants.DEFAULT_JAVA_TEMPLATE.equals(version.template()) && Constants.KOTLIN_TYPE
&& Constants.KOTLIN_TYPE.equals(version.type())) { .equals(version.type())) {
template = Constants.DEFAULT_KOTLIN_TEMPLATE; template = Constants.DEFAULT_KOTLIN_TEMPLATE;
} else { } else {
template = version.template(); template = version.template();
@ -218,8 +215,8 @@ public class VersionProcessor extends AbstractProcessor {
private void log(final Diagnostic.Kind kind, final String s) { private void log(final Diagnostic.Kind kind, final String s) {
if (messager != null) { if (messager != null) {
messager.printMessage(kind, '[' + VersionProcessor.class.getSimpleName() + "] " + s messager.printMessage(kind,
+ System.lineSeparator()); '[' + VersionProcessor.class.getSimpleName() + "] " + s + System.lineSeparator());
} }
} }
@ -227,11 +224,11 @@ public class VersionProcessor extends AbstractProcessor {
log(Diagnostic.Kind.NOTE, s); log(Diagnostic.Kind.NOTE, s);
} }
private int parseIntProperty(final Properties p, final String property, final int defaultValue) { private int parseIntProperty(final Properties p, final String key, final int defaultValue) {
try { try {
return Math.abs(Integer.parseInt(p.getProperty(property, Integer.toString(defaultValue)).trim())); return Math.abs(Integer.parseInt(p.getProperty(key, Integer.toString(defaultValue)).trim()));
} catch (NumberFormatException ignore) { } catch (NumberFormatException ignore) {
warn("Invalid property value: " + property); warn("Invalid property value: " + key);
return defaultValue; return defaultValue;
} }
} }
@ -241,12 +238,9 @@ public class VersionProcessor extends AbstractProcessor {
} }
@SuppressFBWarnings({"PATH_TRAVERSAL_IN", "UAC_UNNECESSARY_API_CONVERSION_FILE_TO_PATH"}) @SuppressFBWarnings({"PATH_TRAVERSAL_IN", "UAC_UNNECESSARY_API_CONVERSION_FILE_TO_PATH"})
private void writeTemplate(final String type, private void writeTemplate(final String type, final VersionInfo versionInfo, final String template)
final VersionInfo versionInfo,
final String template)
throws IOException { throws IOException {
final MustacheFactory mf = new DefaultMustacheFactory( final MustacheFactory mf = new DefaultMustacheFactory(getPropertiesFile("."));
new File(getProjectDir(".")));
final Mustache mustache = mf.compile(template); final Mustache mustache = mf.compile(template);
final String templateName; final String templateName;
@ -279,13 +273,12 @@ public class VersionProcessor extends AbstractProcessor {
} }
note("Generated source: " + fileName + " (" + ktFile.getParentFile().getAbsolutePath() + ')'); note("Generated source: " + fileName + " (" + ktFile.getParentFile().getAbsolutePath() + ')');
} else { } else {
final FileObject jfo = filer.createSourceFile(versionInfo.getPackageName() + '.' final FileObject jfo = filer.createSourceFile(
+ versionInfo.getClassName()); versionInfo.getPackageName() + '.' + versionInfo.getClassName());
try (final Writer writer = jfo.openWriter()) { try (final Writer writer = jfo.openWriter()) {
mustache.execute(writer, versionInfo).flush(); mustache.execute(writer, versionInfo).flush();
} }
note("Generated source: " + fileName + " (" note("Generated source: " + fileName + " (" + new File(jfo.getName()).getAbsoluteFile().getParent() + ')');
+ new File(jfo.getName()).getAbsoluteFile().getParent() + ')');
} }
} }
} }