PackageBinding getVisiblePackage(char[][] qualifiedPackageName, boolean considerRequiredModules) { if (qualifiedPackageName == null || qualifiedPackageName.length == 0) { return this.environment.defaultPackage; } PackageBinding parent = getTopLevelPackage(qualifiedPackageName[0]); if (parent == null || parent == LookupEnvironment.TheNotFoundPackage) return null; // check each sub package for (int i = 1; i < qualifiedPackageName.length; i++) { PackageBinding binding = getVisiblePackage(parent, qualifiedPackageName[i], considerRequiredModules); if (binding == null || binding == LookupEnvironment.TheNotFoundPackage) { return null; } parent = binding; } return parent; }
/** * Answer the package of the given qualified name and visible in this module, * or {@code null} if no such package exists. * Accessibility (based on package exports) is <strong>not</strong> checked. * <p> * May answer a {@link SplitPackageBinding}. * </p> */ public PackageBinding getVisiblePackage(char[][] qualifiedPackageName) { if (qualifiedPackageName == null || qualifiedPackageName.length == 0) { return this.environment.defaultPackage; } PackageBinding parent = getTopLevelPackage(qualifiedPackageName[0]); if (parent == null || parent == LookupEnvironment.TheNotFoundPackage) return null; // check each sub package for (int i = 1; i < qualifiedPackageName.length; i++) { PackageBinding binding = getVisiblePackage(parent, qualifiedPackageName[i]); if (binding == null || binding == LookupEnvironment.TheNotFoundPackage) { return null; } parent = binding; } return parent; }
@Override public PackageElement getPackageElement(ModuleElement module, CharSequence name) { ModuleBinding mBinding = ((ModuleElementImpl) module).binding; final char[][] compoundName = CharOperation.splitOn('.', name.toString().toCharArray()); PackageBinding p = null; if (mBinding != null) { int length = compoundName.length; if (length > 1) { char[][] parent = new char[compoundName.length - 1][]; System.arraycopy(compoundName, 0, parent, 0, length - 1); p = mBinding.getPackage(parent, compoundName[length - 1]); } else { p = mBinding.getTopLevelPackage(compoundName[0]); } } else { p = _env.getLookupEnvironment().createPackage(compoundName); } if (p == null || !p.isValidBinding()) return null; return (PackageElement) _env.getFactory().newElement(p); } }
PackageBinding getTopLevelPackage(char[] name) { PackageBinding packageBinding = getPackage0(name); if (packageBinding != null) { if (packageBinding == TheNotFoundPackage) return null; return packageBinding; } if (this.useModuleSystem) { if (this.module != null) packageBinding = this.module.getTopLevelPackage(name); } else { if (this.nameEnvironment.isPackage(null, name)) { this.knownPackages.put(name, packageBinding = new PackageBinding(name, this, this.module)); } } if (packageBinding != null) { if (packageBinding == TheNotFoundPackage) return null; return packageBinding; } this.knownPackages.put(name, TheNotFoundPackage); // saves asking the oracle next time return null; }
PackageBinding getTopLevelPackage(char[] name) { PackageBinding packageBinding = getPackage0(name); if (packageBinding != null) { if (packageBinding == TheNotFoundPackage) return null; return packageBinding; } if (this.useModuleSystem) { if (this.module != null) packageBinding = this.module.getTopLevelPackage(name); } else { if (this.nameEnvironment.isPackage(null, name)) { this.knownPackages.put(name, packageBinding = new PackageBinding(name, this, this.module)); } } if (packageBinding != null) { if (packageBinding == TheNotFoundPackage) return null; return packageBinding; } this.knownPackages.put(name, TheNotFoundPackage); // saves asking the oracle next time return null; }
ModuleBinding declaringModule = this.root.getModule(mod); if (declaringModule != null) packageBinding = SplitPackageBinding.combine(declaringModule.getTopLevelPackage(constantPoolName[0]), packageBinding, this.module); packageBinding = this.module.getTopLevelPackage(constantPoolName[0]);
ModuleBinding declaringModule = this.root.getModule(mod); if (declaringModule != null) packageBinding = SplitPackageBinding.combine(declaringModule.getTopLevelPackage(constantPoolName[0]), packageBinding, this.module); packageBinding = this.module.getTopLevelPackage(constantPoolName[0]);