Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CobiGen CLI does not generate properly from build Java sources, after adding an attribute #1594

Open
mdukhan opened this issue Oct 18, 2022 · 1 comment
Labels
app:cli bug comp:tempeng:freemarker Team_CobiGen_Templates These issues will be handeled by the team CobiGen_Templates

Comments

@mdukhan
Copy link
Contributor

mdukhan commented Oct 18, 2022

Expected behavior

As a CobiGen CLI user, I want to be able to add attributes to my input files, after building the classes.
The bug from the following issue #1497 is splitted.

Actual behavior

Steps to reproduce (bug) / Use Case of feature request (enhancement)

  1. Install and build a project with Java sources (devon mvn clean install -Dmaven.test.skip=true) CobiGen CLI does not generate properly from non-build Java sources #1593
  2. After successfull generation add an attribute to the entity class
private String company;
public String getCompany() {
    return company;
}
  
public void setCompany(String company) {
  this.company = company;
}
  1. Run CobiGen again and select 5 or 8 as increments
    The following error occurs:
[DEBUG] Merge AbstractSearchCriteriaTo.java with char set UTF-8.
[WARN ] Generation finished non-successful. Generated contents can be reviewed in file:///C:/Users/jgunther/AppData/Local/Temp/cobigen-8748010421413070530/
[ERROR] Further reported error:
com.devonfw.cobigen.api.exception.CobiGenRuntimeException: An error occurred while generating the template: /src/main/templates/crud_java_server_app/templates/java/${variables.rootPackage}/${variables.component}/logic/api/to/${variables.entityName}SearchCriteriaTo.java.ftl (FreeMarker v2.3.29)
        at com.devonfw.cobigen.tempeng.freemarker.FreeMarkerTemplateEngine.process(FreeMarkerTemplateEngine.java:77)
        at com.devonfw.cobigen.impl.generator.GenerationProcessorImpl.generate(GenerationProcessorImpl.java:477)
        at com.devonfw.cobigen.impl.generator.GenerationProcessorImpl.generate(GenerationProcessorImpl.java:208)
        at com.devonfw.cobigen.impl.generator.CobiGenImpl.generate(CobiGenImpl.java:99)
        at com.devonfw.cobigen.impl.generator.CobiGenImpl.generate(CobiGenImpl.java:82)
        at com.devonfw.cobigen.cli.commands.GenerateCommand.generate(GenerateCommand.java:332)
        at com.devonfw.cobigen.cli.commands.GenerateCommand.doAction(GenerateCommand.java:117)
        at com.devonfw.cobigen.cli.commands.CommandCommons.call(CommandCommons.java:36)
        at com.devonfw.cobigen.cli.commands.CommandCommons.call(CommandCommons.java:15)
        at picocli.CommandLine.executeUserObject(CommandLine.java:1953)
        at picocli.CommandLine.access$1300(CommandLine.java:145)
        at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2352)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2314)
        at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
        at picocli.CommandLine$RunLast.execute(CommandLine.java:2316)
        at picocli.CommandLine.execute(CommandLine.java:2078)
        at com.devonfw.cobigen.cli.CobiGenCLI.main(CobiGenCLI.java:37)
Caused by: freemarker.core._TemplateModelException: Java method "com.devonfw.cobigen.templates.devon4j.utils.JavaUtil.equalsJavaPrimitive(Class, String)" threw an exception when invoked on com.devonfw.cobigen.templates.devon4j.utils.JavaUtil object "com.devonfw.cobigen.templates.devon4j.utils.JavaUtil@6c101cc1"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
        - Failed at: #elseif isSearchCriteria && JavaUtil...  [in template "functions.ftl" in macro "generateFieldDeclarations_withRespectTo_entityObjectToIdReferenceConversion" at line 20, column 1]
        - Reached through: @generateFieldDeclarations_withRespec...  [in template "templates/java/${variables.rootPackage}/${variables.component}/logic/api/to/${variables.entityName}SearchCriteriaTo.java.ftl" at line 18, column 9]
----
        at freemarker.ext.beans._MethodUtil.newInvocationTemplateModelException(_MethodUtil.java:289)
        at freemarker.ext.beans._MethodUtil.newInvocationTemplateModelException(_MethodUtil.java:261)
        at freemarker.ext.beans.OverloadedMethodsModel.exec(OverloadedMethodsModel.java:65)
        at freemarker.core.MethodCall._eval(MethodCall.java:62)
        at freemarker.core.Expression.eval(Expression.java:101)
        at freemarker.core.Expression.evalToBoolean(Expression.java:179)
        at freemarker.core.Expression.evalToBoolean(Expression.java:165)
        at freemarker.core.AndExpression.evalToBoolean(AndExpression.java:36)
        at freemarker.core.IfBlock.accept(IfBlock.java:49)
        at freemarker.core.Environment.visit(Environment.java:367)
        at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:291)
        at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271)
        at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:244)
        at freemarker.core.Environment.visitIteratorBlock(Environment.java:643)
        at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:108)
        at freemarker.core.IteratorBlock.accept(IteratorBlock.java:94)
        at freemarker.core.Environment.visit(Environment.java:367)
        at freemarker.core.Environment.invokeMacroOrFunctionCommonPart(Environment.java:872)
        at freemarker.core.Environment.invokeMacro(Environment.java:809)
        at freemarker.core.UnifiedCall.accept(UnifiedCall.java:83)
        at freemarker.core.Environment.visit(Environment.java:331)
        at freemarker.core.Environment.visit(Environment.java:337)
        at freemarker.core.Environment.process(Environment.java:310)
        at com.devonfw.cobigen.tempeng.freemarker.FreeMarkerTemplateEngine.process(FreeMarkerTemplateEngine.java:74)
        ... 17 common frames omitted
Caused by: java.lang.NoSuchFieldException: company
        at java.base/java.lang.Class.getDeclaredField(Class.java:2411)
        at com.devonfw.cobigen.templates.devon4j.utils.JavaUtil.equalsJavaPrimitive(JavaUtil.java:131)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:1505)
        at freemarker.ext.beans.ReflectionCallableMemberDescriptor.invokeMethod(ReflectionCallableMemberDescriptor.java:56)
        at freemarker.ext.beans.MemberAndArguments.invokeMethod(MemberAndArguments.java:51)
        at freemarker.ext.beans.OverloadedMethodsModel.exec(OverloadedMethodsModel.java:61)
        ... 38 common frames omitted
←[31m←[1mcom.devonfw.cobigen.api.exception.CobiGenRuntimeException: An error occurred while generating the template: /src/main/templates/crud_java_server_app/templates/java/${variables.rootPackage}/${variables.component}/logic/api/to/${variables.entityName}Eto.java.ftl (FreeMarker v2.3.29)←[21m←[39m←[0m
←[3m    at com.devonfw.cobigen.tempeng.freemarker.FreeMarkerTemplateEngine.process(FreeMarkerTemplateEngine.java:77)←[23m←[0m
←[3m    at com.devonfw.cobigen.impl.generator.GenerationProcessorImpl.generate(GenerationProcessorImpl.java:477)←[23m←[0m
←[3m    at com.devonfw.cobigen.impl.generator.GenerationProcessorImpl.generate(GenerationProcessorImpl.java:208)←[23m←[0m
←[3m    at com.devonfw.cobigen.impl.generator.CobiGenImpl.generate(CobiGenImpl.java:99)←[23m←[0m
←[3m    at com.devonfw.cobigen.impl.generator.CobiGenImpl.generate(CobiGenImpl.java:82)←[23m←[0m
←[3m    at com.devonfw.cobigen.cli.commands.GenerateCommand.generate(GenerateCommand.java:332)←[23m←[0m
←[3m    at com.devonfw.cobigen.cli.commands.GenerateCommand.doAction(GenerateCommand.java:117)←[23m←[0m
←[3m    at com.devonfw.cobigen.cli.commands.CommandCommons.call(CommandCommons.java:36)←[23m←[0m
←[3m    at com.devonfw.cobigen.cli.commands.CommandCommons.call(CommandCommons.java:15)←[23m←[0m
←[3m    at picocli.CommandLine.executeUserObject(CommandLine.java:1953)←[23m←[0m
←[3m    at picocli.CommandLine.access$1300(CommandLine.java:145)←[23m←[0m
←[3m    at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358)←[23m←[0m
←[3m    at picocli.CommandLine$RunLast.handle(CommandLine.java:2352)←[23m←[0m
←[3m    at picocli.CommandLine$RunLast.handle(CommandLine.java:2314)←[23m←[0m
←[3m    at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)←[23m←[0m
←[3m    at picocli.CommandLine$RunLast.execute(CommandLine.java:2316)←[23m←[0m
←[3m    at picocli.CommandLine.execute(CommandLine.java:2078)←[23m←[0m
←[3m    at com.devonfw.cobigen.cli.CobiGenCLI.main(CobiGenCLI.java:37)←[23m←[0m
←[31m←[1mCaused by: freemarker.core._TemplateModelException: Java method "com.devonfw.cobigen.templates.devon4j.utils.JavaUtil.equalsJavaPrimitive(Class, String)" threw an exception when invoked on com.devonfw.cobigen.templates.devon4j.utils.JavaUtil object "com.devonfw.cobigen.templates.devon4j.utils.JavaUtil@6c101cc1"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
        - Failed at: #if JavaUtil.equalsJavaPrimitive(clas...  [in template "templates/java/${variables.rootPackage}/${variables.component}/logic/api/to/${variables.entityName}Eto.java.ftl" at line 33, column 25]
----←[21m←[39m←[0m
←[3m    at freemarker.ext.beans._MethodUtil.newInvocationTemplateModelException(_MethodUtil.java:289)←[23m←[0m
←[3m    at freemarker.ext.beans._MethodUtil.newInvocationTemplateModelException(_MethodUtil.java:261)←[23m←[0m
←[3m    at freemarker.ext.beans.OverloadedMethodsModel.exec(OverloadedMethodsModel.java:65)←[23m←[0m
←[3m    at freemarker.core.MethodCall._eval(MethodCall.java:62)←[23m←[0m
←[3m    at freemarker.core.Expression.eval(Expression.java:101)←[23m←[0m
←[3m    at freemarker.core.Expression.evalToBoolean(Expression.java:179)←[23m←[0m
←[3m    at freemarker.core.Expression.evalToBoolean(Expression.java:165)←[23m←[0m
←[3m    at freemarker.core.IfBlock.accept(IfBlock.java:49)←[23m←[0m
←[3m    at freemarker.core.Environment.visit(Environment.java:367)←[23m←[0m
←[3m    at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:291)←[23m←[0m
←[3m    at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271)←[23m←[0m
←[3m    at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:244)←[23m←[0m
←[3m    at freemarker.core.Environment.visitIteratorBlock(Environment.java:643)←[23m←[0m
←[3m    at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:108)←[23m←[0m
←[3m    at freemarker.core.IteratorBlock.accept(IteratorBlock.java:94)←[23m←[0m
←[3m    at freemarker.core.Environment.visit(Environment.java:331)←[23m←[0m
←[3m    at freemarker.core.Environment.visit(Environment.java:337)←[23m←[0m
←[3m    at freemarker.core.Environment.visit(Environment.java:337)←[23m←[0m
←[3m    at freemarker.core.Environment.process(Environment.java:310)←[23m←[0m
←[3m    at com.devonfw.cobigen.tempeng.freemarker.FreeMarkerTemplateEngine.process(FreeMarkerTemplateEngine.java:74)←[23m←[0m
←[3m    ... 17 more←[23m←[0m
←[31m←[1mCaused by: java.lang.NoSuchFieldException: company←[21m←[39m←[0m
←[3m    at java.base/java.lang.Class.getDeclaredField(Class.java:2411)←[23m←[0m
←[3m    at com.devonfw.cobigen.templates.devon4j.utils.JavaUtil.equalsJavaPrimitive(JavaUtil.java:131)←[23m←[0m
←[3m    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)←[23m←[0m
←[3m    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)←[23m←[0m
←[3m    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)←[23m←[0m
←[3m    at java.base/java.lang.reflect.Method.invoke(Method.java:566)←[23m←[0m
←[3m    at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:1505)←[23m←[0m
←[3m    at freemarker.ext.beans.ReflectionCallableMemberDescriptor.invokeMethod(ReflectionCallableMemberDescriptor.java:56)←[23m←[0m
←[3m    at freemarker.ext.beans.MemberAndArguments.invokeMethod(MemberAndArguments.java:51)←[23m←[0m
←[3m    at freemarker.ext.beans.OverloadedMethodsModel.exec(OverloadedMethodsModel.java:61)←[23m←[0m
←[3m    ... 34 more←[23m←[0m
[INFO ] Failed

Again after building the project this works

Related/Dependent Issues

devonfw-tutorials/tutorials#200

Affected version:

  • OS: Windows/Linux
  • CobiGen latest release 2021.12.006

Related/Dependent Issues

#1593
#1497

Comments/Hints:

In Eclipse the generation with the same steps works
Should java-util work with parsed input-code?
Write tests, to debug the issue.

Affected version:

  • OS: Windows/Linux/Mac?
  • Browser: Chrome/Firefox/Safari?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
app:cli bug comp:tempeng:freemarker Team_CobiGen_Templates These issues will be handeled by the team CobiGen_Templates
Projects
None yet
Development

No branches or pull requests

2 participants