this.resolver = resolver;
}
public IAnnotationBinding[] getAnnotations() {
try {
INameEnvironment nameEnvironment = this.binding.environment.nameEnvironment;
if (!(nameEnvironment instanceof SearchableEnvironment))
return AnnotationBinding.NoAnnotations;
NameLookup nameLookup = ((SearchableEnvironment) nameEnvironment).nameLookup;
if (nameLookup == null)
return AnnotationBinding.NoAnnotations;
final String pkgName = getName();
IPackageFragment[] pkgs = nameLookup.findPackageFragments(pkgName, false/*exact match*/);
if (pkgs == null)
return AnnotationBinding.NoAnnotations;
for (int i = 0, len = pkgs.length; i < len; i++) {
int fragType = pkgs[i].getKind();
switch(fragType) {
case IPackageFragmentRoot.K_SOURCE:
String unitName = "package-info.java"; //$NON-NLS-1$
ICompilationUnit unit = pkgs[i].getCompilationUnit(unitName);
if (unit != null && unit.exists()) {
ASTParser p = ASTParser.newParser(AST.JLS3);
p.setSource(unit);
p.setResolveBindings(true);
p.setUnitName(unitName);
p.setFocalPosition(0);
p.setKind(ASTParser.K_COMPILATION_UNIT);
CompilationUnit domUnit = (CompilationUnit) p.createAST(null);
PackageDeclaration pkgDecl = domUnit.getPackage();
if (pkgDecl != null) {
List annos = pkgDecl.annotations();
if (annos == null || annos.isEmpty())
return AnnotationBinding.NoAnnotations;
IAnnotationBinding[] result = new IAnnotationBinding[annos.size()];
int index=0;
for (Iterator it = annos.iterator(); it.hasNext(); index++) {
result[index] = ((Annotation) it.next()).resolveAnnotationBinding();
// not resolving bindings
if (result[index] == null)
return AnnotationBinding.NoAnnotations;
}
return result;
}
}
break;
case IPackageFragmentRoot.K_BINARY:
NameEnvironmentAnswer answer =
nameEnvironment.findType(TypeConstants.PACKAGE_INFO_NAME, this.binding.compoundName);
if (answer != null && answer.isBinaryType()) {
IBinaryType type = answer.getBinaryType();
char[][][] missingTypeNames = type.getMissingTypeNames();
IBinaryAnnotation[] binaryAnnotations = type.getAnnotations();
org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding[] binaryInstances =