Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » TMF (Xtext) » Creating Proxies from JvmType(Error "'JvmType' is not a valid classifier" in TypeFactoryImpl)
Creating Proxies from JvmType [message #982159] Mon, 12 November 2012 19:40 Go to next message
Jens-Uwe Moeller is currently offline Jens-Uwe Moeller
Messages: 12
Registered: February 2012
Location: Hamburg
Junior Member
Hi,

I tried out Michael Vorburgers approach to XML-Generation of the parsed Code in my DSL and it works fine, as long as my self-defined classes are concerned.
As far, as I understood his approach, he makes a kind of copy of the resource with all its element and copies all references, and then modifies it to meet XML needs (uri name:/ etc.)

Ok, it worked fine for the Fowler-Dsl StateMachine, but when having a parser rule that uses JvmTypeReference or something else from JvmType like the Enitity-Rule

Entity: 
    name=ValidID ('extends' superType=JvmParameterizedTypeReference)?

or
Property:
    name=ValidID ':' type=JvmTypeReference;


it gets as error: The class 'JvmType' is not a valid classifier
coming from the TypesFactory "org.eclipse.xtext.common.types.impl.TypesFactoryImpl".

There
	public EObject create(EClass eClass)
	{
		switch (eClass.getClassifierID())

the call of eClass.getClassifierID() always results in 0.

First I thought, that the error might result from a non-initialized resource or an anyway other incomplete state, so I subclassed JvmModelAssociator, and later the JvmModelGenerator. But even in the latter case the error stayed. So there must be another reason. I expected there a "JvmParameterizedTypeReference" instead of a "JvmType" - but maybe my expectation is wrong.

Either it is wrong, to try to create a proxy by calling EcoreUtil.create with
eReference.getEReferenceType()
where eReference is inititialised by the following code from Michael
protected <T extends EObject> void replaceReferences(T rootObject, ReferenceReplacer r) {
        Map<EObject, Collection<Setting>> map = EcoreUtil.CrossReferencer.find(Collections.singleton(rootObject));
        for (Map.Entry<EObject, Collection<EStructuralFeature.Setting>> entry : map.entrySet()) {
            EObject crossReference = entry.getKey();
            for (Setting setting : entry.getValue()) {
                EReference eReference = (EReference)setting.getEStructuralFeature();

or the TypesFactory has to be broadend.

Can you help me to understand, how proxies of elements of Jvm... could be build and which are the relevant objects that proxies have to be build from.

Thanks in advance, Jens
Re: Creating Proxies from JvmType [message #984806 is a reply to message #982159] Wed, 14 November 2012 19:45 Go to previous messageGo to next message
Jens-Uwe Moeller is currently offline Jens-Uwe Moeller
Messages: 12
Registered: February 2012
Location: Hamburg
Junior Member
Isn't there anybody, just giving me a hint?
Jens
Re: Creating Proxies from JvmType [message #985552 is a reply to message #984806] Thu, 15 November 2012 08:42 Go to previous message
Aaron Digulla is currently offline Aaron Digulla
Messages: 258
Registered: July 2009
Location: Switzerland
Senior Member
Not sure but shouldn't that be

name=ValidID ('extends' superType=[JvmParameterizedTypeReference])?


(i.e. square brackets around the reference)

And did you import "http://www.eclipse.org/xtext/common/JavaVMTypes" somewhere?
Previous Topic:Allow keywords in any order
Next Topic:Name validation for imported files
Goto Forum:
  


Current Time: Wed Aug 27 21:23:36 EDT 2014

Powered by FUDForum. Page generated in 0.01872 seconds