AutoCloseableInputSource.java
package org.owasp.dependencycheck.utils;
import org.xml.sax.InputSource;
import java.io.Closeable;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
public class AutoCloseableInputSource extends InputSource implements AutoCloseable {
public AutoCloseableInputSource(InputStream inputStream) {
super(inputStream);
}
public AutoCloseableInputSource(Reader reader) {
super(reader);
}
@Override
public void close() throws IOException {
closeIfNecessary(super.getByteStream());
closeIfNecessary(super.getCharacterStream());
}
private void closeIfNecessary(Closeable closeable) throws IOException {
if (closeable != null) {
closeable.close();
}
}
public static AutoCloseableInputSource fromResource(String resourceLocation) throws FileNotFoundException {
AutoCloseableInputSource inputSource = new AutoCloseableInputSource(new InputStreamReader(FileUtils.getResourceAsStream(resourceLocation), StandardCharsets.UTF_8));
inputSource.setSystemId(Path.of(resourceLocation).getFileName().toString());
return inputSource;
}
}