itemisCREATE / statecharts

YAKINDU Statechart Tools (http://www.statecharts.org)
Eclipse Public License 1.0
175 stars 85 forks source link

Too much implicit logic in java generator to assume correct imports #2951

Closed rherrmannr closed 4 years ago

rherrmannr commented 4 years ago

By using Multi-Statemachines, it is currently only possible to generate all statecharts at the same time. This is not intuitive for the user.

Only generating one statechart leads to this NPE:

java.lang.NullPointerException
    at org.yakindu.sct.generator.java.GenmodelEntries.getNamingFeature(GenmodelEntries.java:34)
    at org.yakindu.sct.generator.java.GenmodelEntries.getBasePackageParameter(GenmodelEntries.java:50)
    at org.yakindu.sct.generator.java.GenmodelEntries.getBasePackageName(GenmodelEntries.java:155)
    at org.yakindu.sct.generator.java.GenmodelEntries.getImplementationPackageName(GenmodelEntries.java:198)
    at org.yakindu.sct.generator.java.JavaStatechartIncludeProvider.getImports(JavaStatechartIncludeProvider.java:65)
    at org.yakindu.sct.generator.java.files.StatemachineInterface.lambda$0(StatemachineInterface.java:107)
    at org.eclipse.xtext.xbase.lib.internal.FunctionDelegate.apply(FunctionDelegate.java:42)
    at com.google.common.collect.Iterators$7.transform(Iterators.java:750)
    at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:47)
    at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:47)
    at com.google.common.collect.MultitransformedIterator.hasNext(MultitransformedIterator.java:52)
    at com.google.common.collect.MultitransformedIterator.hasNext(MultitransformedIterator.java:50)
    at com.google.common.collect.Iterators.addAll(Iterators.java:366)
    at com.google.common.collect.Iterables.addAll(Iterables.java:332)
    at org.yakindu.sct.generator.java.templates.FileTemplate.addImports(FileTemplate.java:75)
    at org.yakindu.sct.generator.java.files.StatemachineInterface.content(StatemachineInterface.java:135)
    at org.yakindu.sct.generator.java.files.StatemachineInterface.generateStatemachineInterface(StatemachineInterface.java:100)
    at org.yakindu.sct.generator.java.JavaGenerator.generate(JavaGenerator.java:118)
    at org.yakindu.sct.generator.core.execution.SExecGeneratorEntryExecutor.execute(SExecGeneratorEntryExecutor.java:54)
    at org.yakindu.sct.generator.core.execution.AbstractGeneratorEntryExecutor.execute(AbstractGeneratorEntryExecutor.java:64)
    at org.yakindu.sct.generator.core.execution.GeneratorExecutorLookup.execute(GeneratorExecutorLookup.java:57)
    at org.yakindu.sct.generator.builder.EclipseContextGeneratorExecutorLookup$1.run(EclipseContextGeneratorExecutorLookup.java:43)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
AccessOutEventsNamedGrandGrandParent done.
tkutz commented 4 years ago

Already fixed.