Add more beans to AbstractShellComponent

- Add more common stuff like ResourceLoader, TemplateExecutor,
  ThemeResolver.
- Make class abstract.
- Expose more with sub-classes.
This commit is contained in:
Janne Valkealahti
2022-02-18 13:07:08 +00:00
parent 544e4aee1d
commit 5ff98290e9
4 changed files with 49 additions and 39 deletions

View File

@@ -24,19 +24,25 @@ import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ResourceLoaderAware;
import org.springframework.core.io.ResourceLoader;
import org.springframework.shell.CommandRegistry;
import org.springframework.shell.ParameterResolver;
import org.springframework.shell.Shell;
import org.springframework.shell.style.TemplateExecutor;
import org.springframework.shell.style.ThemeResolver;
/**
* Base class helping to build shell components.
*
* @author Janne Valkealahti
*/
public class AbstractShellComponent implements ApplicationContextAware, InitializingBean {
public abstract class AbstractShellComponent implements ApplicationContextAware, InitializingBean, ResourceLoaderAware {
private ApplicationContext applicationContext;
private ResourceLoader resourceLoader;
private ObjectProvider<Shell> shellProvider;
private ObjectProvider<Terminal> terminalProvider;
@@ -45,11 +51,20 @@ public class AbstractShellComponent implements ApplicationContextAware, Initiali
private ObjectProvider<ParameterResolver> parameterResolverProvider;
private ObjectProvider<TemplateExecutor> templateExecutorProvider;
private ObjectProvider<ThemeResolver> themeResolverProvider;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
@Override
public void setResourceLoader(ResourceLoader resourceLoader) {
this.resourceLoader = resourceLoader;
}
@Override
public void afterPropertiesSet() throws Exception {
shellProvider = applicationContext.getBeanProvider(Shell.class);
@@ -58,6 +73,14 @@ public class AbstractShellComponent implements ApplicationContextAware, Initiali
parameterResolverProvider = applicationContext.getBeanProvider(ParameterResolver.class);
}
protected ApplicationContext getApplicationContext() {
return applicationContext;
}
protected ResourceLoader getResourceLoader() {
return resourceLoader;
}
protected Shell getShell() {
return shellProvider.getObject();
}
@@ -73,4 +96,12 @@ public class AbstractShellComponent implements ApplicationContextAware, Initiali
protected Stream<ParameterResolver> getParameterResolver() {
return parameterResolverProvider.orderedStream();
}
protected TemplateExecutor getTemplateExecutor() {
return templateExecutorProvider.getObject();
}
protected ThemeResolver getThemeResolver() {
return themeResolverProvider.getObject();
}
}