Hello Xavier,
This class is temporary created in a working copy that is discarded in
the same method in order to get IType as context for resolution of
referenced types. For example, package-info.java may have this content
@Named
package cdi.test.alternative.case1;
import javax.inject.*;
Neither interface ICompilationUnit, nor IPackageDeclaration have method
resolveType(String) which is needed to resolve 'Named' into
'javax.inject.Named'. I could not find a better solution than creating a
temporary IType. It is never added to the actual Java model of the
project, it exists only in a working copy that is discarded.
Java model listeners may get the event on creating this type, but they
also should get the event on its discarding.
Best regards,
Slava
On 07/31/2012 06:34 AM, Xavier Coulon wrote:
Hello Daniel,
As I'm trying to fix
https://issues.jboss.org/browse/JBIDE-12095, I
found something a bit strange in the CDIBuilderDelegate when editing a
'package-info.java' file (just adding a space char):
At line 90, the CDIBuilderDelegate#build() method calls the
PackageDelegate#setPackage() method below which creates a 'class A {}'
as shown below.
*public* *void* setPackage(IPackageDeclaration pkg,
IRootDefinitionContext context) {
qualifiedName = pkg.getElementName();
IType contextType = *null*;
ICompilationUnit u = *null*;
*if*(pkg.getParent() *instanceof* ICompilationUnit) {
*try* {
u = ((ICompilationUnit)pkg.getParent()).getWorkingCopy(*new*
NullProgressMonitor());
contextType = u.createType("class A {}", *null*, *false*, *new*
NullProgressMonitor());
} *catch* (JavaModelException e) {
}
}
*super*.setAnnotatable(pkg, contextType, context, 0);
*if* (u != *null*) {
*try* {
u.discardWorkingCopy();
} *catch* (JavaModelException e) {
}
}
}
The JAX-RS plugin catches an event for this type creation but fails
later. I can add some tests to verify that the type really exist, but
still, is this necessary (just asking, don't take is bad) ?
Thanks.
Best regards,
/Xavier
_______________________________________________
jbosstools-dev mailing list
jbosstools-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jbosstools-dev