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 SolrClassLoader
public PackageLoader.Package.Version findPackageVersion(PluginInfo.ClassName cName, boolean registerListener)
cName
- The class namepublic MapWriter getPackageVersion(PluginInfo.ClassName cName)
getPackageVersion
in interface PackageListeners.Listener
public <T> T newInstance(String cname, Class<T> expectedType, String[] subPackages, Class[] params, Object[] args)
newInstance
in interface SolrClassLoader
public <T> Class<? extends T> findClass(String cname, Class<T> expectedType)
findClass
in interface SolrClassLoader
public String packageName()
PackageListeners.Listener
packageName
in interface PackageListeners.Listener
public Map<String,PackageAPI.PkgVersion> packageDetails()
PackageListeners.Listener
packageDetails
in interface PackageListeners.Listener
public void changed(PackageLoader.Package pkg, PackageListeners.Listener.Ctx ctx)
PackageListeners.Listener
changed
in interface PackageListeners.Listener
protected void doReloadAction(PackageListeners.Listener.Ctx ctx)
Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.