modelmapper: java.lang.ClassCastException@2b158f20
public class DTOUtils {
public static final Logger log = LoggerFactory.getLogger(DTOUtils.class);
public static final ModelMapper INSTANCE = new ModelMapper();
static {
INSTANCE.addConverter(new DateTimeToDateConverter());
INSTANCE.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
}
public static <S, T> T map(S source, Class<T> targetClass) {
return INSTANCE.map(source, targetClass);
}
public static <S, T> void map(S source, T dist) {
INSTANCE.map(source, dist);
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public static <S, T> List<T> map(List<S> source, Class<T> targetClass) {
List list = Lists.newArrayList(source.size());
for (Object obj : source) {
Object target = INSTANCE.map(obj, targetClass);
list.add(target);
}
return list;
}
public static Map<String, Object> beanToMap(Object source) throws Exception {
if (source == null) {
throw new Exception("beanToMap source bean is null");
}
Map<String, Object> map = new HashMap<String, Object>();
Field[] fds = source.getClass().getDeclaredFields();
for (Field f : fds) {
f.setAccessible(true);
map.put(f.getName(), f.get(source));
}
return map;
}
private static class DateTimeToDateConverter implements Converter<DateTime, Date> {
@Override
public Date convert(MappingContext<DateTime, Date> context) {
DateTime source = context.getSource();
if (source != null) {
return source.toDate();
}
return null;
}
}
}
public class ThreadDTO {
public static void main(String[] args) {
ExecutorService service = Executors.newFixedThreadPool(10);
for (int i = 0; i < 10000; i++) {
if( i % 2 == 0){
service.execute(new ThreadRun(new CustomerVo()));
}else{
service.execute(new ThreadRun(new BankCityVo()));
}
}
}
}
class ThreadRun implements Runnable{
private BaseVo baseVo;
public ThreadRun(BaseVo baseVo) {
super();
this.baseVo = baseVo;
}
@Override
public void run() {
DTOUtils.map(baseVo, new Customer());
}
}
happen error:
- Error mapping xxx.xxx.CustomerVo to com.xxxx.Customer
1 error at org.modelmapper.internal.Errors.throwMappingExceptionIfErrorsExist(Errors.java:374) at org.modelmapper.internal.MappingEngineImpl.map(MappingEngineImpl.java:69) at org.modelmapper.ModelMapper.mapInternal(ModelMapper.java:497) at org.modelmapper.ModelMapper.map(ModelMapper.java:381) at com.xxx.DTOUtils.map(DTOUtils.java:41) at com.xxx.ThreadRun.run(ThreadDTO.java:39) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: org.modelmapper.MappingException: ModelMapper mapping errors:
- Failed to get value from xxx.xxx…BankCityVo.getComments()
1 error 1 error at org.modelmapper.internal.Errors.toMappingException(Errors.java:258) at org.modelmapper.internal.PropertyInfoImpl$MethodAccessor.getValue(PropertyInfoImpl.java:100) at org.modelmapper.internal.MappingEngineImpl.resolveSourceValue(MappingEngineImpl.java:189) at org.modelmapper.internal.MappingEngineImpl.propertyMap(MappingEngineImpl.java:156) at org.modelmapper.internal.MappingEngineImpl.typeMap(MappingEngineImpl.java:131) at org.modelmapper.internal.MappingEngineImpl.map(MappingEngineImpl.java:92) at org.modelmapper.internal.MappingEngineImpl.map(MappingEngineImpl.java:60) … 7 more Caused by: java.lang.IllegalArgumentException: java.lang.ClassCastException@2b158f20 at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.modelmapper.internal.PropertyInfoImpl$MethodAccessor.getValue(PropertyInfoImpl.java:95) … 12 more Exception in thread “pool-1-thread-374” org.modelmapper.MappingException: ModelMapper mapping errors:
About this issue
- Original URL
- State: open
- Created 7 years ago
- Comments: 23 (12 by maintainers)
it’s strange problem,recently did not encounter this problem,i will continue to pay attention on this. thank you
1 error at org.modelmapper.internal.Errors.throwMappingExceptionIfErrorsExist(Errors.java:374) ~[modelmapper-0.7.4.jar:na] at org.modelmapper.internal.MappingEngineImpl.map(MappingEngineImpl.java:69) ~[modelmapper-0.7.4.jar:na] at org.modelmapper.ModelMapper.mapInternal(ModelMapper.java:497) ~[modelmapper-0.7.4.jar:na] at org.modelmapper.ModelMapper.map(ModelMapper.java:340) ~[modelmapper-0.7.4.jar:na] at com.xxx.DTOUtils.map(DTOUtils.java:51) ~[xlnodecore-common-util-1.0.0.jar:na] at com.xxx.V2BankImportServiceImpl.batchInsertRawDetail(V2BankImportServiceImpl.java:482) ~[xlnodecore-biz-service-implement-1.0.0.jar:na] at com.alibaba.dubbo.common.bytecode.Wrapper135.invokeMethod(Wrapper135.java) [na:2.5.3] at com.alibaba.dubbo.rpc.proxy.javassist.JavassistProxyFactory$1.doInvoke(JavassistProxyFactory.java:46) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.rpc.proxy.AbstractProxyInvoker.invoke(AbstractProxyInvoker.java:72) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:53) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.rpc.filter.ExceptionFilter.invoke(ExceptionFilter.java:64) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.rpc.filter.TimeoutFilter.invoke(TimeoutFilter.java:42) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:75) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.rpc.protocol.dubbo.filter.TraceFilter.invoke(TraceFilter.java:78) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.rpc.filter.ContextFilter.invoke(ContextFilter.java:60) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.rpc.filter.GenericFilter.invoke(GenericFilter.java:112) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.rpc.filter.ClassLoaderFilter.invoke(ClassLoaderFilter.java:38) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.rpc.filter.EchoFilter.invoke(EchoFilter.java:38) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol$1.reply(DubboProtocol.java:108) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.handleRequest(HeaderExchangeHandler.java:84) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.received(HeaderExchangeHandler.java:170) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:52) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:82) [dubbo-2.5.3.jar:2.5.3] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_79] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_79] at java.lang.Thread.run(Thread.java:745) [na:1.7.0_79] Caused by: java.lang.ClassCastException: org.modelmapper.internal.PropertyInfoImpl$MethodAccessor cannot be cast to org.modelmapper.internal.Mutator at org.modelmapper.internal.PropertyInfoRegistry.mutatorFor(PropertyInfoRegistry.java:92) ~[modelmapper-0.7.4.jar:na] at org.modelmapper.internal.PropertyInfoResolver$3.propertyInfoFor(PropertyInfoResolver.java:75) ~[modelmapper-0.7.4.jar:na] at org.modelmapper.internal.PropertyInfoResolver$3.propertyInfoFor(PropertyInfoResolver.java:63) ~[modelmapper-0.7.4.jar:na] at org.modelmapper.internal.PropertyInfoSetResolver.resolveProperties(PropertyInfoSetResolver.java:146) ~[modelmapper-0.7.4.jar:na] at org.modelmapper.internal.PropertyInfoSetResolver.resolveProperties(PropertyInfoSetResolver.java:123) ~[modelmapper-0.7.4.jar:na] at org.modelmapper.internal.PropertyInfoSetResolver.resolveMutators(PropertyInfoSetResolver.java:91) ~[modelmapper-0.7.4.jar:na] at org.modelmapper.internal.TypeInfoImpl.getMutators(TypeInfoImpl.java:76) ~[modelmapper-0.7.4.jar:na] at org.modelmapper.internal.ImplicitMappingBuilder.matchDestination(ImplicitMappingBuilder.java:92) ~[modelmapper-0.7.4.jar:na] at org.modelmapper.internal.ImplicitMappingBuilder.build(ImplicitMappingBuilder.java:82) ~[modelmapper-0.7.4.jar:na] at org.modelmapper.internal.TypeMapStore.getOrCreate(TypeMapStore.java:105) ~[modelmapper-0.7.4.jar:na] at org.modelmapper.internal.TypeMapStore.getOrCreate(TypeMapStore.java:79) ~[modelmapper-0.7.4.jar:na] at org.modelmapper.internal.MappingEngineImpl.map(MappingEngineImpl.java:99) ~[modelmapper-0.7.4.jar:na] at org.modelmapper.internal.MappingEngineImpl.map(MappingEngineImpl.java:60) ~[modelmapper-0.7.4.jar:na] … 32 common frames omitted