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:

  1. 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:

  1. 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)

Most upvoted comments

it’s strange problem,recently did not encounter this problem,i will continue to pay attention on this. thank you

  1. Error mapping xxx.DetailDTO to com.xxx.V2BankimportRawDetail

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