| Resolve proxies [message #973984] |
Tue, 06 November 2012 14:29  |
Zlatka Manas Messages: 26 Registered: March 2012 |
Junior Member |
|
|
Hi,
I am trying to resolve the proxies I get in my DSL.
The problem is that the resourceDescriptionsProvider is null so I cannot get the resource descriptions.
I am trying to define type check rules for my DSL, so I have a class DSLTypeSystem that extends from the Switch class. In one of the overridden methods I need to know the actual name of the referenced element.
Th part of the grammar related to my problem is the following:
PrimaryExpression: ((minusSign?='-') | '+')? primary=Primary (methodCall+=DataMethodCall)* ;
DataMethodCall: (useCaret?='^')? method=[DataMethod|IDENTIFIER] ('(' (arguments=ListOfExpressions)? ')')?;
I need to know the name of the method referenced in DataMethodCall.
Any idea why this is null?
|
|
|
|
| Re: Resolve proxies [message #974009 is a reply to message #973989] |
Tue, 06 November 2012 14:55   |
Zlatka Manas Messages: 26 Registered: March 2012 |
Junior Member |
|
|
@Inject
ResourceDescriptionsProvider resourceDescriptionsProvider;
Resource res = ex.eResource();
IResourceDescriptions index = resourceDescriptionsProvider.getResourceDescriptions(ex.eResource());
The provider is null so I cannot get the descriptions. ex is an Expression from the language.
I also have (different method)
IResourceDescription descr = index.getResourceDescription(myResource.getURI());
EObject object = null;
for(IContainer visibleContainer: manager.getVisibleContainers(descr, index)) {
for(IResourceDescription visibleResourceDesc: visibleContainer.getResourceDescriptions()) {
System.out.println(visibleResourceDesc.getURI());
}
for (IEObjectDescription od : visibleContainer.getExportedObjectsByType(PooslPackage.Literals.DATA_METHOD_CALL)) {
DataMethodCall sodModel = (DataMethodCall) od.getEObjectOrProxy();
object = EcoreUtil2.resolve(sodModel, myResource);
}
}
}
[Updated on: Tue, 06 November 2012 14:58] Report message to a moderator
|
|
|
|
|
|
|
|
|
|
| Re: Resolve proxies [message #975181 is a reply to message #974713] |
Wed, 07 November 2012 12:11  |
Stephan Herrmann Messages: 779 Registered: July 2009 |
Senior Member |
|
|
In a world that's fully controlled by Guice injection works just fine, but sometimes I find myself in a situation where instances need to be created explicitly. Even "injector.getInstance(X.class)" doesn't always do the trick. In those cases I tend to say:
X x = new X(argFoo, argBar);
injector.injectMembers(x);
this seems to be the best compromise between "fully controlled by Guice" and "fully controlled by my code".
HTH,
Stephan
|
|
|
Powered by
FUDForum. Page generated in 0.12642 seconds