}
}
private GenericApplicationContext createFlowApplicationContext(Resource[] resources) {
ApplicationContext parent = getContext().getApplicationContext();
GenericApplicationContext flowContext;
if (parent instanceof WebApplicationContext) {
GenericWebApplicationContext webContext = new GenericWebApplicationContext();
webContext.setServletContext(((WebApplicationContext) parent).getServletContext());
flowContext = webContext;
} else {
flowContext = new GenericApplicationContext();
}
flowContext.setDisplayName("Flow ApplicationContext [" + getContext().getFlowId() + "]");
flowContext.setParent(parent);
flowContext.getBeanFactory().registerScope("request", new RequestScope());
flowContext.getBeanFactory().registerScope("flash", new FlashScope());
flowContext.getBeanFactory().registerScope("view", new ViewScope());
flowContext.getBeanFactory().registerScope("flow", new FlowScope());
flowContext.getBeanFactory().registerScope("conversation", new ConversationScope());
Resource flowResource = flowModelHolder.getFlowModelResource();
flowContext.setResourceLoader(new FlowRelativeResourceLoader(flowResource));
if (JdkVersion.isAtLeastJava15()) {
AnnotationConfigUtils.registerAnnotationConfigProcessors(flowContext);
}
new XmlBeanDefinitionReader(flowContext).loadBeanDefinitions(resources);
registerFlowBeans(flowContext.getBeanFactory());
registerMessageSource(flowContext, flowResource);
flowContext.refresh();
return flowContext;
}