Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » TMF (Xtext) » [XTEXT1] JvmParameterizedTypeReference and nested classes(A referenced nested class in a JvmParameterizedTypeReference is seen as a JvmVoid)
[XTEXT1] JvmParameterizedTypeReference and nested classes [message #725913] Fri, 16 September 2011 07:34 Go to next message
Victor Noël is currently offline Victor NoëlFriend
Messages: 112
Registered: June 2010
Senior Member
Hi,

With Xtext 1.0.2, in my grammar description, I have the following rules:
FQN:
	ID ('.' ID)*;

ParameterizedTypeReference returns types::JvmParameterizedTypeReference:
	{ParameterizedTypeReference} type=[types::JvmType|FQN] ("[" arguments+=ReferenceTypeArgument ("," arguments+=ReferenceTypeArgument)* "]")?;


and the fragment types.TypesGeneratorFragment in the mwe2 file.

Everything is working perfectly fine except that when referencing a nested class (for example java.util.Map.Entry) the type field of the ParameterizedTypeReference object contains a JvmVoid instead of something that would reference the nested class.
Re: [XTEXT1] JvmParameterizedTypeReference and nested classes [message #725952 is a reply to message #725913] Fri, 16 September 2011 09:22 Go to previous messageGo to next message
Sebastian Zarnekow is currently offline Sebastian ZarnekowFriend
Messages: 3118
Registered: July 2009
Senior Member
Hi Victor,

the default scoping cannot find nested classes if you use the '.' as a
delimiter. It should work if you use the $ instead.

Regards,
Sebastian
--
Need professional support for Eclipse Modeling?
Go visit: http://xtext.itemis.com

On 16.09.11 09:34, Victor wrote:
> Hi,
>
> With Xtext 1.0.2, in my grammar description, I have the following rules:
>
> FQN:
> ID ('.' ID)*;
>
> ParameterizedTypeReference returns types::JvmParameterizedTypeReference:
> {ParameterizedTypeReference} type=[types::JvmType|FQN] ("["
> arguments+=ReferenceTypeArgument ("," arguments+=ReferenceTypeArgument)*
> "]")?;
>
>
> and the fragment types.TypesGeneratorFragment in the mwe2 file.
>
> Everything is working perfectly fine except that when referencing a
> nested class (for example java.util.Map.Entry) the type field of the
> ParameterizedTypeReference object contains a JvmVoid instead of
> something that would reference the nested class.
Re: [XTEXT1] JvmParameterizedTypeReference and nested classes [message #725966 is a reply to message #725952] Fri, 16 September 2011 09:51 Go to previous messageGo to next message
Victor Noël is currently offline Victor NoëlFriend
Messages: 112
Registered: June 2010
Senior Member
Hi,

That would be ok for me, but after changing the rules like that:

FQN:
	ID ('.' ID)*;

NestedFQN:
	FQN ('$' ID)*;

ParameterizedTypeReference returns types::JvmParameterizedTypeReference:
	{ParameterizedTypeReference} type=[types::JvmType|NestedFQN] ("[" arguments+=ReferenceTypeArgument ("," arguments+=ReferenceTypeArgument)* "]")?;


And the ValueConverterService (that I stupidely copied from the domain model example without understanding its meaning nor necessity... Smile
	@Inject
	private QualifiedNameValueConverter qualifiedNameValueConverter;
	
	@ValueConverter(rule = "FQN")
	public IValueConverter<String> QualifiedName() {
		return qualifiedNameValueConverter;
	}
	
	@ValueConverter(rule = "NestedFQN")
	public IValueConverter<String> QualifiedNameNested() {
		return qualifiedNameValueConverter;
	}

	@ValueConverter(rule = "ImportFQN")
	public IValueConverter<String> QualifiedNameWithWildCard() {
		return qualifiedNameValueConverter;
	}


I get this kind of error

241216 [Worker-4] WARN  org.eclipse.xtext.linking.lazy.LazyLinkingResource  - resolution of uriFragment 'xtextLink_::0.2.0.2.0.2.0.1::1::/1' failed.
java.lang.IllegalArgumentException: Cannot create type from non-toplevel-type: 'java.util.Map$Entry'.
	at org.eclipse.xtext.common.types.access.jdt.JdtBasedTypeFactory.createType(JdtBasedTypeFactory.java:81)
	at org.eclipse.xtext.common.types.access.jdt.JdtBasedTypeFactory.createType(JdtBasedTypeFactory.java:1)
	at org.eclipse.xtext.common.types.access.jdt.JdtTypeMirror.initialize(JdtTypeMirror.java:41)
	at org.eclipse.xtext.common.types.access.TypeResource.doLoad(TypeResource.java:86)
	at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1494)
	at org.eclipse.xtext.common.types.access.TypeResource.load(TypeResource.java:74)
	at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:255)
	at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:270)
	at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResource(ResourceSetImpl.java:397)
	at org.eclipse.xtext.common.types.access.jdt.JdtTypeProvider.findTypeByName(JdtTypeProvider.java:62)
	at org.eclipse.xtext.common.types.xtext.AbstractTypeScope.getContentByName(AbstractTypeScope.java:42)
	at org.eclipse.xtext.linking.impl.ImportedNamesAdapter$WrappingScope.getContentByName(ImportedNamesAdapter.java:52)
	at org.eclipse.xtext.linking.impl.DefaultLinkingService.getLinkedObjects(DefaultLinkingService.java:106)
	at org.eclipse.xtext.linking.lazy.LazyLinkingResource.getEObject(LazyLinkingResource.java:94)
	at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getEObject(ResourceSetImpl.java:219)
	at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:202)
	at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:262)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eResolveProxy(BasicEObjectImpl.java:1483)
	at org.eclipse.xtext.common.types.impl.JvmParameterizedTypeReferenceImpl.getType(JvmParameterizedTypeReferenceImpl.java:106)
	at org.eclipse.xtext.common.types.impl.JvmParameterizedTypeReferenceImpl.eGet(JvmParameterizedTypeReferenceImpl.java:176)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1021)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1013)
	at org.eclipse.emf.ecore.util.EContentsEList$FeatureIteratorImpl.hasNext(EContentsEList.java:409)
	at org.eclipse.emf.ecore.util.EcoreUtil.resolveCrossReferences(EcoreUtil.java:307)
	at org.eclipse.emf.ecore.util.EcoreUtil.resolveAll(EcoreUtil.java:287)
	at org.eclipse.xtext.resource.impl.DefaultResourceDescription.getImportedNames(DefaultResourceDescription.java:97)
	at org.eclipse.xtext.builder.builderState.BuilderStateUtil.create(BuilderStateUtil.java:28)
	at org.eclipse.xtext.builder.builderState.PersistableResourceDescriptionsImpl.createNew(PersistableResourceDescriptionsImpl.java:84)
	at org.eclipse.xtext.builder.builderState.PersistableResourceDescriptionsImpl.doUpdate(PersistableResourceDescriptionsImpl.java:60)
	at org.eclipse.xtext.builder.builderState.PersistableResourceDescriptionsImpl.doUpdate(PersistableResourceDescriptionsImpl.java:1)
	at org.eclipse.xtext.builder.builderState.AbstractBuilderState.update(AbstractBuilderState.java:111)
	at org.eclipse.xtext.builder.impl.XtextBuilder.doBuild(XtextBuilder.java:148)
	at org.eclipse.xtext.builder.impl.XtextBuilder.incrementalBuild(XtextBuilder.java:133)
	at org.eclipse.xtext.builder.impl.XtextBuilder.build(XtextBuilder.java:86)
	at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:203)
	at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:255)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:258)
	at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:311)
	at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:343)
	at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144)
	at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:242)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)


or
241218 [Worker-4] WARN  org.eclipse.xtext.linking.lazy.LazyLinkingResource  - resolution of uriFragment 'xtextLink_::0.2.0.2.0.2.0.1::1::/1' failed.
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
	at java.lang.String.substring(String.java:1949)
	at org.eclipse.xtext.common.types.access.impl.AbstractClassMirror.getEObject(AbstractClassMirror.java:74)
	at org.eclipse.xtext.common.types.access.impl.AbstractClassMirror.getEObject(AbstractClassMirror.java:75)
	at org.eclipse.xtext.common.types.access.impl.AbstractClassMirror.getEObject(AbstractClassMirror.java:75)
	at org.eclipse.xtext.common.types.access.impl.AbstractClassMirror.getEObject(AbstractClassMirror.java:75)
	at org.eclipse.xtext.common.types.access.TypeResource.getEObject(TypeResource.java:48)
	at org.eclipse.xtext.common.types.access.jdt.JdtTypeProvider.findTypeBySignature(JdtTypeProvider.java:70)
	at org.eclipse.xtext.common.types.access.jdt.JdtTypeProvider.findTypeByName(JdtTypeProvider.java:63)
	at org.eclipse.xtext.common.types.xtext.AbstractTypeScope.getContentByName(AbstractTypeScope.java:42)
	at org.eclipse.xtext.linking.impl.ImportedNamesAdapter$WrappingScope.getContentByName(ImportedNamesAdapter.java:52)
	at org.eclipse.xtext.linking.impl.DefaultLinkingService.getLinkedObjects(DefaultLinkingService.java:106)
	at org.eclipse.xtext.linking.lazy.LazyLinkingResource.getEObject(LazyLinkingResource.java:94)
	at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getEObject(ResourceSetImpl.java:219)
	at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:206)
	at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:262)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eResolveProxy(BasicEObjectImpl.java:1483)
	at org.eclipse.xtext.common.types.impl.JvmParameterizedTypeReferenceImpl.getType(JvmParameterizedTypeReferenceImpl.java:106)
	at org.eclipse.xtext.common.types.impl.JvmParameterizedTypeReferenceImpl.eGet(JvmParameterizedTypeReferenceImpl.java:176)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1021)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1013)
	at org.eclipse.emf.ecore.util.EContentsEList$FeatureIteratorImpl.hasNext(EContentsEList.java:409)
	at org.eclipse.emf.ecore.util.EcoreUtil.resolveCrossReferences(EcoreUtil.java:307)
	at org.eclipse.emf.ecore.util.EcoreUtil.resolveAll(EcoreUtil.java:287)
	at org.eclipse.xtext.resource.impl.DefaultResourceDescription.getImportedNames(DefaultResourceDescription.java:97)
	at org.eclipse.xtext.builder.builderState.BuilderStateUtil.create(BuilderStateUtil.java:28)
	at org.eclipse.xtext.builder.builderState.PersistableResourceDescriptionsImpl.createNew(PersistableResourceDescriptionsImpl.java:84)
	at org.eclipse.xtext.builder.builderState.PersistableResourceDescriptionsImpl.doUpdate(PersistableResourceDescriptionsImpl.java:60)
	at org.eclipse.xtext.builder.builderState.PersistableResourceDescriptionsImpl.doUpdate(PersistableResourceDescriptionsImpl.java:1)
	at org.eclipse.xtext.builder.builderState.AbstractBuilderState.update(AbstractBuilderState.java:111)
	at org.eclipse.xtext.builder.impl.XtextBuilder.doBuild(XtextBuilder.java:148)
	at org.eclipse.xtext.builder.impl.XtextBuilder.incrementalBuild(XtextBuilder.java:133)
	at org.eclipse.xtext.builder.impl.XtextBuilder.build(XtextBuilder.java:86)
	at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:203)
	at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:255)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:258)
	at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:311)
	at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:343)
	at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144)
	at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:242)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)


Any ideas ?
Re: [XTEXT1] JvmParameterizedTypeReference and nested classes [message #725976 is a reply to message #725966] Fri, 16 September 2011 10:04 Go to previous messageGo to next message
Sebastian Zarnekow is currently offline Sebastian ZarnekowFriend
Messages: 3118
Registered: July 2009
Senior Member
Sorry,

there were fixes in this field for Xtext 2.0.
I'm afraid you have to backport them, update to Xtext 2.0 or implement
the type lookup on your own.

Regards,
Sebastian
--
Need professional support for Eclipse Modeling?
Go visit: http://xtext.itemis.com

On 16.09.11 11:51, Victor wrote:
> Hi,
>
> That would be ok for me, but after changing the rules like that:
>
>
> FQN:
> ID ('.' ID)*;
>
> NestedFQN:
> FQN ('$' ID)*;
>
> ParameterizedTypeReference returns types::JvmParameterizedTypeReference:
> {ParameterizedTypeReference} type=[types::JvmType|NestedFQN] ("["
> arguments+=ReferenceTypeArgument ("," arguments+=ReferenceTypeArgument)*
> "]")?;
>
>
> And the ValueConverterService (that I stupidely copied from the domain
> model example without understanding its meaning nor necessity... :)
>
> @Inject
> private QualifiedNameValueConverter qualifiedNameValueConverter;
>
> @ValueConverter(rule = "FQN")
> public IValueConverter<String> QualifiedName() {
> return qualifiedNameValueConverter;
> }
>
> @ValueConverter(rule = "NestedFQN")
> public IValueConverter<String> QualifiedNameNested() {
> return qualifiedNameValueConverter;
> }
>
> @ValueConverter(rule = "ImportFQN")
> public IValueConverter<String> QualifiedNameWithWildCard() {
> return qualifiedNameValueConverter;
> }
>
>
> I get this kind of error
>
>
> 241216 [Worker-4] WARN
> org.eclipse.xtext.linking.lazy.LazyLinkingResource - resolution of
> uriFragment 'xtextLink_::0.2.0.2.0.2.0.1::1::/1' failed.
> java.lang.IllegalArgumentException: Cannot create type from
> non-toplevel-type: 'java.util.Map$Entry'.
> at
> org.eclipse.xtext.common.types.access.jdt.JdtBasedTypeFactory.createType(JdtBasedTypeFactory.java:81)
>
> at
> org.eclipse.xtext.common.types.access.jdt.JdtBasedTypeFactory.createType(JdtBasedTypeFactory.java:1)
>
> at
> org.eclipse.xtext.common.types.access.jdt.JdtTypeMirror.initialize(JdtTypeMirror.java:41)
>
> at
> org.eclipse.xtext.common.types.access.TypeResource.doLoad(TypeResource.java:86)
>
> at
> org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1494)
>
> at
> org.eclipse.xtext.common.types.access.TypeResource.load(TypeResource.java:74)
>
> at
> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:255)
>
> at
> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:270)
>
> at
> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResource(ResourceSetImpl.java:397)
>
> at
> org.eclipse.xtext.common.types.access.jdt.JdtTypeProvider.findTypeByName(JdtTypeProvider.java:62)
>
> at
> org.eclipse.xtext.common.types.xtext.AbstractTypeScope.getContentByName(AbstractTypeScope.java:42)
>
> at
> org.eclipse.xtext.linking.impl.ImportedNamesAdapter$WrappingScope.getContentByName(ImportedNamesAdapter.java:52)
>
> at
> org.eclipse.xtext.linking.impl.DefaultLinkingService.getLinkedObjects(DefaultLinkingService.java:106)
>
> at
> org.eclipse.xtext.linking.lazy.LazyLinkingResource.getEObject(LazyLinkingResource.java:94)
>
> at
> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getEObject(ResourceSetImpl.java:219)
>
> at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:202)
> at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:262)
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eResolveProxy(BasicEObjectImpl.java:1483)
>
> at
> org.eclipse.xtext.common.types.impl.JvmParameterizedTypeReferenceImpl.getType(JvmParameterizedTypeReferenceImpl.java:106)
>
> at
> org.eclipse.xtext.common.types.impl.JvmParameterizedTypeReferenceImpl.eGet(JvmParameterizedTypeReferenceImpl.java:176)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1021)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1013)
>
> at
> org.eclipse.emf.ecore.util.EContentsEList$FeatureIteratorImpl.hasNext(EContentsEList.java:409)
>
> at
> org.eclipse.emf.ecore.util.EcoreUtil.resolveCrossReferences(EcoreUtil.java:307)
>
> at org.eclipse.emf.ecore.util.EcoreUtil.resolveAll(EcoreUtil.java:287)
> at
> org.eclipse.xtext.resource.impl.DefaultResourceDescription.getImportedNames(DefaultResourceDescription.java:97)
>
> at
> org.eclipse.xtext.builder.builderState.BuilderStateUtil.create(BuilderStateUtil.java:28)
>
> at
> org.eclipse.xtext.builder.builderState.PersistableResourceDescriptionsImpl.createNew(PersistableResourceDescriptionsImpl.java:84)
>
> at
> org.eclipse.xtext.builder.builderState.PersistableResourceDescriptionsImpl.doUpdate(PersistableResourceDescriptionsImpl.java:60)
>
> at
> org.eclipse.xtext.builder.builderState.PersistableResourceDescriptionsImpl.doUpdate(PersistableResourceDescriptionsImpl.java:1)
>
> at
> org.eclipse.xtext.builder.builderState.AbstractBuilderState.update(AbstractBuilderState.java:111)
>
> at
> org.eclipse.xtext.builder.impl.XtextBuilder.doBuild(XtextBuilder.java:148)
> at
> org.eclipse.xtext.builder.impl.XtextBuilder.incrementalBuild(XtextBuilder.java:133)
>
> at org.eclipse.xtext.builder.impl.XtextBuilder.build(XtextBuilder.java:86)
> at
> org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629)
> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
> at
> org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172)
>
> at
> org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:203)
>
> at
> org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:255)
> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
> at
> org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:258)
>
> at
> org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:311)
>
> at
> org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:343)
> at
> org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144)
>
> at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:242)
> at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
>
>
> or
>
> 241218 [Worker-4] WARN
> org.eclipse.xtext.linking.lazy.LazyLinkingResource - resolution of
> uriFragment 'xtextLink_::0.2.0.2.0.2.0.1::1::/1' failed.
> java.lang.StringIndexOutOfBoundsException: String index out of range: -1
> at java.lang.String.substring(String.java:1949)
> at
> org.eclipse.xtext.common.types.access.impl.AbstractClassMirror.getEObject(AbstractClassMirror.java:74)
>
> at
> org.eclipse.xtext.common.types.access.impl.AbstractClassMirror.getEObject(AbstractClassMirror.java:75)
>
> at
> org.eclipse.xtext.common.types.access.impl.AbstractClassMirror.getEObject(AbstractClassMirror.java:75)
>
> at
> org.eclipse.xtext.common.types.access.impl.AbstractClassMirror.getEObject(AbstractClassMirror.java:75)
>
> at
> org.eclipse.xtext.common.types.access.TypeResource.getEObject(TypeResource.java:48)
>
> at
> org.eclipse.xtext.common.types.access.jdt.JdtTypeProvider.findTypeBySignature(JdtTypeProvider.java:70)
>
> at
> org.eclipse.xtext.common.types.access.jdt.JdtTypeProvider.findTypeByName(JdtTypeProvider.java:63)
>
> at
> org.eclipse.xtext.common.types.xtext.AbstractTypeScope.getContentByName(AbstractTypeScope.java:42)
>
> at
> org.eclipse.xtext.linking.impl.ImportedNamesAdapter$WrappingScope.getContentByName(ImportedNamesAdapter.java:52)
>
> at
> org.eclipse.xtext.linking.impl.DefaultLinkingService.getLinkedObjects(DefaultLinkingService.java:106)
>
> at
> org.eclipse.xtext.linking.lazy.LazyLinkingResource.getEObject(LazyLinkingResource.java:94)
>
> at
> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getEObject(ResourceSetImpl.java:219)
>
> at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:206)
> at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:262)
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eResolveProxy(BasicEObjectImpl.java:1483)
>
> at
> org.eclipse.xtext.common.types.impl.JvmParameterizedTypeReferenceImpl.getType(JvmParameterizedTypeReferenceImpl.java:106)
>
> at
> org.eclipse.xtext.common.types.impl.JvmParameterizedTypeReferenceImpl.eGet(JvmParameterizedTypeReferenceImpl.java:176)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1021)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1013)
>
> at
> org.eclipse.emf.ecore.util.EContentsEList$FeatureIteratorImpl.hasNext(EContentsEList.java:409)
>
> at
> org.eclipse.emf.ecore.util.EcoreUtil.resolveCrossReferences(EcoreUtil.java:307)
>
> at org.eclipse.emf.ecore.util.EcoreUtil.resolveAll(EcoreUtil.java:287)
> at
> org.eclipse.xtext.resource.impl.DefaultResourceDescription.getImportedNames(DefaultResourceDescription.java:97)
>
> at
> org.eclipse.xtext.builder.builderState.BuilderStateUtil.create(BuilderStateUtil.java:28)
>
> at
> org.eclipse.xtext.builder.builderState.PersistableResourceDescriptionsImpl.createNew(PersistableResourceDescriptionsImpl.java:84)
>
> at
> org.eclipse.xtext.builder.builderState.PersistableResourceDescriptionsImpl.doUpdate(PersistableResourceDescriptionsImpl.java:60)
>
> at
> org.eclipse.xtext.builder.builderState.PersistableResourceDescriptionsImpl.doUpdate(PersistableResourceDescriptionsImpl.java:1)
>
> at
> org.eclipse.xtext.builder.builderState.AbstractBuilderState.update(AbstractBuilderState.java:111)
>
> at
> org.eclipse.xtext.builder.impl.XtextBuilder.doBuild(XtextBuilder.java:148)
> at
> org.eclipse.xtext.builder.impl.XtextBuilder.incrementalBuild(XtextBuilder.java:133)
>
> at org.eclipse.xtext.builder.impl.XtextBuilder.build(XtextBuilder.java:86)
> at
> org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629)
> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
> at
> org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172)
>
> at
> org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:203)
>
> at
> org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:255)
> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
> at
> org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:258)
>
> at
> org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:311)
>
> at
> org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:343)
> at
> org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144)
>
> at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:242)
> at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
>
>
> Any ideas ?
Re: [XTEXT1] JvmParameterizedTypeReference and nested classes [message #726025 is a reply to message #725976] Fri, 16 September 2011 12:42 Go to previous messageGo to next message
Victor Noël is currently offline Victor NoëlFriend
Messages: 112
Registered: June 2010
Senior Member
Ok thanks, I was looking for at least a workaround waiting to port my language to xtext 2.0, I will try to do something about it, thanks Smile
Re: [XTEXT1] JvmParameterizedTypeReference and nested classes [message #726058 is a reply to message #726025] Fri, 16 September 2011 12:55 Go to previous messageGo to next message
Sebastian Zarnekow is currently offline Sebastian ZarnekowFriend
Messages: 3118
Registered: July 2009
Senior Member
Hi Victor,

you may want to bind your own IJdtTypeProvider.Factory for the
JDT scenario and return a derived implementation of the
JdtTypeProvider that overrides #findTypeByName as follows

@Override
public JvmType findTypeByName(String name) throws
TypeNotFoundException {
if (Strings.isEmpty(name))
throw new IllegalArgumentException("null");
String signature = null;
try {
signature = name.startsWith("[") ? name :
Signature.createTypeSignature(name, true);
} catch (IllegalArgumentException e) {
throw new TypeNotFoundException(name);
}
URI resourceURI = typeUriHelper.createResourceURI(signature);
String resourcePath = resourceURI.path();
if (resourcePath.startsWith(URIHelperConstants.PRIMITIVES)) {
TypeResource resource = (TypeResource)
getResourceSet().getResource(resourceURI, true);
JvmType result = findTypeBySignature(signature, resource);
return result;
} else {
String topLevelType =
resourceURI.segment(resourceURI.segmentCount() - 1);
try {
int lastDot = topLevelType.lastIndexOf('.');
String packageName = null;
String typeName = topLevelType;
if (lastDot != -1) {
typeName = typeName.substring(lastDot + 1);
packageName = topLevelType.substring(0, lastDot);
}
if (javaProject.findType(packageName, typeName) != null) {
TypeResource resource = (TypeResource)
getResourceSet().getResource(resourceURI, true);
JvmType result = findTypeBySignature(signature, resource);
return result;
} else {
throw new TypeNotFoundException(name);
}
} catch (JavaModelException e) {
throw new TypeNotFoundException(name);
}
}
}


See also commit 5e0cdb18285483378f69c6f4fbc7245b435b4a53

Regards,
Sebastian
--
Need professional support for Eclipse Modeling?
Go visit: http://xtext.itemis.com

On 16.09.11 14:42, Victor wrote:
> Ok thanks, I was looking for at least a workaround waiting to port my
> language to xtext 2.0, I will try to do something about it, thanks :)
Re: [XTEXT1] JvmParameterizedTypeReference and nested classes [message #726117 is a reply to message #726058] Fri, 16 September 2011 15:51 Go to previous message
Victor Noël is currently offline Victor NoëlFriend
Messages: 112
Registered: June 2010
Senior Member
Great, thanks!
Previous Topic:[solved] Missing whitespace after XText serialization
Next Topic:Define exclusive IDs in the grammar
Goto Forum:
  


Current Time: Fri Apr 26 18:10:17 GMT 2024

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

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

Back to the top