@Override protected BundleClassFinder createSubBundleClassFinder(PackageAdmin packageAdmin, Bundle bundle, ClassDiscoveryFilter classDiscoveryFilter) { return new BundleAssignableClassFinder(packageAdmin, bundle, clses, classDiscoveryFilter); }
/** * Create a new BundleClassFinder, it will search all the classes based the rule defined by the parameters via ASM tool * @param packageAdmin * @param bundle * @param clses * @param discoveryFilter */ public BundleAssignableClassFinder(PackageAdmin packageAdmin, Bundle bundle, Class<?>[] clses, ClassDiscoveryFilter discoveryFilter) { super(packageAdmin, bundle, discoveryFilter); if (clses == null || clses.length == 0) { throw new IllegalArgumentException("At least one class or interface should be specified"); } this.clses = clses; for (Class<?> cls : clses) { String asmStyleName = cls.getName().replace('.', '/'); if (cls.isInterface()) { targetInterfaceNames.add(asmStyleName); } else { targetClassNames.add(asmStyleName); } } initialize(); }
@Override protected boolean isClassAcceptable(URL url) { InputStream in = null; try { in = url.openStream(); return isClassAcceptable("", in); } catch (IOException e) { logger.warn("Unable to check the class of url " + url, e); return false; } finally { if (in != null) try { in.close(); } catch (Exception e) { } } }
try { for (String interfaceName : interfaceNames) { if (wiredImportedPackageNames.contains(toASMStylePackageName(interfaceName))) { return isClassAssignable(bundle.loadClass(toJavaStyleClassName(interfaceName))); } else { if (isInterfaceAssignable(interfaceName)) { return true; if (wiredImportedPackageNames.contains(toASMStylePackageName(superClassName))) { return isClassAssignable(bundle.loadClass(toJavaStyleClassName(superClassName))); return isSuperClassAssignable(superClassName); } catch (ClassNotFoundException e) { return false;
if (isInterfaceAssignable(superInterfaceName)) { return true; return isSuperClassAssignable(classReader.getSuperName()); } catch (IOException e) { logger.warn("Unable to check the super class " + superClassName, e);
BundleAssignableClassFinder basf = new BundleAssignableClassFinder( packageAdminService, new Class[]{klass}, bundle); Set<String> interfaces = basf.find(); for (String interfaceName : interfaces) { setOfClasses.add(bundle.loadClass(interfaceName)); BundleAssignableClassFinder basf = new BundleAssignableClassFinder( packageAdminService, new Class[]{klass}, bundle); Set<String> classNames = basf.find(); for (String klassName : classNames) { setOfClasses.add(bundle.loadClass(klassName));
private void initialize() { BundleDescription description = new BundleDescription(bundle.getHeaders()); List<BundleDescription.ImportPackage> imports = description.getExternalImports(); for (BundleDescription.ImportPackage packageImport : imports) { String packageName = packageImport.getName(); ExportedPackage[] exports = packageAdmin.getExportedPackages(packageName); Bundle wiredBundle = isWired(bundle, exports); if (wiredBundle != null) { wiredImportedPackageNames.add(packageName.replace('.', '/')); break; } } }
String[] superInterfaceNames = classReader.getInterfaces(); for (String superInterfaceName : superInterfaceNames) { if (isInterfaceAssignable(superInterfaceName)) { return true;
try { for (String interfaceName : interfaceNames) { if (wiredImportedPackageNames.contains(toASMStylePackageName(interfaceName))) { return isClassAssignable(bundle.loadClass(toJavaStyleClassName(interfaceName))); } else { if (isInterfaceAssignable(interfaceName)) { return true; if (wiredImportedPackageNames.contains(toASMStylePackageName(superClassName))) { return isClassAssignable(bundle.loadClass(toJavaStyleClassName(superClassName))); return isSuperClassAssignable(superClassName); } catch (ClassNotFoundException e) { return false;
if (isInterfaceAssignable(superInterfaceName)) { return true; return isSuperClassAssignable(classReader.getSuperName()); } catch (IOException e) { logger.warn("Unable to check the super class " + superClassName, e);
BundleAssignableClassFinder basf = new BundleAssignableClassFinder( packageAdminService, new Class[]{klass}, bundle); Set<String> interfaces = basf.find(); for (String interfaceName : interfaces) { setOfClasses.add(bundle.loadClass(interfaceName)); BundleAssignableClassFinder basf = new BundleAssignableClassFinder( packageAdminService, new Class[]{klass}, bundle); Set<String> classNames = basf.find(); for (String klassName : classNames) { setOfClasses.add(bundle.loadClass(klassName));
private void initialize() { BundleDescription description = new BundleDescription(bundle.getHeaders()); List<BundleDescription.ImportPackage> imports = description.getExternalImports(); for (BundleDescription.ImportPackage packageImport : imports) { String packageName = packageImport.getName(); ExportedPackage[] exports = packageAdmin.getExportedPackages(packageName); Bundle wiredBundle = isWired(bundle, exports); if (wiredBundle != null) { wiredImportedPackageNames.add(packageName.replace('.', '/')); break; } } }
String[] superInterfaceNames = classReader.getInterfaces(); for (String superInterfaceName : superInterfaceNames) { if (isInterfaceAssignable(superInterfaceName)) { return true;
try { for (String interfaceName : interfaceNames) { if (wiredImportedPackageNames.contains(toASMStylePackageName(interfaceName))) { return isClassAssignable(bundle.loadClass(toJavaStyleClassName(interfaceName))); } else { if (isInterfaceAssignable(interfaceName)) { return true; if (wiredImportedPackageNames.contains(toASMStylePackageName(superClassName))) { return isClassAssignable(bundle.loadClass(toJavaStyleClassName(superClassName))); return isSuperClassAssignable(superClassName); } catch (ClassNotFoundException e) { return false;
@Override protected BundleClassFinder createSubBundleClassFinder(PackageAdmin packageAdmin, Bundle bundle, ClassDiscoveryFilter classDiscoveryFilter) { return new BundleAssignableClassFinder(packageAdmin, bundle, clses, classDiscoveryFilter); }
if (isInterfaceAssignable(superInterfaceName)) { return true; return isSuperClassAssignable(classReader.getSuperName()); } catch (IOException e) { logger.warn("Unable to check the super class " + superClassName, e);
private void initialize() { BundleDescription description = new BundleDescription(bundle.getHeaders()); List<BundleDescription.ImportPackage> imports = description.getExternalImports(); for (BundleDescription.ImportPackage packageImport : imports) { String packageName = packageImport.getName(); ExportedPackage[] exports = packageAdmin.getExportedPackages(packageName); Bundle wiredBundle = isWired(bundle, exports); if (wiredBundle != null) { wiredImportedPackageNames.add(packageName.replace('.', '/')); break; } } }
@Override protected boolean isClassAcceptable(URL url) { InputStream in = null; try { in = url.openStream(); return isClassAcceptable("", in); } catch (IOException e) { logger.warn("Unable to check the class of url " + url, e); return false; } finally { if (in != null) try { in.close(); } catch (Exception e) { } } }
/** * Create a new BundleClassFinder, it will search all the classes based the rule defined by the parameters via ASM tool * @param packageAdmin * @param bundle * @param clses * @param discoveryFilter */ public BundleAssignableClassFinder(PackageAdmin packageAdmin, Bundle bundle, Class<?>[] clses, ClassDiscoveryFilter discoveryFilter) { super(packageAdmin, bundle, discoveryFilter); if (clses == null || clses.length == 0) { throw new IllegalArgumentException("At least one class or interface should be specified"); } this.clses = clses; for (Class<?> cls : clses) { String asmStyleName = cls.getName().replace('.', '/'); if (cls.isInterface()) { targetInterfaceNames.add(asmStyleName); } else { targetClassNames.add(asmStyleName); } } initialize(); }
String[] superInterfaceNames = classReader.getInterfaces(); for (String superInterfaceName : superInterfaceNames) { if (isInterfaceAssignable(superInterfaceName)) { return true;