AbstractMessageSource properly interacts with non-AbstractMessageSource parent
Issue: SPR-16047
This commit is contained in:
parent
950edf888a
commit
c3378fda33
|
@ -263,7 +263,9 @@ public abstract class AbstractMessageSource extends MessageSourceSupport impleme
|
|||
}
|
||||
else {
|
||||
// Check parent MessageSource, returning null if not found there.
|
||||
return parent.getMessage(code, args, null, locale);
|
||||
// Covers custom MessageSource impls and DelegatingMessageSource.
|
||||
String msg = parent.getMessage(code, args, null, locale);
|
||||
return ("".equals(msg) ? null : msg);
|
||||
}
|
||||
}
|
||||
// Not found in parent either.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2014 the original author or authors.
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -210,6 +210,39 @@ public class ResourceBundleMessageSourceTests {
|
|||
assertEquals("default value", ac.getMessage("code1", new Object[] {"value"}, "default {0}", Locale.ENGLISH));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDefaultApplicationContextMessageSourceWithParent() {
|
||||
GenericApplicationContext ac = new GenericApplicationContext();
|
||||
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
|
||||
public void testStaticApplicationContextMessageSourceWithStaticParent() {
|
||||
StaticApplicationContext ac = new StaticApplicationContext();
|
||||
StaticApplicationContext parent = new StaticApplicationContext();
|
||||
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
|
||||
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
|
||||
public void testResourceBundleMessageSourceStandalone() {
|
||||
ResourceBundleMessageSource ms = new ResourceBundleMessageSource();
|
||||
|
|
Loading…
Reference in New Issue