Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | 1x 1x 1x 21x 21x 21x 20x 6x 6x 3x 3x 3x 3x 14x 19x 8x 8x 6x 15x 1x 1x 5x 20x 21x 8x 8x 21x 4x 4x 21x 4x 4x 21x | import type { BeanResolver } from './bean-resolver.js';
import { SpelEvaluationException } from '../error/spel-evaluation-exception.js';
import { SpelMessage } from '../error/spel-message.js';
export class DefaultBeanResolver implements BeanResolver {
private readonly beans = new Map<string, unknown>();
private readonly factoryBeans = new Map<string, () => unknown>();
public resolve(name: string, isFactoryBean = false): unknown {
if (isFactoryBean) {
const factory = this.factoryBeans.get(name);
if (factory) {
return factory();
}
throw new SpelEvaluationException(-1, SpelMessage.BEAN_NOT_FOUND, `&${name}`);
}
const bean = this.beans.get(name);
if (bean !== undefined) {
return bean;
}
// Also check factory beans as regular resolution
const factory = this.factoryBeans.get(name);
if (factory) {
return factory();
}
throw new SpelEvaluationException(-1, SpelMessage.BEAN_NOT_FOUND, name);
}
public register(name: string, bean: unknown): void {
this.beans.set(name, bean);
}
public registerFactory(name: string, factory: () => unknown): void {
this.factoryBeans.set(name, factory);
}
public has(name: string): boolean {
return this.beans.has(name) || this.factoryBeans.has(name);
}
}
|