orika-mapper / orika

Simpler, better and faster Java bean mapping framework
http://orika-mapper.github.io/orika-docs/
Apache License 2.0
1.29k stars 269 forks source link

Nested fieldname with the name 'enabled' causes javaassit error #68

Closed wesselOC closed 6 years ago

wesselOC commented 9 years ago

When a nested field is mapped with name enabled like the following:

            .field("items{enabled}", "items{enabled}").mapNulls(false)

This causes a the following error at compile time: compile error: no such field: java

stack trace:

09:46:46,877 ERROR [org.jboss.msc.service.fail](MSC service thread 1-4) MSC000001: Failed to start service jboss.deployment.unit."ordercloud.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."ordercloud.war".INSTALL: WFLYSRV0153: Failed to process phase INSTALL of deployment "ordercloud.war" at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:163) at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.ExceptionInInitializerError at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:278) at org.jboss.invocation.proxy.AbstractProxyFactory.afterClassLoad(AbstractProxyFactory.java:95) at org.jboss.invocation.proxy.AbstractClassFactory.defineClass(AbstractClassFactory.java:166) at org.jboss.invocation.proxy.AbstractProxyFactory.getCachedMethods(AbstractProxyFactory.java:150) at org.jboss.as.ejb3.component.stateless.StatelessComponentDescription$3.configure(StatelessComponentDescription.java:150) at org.jboss.as.ee.component.DefaultComponentViewConfigurator.configure(DefaultComponentViewConfigurator.java:67) at org.jboss.as.ee.component.deployers.EEModuleConfigurationProcessor.deploy(EEModuleConfigurationProcessor.java:81) at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:156) ... 5 more Caused by: ma.glasnost.orika.MappingException: ma.glasnost.orika.impl.generator.CompilerStrategy$SourceCodeGenerationException: Error compiling ma.glasnost.orika.generated.Orika_OrdersDto_Orders_Mapper198327897925844$0 at ma.glasnost.orika.impl.generator.MapperGenerator.build(MapperGenerator.java:105) at ma.glasnost.orika.impl.DefaultMapperFactory.buildMapper(DefaultMapperFactory.java:1372) at ma.glasnost.orika.impl.DefaultMapperFactory.build(DefaultMapperFactory.java:1199) at ma.glasnost.orika.impl.DefaultMapperFactory.getMapperFacade(DefaultMapperFactory.java:859) at com.unijunction.ordercloud.order.mapper.OrderMapper.(OrderMapper.java:51) ... 14 more Caused by: ma.glasnost.orika.impl.generator.CompilerStrategy$SourceCodeGenerationException: Error compiling ma.glasnost.orika.generated.Orika_OrdersDto_Orders_Mapper198327897925844$0 at ma.glasnost.orika.impl.generator.JavassistCompilerStrategy.compileClass(JavassistCompilerStrategy.java:269) at ma.glasnost.orika.impl.generator.SourceCodeContext.compileClass(SourceCodeContext.java:249) at ma.glasnost.orika.impl.generator.SourceCodeContext.getInstance(SourceCodeContext.java:266) at ma.glasnost.orika.impl.generator.MapperGenerator.build(MapperGenerator.java:75) ... 18 more Caused by: javassist.CannotCompileException: [source error] no such field: java at javassist.CtNewMethod.make(CtNewMethod.java:79) at javassist.CtNewMethod.make(CtNewMethod.java:45) at ma.glasnost.orika.impl.generator.JavassistCompilerStrategy.compileClass(JavassistCompilerStrategy.java:253) ... 21 more Caused by: compile error: no such field: java at javassist.compiler.MemberResolver.lookupField(MemberResolver.java:311) at javassist.compiler.MemberResolver.lookupFieldByJvmName(MemberResolver.java:297) at javassist.compiler.TypeChecker.fieldAccess(TypeChecker.java:850) at javassist.compiler.TypeChecker.atFieldRead(TypeChecker.java:777) at javassist.compiler.TypeChecker.atExpr(TypeChecker.java:578) at javassist.compiler.ast.Expr.accept(Expr.java:68) at javassist.compiler.TypeChecker.fieldAccess(TypeChecker.java:834) at javassist.compiler.TypeChecker.atFieldRead(TypeChecker.java:777) at javassist.compiler.TypeChecker.atExpr(TypeChecker.java:578) at javassist.compiler.ast.Expr.accept(Expr.java:68) at javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:660) at javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:157) at javassist.compiler.ast.CallExpr.accept(CallExpr.java:46) at javassist.compiler.TypeChecker.booleanExpr(TypeChecker.java:518) at javassist.compiler.TypeChecker.atBinExpr(TypeChecker.java:337) at javassist.compiler.ast.BinExpr.accept(BinExpr.java:41) at javassist.compiler.TypeChecker.booleanExpr(TypeChecker.java:527) at javassist.compiler.TypeChecker.atBinExpr(TypeChecker.java:337) at javassist.compiler.ast.BinExpr.accept(BinExpr.java:41) at javassist.compiler.TypeChecker.booleanExpr(TypeChecker.java:523) at javassist.compiler.TypeChecker.atExpr(TypeChecker.java:592) at javassist.compiler.ast.Expr.accept(Expr.java:68) at javassist.compiler.TypeChecker.booleanExpr(TypeChecker.java:527) at javassist.compiler.TypeChecker.atBinExpr(TypeChecker.java:337) at javassist.compiler.ast.BinExpr.accept(BinExpr.java:41) at javassist.compiler.TypeChecker.booleanExpr(TypeChecker.java:526) at javassist.compiler.TypeChecker.atBinExpr(TypeChecker.java:337) at javassist.compiler.ast.BinExpr.accept(BinExpr.java:41) at javassist.compiler.TypeChecker.booleanExpr(TypeChecker.java:526) at javassist.compiler.TypeChecker.atBinExpr(TypeChecker.java:337) at javassist.compiler.ast.BinExpr.accept(BinExpr.java:41) at javassist.compiler.TypeChecker.booleanExpr(TypeChecker.java:526) at javassist.compiler.TypeChecker.atBinExpr(TypeChecker.java:337) at javassist.compiler.ast.BinExpr.accept(BinExpr.java:41) at javassist.compiler.TypeChecker.booleanExpr(TypeChecker.java:526) at javassist.compiler.TypeChecker.atBinExpr(TypeChecker.java:337) at javassist.compiler.ast.BinExpr.accept(BinExpr.java:41) at javassist.compiler.TypeChecker.booleanExpr(TypeChecker.java:526) at javassist.compiler.TypeChecker.atBinExpr(TypeChecker.java:337) at javassist.compiler.ast.BinExpr.accept(BinExpr.java:41) at javassist.compiler.TypeChecker.booleanExpr(TypeChecker.java:526) at javassist.compiler.TypeChecker.atBinExpr(TypeChecker.java:337) at javassist.compiler.ast.BinExpr.accept(BinExpr.java:41) at javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:242) at javassist.compiler.CodeGen.compileBooleanExpr(CodeGen.java:236) at javassist.compiler.CodeGen.atIfStmnt(CodeGen.java:384) at javassist.compiler.CodeGen.atStmnt(CodeGen.java:355) at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50) at javassist.compiler.CodeGen.atStmnt(CodeGen.java:351) at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50) at javassist.compiler.CodeGen.atWhileStmnt(CodeGen.java:431) at javassist.compiler.CodeGen.atStmnt(CodeGen.java:357) at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50) at javassist.compiler.CodeGen.atStmnt(CodeGen.java:351) at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50) at javassist.compiler.CodeGen.atIfStmnt(CodeGen.java:391) at javassist.compiler.CodeGen.atStmnt(CodeGen.java:355) at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50) at javassist.compiler.CodeGen.atStmnt(CodeGen.java:351) at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50) at javassist.compiler.CodeGen.atMethodBody(CodeGen.java:292) at javassist.compiler.CodeGen.atMethodDecl(CodeGen.java:274) at javassist.compiler.ast.MethodDecl.accept(MethodDecl.java:44) at javassist.compiler.Javac.compileMethod(Javac.java:169) at javassist.compiler.Javac.compile(Javac.java:95) at javassist.CtNewMethod.make(CtNewMethod.java:74) ... 23 more

ndr-brt commented 7 years ago

Can you create a gist with the code that cause that exception?