Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Language IDEs » AJDT » How to find fully qualified type name from simple type name?
How to find fully qualified type name from simple type name? [message #67522] Tue, 31 October 2006 13:40 Go to next message
Eclipse User
Originally posted by: m.bartsch.rdg.ac.uk

Hi all,

How can I find the fully qualified type name of an aspect from a simple
type name in my plug-in? If I have an IType object (e.g. theJavaType)
that represents a class, then

theJavaType.resolveType( "someClass" );

works fine and returns the fully qual. name of "someClass" which is
visible in theJavaType. If I have an IType that represent an aspect
(e.g. theAspectType), then it does not work and null is returned for
another aspect "someAspect" that is visible in theAspectType:

IType theAspectType = ... // Get IType for aspect E

String[][] tp = theAspectType.resolveType( "someAspect" );
// returns null;

The aspect in question could look like:

public aspect E
{
declare precedence : someAspect, someOtherAspect;
}

It should be noted that IType is org.eclipse.jdt.core.IType and not
org.aspectj.org.eclipse.jdt.core.IType and I assume that I should be
using the latter, but I do not know how to retrieve it. Is there maybe
an easier way to resolve a type name than using IType.resolveType?

Thanks a lot,

Marc.
Re: How to find fully qualified type name from simple type name? [message #67566 is a reply to message #67522] Wed, 01 November 2006 06:17 Go to previous messageGo to next message
Matt Chapman is currently offline Matt Chapman
Messages: 429
Registered: July 2009
Senior Member
Warning: this is more complicated than it should be! To keep things
short I'll explain the way things currently are (as of AJDT 1.4 and
Eclipse 3.2) but not the reasons why.

Firstly, for a single .aj file in eclipse there are two compilation
units: one created by JDT and one created by AJDT (which is an
AJCompilationUnit). How are you getting the IType for your aspect? It
needs to come from the AJDT compilation unit. You can use methods in
AJCompilationUnitManager to do obtain it directly, or use the method
mapToAJCompilationUnit() to obtain one from the other.

Secondly aspects (usually) have a different working copy owner, so you
could try the two arg version of resolveType, using
AJCompilationUnitManager.defaultAJWorkingCopyOwner() as the working copy
owner. Alternatively you could try to resolve the type in the context of
the project. Here's an example from the implementation of the New Aspect
wizard (NewAspectWizardPage.java):

IType stype = type.getJavaProject().findType(supertype,
AJCompilationUnitManager.defaultAJWorkingCopyOwner());

Hope that helps,

Matt.

Marc Bartsch wrote:
> Hi all,
>
> How can I find the fully qualified type name of an aspect from a simple
> type name in my plug-in? If I have an IType object (e.g. theJavaType)
> that represents a class, then
>
> theJavaType.resolveType( "someClass" );
>
> works fine and returns the fully qual. name of "someClass" which is
> visible in theJavaType. If I have an IType that represent an aspect
> (e.g. theAspectType), then it does not work and null is returned for
> another aspect "someAspect" that is visible in theAspectType:
>
> IType theAspectType = ... // Get IType for aspect E
>
> String[][] tp = theAspectType.resolveType( "someAspect" );
> // returns null;
>
> The aspect in question could look like:
>
> public aspect E
> {
> declare precedence : someAspect, someOtherAspect;
> }
>
> It should be noted that IType is org.eclipse.jdt.core.IType and not
> org.aspectj.org.eclipse.jdt.core.IType and I assume that I should be
> using the latter, but I do not know how to retrieve it. Is there maybe
> an easier way to resolve a type name than using IType.resolveType?
>
> Thanks a lot,
>
> Marc.
Re: How to find fully qualified type name from simple type name? [message #67583 is a reply to message #67566] Wed, 01 November 2006 09:23 Go to previous message
Eclipse User
Originally posted by: m.bartsch.rdg.ac.uk

Hi Matt,

Thanks for your help! Retrieving the ITypes from AJCompilationUnit and
using the two arg version does the trick.

Best wishes,

Marc.

Matt Chapman schrieb:
> Warning: this is more complicated than it should be! To keep things
> short I'll explain the way things currently are (as of AJDT 1.4 and
> Eclipse 3.2) but not the reasons why.
>
> Firstly, for a single .aj file in eclipse there are two compilation
> units: one created by JDT and one created by AJDT (which is an
> AJCompilationUnit). How are you getting the IType for your aspect? It
> needs to come from the AJDT compilation unit. You can use methods in
> AJCompilationUnitManager to do obtain it directly, or use the method
> mapToAJCompilationUnit() to obtain one from the other.
>
> Secondly aspects (usually) have a different working copy owner, so you
> could try the two arg version of resolveType, using
> AJCompilationUnitManager.defaultAJWorkingCopyOwner() as the working copy
> owner. Alternatively you could try to resolve the type in the context of
> the project. Here's an example from the implementation of the New Aspect
> wizard (NewAspectWizardPage.java):
>
> IType stype =
> type.getJavaProject().findType(supertype,
> AJCompilationUnitManager.defaultAJWorkingCopyOwner());
>
> Hope that helps,
>
> Matt.
>
> Marc Bartsch wrote:
>> Hi all,
>>
>> How can I find the fully qualified type name of an aspect from a simple
>> type name in my plug-in? If I have an IType object (e.g. theJavaType)
>> that represents a class, then
>>
>> theJavaType.resolveType( "someClass" );
>>
>> works fine and returns the fully qual. name of "someClass" which is
>> visible in theJavaType. If I have an IType that represent an aspect
>> (e.g. theAspectType), then it does not work and null is returned for
>> another aspect "someAspect" that is visible in theAspectType:
>>
>> IType theAspectType = ... // Get IType for aspect E
>>
>> String[][] tp = theAspectType.resolveType( "someAspect" );
>> // returns null;
>>
>> The aspect in question could look like:
>>
>> public aspect E
>> {
>> declare precedence : someAspect, someOtherAspect;
>> }
>>
>> It should be noted that IType is org.eclipse.jdt.core.IType and not
>> org.aspectj.org.eclipse.jdt.core.IType and I assume that I should be
>> using the latter, but I do not know how to retrieve it. Is there maybe
>> an easier way to resolve a type name than using IType.resolveType?
>>
>> Thanks a lot,
>>
>> Marc.
Re: How to find fully qualified type name from simple type name? [message #595207 is a reply to message #67522] Wed, 01 November 2006 06:17 Go to previous message
Matt Chapman is currently offline Matt Chapman
Messages: 429
Registered: July 2009
Senior Member
Warning: this is more complicated than it should be! To keep things
short I'll explain the way things currently are (as of AJDT 1.4 and
Eclipse 3.2) but not the reasons why.

Firstly, for a single .aj file in eclipse there are two compilation
units: one created by JDT and one created by AJDT (which is an
AJCompilationUnit). How are you getting the IType for your aspect? It
needs to come from the AJDT compilation unit. You can use methods in
AJCompilationUnitManager to do obtain it directly, or use the method
mapToAJCompilationUnit() to obtain one from the other.

Secondly aspects (usually) have a different working copy owner, so you
could try the two arg version of resolveType, using
AJCompilationUnitManager.defaultAJWorkingCopyOwner() as the working copy
owner. Alternatively you could try to resolve the type in the context of
the project. Here's an example from the implementation of the New Aspect
wizard (NewAspectWizardPage.java):

IType stype = type.getJavaProject().findType(supertype,
AJCompilationUnitManager.defaultAJWorkingCopyOwner());

Hope that helps,

Matt.

Marc Bartsch wrote:
> Hi all,
>
> How can I find the fully qualified type name of an aspect from a simple
> type name in my plug-in? If I have an IType object (e.g. theJavaType)
> that represents a class, then
>
> theJavaType.resolveType( "someClass" );
>
> works fine and returns the fully qual. name of "someClass" which is
> visible in theJavaType. If I have an IType that represent an aspect
> (e.g. theAspectType), then it does not work and null is returned for
> another aspect "someAspect" that is visible in theAspectType:
>
> IType theAspectType = ... // Get IType for aspect E
>
> String[][] tp = theAspectType.resolveType( "someAspect" );
> // returns null;
>
> The aspect in question could look like:
>
> public aspect E
> {
> declare precedence : someAspect, someOtherAspect;
> }
>
> It should be noted that IType is org.eclipse.jdt.core.IType and not
> org.aspectj.org.eclipse.jdt.core.IType and I assume that I should be
> using the latter, but I do not know how to retrieve it. Is there maybe
> an easier way to resolve a type name than using IType.resolveType?
>
> Thanks a lot,
>
> Marc.
Re: How to find fully qualified type name from simple type name? [message #595223 is a reply to message #67566] Wed, 01 November 2006 09:23 Go to previous message
Eclipse User
Originally posted by: m.bartsch.rdg.ac.uk

Hi Matt,

Thanks for your help! Retrieving the ITypes from AJCompilationUnit and
using the two arg version does the trick.

Best wishes,

Marc.

Matt Chapman schrieb:
> Warning: this is more complicated than it should be! To keep things
> short I'll explain the way things currently are (as of AJDT 1.4 and
> Eclipse 3.2) but not the reasons why.
>
> Firstly, for a single .aj file in eclipse there are two compilation
> units: one created by JDT and one created by AJDT (which is an
> AJCompilationUnit). How are you getting the IType for your aspect? It
> needs to come from the AJDT compilation unit. You can use methods in
> AJCompilationUnitManager to do obtain it directly, or use the method
> mapToAJCompilationUnit() to obtain one from the other.
>
> Secondly aspects (usually) have a different working copy owner, so you
> could try the two arg version of resolveType, using
> AJCompilationUnitManager.defaultAJWorkingCopyOwner() as the working copy
> owner. Alternatively you could try to resolve the type in the context of
> the project. Here's an example from the implementation of the New Aspect
> wizard (NewAspectWizardPage.java):
>
> IType stype =
> type.getJavaProject().findType(supertype,
> AJCompilationUnitManager.defaultAJWorkingCopyOwner());
>
> Hope that helps,
>
> Matt.
>
> Marc Bartsch wrote:
>> Hi all,
>>
>> How can I find the fully qualified type name of an aspect from a simple
>> type name in my plug-in? If I have an IType object (e.g. theJavaType)
>> that represents a class, then
>>
>> theJavaType.resolveType( "someClass" );
>>
>> works fine and returns the fully qual. name of "someClass" which is
>> visible in theJavaType. If I have an IType that represent an aspect
>> (e.g. theAspectType), then it does not work and null is returned for
>> another aspect "someAspect" that is visible in theAspectType:
>>
>> IType theAspectType = ... // Get IType for aspect E
>>
>> String[][] tp = theAspectType.resolveType( "someAspect" );
>> // returns null;
>>
>> The aspect in question could look like:
>>
>> public aspect E
>> {
>> declare precedence : someAspect, someOtherAspect;
>> }
>>
>> It should be noted that IType is org.eclipse.jdt.core.IType and not
>> org.aspectj.org.eclipse.jdt.core.IType and I assume that I should be
>> using the latter, but I do not know how to retrieve it. Is there maybe
>> an easier way to resolve a type name than using IType.resolveType?
>>
>> Thanks a lot,
>>
>> Marc.
Previous Topic:How to find fully qualified type name from simple type name?
Next Topic:How to retrieve AspectJ model during build in eclipse?
Goto Forum:
  


Current Time: Wed Aug 27 19:24:54 EDT 2014

Powered by FUDForum. Page generated in 0.02196 seconds