DBZ-1966 Fix NPE during quarkus:dev operation of Outbox Extension
This commit is contained in:
parent
8413b84022
commit
dfe2dbf0ee
@ -12,6 +12,7 @@
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStreamWriter;
|
||||
@ -30,6 +31,10 @@
|
||||
import org.hibernate.boot.spi.MetadataBuildingContext;
|
||||
import org.hibernate.boot.spi.MetadataImplementor;
|
||||
import org.jboss.jandex.IndexView;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import io.debezium.DebeziumException;
|
||||
|
||||
/**
|
||||
* An {@link AdditionalJaxbMappingProducer} implementation that provides Hibernate ORM
|
||||
@ -39,14 +44,22 @@
|
||||
* @author Chris Cranford
|
||||
*/
|
||||
public class AdditionalJaxbMappingProducerImpl implements AdditionalJaxbMappingProducer {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(AdditionalJaxbMappingProducerImpl.class);
|
||||
|
||||
@Override
|
||||
public Collection<MappingDocument> produceAdditionalMappings(MetadataImplementor metadata,
|
||||
IndexView jandexIndex,
|
||||
MappingBinder mappingBinder,
|
||||
MetadataBuildingContext buildingContext) {
|
||||
final Origin origin = new Origin(SourceType.FILE, OUTBOX_ENTITY_HBMXML);
|
||||
try {
|
||||
final InputStream stream = getClass().getResourceAsStream("/" + OUTBOX_ENTITY_HBMXML);
|
||||
|
||||
try (InputStream stream = getOutboxHbmXmlStream()) {
|
||||
if (stream == null) {
|
||||
LOGGER.error("Failed to locate OutboxEvent.hbm.xml on classpath");
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
|
||||
final Writer writer = new BufferedWriter(new OutputStreamWriter(baos, StandardCharsets.UTF_8));
|
||||
try (BufferedReader reader = new BufferedReader(new InputStreamReader(stream))) {
|
||||
@ -66,8 +79,20 @@ public Collection<MappingDocument> produceAdditionalMappings(MetadataImplementor
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e) {
|
||||
throw new RuntimeException("Failed to submit OutboxEvent.hbm.xml mapping to Hibernate ORM", e);
|
||||
catch (IOException e) {
|
||||
throw new DebeziumException("Failed to read OutboxEvent.hbm.xml", e);
|
||||
}
|
||||
}
|
||||
|
||||
private InputStream getOutboxHbmXmlStream() {
|
||||
// Attempt to load the XML using the current context class loader, needed for quarkus:dev
|
||||
final ClassLoader currentThreadClassLoader = Thread.currentThread().getContextClassLoader();
|
||||
final InputStream stream = currentThreadClassLoader.getResourceAsStream("/" + OUTBOX_ENTITY_HBMXML);
|
||||
if (stream != null) {
|
||||
return stream;
|
||||
}
|
||||
|
||||
// Attempt to load the XML using the current class loader
|
||||
return getClass().getResourceAsStream("/" + OUTBOX_ENTITY_HBMXML);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user