Releases: sbabcoc/Java-Utils
Add 'findExecutableOnSystemPath' method; eliminate Guava
In this release, I added a new findExecutableOnSystemPath
function to the FileUtils class. This will eliminate reliance on similar Selenium APIs in Selenium Foundation.
I also removed dependencies on Guava APIs. These really weren't doing very much for me, and including this library could cause mixed-version issues for client projects.
NOTE: This is a breaking change, because the Params class has now switched from using the Guava Optional class to the standard Java Optional class.
Fix Macintosh path acquisition; omit duplicate entries; clean up stuff
In this release, I fixed a bug in the acquisition of Macintosh path entries, optimizing the process. I added logic to omit entries that were already represented. I also performed some basic clean-up - removing unnecessary boxing, adding 'final' specifiers where possible, etc.
PathUtils: Add methods to acquire system paths
In this release, I added methods to acquire the system paths in two different flavors - standard PATH from the system environment and the path_helper
collection found on Mac OS X. These are returned independently as list augmenters or together as a path-delimited string.
Build for Java 8; upgrade dependencies and plugins
In this release, I finally dropped support for Java 7. By building this library for Java 8, I'm able to upgrade dependencies to newer versions that resolve identified vulnerabilities.
Add new stack trace capture class
In this release, I added a cool widget for capturing diagnostic information: the StackTrack class. This class extends Throwable and it's intended to facilitate capture of the flow of execution that triggered system state changes that may lead to future operation errors. For example, an object that's no longer valid might get used subsequent to the event that caused it to become invalid, or a long-lived object may get discarded without corresponding resources being cleaned up.
For more details, check out the blog post that provided the implementation for StackTrace.
Add new classpath/javaagent method that returns a list
In this release, I added a new getContextPaths
method that returns the classpath and Java agent specifications in a list. After using the existing getClasspath
method, I realized that I ended up having to perform a lot of processing on the string it returns that essentially undoes the string concatenation the method had just done.
Tweak dependencies to suppress aggressive Guava warning
Guava 30.1.1-android adds an obtrusive warning regarding the intent to remove support for Java 7 in an unspecified future release. I figured out a way to suppress the warning, but this requires pulling in guava
transitively through guava-agent
:
com.nordstrom.tools:guava-agent:30.1.1a
└── com.google.guava:guava:30.1.1-android
Upgrade dependencies and plugins
This release contains no functional changes but is instead focused on project housekeeping.
I also fixed a platform-specific bug in one of the unit tests and resolves a JavaDoc warning.
Revise cross-compile configuration
This release is solely focused on non-functional aspects of the project, Specifically, I revised the POM to use the cross-compilation features that were added in Java 9. This eliminated the need for maven-toolchains-plugin
, which obviated the Eclipse M2E lifecycle-mapping
configuration. I also migrated the project to the newer Sonatype s01
staging host for the deployment of releases.
In addition to this project configuration refresh, I corrected the formatting of line breaks in my JavaDoc comments.
Genericize database methods; require result instead of masking lack thereof
This release is focused on a few pervasive issues in the DatabaseUtils class:
- Prior to this release, many methods returned
Object
instead of specifying a generic return type. This required client code to declare explicit type-cast operations and ignore the resulting "unchecked cast" warnings. These have all been updated to eliminate the need for these type-casts. - If the specified query or stored procedure failed to return a result, the two
getString(...)
methods would returnnull
and the twogetInt(...)
methods would return-1
. In this release, failure to return a result for these methods will now cause IllegalStateException to be thrown.
I also added README references to a few neglected utility classes that I hope folks will find useful.