In this PR, we've add a new method, IOChannelUtils.hasFactory, which provides a convenient way to verify that a factory exists before calling getFactory. As such, the IOException thrown by getFactory is extra cruft for consumers using the new pattern.
We should update additional consumers to check hasFactory first, and then migrate getFactory to throw a RuntimeException
Imported from Jira BEAM-281. Original Jira may contain additional context.
Reported by: swegner.