* @exception IOException if an input/output error occurs
*
* @see #getTemplateCharacterEncoding()
*/
private final String readTemplate(final URL changeLogTemplateResource) throws IOException {
final Log log = this.getLog();
if (changeLogTemplateResource == null) {
throw new IllegalArgumentException("changeLogTemplateResource", new NullPointerException("changeLogTemplateResource"));
}
String returnValue = null;
final InputStream rawStream = changeLogTemplateResource.openStream();
if (rawStream != null) {
BufferedReader reader = null;
String templateCharacterEncoding = this.getTemplateCharacterEncoding();
if (templateCharacterEncoding == null) {
templateCharacterEncoding = "UTF-8";
}
if (log != null && log.isDebugEnabled()) {
log.debug(String.format("Reading change log template from %s using character encoding %s", changeLogTemplateResource, templateCharacterEncoding));
}
try {
reader = new BufferedReader(new InputStreamReader(rawStream, templateCharacterEncoding));
String line = null;
final StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null) {
sb.append(line);
sb.append(LS);
}
returnValue = sb.toString();
} finally {
try {
rawStream.close();
} catch (final IOException nothingWeCanDo) {
}
if (reader != null) {
try {
reader.close();
} catch (final IOException nothingWeCanDo) {
}
}
}
} else if (log != null && log.isDebugEnabled()) {
log.debug(String.format("Opening change log template %s results in a null InputStream.", changeLogTemplateResource));
}
return returnValue;
}