Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » TMF (Xtext) » Java Types in Xtext DSL(Xtext)
icon5.gif  Java Types in Xtext DSL [message #557947] Thu, 09 September 2010 14:43 Go to next message
Dennis Vaughn is currently offline Dennis VaughnFriend
Messages: 13
Registered: July 2009
Junior Member
I am trying to create a DSL and I need to refer to java types in the DSL. The best I can tell I have followed the instructions on how to reference java types but no luck so far. Here is what a simplified version of my DSL looks like
grammar com.cisco.step.arti.cli.CliDsl with org.eclipse.xtext.common.Terminals

import "http://www.eclipse.org/xtext/common/JavaVMTypes" as types 

generate cliDsl "http://www.cisco.com/step/arti/cli/CliDsl"

Descriptor:
	(type+=Type)*;
 
QUALIFIED_NAME:
	ID ('.' ID)*;

Type:
  'type' name=ID 'mapped-to' javaType=[types::JvmType|QUALIFIED_NAME];



My mwe2 Generator block looks like the following:
component = Generator {
		pathRtProject = runtimeProject
		pathUiProject = "${runtimeProject}.ui"
		projectNameRt = projectName
		projectNameUi = "${projectName}.ui"
		language = {
			uri = grammarURI
			fileExtensions = file.extensions

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

			// generates Java API for the generated EPackages 
			fragment = ecore.EcoreGeneratorFragment {
			 	referencedGenModels = "classpath:/model/JavaVMTypes.genmodel"
			}

			// the serialization component
			fragment = parseTreeConstructor.ParseTreeConstructorFragment {}

			// a custom ResourceFactory for use with EMF 
			fragment = resourceFactory.ResourceFactoryFragment {
				fileExtensions = file.extensions
			}

			// The antlr parser generator fragment.
			fragment = parser.antlr.XtextAntlrGeneratorFragment {
			//  options = {
			//		backtrack = true
			//	}
			}

			// java-based API for validation 
			fragment = validation.JavaValidatorFragment {
				composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
				composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
				// registerForImportedPackages = true
			}

			// scoping and exporting API
			// fragment = scoping.ImportURIScopingFragment {}
			// fragment = exporting.SimpleNamesFragment {}

			// scoping and exporting API 
			fragment = scoping.ImportNamespacesScopingFragment {}
			fragment = exporting.QualifiedNamesFragment {}
			fragment = builder.BuilderIntegrationFragment {}
			
			fragment = types.TypesGeneratorFragment {}

			// formatter API 
			fragment = formatting.FormatterFragment {}

			// labeling API 
			fragment = labeling.LabelProviderFragment {}

			// outline API 
			fragment = outline.TransformerFragment {}
			fragment = outline.OutlineNodeAdapterFactoryFragment {}
			fragment = outline.QuickOutlineFragment {}

			// quickfix API 
			fragment = quickfix.QuickfixProviderFragment {}

			// content assist API  
			fragment = contentAssist.JavaBasedContentAssistFragment {}

			// generates a more lightweight Antlr parser and lexer tailored for content assist  
			fragment = parser.antlr.XtextAntlrUiGeneratorFragment {}
			
			fragment = org.eclipse.xtext.generator.validation.CheckFragment {}
		}


The output from the generate looks OK
0    [main] INFO  lipse.emf.mwe.utils.StandaloneSetup  - Registering platform uri '/Users/devaughn/projects/arti-core'
1032 [main] INFO  ipse.emf.mwe.utils.DirectoryCleaner  - Cleaning /Users/devaughn/projects/arti-core/com.cisco.step.arti.cli/../com.cisco.step.arti.cli/src-gen
1051 [main] INFO  ipse.emf.mwe.utils.DirectoryCleaner  - Cleaning /Users/devaughn/projects/arti-core/com.cisco.step.arti.cli/../com.cisco.step.arti.cli.ui/src-gen
1219 [main] INFO  ipse.xtext.generator.LanguageConfig  - generating infrastructure for com.cisco.step.arti.cli.CliDsl with fragments : ImplicitRuntimeFragment, ImplicitUiFragment, GrammarAccessFragment, EcoreGeneratorFragment, ParseTreeConstructorFragment, ResourceFactoryFragment, XtextAntlrGeneratorFragment, JavaValidatorFragment, ImportNamespacesScopingFragment, QualifiedNamesFragment, BuilderIntegrationFragment, TypesGeneratorFragment, FormatterFragment, LabelProviderFragment, TransformerFragment, OutlineNodeAdapterFactoryFragment, QuickOutlineFragment, QuickfixProviderFragment, JavaBasedContentAssistFragment, XtextAntlrUiGeneratorFragment, CheckFragment
10571 [main] INFO  or.validation.JavaValidatorFragment  - executing generate for org.eclipse.xtext.generator.validation.JavaValidatorFragment
14435 [main] DEBUG enerator.CompositeGeneratorFragment  - replacing binding : org.eclipse.xtext.scoping.IGlobalScopeProvider -> org.eclipse.xtext.scoping.impl.DefaultGlobalScopeProvider (contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment)
14435 [main] DEBUG enerator.CompositeGeneratorFragment  -  with new binding : org.eclipse.xtext.scoping.IGlobalScopeProvider -> org.eclipse.xtext.common.types.xtext.TypesAwareDefaultGlobalScopeProvider (contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment)
14435 [main] DEBUG enerator.CompositeGeneratorFragment  - replacing binding : java.lang.ClassLoader -> getClass().getClassLoader() (contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment)
14435 [main] DEBUG enerator.CompositeGeneratorFragment  -  with new binding : java.lang.ClassLoader -> AbstractCliDslRuntimeModule.class.getClassLoader() (contributed by org.eclipse.xtext.generator.validation.CheckFragment)
14474 [main] DEBUG enerator.CompositeGeneratorFragment  - replacing binding : org.eclipse.xtext.ui.editor.contentassist.PrefixMatcher -> org.eclipse.xtext.ui.editor.contentassist.FQNPrefixMatcher (contributed by org.eclipse.xtext.generator.exporting.QualifiedNamesFragment)
14475 [main] DEBUG enerator.CompositeGeneratorFragment  -  with new binding : org.eclipse.xtext.ui.editor.contentassist.PrefixMatcher -> org.eclipse.xtext.ui.editor.contentassist.FQNPrefixMatcher (contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment)
14588 [main] INFO  .emf.mwe2.runtime.workflow.Workflow  - Done.


When I launch and eclipse runtime to try out the editor it appears that everything works until i get to the part of giving it a java class
type Date mapped-to java.util.Date

Here I get the error
Quote:
Couldn't resolve reference to JvmType 'java.util.Date'.



Any help would be greatly appreciated!

Re: Java Types in Xtext DSL [message #557951 is a reply to message #557947] Thu, 09 September 2010 14:57 Go to previous messageGo to next message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14661
Registered: July 2009
Senior Member
Hi,

is the project the model is within a Java project?

~Christian


Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
Re: Java Types in Xtext DSL [message #557960 is a reply to message #557951] Thu, 09 September 2010 15:42 Go to previous messageGo to next message
Ed Willink is currently offline Ed WillinkFriend
Messages: 7655
Registered: July 2009
Senior Member
Hi

AND is there something on that classpath?

This seems to be a Frequently Encountered Bug.

I have struggled with it in my own code three or four times. On the last
occasion I had missed a refactoring so the names were just misspelled.
Somehow completion assist just didn't help.

The documentation is poor, providing edit instructions that are easily
misinterpreted. There could be a comprehensive working example.

The diagnostic help is non-existent. Surely the lack of a class path can
be diagnosed. Presumably the requirement to have something on the path
is just a bug.

Regards

Ed Willink

On 09/09/2010 15:57, Christian Dietrich wrote:
> Hi,
>
> is the project the model is within a Java project?
>
> ~Christian
Re: Java Types in Xtext DSL [message #557964 is a reply to message #557960] Thu, 09 September 2010 15:58 Go to previous message
Dennis Vaughn is currently offline Dennis VaughnFriend
Messages: 13
Registered: July 2009
Junior Member
Thanks for the help!! Just creating a java project seemed to be the issue. I understand the problem now and creating it as a java project should not be a problem since we are generating java code in the end.

-Dennis
Previous Topic:No Definition 'generator::Test::main for List' found!
Next Topic:Xtext model and EMFCompare
Goto Forum:
  


Current Time: Thu Mar 28 13:10:43 GMT 2024

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

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

Back to the top