public class PackageListeningClassLoader extends Object implements SolrClassLoader, PackageListeners.Listener
SolrClassLoader that is designed to listen to a set of packages.
This class registers a listener for each package that is loaded through this.
If any of those packages are updated, the onReload runnable is runPackageListeners.Listener.Ctx| Constructor and Description |
|---|
PackageListeningClassLoader(CoreContainer coreContainer,
SolrClassLoader fallbackClassLoader,
Function<String,String> pkgVersionSupplier,
Runnable onReload) |
| Modifier and Type | Method and Description |
|---|---|
void |
changed(PackageLoader.Package pkg,
PackageListeners.Listener.Ctx ctx)
A callback when the package is updated
|
protected void |
doReloadAction(PackageListeners.Listener.Ctx ctx) |
<T> Class<? extends T> |
findClass(String cname,
Class<T> expectedType) |
PackageLoader.Package.Version |
findPackageVersion(PluginInfo.ClassName cName,
boolean registerListener)
This looks up for package and also listens for that package if required
|
MapWriter |
getPackageVersion(PluginInfo.ClassName cName) |
<T> T |
newInstance(String cname,
Class<T> expectedType,
String... subpackages) |
<T> T |
newInstance(String cname,
Class<T> expectedType,
String[] subPackages,
Class[] params,
Object[] args) |
Map<String,PackageAPI.PkgVersion> |
packageDetails()
fetch the package versions of class names
|
String |
packageName()
Name of the package or null to listen to all package changes
|
public PackageListeningClassLoader(CoreContainer coreContainer, SolrClassLoader fallbackClassLoader, Function<String,String> pkgVersionSupplier, Runnable onReload)
fallbackClassLoader - The SolrClassLoader to use if no package is specifiedpkgVersionSupplier - Get the version configured for a given packageonReload - The callback function that should be run if a package is updatedpublic <T> T newInstance(String cname, Class<T> expectedType, String... subpackages)
newInstance in interface SolrClassLoaderpublic PackageLoader.Package.Version findPackageVersion(PluginInfo.ClassName cName, boolean registerListener)
cName - The class namepublic MapWriter getPackageVersion(PluginInfo.ClassName cName)
getPackageVersion in interface PackageListeners.Listenerpublic <T> T newInstance(String cname, Class<T> expectedType, String[] subPackages, Class[] params, Object[] args)
newInstance in interface SolrClassLoaderpublic <T> Class<? extends T> findClass(String cname, Class<T> expectedType)
findClass in interface SolrClassLoaderpublic String packageName()
PackageListeners.ListenerpackageName in interface PackageListeners.Listenerpublic Map<String,PackageAPI.PkgVersion> packageDetails()
PackageListeners.ListenerpackageDetails in interface PackageListeners.Listenerpublic void changed(PackageLoader.Package pkg, PackageListeners.Listener.Ctx ctx)
PackageListeners.Listenerchanged in interface PackageListeners.Listenerprotected void doReloadAction(PackageListeners.Listener.Ctx ctx)
Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.