Skip to content

Commit dfb816e

Browse files
committed
Add debug logging and exception handling to DefaultMapperContext.locateResultProducers
1 parent 52f3550 commit dfb816e

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

mapper-runtime/src/main/java/com/datastax/oss/driver/internal/mapper/DefaultMapperContext.java

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,17 @@
3232
import java.lang.reflect.InvocationTargetException;
3333
import java.util.Map;
3434
import java.util.Objects;
35+
import java.util.ServiceConfigurationError;
3536
import java.util.ServiceLoader;
3637
import java.util.concurrent.ConcurrentHashMap;
3738
import java.util.concurrent.ConcurrentMap;
39+
import org.slf4j.Logger;
40+
import org.slf4j.LoggerFactory;
3841

3942
public class DefaultMapperContext implements MapperContext {
4043

44+
private static final Logger LOGGER = LoggerFactory.getLogger(DefaultMapperContext.class);
45+
4146
private final ConcurrentMap<GenericType<?>, MapperResultProducer> resultProducerCache =
4247
new ConcurrentHashMap<>();
4348

@@ -188,10 +193,20 @@ private static NameConverter buildNameConverter(Class<? extends NameConverter> c
188193

189194
private static ImmutableList<MapperResultProducer> locateResultProducers(
190195
ClassLoader classLoader) {
191-
ImmutableList.Builder<MapperResultProducer> result = ImmutableList.builder();
192-
ServiceLoader<MapperResultProducerService> loader =
193-
ServiceLoader.load(MapperResultProducerService.class, classLoader);
194-
loader.iterator().forEachRemaining(provider -> result.addAll(provider.getProducers()));
195-
return result.build();
196+
LOGGER.debug(
197+
"Locating result producers with CL = {}, MapperResultProducerService CL = {}",
198+
classLoader,
199+
MapperResultProducerService.class.getClassLoader());
200+
ImmutableList.Builder<MapperResultProducer> builder = ImmutableList.builder();
201+
try {
202+
ServiceLoader<MapperResultProducerService> loader =
203+
ServiceLoader.load(MapperResultProducerService.class, classLoader);
204+
loader.iterator().forEachRemaining(provider -> builder.addAll(provider.getProducers()));
205+
} catch (Exception | ServiceConfigurationError e) {
206+
LOGGER.error("Failed to locate result producers", e);
207+
}
208+
ImmutableList<MapperResultProducer> producers = builder.build();
209+
LOGGER.debug("Located {} result producers: {}", producers.size(), producers);
210+
return producers;
196211
}
197212
}

0 commit comments

Comments
 (0)