|
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