Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 348052 - ipse.xtext.generator.LanguageConfig, StringIndexOutOfBoundsException: String index out of range: -1
Summary: ipse.xtext.generator.LanguageConfig, StringIndexOutOfBoundsException: String ...
Status: CLOSED FIXED
Alias: None
Product: TMF
Classification: Modeling
Component: Xtext (show other bugs)
Version: unspecified   Edit
Hardware: Macintosh All
: P3 normal (vote)
Target Milestone: SR2   Edit
Assignee: Project Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-06-02 04:37 EDT by Joerg CLA
Modified: 2017-09-19 17:33 EDT (History)
2 users (show)

See Also:
sebastian.zarnekow: indigo+


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Joerg CLA 2011-06-02 04:37:11 EDT
The grammar below raises an exception during the run of mwe2. The missing namespace for the grammar name raises a warning in the editor but will lead to the exception during the translation process.


grammar SimLang with org.eclipse.xtext.common.Terminals

generate simLang "http://www.SimLang.d2"

Model:
	greetings+=Greeting*;
	
Greeting:
	'Hello' name=ID '!';




instead of 




grammar d2.SimLang with org.eclipse.xtext.common.Terminals

generate simLang "http://www.SimLang.d2"

Model:
	greetings+=Greeting*;
	
Greeting:
	'Hello' name=ID '!';
Comment 1 Sebastian Zarnekow CLA 2011-06-02 04:39:26 EDT
Which generator configuration do you use? Could you please attache the complete output of the generation process?
Comment 2 Joerg CLA 2011-06-02 10:33:33 EDT
Affects current 1.0.2 version and beta of 2. The output is for a different example but shows the same behaviour.

Xtext version 1.0.2.v201102150722



0    [main] INFO  lipse.emf.mwe.utils.StandaloneSetup  - Registering platform uri '/Users/hoehne/Documents/dataScientific/EclipseWorkspace'
1425 [main] INFO  ipse.emf.mwe.utils.DirectoryCleaner  - Cleaning /Users/hoehne/Documents/dataScientific/EclipseWorkspace/simlang/../simlang/src-gen
1432 [main] INFO  ipse.emf.mwe.utils.DirectoryCleaner  - Cleaning /Users/hoehne/Documents/dataScientific/EclipseWorkspace/simlang/../simlang.ui/src-gen
1581 [main] INFO  ipse.xtext.generator.LanguageConfig  - generating infrastructure for SimLang with fragments : ImplicitRuntimeFragment, ImplicitUiFragment, GrammarAccessFragment, EcoreGeneratorFragment, ParseTreeConstructorFragment, ResourceFactoryFragment, XtextAntlrGeneratorFragment, JavaValidatorFragment, ImportNamespacesScopingFragment, QualifiedNamesFragment, BuilderIntegrationFragment, FormatterFragment, LabelProviderFragment, TransformerFragment, OutlineNodeAdapterFactoryFragment, QuickOutlineFragment, QuickfixProviderFragment, JavaBasedContentAssistFragment, XtextAntlrUiGeneratorFragment
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
	at java.lang.String.substring(String.java:1937)
	at org.eclipse.xtext.generator.ecore.EcoreGeneratorFragment.getXmiModelDirectory(EcoreGeneratorFragment.java:483)
	at org.eclipse.xtext.generator.ecore.EcoreGeneratorFragment.getEcoreFileUri(EcoreGeneratorFragment.java:277)
	at org.eclipse.xtext.generator.ecore.EcoreGeneratorFragment.createResourceForEPackages(EcoreGeneratorFragment.java:116)
	at org.eclipse.xtext.generator.ecore.EcoreGeneratorFragment.generate(EcoreGeneratorFragment.java:161)
	at org.eclipse.xtext.generator.CompositeGeneratorFragment.generate(CompositeGeneratorFragment.java:81)
	at org.eclipse.xtext.generator.LanguageConfig.generate(LanguageConfig.java:69)
	at org.eclipse.xtext.generator.Generator.generate(Generator.java:296)
	at org.eclipse.xtext.generator.Generator.invokeInternal(Generator.java:106)
	at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent.invoke(AbstractWorkflowComponent.java:126)
	at org.eclipse.emf.mwe.core.lib.Mwe2Bridge.invoke(Mwe2Bridge.java:34)
	at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent.invoke(AbstractWorkflowComponent.java:201)
	at org.eclipse.emf.mwe2.runtime.workflow.AbstractCompositeWorkflowComponent.invoke(AbstractCompositeWorkflowComponent.java:31)
	at org.eclipse.emf.mwe2.runtime.workflow.Workflow.run(Workflow.java:19)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:80)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:52)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.run(Mwe2Launcher.java:74)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.main(Mwe2Launcher.java:35)
5808 [main] INFO  or.validation.JavaValidatorFragment  - executing generate for org.eclipse.xtext.generator.validation.JavaValidatorFragment
7088 [main] ERROR g.eclipse.xtext.generator.Generator  - java.lang.NullPointerException
org.eclipse.emf.common.util.WrappedException: java.lang.NullPointerException
	at org.eclipse.xtext.generator.Generator.mergeManifest(Generator.java:353)
	at org.eclipse.xtext.generator.Generator.generateManifestRt(Generator.java:320)
	at org.eclipse.xtext.generator.Generator.invokeInternal(Generator.java:115)
	at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent.invoke(AbstractWorkflowComponent.java:126)
	at org.eclipse.emf.mwe.core.lib.Mwe2Bridge.invoke(Mwe2Bridge.java:34)
	at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent.invoke(AbstractWorkflowComponent.java:201)
	at org.eclipse.emf.mwe2.runtime.workflow.AbstractCompositeWorkflowComponent.invoke(AbstractCompositeWorkflowComponent.java:31)
	at org.eclipse.emf.mwe2.runtime.workflow.Workflow.run(Workflow.java:19)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:80)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:52)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.run(Mwe2Launcher.java:74)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.main(Mwe2Launcher.java:35)
Caused by: java.lang.NullPointerException
	at org.eclipse.xtext.generator.MergeableManifest.mergeIntoCommaSeparatedList(MergeableManifest.java:278)
	at org.eclipse.xtext.generator.MergeableManifest.addExportedPackages(MergeableManifest.java:254)
	at org.eclipse.xtext.generator.Generator.mergeManifest(Generator.java:341)
	... 11 more
7089 [main] INFO  .emf.mwe2.runtime.workflow.Workflow  - Done.
Comment 3 Sebastian Zarnekow CLA 2011-06-02 17:02:25 EDT
Can you reproduce this one with the RC3 of Xtext 2.0 ? The given stacktrace does not match the code in the repository.

Please provide your manifest files for the runtime and ui plugin as well as the generator workflow. Thanks!
Comment 4 Sebastian Zarnekow CLA 2011-06-02 17:07:25 EDT
This one is still reproducable with the latest version from Xtext 2.0 Head.
Comment 5 Sebastian Zarnekow CLA 2011-06-03 01:43:53 EDT
Postponed to 2.0SR1 since this is not a regression.
Comment 6 Jan Koehnlein CLA 2011-09-12 10:30:15 EDT
To fix the reported issue is easy, but you'll run into further problems:
- null values in the exported package list
- a package named "null" as the base package of all generated classes

In the generator, there are many places where we make the assumption that the base package is not null. OSGi won't export the default package anyway.
I see two solutions
1) to choose a default package name in the situation where the grammar doesn't specify a package or
2) report an error instead of a warning.

Any opinions?
Comment 7 Sebastian Zarnekow CLA 2011-09-12 10:38:32 EDT
+1 for marking this as an error
Comment 8 Jan Koehnlein CLA 2011-09-13 04:55:57 EDT
Marking an error now. Pushed to MASTER.
Comment 9 Karsten Thoms CLA 2017-09-19 17:21:55 EDT
Closing all bugs that were set to RESOLVED before Neon.0
Comment 10 Karsten Thoms CLA 2017-09-19 17:33:18 EDT
Closing all bugs that were set to RESOLVED before Neon.0