blob: cefec3801c5e56833cb7b1e647cbeafa53fb4ea4 [file] [log] [blame]
/**
* <copyright>
*
* Copyright (c) 2013 Willink Transformations, University of York and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Adolfo Sanchez-Barbudo Herrera (University of York) - initial API and implementation
*
* </copyright>
*
*/
module GenerateQVTOperationalEditor
import org.eclipse.emf.mwe.utils.*
import org.eclipse.ocl.examples.build.*
import org.eclipse.xtext.generator.*
import org.eclipse.xtext.ui.generator.*
var grammarURI = "classpath:/org/eclipse/qvto/examples/xtext/qvtoperational/QVTOperational.xtext"
var fileExtensions = "qvto2"
var projectName = "org.eclipse.qvto.examples.xtext.qvtoperational"
var runtimeProject = "../../examples/${projectName}"
var generateXtendStub = true
Workflow {
bean = StandaloneSetup {
scanClassPath = true
platformUri = "${runtimeProject}/.."
registerGeneratedEPackage = "org.eclipse.uml2.uml.UMLPackage"
registerGeneratedEPackage = "org.eclipse.ocl.pivot.PivotPackage"
registerGeneratedEPackage = "org.eclipse.uml2.codegen.ecore.genmodel.GenModelPackage"
registerGeneratedEPackage = "org.eclipse.qvto.examples.xtext.qvtoperationalcs.QVTOperationalCSPackage"
registerGenModelFile = "platform:/resource/org.eclipse.ocl.pivot/model/Pivot.genmodel"
registerGenModelFile = "platform:/resource/org.eclipse.ocl.xtext.base/model/BaseCS.genmodel"
registerGenModelFile = "platform:/resource/org.eclipse.ocl.xtext.essentialocl/model/EssentialOCLCS.genmodel"
registerGenModelFile = "platform:/resource/org.eclipse.qvto.examples.xtext.imperativeocl/model/ImperativeOCLCS.genmodel"
registerGenModelFile = "platform:/resource/org.eclipse.qvto.examples.xtext.qvtoperational/model/QVTOperationalCS.genmodel"
}
component = DirectoryCleaner {
directory = "${runtimeProject}/src-gen"
}
component = DirectoryCleaner {
directory = "${runtimeProject}.ui/src-gen"
}
component = Generator {
pathRtProject = runtimeProject
pathUiProject = "${runtimeProject}.ui"
pathTestProject = "${runtimeProject}.tests"
projectNameRt = projectName
projectNameUi = "${projectName}.ui"
mergeManifest = false
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.EcoreGeneratorFragment 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 = { backtrack = true classSplitting = true }
antlrParam = "-Xconversiontimeout" antlrParam = "10000"
}
// Xtend-based API for validation
// fragment = validation.ValidatorFragment auto-inject {
// FIXME need to align with JavaValidator used by OCL, otherwise compiler errors
fragment = validation.JavaValidatorFragment auto-inject {
composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
// composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
}
// old scoping and exporting API
// fragment = scoping.ImportURIScopingFragment auto-inject {}
// fragment = exporting.SimpleNamesFragment auto-inject {}
// scoping and exporting API
fragment = scoping.ImportNamespacesScopingFragment 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 {}
// labeling API
fragment = labeling.LabelProviderFragment auto-inject {}
// outline API
// fragment = outline.OutlineTreeProviderFragment auto-inject {}
// To show AS in the outline view
fragment = org.eclipse.qvtd.cs2as.xtext.generator.CS2ASOutlineTreeProviderFragment auto-inject {}
fragment = outline.QuickOutlineFragment auto-inject {}
// quickfix API
fragment = quickfix.QuickfixProviderFragment auto-inject {}
// content assist API
fragment = contentAssist.ContentAssistFragment auto-inject {}
// fragment = de.itemis.xtext.antlr.XtextAntlrGeneratorFragment {
// options = { backtrack = true classSplitting = true}
// }
// generates a more lightweight Antlr parser and lexer tailored for content assist
fragment = parser.antlr.XtextAntlrUiGeneratorFragment auto-inject {
options = { backtrack = true classSplitting = true}
antlrParam = "-Xconversiontimeout" antlrParam = "10000"
}
// 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 {}
// quickfix API
fragment = quickfix.QuickfixProviderFragment auto-inject {}
// EssentialOCL bindings
fragment = fragments.EssentialOCLFragment auto-inject{}
// Support Markup in Hover text
fragment = fragments.MarkupHoverFragment auto-inject{}
// *.xtextbin support on Xtext 2.3
fragment = fragments.CompatibilityFragment auto-inject{}
// provides a preference page for template proposals
fragment = templates.CodetemplatesGeneratorFragment auto-inject {}
// provides a compare view
fragment = compare.CompareFragment auto-inject {}
}
}
component = xtend.GenerateGrammarXtend {
javaFolder = "${runtimeProject}/src-gen"
javaPackageName = "${projectName}"
grammarFileStem = "QVTOperational"
}
component = utilities.BackportToXtext_2_3_1 {
directory = "${runtimeProject}/src-gen"
}
component = utilities.BackportToXtext_2_3_1 {
directory = "${runtimeProject}.ui/src-gen"
}
component = utilities.ConvertToUnixLineEndings {
directory = "${runtimeProject}/src-gen"
}
component = utilities.ConvertToUnixLineEndings {
directory = "${runtimeProject}.ui/src-gen"
}
// CS2AS Components
bean = org.eclipse.emf.ecore.resource.impl.ResourceSetImpl : resourceSet {}
// bean = utilities.EcoreGenModelSetup { resourceSet = resourceSet }
component = utilities.GenerateCGedQVTiTransformation {
resourceSet = resourceSet
// oclDocURI = "${runtimeProject}/model/QVTOperationalCS2AS.ocl" // FIXME using relative URI, OCL Imports are not properly solved
oclDocURI = "platform:/resource/${projectName}/model/QVTOperationalCS2AS.ocl"
// FIXME the following only work if the output project are in the same FS folder. Better use a projectName and improve generator
javaFolder = "../${projectName}/src-gen"
javaPackage = "${projectName}.cs2as"
lookupSolverClassName = "org.eclipse.qvto.examples.pivot.qvtoperational.lookup.util.QVTOperationalLookupSolver"
lookupResultItfName = "org.eclipse.ocl.pivot.internal.lookup.util.PivotLookupResult"
tracePropertyName = "pivot"
}
}