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]

Reply via email to