Uploaded image for project: 'Kogito'
  1. Kogito
  2. KOGITO-2016

Better error message when a DMN model name is empty

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Done
    • Icon: Minor Minor
    • 0.11.0
    • 0.10.0
    • Core Engine
    • None
    • 1
    • 2020 Week 16-18 (from Apr 13), 2020 Week 19-21 (from May 4)

      If DMN definitions name is empty (= Leave "Name" property blank in DMN Editor),

      <dmn:definitions ... name="" ...>
      

      kogito start-up fails with the following Exception. We may want to log a more informative error message.

      2020-04-27 18:22:51,063 ERROR [io.qua.dep.dev.DevModeMain] (main) Failed to start Quarkus: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
      	[error]: Build step org.kie.kogito.quarkus.deployment.KogitoAssetsProcessor#generateModel threw an exception: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
      	at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:47)
      	at java.base/java.lang.String.charAt(String.java:693)
      	at org.drools.core.util.StringUtils.capitalize(StringUtils.java:1292)
      	at org.kie.kogito.codegen.decision.DMNRestResourceGenerator.<init>(DMNRestResourceGenerator.java:69)
      	at org.kie.kogito.codegen.decision.DecisionCodegen.generate(DecisionCodegen.java:158)
      	at org.kie.kogito.codegen.decision.DecisionCodegen.generate(DecisionCodegen.java:59)
      	at org.kie.kogito.codegen.ApplicationGenerator.lambda$generateComponents$10(ApplicationGenerator.java:226)
      	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:271)
      	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
      	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
      	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
      	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
      	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
      	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
      	at org.kie.kogito.codegen.ApplicationGenerator.generateComponents(ApplicationGenerator.java:227)
      	at org.kie.kogito.codegen.ApplicationGenerator.generate(ApplicationGenerator.java:208)
      	at org.kie.kogito.quarkus.deployment.KogitoAssetsProcessor.generateModel(KogitoAssetsProcessor.java:180)
      	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 io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:931)
      	at io.quarkus.builder.BuildContext.run(BuildContext.java:277)
      	at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
      	at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2027)
      	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1551)
      	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1442)
      	at java.base/java.lang.Thread.run(Thread.java:834)
      	at org.jboss.threads.JBossThread.run(JBossThread.java:479)
      

      DMN core can execute DMN definisions which name is empty (""). But Kogito requires the name for code generation. So I think a fix is required in kogito side.

            rhn-support-tkobayas Toshiya Kobayashi
            rhn-support-tkobayas Toshiya Kobayashi
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: