[BLOSSOM-321] Allow injection of Spring managed components in template availability method Created: 17/Nov/23 Updated: 17/Nov/23 |
|
| Status: | Open |
| Project: | Blossom |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Improvement | Priority: | Medium |
| Reporter: | Björn Eschle | Assignee: | Mikaël Geljić |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Template: |
|
| Acceptance criteria: |
Empty
|
| Task DoD: |
[ ]*
Doc/release notes changes? Comment present?
[ ]*
Downstream builds green?
[ ]*
Solution information and context easily available?
[ ]*
Tests
[ ]*
FixVersion filled and not yet released
[ ] 
Architecture Decision Record (ADR)
|
| Description |
|
Hello, with TemplateDefinitionBuilder.getTemplateAvailabilityParameters(Node node, TemplateDefinition templateDefinition) @Override protected TemplateAvailability resolveTemplateAvailability(final HandlerMetaData template) { final Method method = resolveTemplateAvailabilityMethod(template); if (method != null) { return (node, templateDefinition) -> (Boolean) MethodInvocationUtils.invoke( method, template.getHandler(), new ArgumentResolverParameterResolver(method, applicationContext.getAutowireCapableBeanFactory()) { @Override public Object resolveParameter(final Class<?> parameterType) { if(parameterType.equals(Node.class)) { return node; } if (parameterType.equals(TemplateDefinition.class)) { return templateDefinition; } return super.resolveParameter(parameterType); } } ); } return super.resolveTemplateAvailability(template); } |