/** Initialize the MessageSource. Use parent's if none defined in this context. */
 protected void initMessageSource() {
   ConfigurableListableBeanFactory beanFactory = getBeanFactory();
   if (beanFactory.containsLocalBean(MESSAGE_SOURCE_BEAN_NAME)) {
     this.messageSource = beanFactory.getBean(MESSAGE_SOURCE_BEAN_NAME, MessageSource.class);
     // Make MessageSource aware of parent MessageSource.
     if (this.parent != null && this.messageSource instanceof HierarchicalMessageSource) {
       HierarchicalMessageSource hms = (HierarchicalMessageSource) this.messageSource;
       if (hms.getParentMessageSource() == null) {
         // Only set parent context as parent MessageSource if no parent MessageSource
         // registered already.
         hms.setParentMessageSource(getInternalParentMessageSource());
       }
     }
     if (logger.isDebugEnabled()) {
       logger.debug("Using MessageSource [" + this.messageSource + "]");
     }
   } else {
     // Use empty MessageSource to be able to accept getMessage calls.
     DelegatingMessageSource dms = new DelegatingMessageSource();
     dms.setParentMessageSource(getInternalParentMessageSource());
     this.messageSource = dms;
     beanFactory.registerSingleton(MESSAGE_SOURCE_BEAN_NAME, this.messageSource);
     if (logger.isDebugEnabled()) {
       logger.debug(
           "Unable to locate MessageSource with name '"
               + MESSAGE_SOURCE_BEAN_NAME
               + "': using default ["
               + this.messageSource
               + "]");
     }
   }
 }