Commit 8e9356c9 authored by Philip Makedonski's avatar Philip Makedonski
Browse files

+ updated mwe script

parent a53e55e5
Loading
Loading
Loading
Loading
+216 −128
Original line number Diff line number Diff line
module de.ugoe.cs.swe.GenerateTTCN3

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

var grammarURI = "classpath:/de/ugoe/cs/swe/TTCN3.xtext"
var fileExtensions = "ttcn3,ttcn,3mp"
@@ -10,71 +12,75 @@ var projectName = "de.ugoe.cs.swe.TTCN3"
var runtimeProject = "../${projectName}"
var generateXtendStub = true
var encoding = "UTF-8"
var rootPath = ".."

Workflow {
	bean = StandaloneSetup {
		scanClassPath = true
		platformUri = "${runtimeProject}/.."
	}
//	bean = StandaloneSetup {
//		scanClassPath = true
//		platformUri = "${runtimeProject}/.."
//	}
//
//	component = DirectoryCleaner {
//		directory = "${runtimeProject}/src-gen"
//	}
//
//	component = DirectoryCleaner {
//		directory = "${runtimeProject}/model"
//	}
//
//	component = DirectoryCleaner {
//		directory = "${runtimeProject}.ui/src-gen"
//	}
//
//	component = DirectoryCleaner {
//		directory = "${runtimeProject}.tests/src-gen"
//	}

	component = DirectoryCleaner {
		directory = "${runtimeProject}/src-gen"
	component = XtextGenerator {
//		pathRtProject = runtimeProject
//		pathUiProject = "${runtimeProject}.ui"
//		pathTestProject = "${runtimeProject}.tests"
//		projectNameRt = projectName
//		projectNameUi = "${projectName}.ui"
//		encoding = encoding
		configuration = {
			project = StandardProjectConfig {
				baseName = projectName
				rootPath = rootPath
				runtimeTest = {
					enabled = true
				}

	component = DirectoryCleaner {
		directory = "${runtimeProject}/model"
				eclipsePlugin = {
					enabled = true
				}

	component = DirectoryCleaner {
		directory = "${runtimeProject}.ui/src-gen"
				eclipsePluginTest = {
					enabled = true
				}

	component = DirectoryCleaner {
		directory = "${runtimeProject}.tests/src-gen"
				createEclipseMetaData = true
			}
			code = {
				encoding = "UTF-8"
				lineDelimiter = "\n"
				fileHeader = "/*\n * generated by Xtext \${version}\n */"
				preferXtendStubs = false
			}

	component = Generator {
		pathRtProject = runtimeProject
		pathUiProject = "${runtimeProject}.ui"
		pathTestProject = "${runtimeProject}.tests"
		projectNameRt = projectName
		projectNameUi = "${projectName}.ui"
		encoding = encoding
		language = auto-inject {
			uri = grammarURI

			// Java API to access grammar elements (required by several other fragments)
			fragment = grammarAccess.GrammarAccessFragment auto-inject {}

			// generates Java API for the generated EPackages
			fragment = ecore.EMFGeneratorFragment auto-inject {}

			// the old serialization component
			// fragment = parseTreeConstructor.ParseTreeConstructorFragment auto-inject {}    

			// serializer 2.0
			fragment = serializer.SerializerFragment auto-inject {
				generateStub = false
		}

			// a custom ResourceFactory for use with EMF
			fragment = resourceFactory.ResourceFactoryFragment auto-inject {}
		language = StandardLanguage {
			name = projectName
			fileExtensions = fileExtensions

			// The antlr parser generator fragment.
			fragment = parser.antlr.XtextAntlrGeneratorFragment auto-inject {
				options = {
					classSplitting = true
					fieldsPerClass = "500"
					backtrack = true
					memoize = true
				}
			serializer = {
				generateStub = false
			}
			
			// Xtend-based API for validation
			fragment = validation.ValidatorFragment auto-inject {
			validator = {
				// composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
				// composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"

				// Enables several checks on the inferred Jvm model for Xbase languages concerning Java inheritance relations
				// composedCheck = "org.eclipse.xtext.xbase.validation.JvmGenericTypeValidator"

				// validators for the standalone app according to t3q tools
				// can only be used in standalone app, throws an error in eclipse editor
				composedCheck = "de.ugoe.cs.swe.validation.NamingConventionsValidator"
@@ -88,70 +94,152 @@ Workflow {
				// can currently only be used with the eclipse editor, does not work 
				// in the standalone app 
				// composedCheck = "de.ugoe.cs.swe.validation.NameClashValidator"
			}

			// old scoping and exporting API
			// fragment = scoping.ImportURIScopingFragment auto-inject {}
			// fragment = exporting.SimpleNamesFragment auto-inject {}

			// scoping and exporting API
			fragment = de.ugoe.cs.swe.scoping.TTCN3ImportNamespaceScopingFragment auto-inject {}
			fragment = exporting.QualifiedNamesFragment auto-inject {}
			fragment = builder.BuilderIntegrationFragment auto-inject {}

			// generator API
			//fragment = generator.GeneratorFragment auto-inject {}

			// formatter API
			//fragment = formatting.FormatterFragment auto-inject {}
            fragment = ecore2xtext.FormatterFragment auto-inject {}
				// Generates checks for @Deprecated grammar annotations, an IssueProvider and a corresponding PropertyPage
				generateDeprecationValidation = true
				generateStub = false
			}
			
			// labeling API
			fragment = labeling.LabelProviderFragment auto-inject {}
			generator = {
				generateXtendStub = true
			}
			
			// outline API
			//fragment = outline.OutlineTreeProviderFragment auto-inject {}
			//fragment = outline.QuickOutlineFragment auto-inject {}
			junitSupport = {
				junitVersion = "5"
			}
			
			// quickfix API
			//fragment = quickfix.QuickfixProviderFragment auto-inject {}
			scopeProvider = {
				generateStub = false
			}

			// content assist API
			fragment = contentAssist.ContentAssistFragment auto-inject {}
			scopeProvider = {
				generateXtendStub = true
			}

			// generates a more lightweight Antlr parser and lexer tailored for content assist
			fragment = parser.antlr.XtextAntlrUiGeneratorFragment auto-inject {
			parserGenerator = {
				options = {
					classSplitting = true
					fieldsPerClass = "500"
					//TODO: revisit?
//					classSplitting = true
//					fieldsPerClass = "500"
					backtrack = true
					memoize = true
				}
			}
		}

			// generates junit test support classes into Generator#pathTestProject
			fragment = junit.Junit4Fragment auto-inject {}

			// project wizard (optional)
			// fragment = projectWizard.SimpleProjectWizardFragment auto-inject {
			//      generatorProjectName = "${projectName}"
//		language = auto-inject {
//			uri = grammarURI
//
//			// Java API to access grammar elements (required by several other fragments)
//			fragment = grammarAccess.GrammarAccessFragment auto-inject {}
//
//			// generates Java API for the generated EPackages
//			fragment = ecore.EMFGeneratorFragment auto-inject {}
//
//			// the old serialization component
//			// fragment = parseTreeConstructor.ParseTreeConstructorFragment auto-inject {}    
//
//			// serializer 2.0
//			fragment = serializer.SerializerFragment auto-inject {
//				generateStub = false
//			}
//
//			// a custom ResourceFactory for use with EMF
//			fragment = resourceFactory.ResourceFactoryFragment auto-inject {}
//
//			// The antlr parser generator fragment.
//			fragment = parser.antlr.XtextAntlrGeneratorFragment auto-inject {
//				options = {
//					classSplitting = true
//					fieldsPerClass = "500"
//					backtrack = true
//					memoize = true
//				}
//			}
//
//			// Xtend-based API for validation
//			fragment = validation.ValidatorFragment auto-inject {
//			//    composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
//			//    composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
//
//			// validators for the standalone app according to t3q tools
//			// can only be used in standalone app, throws an error in eclipse editor
//			composedCheck = "de.ugoe.cs.swe.validation.NamingConventionsValidator"
//			composedCheck = "de.ugoe.cs.swe.validation.StructureOfDataValidator"
//			composedCheck = "de.ugoe.cs.swe.validation.CodeStyleValidator"
//			composedCheck = "de.ugoe.cs.swe.validation.DataFlowValidator"
//			composedCheck = "de.ugoe.cs.swe.validation.ModularizationValidator"
//			composedCheck = "de.ugoe.cs.swe.validation.LogValidator"
//
//			// name clash validator
//			// can currently only be used with the eclipse editor, does not work 
//			// in the standalone app 
//			// composedCheck = "de.ugoe.cs.swe.validation.NameClashValidator"
//			}
//
//			// old scoping and exporting API
//			// fragment = scoping.ImportURIScopingFragment auto-inject {}
//			// fragment = exporting.SimpleNamesFragment auto-inject {}
//
//			// scoping and exporting API
//			fragment = de.ugoe.cs.swe.scoping.TTCN3ImportNamespaceScopingFragment auto-inject {}
//			fragment = exporting.QualifiedNamesFragment auto-inject {}
//			fragment = builder.BuilderIntegrationFragment auto-inject {}
//
//			// generator API
//			//fragment = generator.GeneratorFragment auto-inject {}
//
//			// formatter API
//			//fragment = formatting.FormatterFragment auto-inject {}
//            fragment = ecore2xtext.FormatterFragment auto-inject {}
//
//			// labeling API
//			fragment = labeling.LabelProviderFragment auto-inject {}
//
//			// outline API
//			//fragment = outline.OutlineTreeProviderFragment auto-inject {}
//			//fragment = outline.QuickOutlineFragment auto-inject {}
//
//			// quickfix API
//			//fragment = quickfix.QuickfixProviderFragment auto-inject {}
//
//			// content assist API
//			fragment = contentAssist.ContentAssistFragment auto-inject {}
//
//			// generates a more lightweight Antlr parser and lexer tailored for content assist
//			fragment = parser.antlr.XtextAntlrUiGeneratorFragment auto-inject {
//				options = {
//					classSplitting = true
//					fieldsPerClass = "500"
//					backtrack = true
//					memoize = true
//				}
//			}
//
//			// generates junit test support classes into Generator#pathTestProject
//			fragment = junit.Junit4Fragment auto-inject {}
//
//			// project wizard (optional)
//			// fragment = projectWizard.SimpleProjectWizardFragment auto-inject {
//			//      generatorProjectName = "${projectName}"
//			// }
//
//			// rename refactoring
//			//fragment = refactoring.RefactorElementNameFragment auto-inject {}
//
//			// provides the necessary bindings for java types integration
//			// fragment = types.TypesGeneratorFragment auto-inject {}
//
//			// generates the required bindings only if the grammar inherits from Xbase
//			// fragment = xbase.XbaseGeneratorFragment auto-inject {}
//
//			// provides a preference page for template proposals
//			// fragment = templates.CodetemplatesGeneratorFragment auto-inject {}
//
//			// provides a compare view
//			//fragment = compare.CompareFragment auto-inject {}
//		}

			// rename refactoring
			//fragment = refactoring.RefactorElementNameFragment auto-inject {}

			// provides the necessary bindings for java types integration
			// fragment = types.TypesGeneratorFragment auto-inject {}

			// generates the required bindings only if the grammar inherits from Xbase
			// fragment = xbase.XbaseGeneratorFragment auto-inject {}

			// provides a preference page for template proposals
			// fragment = templates.CodetemplatesGeneratorFragment auto-inject {}

			// provides a compare view
			//fragment = compare.CompareFragment auto-inject {}
		}
	}
}