Skip to main content



      Home
Home » Modeling » TMF (Xtext) » Problem with classpath uri imports
Problem with classpath uri imports [message #775289] Thu, 05 January 2012 13:20 Go to next message
Eclipse UserFriend
Hello again,

In order to automatically import some built-in definitions for my DSL (see my original problem), I've been trying to follow the advise of Meinte Boersma to use a custom GlobalScopeProvider and overwrite the getImportedUris() method as described in the Itemis blog.

It states that I should create an URI for the resourcefile containing the needed definitions with:
URI.createURI("classpath:/the/library/package/defaults.mydsl")

My resourcefile is located in the "src" folder of my Xtext main project in the java package "ao.explorer.dsl" and is named "builtin.aodsl".

I guess that my adapted code should then look like this:
URI.createURI("classpath:/ao/explorer/dsl/builtin.aodsl")

Anyway, my resourcfile is not found by the Xtext framework but is definitely in the classpath (it can be opened using ClassLoader.getResourceAsStream()). I guess that it simply has to be made visible somehow. How do I do that?

[Updated on: Tue, 10 January 2012 05:34] by Moderator

Re: Problem with classpath uri imports [message #775306 is a reply to message #775289] Thu, 05 January 2012 13:43 Go to previous messageGo to next message
Eclipse UserFriend
Hi,

about which classpath are we talking? the one of the model project or the one with your dsl stuff?

~Christian
Re: Problem with classpath uri imports [message #776126 is a reply to message #775289] Sat, 07 January 2012 10:12 Go to previous messageGo to next message
Eclipse UserFriend
I launched a new Eclipse instance and tested the editor generated by Xtext.

In my getImportedUris() method, I additionally read the contents of my resourcefile with ClassLoader.getResourceAsStream() and printed them out on standard output, which worked.

Obviousely the URI returned by this method cannot be resolved by the Xtext framework.

Debugging the code does not give me a clue on what is going wrong. I do not get any error or warning messages even if I'm returning a complete erroneous URI like "classpath:/asdf/xxx".

On the other hand, the importing mechanism works fine, when referencing another DSL file in the Eclipse project using an explicit import and a relative URI. But also here, as soon as I'm trying to use "classpath:/" URIs in my import statement, the editor indicates an error (The URI cannot be resolved - I turned on the check for imported URIs).

Do I have to activate a special Resolver for "classpath:/" URIs?
Re: Problem with classpath uri imports [message #777344 is a reply to message #776126] Tue, 10 January 2012 05:06 Go to previous messageGo to next message
Eclipse UserFriend
Finally I found a workaround for my problem:

Instead of using a "classpath:/" URI I did the following:
URL url = this.getClass().getClassLoader().getResource("/ao/explorer/dsl/builtin.aodsl");
URI uri = URI.createURI(url.toURI().toString());

This produces an URI of the form
bundleresource://552.fwk9948533/ao/explorer/dsl/builtin.aodsl

Anyway - does anyone know why "classpath:/" URIs do not work for me? Is this a bug?
Re: Problem with classpath uri imports [message #798418 is a reply to message #775289] Tue, 14 February 2012 12:14 Go to previous message
Eclipse UserFriend
Hi,

Using URI.createURI("platform:/plugin/<your-plugin-id>/resources/builtin.dsl") worked for me. All you have to do is to add the 'resources' folder to the plugin classpath.

-Peter
Previous Topic:[Xtext 2.3] Where is bundle "org.eclipse.xtext.xtend2.lib"
Next Topic:Using generated Antlr parser from plain java app
Goto Forum:
  


Current Time: Wed Jul 23 19:21:48 EDT 2025

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

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

Back to the top