/** * 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() */ public Object getObject() throws Exception { if (resources == null) { return new ApplicationContextFactory[0]; } List<ApplicationContextFactory> applicationContextFactories = new ArrayList<ApplicationContextFactory>(); for (Resource resource : resources) { ClassPathXmlApplicationContextFactory factory = new ClassPathXmlApplicationContextFactory(); factory.setCopyConfiguration(copyConfiguration); if (beanFactoryPostProcessorClasses != null) { factory.setBeanFactoryPostProcessorClasses(beanFactoryPostProcessorClasses); } if (beanPostProcessorExcludeClasses != null) { factory.setBeanPostProcessorExcludeClasses(beanPostProcessorExcludeClasses); } factory.setResource(resource); factory.setApplicationContext(applicationContext); applicationContextFactories.add(factory); } return applicationContextFactories.toArray(new ApplicationContextFactory[applicationContextFactories.size()]); }
@Override public int hashCode() { return toString().hashCode(); }
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)); ClassPathXmlApplicationContextFactory factory = new ClassPathXmlApplicationContextFactory(); factory.setApplicationContext(parentContext); factory.setResource(path); jobLoader.load(factory); } } }
@Override protected void customizeBeanFactory(DefaultListableBeanFactory beanFactory) { super.customizeBeanFactory(beanFactory); if (parentBeanFactory != null) { ClassPathXmlApplicationContextFactory.this.prepareBeanFactory(parentBeanFactory, beanFactory); } }
/** * @param parent */ public ResourceXmlApplicationContext(ConfigurableApplicationContext parent) { super(parent); setId(generateId(resource)); if (parent != null) { Assert.isTrue(parent.getBeanFactory() instanceof DefaultListableBeanFactory, "The parent application context must have a bean factory of type DefaultListableBeanFactory"); parentBeanFactory = (DefaultListableBeanFactory) parent.getBeanFactory(); refreshBeanFactory(); prepareContext(parent, this); } else { parentBeanFactory = null; } refresh(); }
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; return toString().equals(obj.toString()); }