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@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jbosstools-dev