private void register(String[] paths) throws DuplicateJobException, IOException { maybeCreateJobLoader(); for (int i = 0; i < paths.length; i++) { Resource[] resources = parentContext.getResources(paths[i]); for (int j = 0; j < resources.length; j++) { Resource path = resources[j]; logger.info("Registering Job definitions from " + Arrays.toString(resources)); GenericApplicationContextFactory factory = new GenericApplicationContextFactory(path); factory.setApplicationContext(parentContext); jobLoader.load(factory); } } }
/** * Create an {@link ApplicationContextFactory} from each resource provided * in {@link #setResources(Resource[])}. * * @return an array of {@link ApplicationContextFactory} * @see org.springframework.beans.factory.FactoryBean#getObject() */ @Override public ApplicationContextFactory[] getObject() throws Exception { if (resources == null) { return new ApplicationContextFactory[0]; } List<ApplicationContextFactory> applicationContextFactories = new ArrayList<>(); for (Resource resource : resources) { GenericApplicationContextFactory factory = new GenericApplicationContextFactory(resource); factory.setCopyConfiguration(copyConfiguration); if (beanFactoryPostProcessorClasses != null) { factory.setBeanFactoryPostProcessorClasses(beanFactoryPostProcessorClasses); } if (beanPostProcessorExcludeClasses != null) { factory.setBeanPostProcessorExcludeClasses(beanPostProcessorExcludeClasses); } factory.setApplicationContext(applicationContext); applicationContextFactories.add(factory); } return applicationContextFactories.toArray(new ApplicationContextFactory[applicationContextFactories.size()]); }
private void setUpApplicationContextFactories(Resource[] jobPaths, ApplicationContext parent) { Collection<ApplicationContextFactory> applicationContextFactories = new ArrayList<>(); for (Resource resource : jobPaths) { GenericApplicationContextFactory factory = new GenericApplicationContextFactory(resource); factory.setApplicationContext(parent); applicationContextFactories.add(factory); } registrar.setApplicationContextFactories(applicationContextFactories .toArray(new ApplicationContextFactory[jobPaths.length])); }
@SuppressWarnings("resource") @Test public void testParentConfigurationInherited() { GenericApplicationContextFactory factory = new GenericApplicationContextFactory( new ClassPathResource(ClassUtils.addResourcePathToPackagePath(getClass(), "child-context.xml"))); factory.setApplicationContext(new ClassPathXmlApplicationContext(ClassUtils.addResourcePathToPackagePath( getClass(), "parent-context.xml"))); ConfigurableApplicationContext context = factory.createApplicationContext(); assertEquals("test-job", context.getBeanNamesForType(Job.class)[0]); assertEquals("bar", context.getBean("test-job", Job.class).getName()); assertEquals(4, context.getBean("foo", Foo.class).values[1], 0.01); }
@Test public void testParentChildLifecycleEvents() throws InterruptedException { AnnotationConfigApplicationContext parent = new AnnotationConfigApplicationContext(ParentContext.class); GenericApplicationContextFactory child = new GenericApplicationContextFactory(ChildContextConfiguration.class); child.setApplicationContext(parent); ApplicationContext context = child.createApplicationContext(); ChildBean bean = context.getBean(ChildBean.class); assertEquals(1, bean.counter1); assertEquals(1, bean.counter2); }
@SuppressWarnings("resource") @Test public void testBeanFactoryPostProcessorOrderRespected() { GenericApplicationContextFactory factory = new GenericApplicationContextFactory( new ClassPathResource(ClassUtils.addResourcePathToPackagePath(getClass(), "placeholder-context.xml"))); factory.setApplicationContext(new ClassPathXmlApplicationContext(ClassUtils.addResourcePathToPackagePath( getClass(), "parent-context.xml"))); ConfigurableApplicationContext context = factory.createApplicationContext(); assertEquals("test-job", context.getBeanNamesForType(Job.class)[0]); assertEquals("spam", context.getBean("test-job", Job.class).getName()); }
@SuppressWarnings("resource") @Test public void testBeanFactoryPostProcessorsNotCopied() { GenericApplicationContextFactory factory = new GenericApplicationContextFactory( new ClassPathResource(ClassUtils.addResourcePathToPackagePath(getClass(), "child-context.xml"))); factory.setApplicationContext(new ClassPathXmlApplicationContext(ClassUtils.addResourcePathToPackagePath( getClass(), "parent-context.xml"))); @SuppressWarnings("unchecked") Class<? extends BeanFactoryPostProcessor>[] classes = (Class<? extends BeanFactoryPostProcessor>[]) new Class<?>[0]; factory.setBeanFactoryPostProcessorClasses(classes); ConfigurableApplicationContext context = factory.createApplicationContext(); assertEquals("test-job", context.getBeanNamesForType(Job.class)[0]); assertEquals("${foo}", context.getBean("test-job", Job.class).getName()); assertEquals(4, context.getBean("foo", Foo.class).values[1], 0.01); }
@SuppressWarnings("resource") @Test public void testBeanFactoryConfigurationNotCopied() { GenericApplicationContextFactory factory = new GenericApplicationContextFactory(new ClassPathResource(ClassUtils.addResourcePathToPackagePath(getClass(), "child-context.xml"))); factory.setApplicationContext(new ClassPathXmlApplicationContext(ClassUtils.addResourcePathToPackagePath( getClass(), "parent-context.xml"))); factory.setCopyConfiguration(false); ConfigurableApplicationContext context = factory.createApplicationContext(); assertEquals("test-job", context.getBeanNamesForType(Job.class)[0]); assertEquals("bar", context.getBean("test-job", Job.class).getName()); // The CustomEditorConfigurer is a BeanFactoryPostProcessor so the // editor gets copied anyway! assertEquals(4, context.getBean("foo", Foo.class).values[1], 0.01); }
@Test public void testBeanFactoryProfileRespected() { GenericApplicationContextFactory factory = new GenericApplicationContextFactory( new ClassPathResource(ClassUtils.addResourcePathToPackagePath(getClass(), "profiles.xml"))); @SuppressWarnings("resource") ClassPathXmlApplicationContext parentContext = new ClassPathXmlApplicationContext(ClassUtils.addResourcePathToPackagePath( getClass(), "parent-context.xml")); parentContext.getEnvironment().setActiveProfiles("preferred"); factory.setApplicationContext(parentContext); @SuppressWarnings("resource") ConfigurableApplicationContext context = factory.createApplicationContext(); assertEquals("test-job", context.getBeanNamesForType(Job.class)[0]); assertEquals("spam", context.getBean("test-job", Job.class).getName()); }
/** * Create an application context from the resource provided. Extension point * for subclasses if they need to customize the context in any way. The * default uses a {@link GenericApplicationContextFactory}. * * @param parent the parent application context (or null if there is none) * @param resource the location of the XML configuration * * @return an application context containing jobs */ protected ApplicationContextFactory createApplicationContextFactory(ApplicationContext parent, Resource resource) { GenericApplicationContextFactory applicationContextFactory = new GenericApplicationContextFactory(resource); if (parent != null) { applicationContextFactory.setApplicationContext(parent); } return applicationContextFactory; }
private void register(String[] paths) throws DuplicateJobException, IOException { maybeCreateJobLoader(); for (int i = 0; i < paths.length; i++) { Resource[] resources = parentContext.getResources(paths[i]); for (int j = 0; j < resources.length; j++) { Resource path = resources[j]; logger.info("Registering Job definitions from " + Arrays.toString(resources)); GenericApplicationContextFactory factory = new GenericApplicationContextFactory(path); factory.setApplicationContext(parentContext); jobLoader.load(factory); } } }
private void register(String[] paths) throws DuplicateJobException, IOException { maybeCreateJobLoader(); for (int i = 0; i < paths.length; i++) { Resource[] resources = parentContext.getResources(paths[i]); for (int j = 0; j < resources.length; j++) { Resource path = resources[j]; logger.info("Registering Job definitions from " + Arrays.toString(resources)); GenericApplicationContextFactory factory = new GenericApplicationContextFactory(path); factory.setApplicationContext(parentContext); jobLoader.load(factory); } } }
private void register(String[] paths) throws DuplicateJobException, IOException { maybeCreateJobLoader(); for (int i = 0; i < paths.length; i++) { Resource[] resources = parentContext.getResources(paths[i]); for (int j = 0; j < resources.length; j++) { Resource path = resources[j]; logger.info("Registering Job definitions from " + Arrays.toString(resources)); GenericApplicationContextFactory factory = new GenericApplicationContextFactory(path); factory.setApplicationContext(parentContext); jobLoader.load(factory); } } }
/** * Create an {@link ApplicationContextFactory} from each resource provided * in {@link #setResources(Resource[])}. * * @return an array of {@link ApplicationContextFactory} * @see org.springframework.beans.factory.FactoryBean#getObject() */ @Override public ApplicationContextFactory[] getObject() throws Exception { if (resources == null) { return new ApplicationContextFactory[0]; } List<ApplicationContextFactory> applicationContextFactories = new ArrayList<>(); for (Resource resource : resources) { GenericApplicationContextFactory factory = new GenericApplicationContextFactory(resource); factory.setCopyConfiguration(copyConfiguration); if (beanFactoryPostProcessorClasses != null) { factory.setBeanFactoryPostProcessorClasses(beanFactoryPostProcessorClasses); } if (beanPostProcessorExcludeClasses != null) { factory.setBeanPostProcessorExcludeClasses(beanPostProcessorExcludeClasses); } factory.setApplicationContext(applicationContext); applicationContextFactories.add(factory); } return applicationContextFactories.toArray(new ApplicationContextFactory[applicationContextFactories.size()]); }
/** * Create an {@link ApplicationContextFactory} from each resource provided * in {@link #setResources(Resource[])}. * * @return an array of {@link ApplicationContextFactory} * @throws Exception * @see org.springframework.beans.factory.FactoryBean#getObject() */ @Override public ApplicationContextFactory[] getObject() throws Exception { if (resources == null) { return new ApplicationContextFactory[0]; } List<ApplicationContextFactory> applicationContextFactories = new ArrayList<ApplicationContextFactory>(); for (Resource resource : resources) { GenericApplicationContextFactory factory = new GenericApplicationContextFactory(resource); factory.setCopyConfiguration(copyConfiguration); if (beanFactoryPostProcessorClasses != null) { factory.setBeanFactoryPostProcessorClasses(beanFactoryPostProcessorClasses); } if (beanPostProcessorExcludeClasses != null) { factory.setBeanPostProcessorExcludeClasses(beanPostProcessorExcludeClasses); } factory.setApplicationContext(applicationContext); applicationContextFactories.add(factory); } return applicationContextFactories.toArray(new ApplicationContextFactory[applicationContextFactories.size()]); }
/** * Create an {@link ApplicationContextFactory} from each resource provided * in {@link #setResources(Resource[])}. * * @return an array of {@link ApplicationContextFactory} * @see org.springframework.beans.factory.FactoryBean#getObject() */ @Override public ApplicationContextFactory[] getObject() throws Exception { if (resources == null) { return new ApplicationContextFactory[0]; } List<ApplicationContextFactory> applicationContextFactories = new ArrayList<>(); for (Resource resource : resources) { GenericApplicationContextFactory factory = new GenericApplicationContextFactory(resource); factory.setCopyConfiguration(copyConfiguration); if (beanFactoryPostProcessorClasses != null) { factory.setBeanFactoryPostProcessorClasses(beanFactoryPostProcessorClasses); } if (beanPostProcessorExcludeClasses != null) { factory.setBeanPostProcessorExcludeClasses(beanPostProcessorExcludeClasses); } factory.setApplicationContext(applicationContext); applicationContextFactories.add(factory); } return applicationContextFactories.toArray(new ApplicationContextFactory[applicationContextFactories.size()]); }