private void maybeInstallListenerInParent(ConfigurableApplicationContext child) { if (child == this.context && child.getParent() instanceof ConfigurableApplicationContext) { ConfigurableApplicationContext parent = (ConfigurableApplicationContext) child .getParent(); parent.addApplicationListener(createContextCloserListener(child)); } }
/** * Overridden as we can't trust superclass method * @see org.springframework.context.AbstractApplicationContextTests#testEvents() */ @Override protected void doTestEvents(TestListener listener, TestListener parentListener, MyEvent event) { TestListener listenerBean = (TestListener) this.applicationContext.getBean("testListener"); TestListener parentListenerBean = (TestListener) this.applicationContext.getParent().getBean("parentListener"); super.doTestEvents(listenerBean, parentListenerBean, event); }
private void registerGlueCodeScope(ConfigurableApplicationContext context) { do { context.getBeanFactory().registerScope(GlueCodeScope.NAME, new GlueCodeScope()); context = (ConfigurableApplicationContext)context.getParent(); } while (context != null); } }
@Override public void onApplicationEvent(ContextClosedEvent event) { ConfigurableApplicationContext context = this.childContext.get(); if ((context != null) && (event.getApplicationContext() == context.getParent()) && context.isActive()) { context.close(); } }
@Test public void closeTriggersDestroy() { LifecycleBean lb = (LifecycleBean) applicationContext.getBean("lifecycle"); assertTrue("Not destroyed", !lb.isDestroyed()); applicationContext.close(); if (applicationContext.getParent() != null) { ((ConfigurableApplicationContext) applicationContext.getParent()).close(); } assertTrue("Destroyed", lb.isDestroyed()); applicationContext.close(); if (applicationContext.getParent() != null) { ((ConfigurableApplicationContext) applicationContext.getParent()).close(); } assertTrue("Destroyed", lb.isDestroyed()); }
private ContextId getContextId(ConfigurableApplicationContext applicationContext) { ApplicationContext parent = applicationContext.getParent(); if (parent != null && parent.containsBean(ContextId.class.getName())) { return parent.getBean(ContextId.class).createChildId(); } return new ContextId(getApplicationId(applicationContext.getEnvironment())); }
@Test public void overrideWorked() throws Exception { TestBean rod = (TestBean) applicationContext.getParent().getBean("rod"); assertTrue("Parent's name differs", rod.getName().equals("Roderick")); }
@Test public void parentNonNull() { assertTrue("parent isn't null", applicationContext.getParent() != null); }
@Test public void grandparentNull() { assertTrue("grandparent is null", applicationContext.getParent().getParent() == null); }
@Test public void initializingBeanAndInitMethod() throws Exception { assertFalse(InitAndIB.constructed); InitAndIB iib = (InitAndIB) this.applicationContext.getBean("init-and-ib"); assertTrue(InitAndIB.constructed); assertTrue(iib.afterPropertiesSetInvoked && iib.initMethodInvoked); assertTrue(!iib.destroyed && !iib.customDestroyed); this.applicationContext.close(); assertTrue(!iib.destroyed && !iib.customDestroyed); ConfigurableApplicationContext parent = (ConfigurableApplicationContext) this.applicationContext.getParent(); parent.close(); assertTrue(iib.destroyed && iib.customDestroyed); parent.close(); assertTrue(iib.destroyed && iib.customDestroyed); }
private void prepareContext(ConfigurableApplicationContext context, ConfigurableEnvironment environment, SpringApplicationRunListeners listeners, ApplicationArguments applicationArguments, Banner printedBanner) { context.setEnvironment(environment); postProcessApplicationContext(context); applyInitializers(context); listeners.contextPrepared(context); if (this.logStartupInfo) { logStartupInfo(context.getParent() == null); logStartupProfileInfo(context); } // Add boot specific singleton beans ConfigurableListableBeanFactory beanFactory = context.getBeanFactory(); beanFactory.registerSingleton("springApplicationArguments", applicationArguments); if (printedBanner != null) { beanFactory.registerSingleton("springBootBanner", printedBanner); } if (beanFactory instanceof DefaultListableBeanFactory) { ((DefaultListableBeanFactory) beanFactory) .setAllowBeanDefinitionOverriding(this.allowBeanDefinitionOverriding); } // Load the sources Set<Object> sources = getAllSources(); Assert.notEmpty(sources, "Sources must not be empty"); load(context, sources.toArray(new Object[0])); listeners.contextLoaded(context); }
private void runTestAndVerifyHierarchies(Class<? extends FooTestCase> testClass, boolean isFooContextActive, boolean isBarContextActive, boolean isBazContextActive) { JUnitCore jUnitCore = new JUnitCore(); Result result = jUnitCore.run(testClass); assertTrue("all tests passed", result.wasSuccessful()); assertThat(ContextHierarchyDirtiesContextTests.context, notNullValue()); ConfigurableApplicationContext bazContext = (ConfigurableApplicationContext) ContextHierarchyDirtiesContextTests.context; assertEquals("baz", ContextHierarchyDirtiesContextTests.baz); assertThat("bazContext#isActive()", bazContext.isActive(), is(isBazContextActive)); ConfigurableApplicationContext barContext = (ConfigurableApplicationContext) bazContext.getParent(); assertThat(barContext, notNullValue()); assertEquals("bar", ContextHierarchyDirtiesContextTests.bar); assertThat("barContext#isActive()", barContext.isActive(), is(isBarContextActive)); ConfigurableApplicationContext fooContext = (ConfigurableApplicationContext) barContext.getParent(); assertThat(fooContext, notNullValue()); assertEquals("foo", ContextHierarchyDirtiesContextTests.foo); assertThat("fooContext#isActive()", fooContext.isActive(), is(isFooContextActive)); }
private static ConfigurableApplicationContext getConfigurableParent( ConfigurableApplicationContext context) { ApplicationContext parent = context.getParent(); if (parent instanceof ConfigurableApplicationContext) { return (ConfigurableApplicationContext) parent; } return null; }
void prepare(ConfigurableApplicationContext applicationContext) { if (applicationContext != null && applicationContext.getParent() != null) { return; } if (applicationContext instanceof GenericApplicationContext) { prepare((GenericApplicationContext) applicationContext); } this.rootContexts.add(applicationContext); }
@Override public void initialize(ConfigurableApplicationContext context) { while (context.getParent() != null && context.getParent() != context) { context = (ConfigurableApplicationContext) context.getParent(); } reorderSources(context.getEnvironment()); new ParentContextApplicationContextInitializer(this.parent) .initialize(context); }
private ConfigurableApplicationContext findBootstrapContext( ParentContextApplicationContextInitializer initializer, String configName) { Field field = ReflectionUtils .findField(ParentContextApplicationContextInitializer.class, "parent"); ReflectionUtils.makeAccessible(field); ConfigurableApplicationContext parent = safeCast( ConfigurableApplicationContext.class, ReflectionUtils.getField(field, initializer)); if (parent != null && !configName.equals(parent.getId())) { parent = safeCast(ConfigurableApplicationContext.class, parent.getParent()); } return parent; }
ApplicationContext parent = applicationContext.getParent(); if (parent != null) {