/** * Add info about an Extension to our storage * This method is usually called during boostrap via {@code @Observes BeforeBeanDiscovery}. */ public static synchronized void addExtension(Extension extension) { if (usingParentExtension()) { removeAbandonedExtensions(); ClassLoader classLoader = ClassUtils.getClassLoader(null); extensionStorage.add(new ExtensionStorageInfo(classLoader, extension)); } }
/** * Add info about an Extension to our storage * This method is usually called during boostrap via {@code @Observes BeforeBeanDiscovery}. */ public static synchronized void addExtension(Extension extension) { if (usingParentExtension()) { removeAbandonedExtensions(); ClassLoader classLoader = ClassUtils.getClassLoader(null); extensionStorage.add(new ExtensionStorageInfo(classLoader, extension)); } }
/** * @return the Extension from the same type but registered in a hierarchic 'parent' BeanManager */ public static synchronized <T extends Extension> T getParentExtension(Extension extension) { if (usingParentExtension()) { ClassLoader parentClassLoader = ClassUtils.getClassLoader(null).getParent(); Iterator<ExtensionStorageInfo> extIt = extensionStorage.iterator(); while (extIt.hasNext()) { ExtensionStorageInfo extensionInfo = extIt.next(); if (!extensionInfo.isAbandoned() && // weak reference case extension.getClass().equals(extensionInfo.getExtension().getClass()) && extensionInfo.getClassLoader().equals(parentClassLoader)) { return (T) extensionInfo.getExtension(); } } } return null; }
/** * @return the Extension from the same type but registered in a hierarchic 'parent' BeanManager */ public static synchronized <T extends Extension> T getParentExtension(Extension extension) { if (usingParentExtension()) { ClassLoader parentClassLoader = ClassUtils.getClassLoader(null).getParent(); Iterator<ExtensionStorageInfo> extIt = extensionStorage.iterator(); while (extIt.hasNext()) { ExtensionStorageInfo extensionInfo = extIt.next(); if (!extensionInfo.isAbandoned() && // weak reference case extension.getClass().equals(extensionInfo.getExtension().getClass()) && extensionInfo.getClassLoader().equals(parentClassLoader)) { return (T) extensionInfo.getExtension(); } } } return null; }