|
32 | 32 | import java.lang.reflect.InvocationTargetException;
|
33 | 33 | import java.util.Map;
|
34 | 34 | import java.util.Objects;
|
| 35 | +import java.util.ServiceConfigurationError; |
35 | 36 | import java.util.ServiceLoader;
|
36 | 37 | import java.util.concurrent.ConcurrentHashMap;
|
37 | 38 | import java.util.concurrent.ConcurrentMap;
|
| 39 | +import org.slf4j.Logger; |
| 40 | +import org.slf4j.LoggerFactory; |
38 | 41 |
|
39 | 42 | public class DefaultMapperContext implements MapperContext {
|
40 | 43 |
|
| 44 | + private static final Logger LOGGER = LoggerFactory.getLogger(DefaultMapperContext.class); |
| 45 | + |
41 | 46 | private final ConcurrentMap<GenericType<?>, MapperResultProducer> resultProducerCache =
|
42 | 47 | new ConcurrentHashMap<>();
|
43 | 48 |
|
@@ -188,10 +193,20 @@ private static NameConverter buildNameConverter(Class<? extends NameConverter> c
|
188 | 193 |
|
189 | 194 | private static ImmutableList<MapperResultProducer> locateResultProducers(
|
190 | 195 | 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; |
196 | 211 | }
|
197 | 212 | }
|
0 commit comments