r500473 | eross | 2007-01-26 21:50:40 -0600 (Fri, 26 Jan 2007) | 1 line
Bug 32536 - Guard against NPE by checking passed in RepositorySelector
Index: src/java/org/apache/log4j/spi/DefaultRepositorySelector.java
===================================================================
19,20c19,22
< import org.apache.log4j.helpers.Constants;
<
---
> /**
> * Trivial implementation of RepositorySelectorEx which takes
> * a fixed repository.
> */
22d23
< LoggerRepository defaultRepository;
23a25,30
> private LoggerRepository defaultRepository;
>
> /**
> * Constructs a new instance.
> * @param repository cannot be null
> */
24a32,33
> if (repository == null)
> throw new NullPointerException();
Index: src/java/org/apache/log4j/spi/RootLogger.java
===================================================================
37a38
>
39,40c40,42
< The root category names itself as "root". However, the root
< category cannot be retrieved by name.
---
> * Constructs using a level.
> * The root category names itself as "root". However, the root
> * category cannot be retrieved by name.
47a50,56
> * Constructs using a default [EMAIL PROTECTED] Level#DEBUG} threshold
level.
> */
> public RootLogger() {
> this(Level.DEBUG);
> }
>
> /**
Index: src/java/org/apache/log4j/LogManager.java
===================================================================
211a212,217
>
> @param selector new selector, cannot be null
> @param guard new guard value, or existing guard, or null
> @throws IllegalArgumentException if a non-null guard is not
the same as the old
> @throws IllegalArgumentException if the selector is null
> @throws IllegalArgumentException if [EMAIL PROTECTED]
RepositorySelector#getLoggerRepository()} returns null
213,214c219
< public static void setRepositorySelector(
< RepositorySelector
selector, Object guard) throws IllegalArgumentException {
---
> public static void setRepositorySelector(RepositorySelector
selector, Object guard) {
216,217c221
< throw new IllegalArgumentException(
< "Attempted to reset
the LoggerFactory without possessing the guard.");
---
> throw new IllegalArgumentException("Attempted to reset
the LoggerFactory without possessing the guard.");
220,221c224,228
< throw new IllegalArgumentException(
< "RepositorySelector
must be non-null.");
---
> throw new IllegalArgumentException("RepositorySelector
must be non-null.");
> }
> if (selector.getLoggerRepository() == null) {
> String s = "RepositorySelector.getLoggerRepository()
must return non-null.";
> throw new IllegalArgumentException(s);
238a246,248
> /**
> * Returns the logger repository currently in use.
> */
Index: src/java/org/apache/log4j/Hierarchy.java
===================================================================
34a35
> import org.apache.log4j.spi.RootLogger;
101c102
< Create a new logger hierarchy.
---
> Constructs a new logger hierarchy.
121a123,129
> * Constructs a new logger hierarchy with a default [EMAIL PROTECTED]
RootLogger}.
> */
> public Hierarchy() {
> this(new RootLogger());
> }
>
> /**
Index: tests/src/java/org/apache/log4j/LogManagerTest.java
===================================================================
18a19,22
> import org.apache.log4j.spi.DefaultRepositorySelector;
> import org.apache.log4j.spi.LoggerRepository;
> import org.apache.log4j.spi.RepositorySelector;
>
23c27
< * Tests for LogManager
---
> * Tests for [EMAIL PROTECTED] LogManager}.
26c30
< **/
---
> */
27a32,36
>
> private static final Object sharedGuard = new Object();
>
> private Hierarchy h = new Hierarchy();
>
74a84,112
>
> public void testValidSelector() {
> RepositorySelector selector = new DefaultRepositorySelector(h);
> LogManager.setRepositorySelector(selector, sharedGuard);
> Logger log = Logger.getLogger("TestValidSelector");
> log.info("Logger obtained");
>
> try {
> LogManager.setRepositorySelector(selector, "joe");
> fail("cannot cheat guard");
> } catch (IllegalArgumentException e) {}
> }
>
> public void testInvalidSelector() {
> try {
> RepositorySelector selector = new RepositorySelector() {
>
> public LoggerRepository getLoggerRepository() {
> return null;
> }
>
> };
> LogManager.setRepositorySelector(selector, sharedGuard);
> Logger.getLogger("TestInvalidSelector");
> fail("Invalid repository selector should have generated
IllegalArgumentException");
> } catch (IllegalArgumentException iae) {
> }
> }
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]