public static <T extends ValidatingConfig<T>> T getObjectFromStream(final URI uri, final InputStream stream, final Class<T> clazz) throws SAXException, InvalidConfigException, JAXBException, IOException, TransformerException, ValidationException {
if (stream == null) {
return null;
}
final Object o = unmarshaller(clazz).unmarshal(stream);
if (clazz.isInstance(o)) {
@SuppressWarnings("unchecked") final
T castObject = (T) o;
try {
validate(uri, castObject);
} catch (ValidationException e) {
e.getErrors().log(log);
System.err.println(e.getErrors().toString());
throw e;
}
return castObject;
} else {
return null;
}
}