You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by ca...@apache.org on 2006/01/23 23:17:34 UTC

svn commit: r371687 - in /logging/log4j/trunk/src/java/org/apache/log4j: selector/servlet/ContextDetachingSCL.java spi/DefaultRepositorySelector.java spi/RepositorySelector.java spi/RepositorySelectorEx.java

Author: carnold
Date: Mon Jan 23 14:17:26 2006
New Revision: 371687

URL: http://svn.apache.org/viewcvs?rev=371687&view=rev
Log:
Bug 35452: Spin-off RepositorySelectorEx

Added:
    logging/log4j/trunk/src/java/org/apache/log4j/spi/RepositorySelectorEx.java
Modified:
    logging/log4j/trunk/src/java/org/apache/log4j/selector/servlet/ContextDetachingSCL.java
    logging/log4j/trunk/src/java/org/apache/log4j/spi/DefaultRepositorySelector.java
    logging/log4j/trunk/src/java/org/apache/log4j/spi/RepositorySelector.java

Modified: logging/log4j/trunk/src/java/org/apache/log4j/selector/servlet/ContextDetachingSCL.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/selector/servlet/ContextDetachingSCL.java?rev=371687&r1=371686&r2=371687&view=diff
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/selector/servlet/ContextDetachingSCL.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/selector/servlet/ContextDetachingSCL.java Mon Jan 23 14:17:26 2006
@@ -23,6 +23,7 @@
 import org.apache.log4j.spi.LoggerRepository;
 import org.apache.log4j.spi.LoggerRepositoryEx;
 import org.apache.log4j.spi.RepositorySelector;
+import org.apache.log4j.spi.RepositorySelectorEx;
 
 import javax.naming.Context;
 import javax.naming.NamingException;
@@ -73,16 +74,19 @@
 
       RepositorySelector repositorySelector =
         LogManager.getRepositorySelector();
-      LoggerRepository lr = repositorySelector.detachRepository(loggingContextName);
-      if(lr != null) {
-        Logger logger = lr.getLogger(this.getClass().getName());
-        if (lr instanceof LoggerRepositoryEx) {
-            logger.debug("About to shutdown logger repository named [{}]",
+      if (repositorySelector instanceof RepositorySelectorEx) {
+        LoggerRepository lr =
+                ((RepositorySelectorEx) repositorySelector).detachRepository(loggingContextName);
+        if(lr != null) {
+            Logger logger = lr.getLogger(this.getClass().getName());
+            if (lr instanceof LoggerRepositoryEx) {
+                logger.debug("About to shutdown logger repository named [{}]",
                     ((LoggerRepositoryEx) lr).getName());
-        } else {
-            logger.debug("About to shutdown unnamed logger repository");
+            } else {
+                logger.debug("About to shutdown unnamed logger repository");
+            }
+            lr.shutdown();
         }
-        lr.shutdown();
       }
     }
   }

Modified: logging/log4j/trunk/src/java/org/apache/log4j/spi/DefaultRepositorySelector.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/spi/DefaultRepositorySelector.java?rev=371687&r1=371686&r2=371687&view=diff
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/spi/DefaultRepositorySelector.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/spi/DefaultRepositorySelector.java Mon Jan 23 14:17:26 2006
@@ -18,7 +18,7 @@
 
 import org.apache.log4j.helpers.Constants;
 
-public class DefaultRepositorySelector implements RepositorySelector {
+public class DefaultRepositorySelector implements RepositorySelectorEx {
   LoggerRepository defaultRepository;
 
   public DefaultRepositorySelector(final LoggerRepository repository) {
@@ -27,14 +27,6 @@
 
   public LoggerRepository  getLoggerRepository() {
     return defaultRepository;
-  }
-  
-  public LoggerRepository getLoggerRepository(final String name) {
-    if(Constants.DEFAULT_REPOSITORY_NAME.equals(name)) {
-      return defaultRepository;
-    } else {
-      return null;
-    }
   }
   
   /**

Modified: logging/log4j/trunk/src/java/org/apache/log4j/spi/RepositorySelector.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/spi/RepositorySelector.java?rev=371687&r1=371686&r2=371687&view=diff
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/spi/RepositorySelector.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/spi/RepositorySelector.java Mon Jan 23 14:17:26 2006
@@ -34,34 +34,9 @@
 public interface RepositorySelector {
 
   /**
-   * Get a {@link LoggerRepository} by name. If the named repository does not 
-   * exists or is unknown to this selector, then <code>null</code> is returned.
-   *
-   * @since 1.3
-  */
-  public LoggerRepository getLoggerRepository(String name);
-  
-  /**
    * Returns a {@link LoggerRepository} depending on the context. Implementors 
    * must make sure that under all circumstances a valid (non-null) 
    * LoggerRepository is returned.
   */
   public LoggerRepository getLoggerRepository();
-  
-  /**
-   * Remove the repository with the given name from the list maintained by the 
-   * respository selector.
-   * 
-   * <p>When applications are stopped or recycled, this method should be called 
-   * to ensure that the associated repository is recycled as well. After the 
-   * repository is detached from this selector, the returned value, i.e. the 
-   * detached repository, can be used to shutdown the repository.
-   * 
-   * <p>If more than one application share the same logging context, then the
-   * applications need to coordinate their actions.  
-   * 
-   * @return The LoggerRepository instance that was detached.
-   * @since 1.3
-   */
-  public LoggerRepository detachRepository(String name);
 }

Added: logging/log4j/trunk/src/java/org/apache/log4j/spi/RepositorySelectorEx.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/spi/RepositorySelectorEx.java?rev=371687&view=auto
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/spi/RepositorySelectorEx.java (added)
+++ logging/log4j/trunk/src/java/org/apache/log4j/spi/RepositorySelectorEx.java Mon Jan 23 14:17:26 2006
@@ -0,0 +1,53 @@
+/*
+ * Copyright 1999,2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.log4j.spi;
+
+
+/**
+ * The <code>LogManager</code> uses one (and only one)
+ * <code>RepositorySelector</code> implementation to select the
+ * {@link LoggerRepository} for a particular application context.
+ *
+ * <p>It is the responsability of the <code>RepositorySelector</code>
+ * implementation to track the application context. Log4j makes no assumptions
+ * about the application context or on its management.
+ *
+ * <p>See also {@link org.apache.log4j.LogManager LogManager}.
+ *
+ * @author Ceki G&uuml;lc&uuml;
+ * @since 1.3
+ * */
+public interface RepositorySelectorEx extends RepositorySelector {
+
+
+  /**
+   * Remove the repository with the given name from the list maintained by the
+   * respository selector.
+   *
+   * <p>When applications are stopped or recycled, this method should be called
+   * to ensure that the associated repository is recycled as well. After the
+   * repository is detached from this selector, the returned value, i.e. the
+   * detached repository, can be used to shutdown the repository.
+   *
+   * <p>If more than one application share the same logging context, then the
+   * applications need to coordinate their actions.
+   *
+   * @return The LoggerRepository instance that was detached.
+   * @since 1.3
+   */
+  LoggerRepository detachRepository(String name);
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org