@Test public void testDefinedBeanFactoryPostProcessor() { StaticApplicationContext ac = new StaticApplicationContext(); ac.registerSingleton("tb1", TestBean.class); ac.registerSingleton("tb2", TestBean.class); ac.registerSingleton("bfpp", TestBeanFactoryPostProcessor.class); ac.refresh(); TestBeanFactoryPostProcessor bfpp = (TestBeanFactoryPostProcessor) ac.getBean("bfpp"); assertTrue(bfpp.wasCalled); }
private ConfigurableApplicationContext initContext(BeanDefinition asyncAnnotationBeanPostProcessorDefinition) { StaticApplicationContext context = new StaticApplicationContext(); BeanDefinition targetDefinition = new RootBeanDefinition(TestBean.class); context.registerBeanDefinition("postProcessor", asyncAnnotationBeanPostProcessorDefinition); context.registerBeanDefinition("target", targetDefinition); context.refresh(); return context; }
@Test public void lambdaAsListenerWithErrorHandler() { final Set<MyEvent> seenEvents = new HashSet<>(); StaticApplicationContext context = new StaticApplicationContext(); SimpleApplicationEventMulticaster multicaster = new SimpleApplicationEventMulticaster(); multicaster.setErrorHandler(ReflectionUtils::rethrowRuntimeException); context.getBeanFactory().registerSingleton( StaticApplicationContext.APPLICATION_EVENT_MULTICASTER_BEAN_NAME, multicaster); ApplicationListener<MyEvent> listener = seenEvents::add; context.addApplicationListener(listener); context.refresh(); MyEvent event1 = new MyEvent(context); context.publishEvent(event1); context.publishEvent(new MyOtherEvent(context)); MyEvent event2 = new MyEvent(context); context.publishEvent(event2); assertSame(2, seenEvents.size()); assertTrue(seenEvents.contains(event1)); assertTrue(seenEvents.contains(event2)); context.close(); }
@Test(expected = BeanCreationException.class) public void cronTaskWithMethodValidation() { BeanDefinition validationDefinition = new RootBeanDefinition(MethodValidationPostProcessor.class); BeanDefinition processorDefinition = new RootBeanDefinition(ScheduledAnnotationBeanPostProcessor.class); BeanDefinition targetDefinition = new RootBeanDefinition(CronTestBean.class); context.registerBeanDefinition("methodValidation", validationDefinition); context.registerBeanDefinition("postProcessor", processorDefinition); context.registerBeanDefinition("target", targetDefinition); context.refresh(); }
@Test public void singleSmartLifecycleWithoutAutoStartup() throws Exception { CopyOnWriteArrayList<Lifecycle> startedBeans = new CopyOnWriteArrayList<>(); TestSmartLifecycleBean bean = TestSmartLifecycleBean.forStartupTests(1, startedBeans); bean.setAutoStartup(false); StaticApplicationContext context = new StaticApplicationContext(); context.getBeanFactory().registerSingleton("bean", bean); assertFalse(bean.isRunning()); context.refresh(); assertFalse(bean.isRunning()); assertEquals(0, startedBeans.size()); context.start(); assertTrue(bean.isRunning()); assertEquals(1, startedBeans.size()); context.stop(); }
@Before public void setUp() throws Exception { this.applicationContext = new StaticApplicationContext(); this.applicationContext.registerSingleton("controller", TestController.class); this.applicationContext.registerSingleton("controllerAdvice", TestControllerAdvice.class); this.applicationContext.refresh(); SubscribableChannel channel = Mockito.mock(SubscribableChannel.class); SimpMessageSendingOperations brokerTemplate = new SimpMessagingTemplate(channel); this.messageHandler = new TestWebSocketAnnotationMethodMessageHandler(brokerTemplate, channel, channel); this.messageHandler.setApplicationContext(this.applicationContext); this.messageHandler.afterPropertiesSet(); }
@Before public void setup() { this.configurer = new ScriptTemplateConfigurer(); this.context = new StaticApplicationContext(); this.context.getBeanFactory().registerSingleton("scriptTemplateConfigurer", this.configurer); this.view = new ScriptTemplateView(); }
@Test public void multicastSimpleEvent() { multicastEvent(true, ApplicationListener.class, new ContextRefreshedEvent(new StaticApplicationContext()), null); multicastEvent(true, ApplicationListener.class, new ContextClosedEvent(new StaticApplicationContext()), null); }
@Test public void testStaticApplicationContextMessageSourceWithDefaultParent() { StaticApplicationContext ac = new StaticApplicationContext(); GenericApplicationContext parent = new GenericApplicationContext(); parent.refresh(); ac.setParent(parent); ac.refresh(); assertEquals("default", ac.getMessage("code1", null, "default", Locale.ENGLISH)); assertEquals("default value", ac.getMessage("code1", new Object[] {"value"}, "default {0}", Locale.ENGLISH)); }
@Test @SuppressWarnings("resource") public void classLoading() throws Exception { StaticApplicationContext context = new StaticApplicationContext(); GroovyClassLoader gcl = new GroovyClassLoader(); Class<?> class1 = gcl.parseClass("class TestBean { def myMethod() { \"foo\" } }"); Class<?> class2 = gcl.parseClass("class TestBean { def myMethod() { \"bar\" } }"); context.registerBeanDefinition("testBean", new RootBeanDefinition(class1)); Object testBean1 = context.getBean("testBean"); Method method1 = class1.getDeclaredMethod("myMethod", new Class<?>[0]); Object result1 = ReflectionUtils.invokeMethod(method1, testBean1); assertEquals("foo", result1); context.removeBeanDefinition("testBean"); context.registerBeanDefinition("testBean", new RootBeanDefinition(class2)); Object testBean2 = context.getBean("testBean"); Method method2 = class2.getDeclaredMethod("myMethod", new Class<?>[0]); Object result2 = ReflectionUtils.invokeMethod(method2, testBean2); assertEquals("bar", result2); }
@Test @SuppressWarnings("resource") public void testWebApplicationObjectSupportWithWrongContext() { StaticApplicationContext ac = new StaticApplicationContext(); ac.registerBeanDefinition("test", new RootBeanDefinition(TestWebApplicationObject.class)); WebApplicationObjectSupport wao = (WebApplicationObjectSupport) ac.getBean("test"); try { wao.getWebApplicationContext(); fail("Should have thrown IllegalStateException"); } catch (IllegalStateException ex) { // expected } }
@Test public void testBeanName() throws Exception { StaticApplicationContext context = new StaticApplicationContext(); JobSupport configuration = new JobSupport(); context.getAutowireCapableBeanFactory().initializeBean(configuration, "bean"); context.refresh(); assertNotNull(configuration.getName()); configuration.setBeanName("foo"); context.getAutowireCapableBeanFactory().initializeBean(configuration, "bean"); assertEquals("bean", configuration.getName()); context.close(); }
@Test public void simpValidatorMvc() { StaticApplicationContext appCxt = new StaticApplicationContext(); appCxt.registerSingleton("mvcValidator", TestValidator.class); AbstractMessageBrokerConfiguration config = new BaseTestMessageBrokerConfig() {}; config.setApplicationContext(appCxt); assertThat(config.simpValidator(), Matchers.notNullValue()); assertThat(config.simpValidator(), Matchers.instanceOf(TestValidator.class)); }
@Test public void expressionWithCron() { String businessHoursCronExpression = "0 0 9-17 * * MON-FRI"; BeanDefinition processorDefinition = new RootBeanDefinition(ScheduledAnnotationBeanPostProcessor.class); BeanDefinition targetDefinition = new RootBeanDefinition(ExpressionWithCronTestBean.class); context.registerBeanDefinition("postProcessor", processorDefinition); context.registerBeanDefinition("target", targetDefinition); Map<String, String> schedules = new HashMap<>(); schedules.put("businessHours", businessHoursCronExpression); context.getBeanFactory().registerSingleton("schedules", schedules); context.refresh(); ScheduledTaskHolder postProcessor = context.getBean("postProcessor", ScheduledTaskHolder.class); assertEquals(1, postProcessor.getScheduledTasks().size()); Object target = context.getBean("target"); ScheduledTaskRegistrar registrar = (ScheduledTaskRegistrar) new DirectFieldAccessor(postProcessor).getPropertyValue("registrar"); @SuppressWarnings("unchecked") List<CronTask> cronTasks = (List<CronTask>) new DirectFieldAccessor(registrar).getPropertyValue("cronTasks"); assertEquals(1, cronTasks.size()); CronTask task = cronTasks.get(0); ScheduledMethodRunnable runnable = (ScheduledMethodRunnable) task.getRunnable(); Object targetObject = runnable.getTarget(); Method targetMethod = runnable.getMethod(); assertEquals(target, targetObject); assertEquals("x", targetMethod.getName()); assertEquals(businessHoursCronExpression, task.getExpression()); }
@Test public void staticApplicationContext() { StaticApplicationContext ctx = new StaticApplicationContext(); assertHasStandardEnvironment(ctx); registerEnvironmentBeanDefinition(ctx); ctx.setEnvironment(prodEnv); ctx.refresh(); assertHasEnvironment(ctx, prodEnv); assertEnvironmentBeanRegistered(ctx); assertEnvironmentAwareInvoked(ctx, prodEnv); }
@Test public void propertyPlaceholderWithInactiveCron() { String businessHoursCronExpression = "-"; BeanDefinition processorDefinition = new RootBeanDefinition(ScheduledAnnotationBeanPostProcessor.class); BeanDefinition placeholderDefinition = new RootBeanDefinition(PropertyPlaceholderConfigurer.class); Properties properties = new Properties(); properties.setProperty("schedules.businessHours", businessHoursCronExpression); placeholderDefinition.getPropertyValues().addPropertyValue("properties", properties); BeanDefinition targetDefinition = new RootBeanDefinition(PropertyPlaceholderWithCronTestBean.class); context.registerBeanDefinition("postProcessor", processorDefinition); context.registerBeanDefinition("placeholder", placeholderDefinition); context.registerBeanDefinition("target", targetDefinition); context.refresh(); ScheduledTaskHolder postProcessor = context.getBean("postProcessor", ScheduledTaskHolder.class); assertTrue(postProcessor.getScheduledTasks().isEmpty()); }
public SimpleBeanResolver() { ac.registerSingleton("car", CarFactoryBean.class); ac.registerSingleton("boat", Boat.class); }
@Override public Object resolve(EvaluationContext context, String beanName) throws AccessException { return ac.getBean(beanName); } }
/** * Create a new StaticApplicationContext with the given parent. * @see #registerSingleton * @see #registerPrototype * @see #registerBeanDefinition * @see #refresh */ public StaticApplicationContext(@Nullable ApplicationContext parent) throws BeansException { super(parent); // Initialize and register a StaticMessageSource. this.staticMessageSource = new StaticMessageSource(); getBeanFactory().registerSingleton(MESSAGE_SOURCE_BEAN_NAME, this.staticMessageSource); }
@After public void closeContextAfterTest() { context.close(); }