Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » TMF (Xtext) » XText Generator making random mistakes while generating java classes(XText Generator making random mistakes while generating java classes)
XText Generator making random mistakes while generating java classes [message #1796033] Thu, 04 October 2018 11:34 Go to next message
Mehmetcan Sinir is currently offline Mehmetcan SinirFriend
Messages: 55
Registered: September 2018
Member
I have a quite large grammar.

When I generate the Xtext Artifacts, many many java classes are generated. Generators run successfully. However, almost always some of the classes which are generated have random mistakes in them, which makes them unable to compile.

It is usually only one or two .java classes among almost a hundred which have mistakes, and it is not the same classes, the mistakes seem to come randomly.

Bit it is usually inside the the package implementation class.

Here is an example mistake:

  public EClass getActionDeclaration()
  {
    if (actionDeclarationEClass == null)
    {
      actionDeclarationEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(HmiPackage.eNS_URI).getEClassifiers().g(96);
    }
    return compositeActionEClass;
  }


this code should actually look like this:

  public EClass getActionDeclaration()
  {
    if (actionDeclarationEClass == null)
    {
      actionDeclarationEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(HmiPackage.eNS_URI).getEClassifiers().get(92);
    }
    return actionDeclarationEClass;
  }


so the instead of "get" there is "g"

Here is my Workflow, if that helps:

module de.bmw.rhmi.GenerateHmi

import org.eclipse.xtext.xtext.generator.*
import org.eclipse.xtext.xtext.generator.model.project.*
import org.eclipse.emf.mwe.utils.*

var rootPath = ".."
var projectName = "de.bmw.rhmi"
var runtimeProject = "../${projectName}"

Workflow {

	bean = StandaloneSetup {
		scanClassPath = true
		platformUri = "${rootPath}"
		registerGenModelFile = "platform:/resource/de.bmw.rhmi.resource/model/generated/Strings.genmodel"
		registerGenModelFile = "platform:/resource/de.bmw.rhmi.resource/model/Image.genmodel"
		registerGenModelFile = "platform:/resource/de.bmw.rhmi/model/generated/App.genmodel"
		registerGenModelFile = "platform:/resource/de.bmw.rhmi/model/generated/Hmi.genmodel"
		registerGeneratedEPackage = "de.bmw.rhmi.resource.image.ImagePackage"
		registerGeneratedEPackage = "de.bmw.rhmi.resource.strings.StringsPackage"
	}

	component = XtextGenerator {
		configuration = {
			project = StandardProjectConfig {
				baseName = "de.bmw.rhmi"
				rootPath = rootPath
				runtimeTest = {
					enabled = true
				}
				genericIde = {
					enabled = true
				}
				mavenLayout = true
			}
			code = {
				encoding = "UTF-8"
				lineDelimiter = "\n"
				fileHeader = "/*\n * generated by Xtext \${version}\n */"
			}
		}

		language = XtextGeneratorLanguage {
			name = "de.bmw.rhmi.App"
			fileExtensions = "rapp"
			referencedResource = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel"
			fragment = grammarAccess.GrammarAccessFragment2 {}
			fragment = ecore.EMFGeneratorFragment2 {}
			fragment = serializer.SerializerFragment2 {}
			fragment = resourceFactory.ResourceFactoryFragment2 {}
			fragment = parser.antlr.XtextAntlrGeneratorFragment2 {}
			fragment = validation.ValidatorFragment2 {}
			fragment = scoping.ImportNamespacesScopingFragment2 {}
			fragment = exporting.QualifiedNamesFragment2 {}
			fragment = builder.BuilderIntegrationFragment2 {}
			fragment = formatting.Formatter2Fragment2 {}
			fragment = ui.labeling.LabelProviderFragment2 {}
			fragment = ui.outline.QuickOutlineFragment2 {}
			fragment = ui.outline.OutlineTreeProviderFragment2 {}
			fragment = ui.quickfix.QuickfixProviderFragment2 {}
			fragment = ui.contentAssist.ContentAssistFragment2 {}
			fragment = junit.JUnitFragment {}
			fragment = ui.refactoring.RefactorElementNameFragment2 {}
			fragment = ui.templates.CodetemplatesGeneratorFragment2 {}
			fragment = ui.compare.CompareFragment2 {}
			fragment = idea.parser.antlr.XtextAntlrIDEAGeneratorFragment {}
			fragment = ui.projectWizard.TemplateProjectWizardFragment {}
			fragment = ui.fileWizard.TemplateFileWizardFragment {}
		}

		language = XtextGeneratorLanguage {
			referencedResource = "platform:/resource/de.bmw.rhmi/src/main/java/de/bmw/rhmi/App.xtext"
			name = "de.bmw.rhmi.Hmi"
			fileExtensions = "hmi"
			referencedResource = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel"
			fragment = grammarAccess.GrammarAccessFragment2 {}
			fragment = ecore.EMFGeneratorFragment2 {}
			fragment = serializer.SerializerFragment2 {}
			fragment = resourceFactory.ResourceFactoryFragment2 {}
			fragment = parser.antlr.XtextAntlrGeneratorFragment2 {}
			fragment = validation.ValidatorFragment2 {}
			fragment = scoping.ImportNamespacesScopingFragment2 {}
			fragment = exporting.QualifiedNamesFragment2 {}
			fragment = builder.BuilderIntegrationFragment2 {}
			fragment = formatting.Formatter2Fragment2 {}
			fragment = ui.labeling.LabelProviderFragment2 {}
			fragment = ui.outline.QuickOutlineFragment2 {}
			fragment = ui.outline.OutlineTreeProviderFragment2 {}
			fragment = ui.quickfix.QuickfixProviderFragment2 {}
			fragment = ui.contentAssist.ContentAssistFragment2 {}
			fragment = junit.JUnitFragment {}
			fragment = ui.refactoring.RefactorElementNameFragment2 {}
			fragment = ui.templates.CodetemplatesGeneratorFragment2 {}
			fragment = ui.compare.CompareFragment2 {}
			fragment = idea.parser.antlr.XtextAntlrIDEAGeneratorFragment {}
			fragment = ui.projectWizard.TemplateProjectWizardFragment {}
			fragment = ui.fileWizard.TemplateFileWizardFragment {}
		}
	}
}


Why is this happening?

My Idea was to increase the timeout variable for the generator, but I am not sure if that has to do with it or how to do it.

[Updated on: Thu, 04 October 2018 11:38]

Report message to a moderator

Re: XText Generator making random mistakes while generating java classes [message #1796042 is a reply to message #1796033] Thu, 04 October 2018 12:18 Go to previous message
Karsten Thoms is currently offline Karsten ThomsFriend
Messages: 762
Registered: July 2009
Location: Dortmund, Germany
Senior Member

No idea. Looks as if some stream is not properly flushed, but never seen this error myself. This is code produced by EMFs code generator, so you likely have to debug into this and make a conditional breakpoint when just "g" is emitted.
Problem is that this is not reproducible. If you manage to provide a reproducible and shareable example, open an issue.
Previous Topic:Xtext Runtime exceptions
Next Topic:Why does my test is not working
Goto Forum:
  


Current Time: Thu Apr 25 11:44:39 GMT 2024

Powered by FUDForum. Page generated in 0.02653 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top