Author: sdeboy
Date: Thu May 20 16:15:36 2010
New Revision: 946685

URL: http://svn.apache.org/viewvc?rev=946685&view=rev
Log:
Support use of 'log4j.configuration' system property to configure Chainsaw 
(only if the automatic configuration URL is NOT specified in application-wide 
preferences).  The log4j.configuration system property must provide the -URL- 
of the Chainsaw configuration file.
Also fixed a bug which prevented clearing of the automatic configuration URL 
field (the auto-config field must be empty to use the log4j.configuration 
system property)

Modified:
    
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java
    
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java
    logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java
    
logging/chainsaw/trunk/src/main/resources/org/apache/log4j/chainsaw/help/release-notes.html

Modified: 
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java
URL: 
http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java?rev=946685&r1=946684&r2=946685&view=diff
==============================================================================
--- 
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java
 (original)
+++ 
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java
 Thu May 20 16:15:36 2010
@@ -404,11 +404,13 @@ public class ApplicationPreferenceModel 
      */
     public final void setConfigurationURL(String configurationURL)
     {
-        //don't add empty entries
+        //don't add empty entries, but allow the current configuration URL to 
be set to an empty string
+        Object oldValue = this.configurationURL;
         if (configurationURL == null || configurationURL.trim().equals("")) {
+            this.configurationURL = "";
+            firePropertyChange("configurationURL", oldValue, 
this.configurationURL);
             return;
         }
-        Object oldValue = this.configurationURL;
         //add entry to MRU list
         if (!configurationURLs.contains(configurationURL)) {
           if (configurationURLs.size() == CONFIGURATION_URL_ENTRY_COUNT) {

Modified: 
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java
URL: 
http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java?rev=946685&r1=946684&r2=946685&view=diff
==============================================================================
--- 
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java
 (original)
+++ 
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java
 Thu May 20 16:15:36 2010
@@ -539,7 +539,10 @@ public static void main(String[] args) {
         public boolean verify(JComponent input)
         {
             try {
-                new URL((String)configurationURL.getSelectedItem());
+                String selectedItem = 
(String)configurationURL.getSelectedItem();
+                if (selectedItem != null && !(selectedItem.trim().equals(""))) 
{
+                    new URL(selectedItem);
+                }
             } catch (Exception e) {
                 return false;
             }

Modified: 
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java
URL: 
http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java?rev=946685&r1=946684&r2=946685&view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java 
(original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java 
Thu May 20 16:15:36 2010
@@ -108,6 +108,7 @@ import org.apache.log4j.chainsaw.prefs.S
 import org.apache.log4j.chainsaw.prefs.SettingsListener;
 import org.apache.log4j.chainsaw.prefs.SettingsManager;
 import org.apache.log4j.chainsaw.receivers.ReceiversPanel;
+import org.apache.log4j.helpers.Constants;
 import org.apache.log4j.net.SocketNodeEventListener;
 import org.apache.log4j.plugins.Plugin;
 import org.apache.log4j.plugins.PluginEvent;
@@ -384,17 +385,23 @@ public class LogUI extends JFrame implem
     });
 
     String config = model.getConfigurationURL();
-    if(config!=null && (!(config.trim().equals("")))) {
-        config = config.trim();
-        try {
-          URL configURL = new URL(config);
-          logUI.loadConfigurationUsingPluginClassLoader(configURL);
-        }catch(MalformedURLException e) {
-            logger.error("Initial configuration - failed to convert config 
string to url", e);
-        }
+    if (config == null || (config.trim().equals(""))) {
+        logger.info("No auto-configuration file found in 
ApplicationPreferenceModel - attempting to use log4j.configurationURL system 
property");
+        config = System.getProperty(Constants.DEFAULT_CONFIGURATION_KEY);
     }
-    
-    //register a listener to load the configuration when it changes (avoid 
having to restart Chainsaw when applying a new configuration)
+
+    if (config != null && (!config.trim().equals(""))) {
+      config = config.trim();
+      try {
+        URL configURL = new URL(config);
+        logger.info("Using '" + config + "' for auto-configuration");
+        logUI.loadConfigurationUsingPluginClassLoader(configURL);
+      } catch(MalformedURLException e) {
+        logger.error("Initial configuration - failed to convert config string 
to url", e);
+      }
+    }
+
+      //register a listener to load the configuration when it changes (avoid 
having to restart Chainsaw when applying a new configuration)
     //this doesn't remove receivers from receivers panel, it just triggers 
DOMConfigurator.configure.
        model.addPropertyChangeListener("configurationURL", new 
PropertyChangeListener() {
         public void propertyChange(PropertyChangeEvent evt) {
@@ -411,11 +418,6 @@ public class LogUI extends JFrame implem
             }
         }});
 
-    if (config == null || config.trim().equals("")) {
-      logger.info("No auto-configuration file found within the 
ApplicationPreferenceModel");
-    } else {
-      logger.info("Using '" + config + "' for auto-configuration");
-    }
     LogManager.getRootLogger().setLevel(Level.TRACE);
 
     logUI.activateViewer();

Modified: 
logging/chainsaw/trunk/src/main/resources/org/apache/log4j/chainsaw/help/release-notes.html
URL: 
http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/resources/org/apache/log4j/chainsaw/help/release-notes.html?rev=946685&r1=946684&r2=946685&view=diff
==============================================================================
--- 
logging/chainsaw/trunk/src/main/resources/org/apache/log4j/chainsaw/help/release-notes.html
 (original)
+++ 
logging/chainsaw/trunk/src/main/resources/org/apache/log4j/chainsaw/help/release-notes.html
 Thu May 20 16:15:36 2010
@@ -10,6 +10,10 @@
 <b>NOTE:</b> The mechanism and format used to persist settings in Chainsaw is 
subject to change.  If you are experiencing problems displaying events in 
Chainsaw, please delete everything in the $user.dir/.chainsaw directory and 
restart Chainsaw.
 <br>
 <h1>2.0</h1>
+<h2>20 May 2010</h2>
+<ul>
+<li>For users who would like to specify the Chainsaw configuration file from 
the command line, the 'log4j.configuration' system property will now be used if 
the automatic configuration URL is NOT specified in application-wide 
preferences.  The log4j.configuration system property must provide the -URL- of 
the Chainsaw configuration file.</li>
+</ul>
 <h2>13 May 2010</h2>
 <ul>
 <li>Added ability to quickly define color rules for field under mouse pointer 
in the table as well as for the selected logger in the logger tree (uses 
default color chooser dialog).</li>
@@ -192,7 +196,6 @@ not to provide this, be on the look out 
 <ul>
 <li>Changed the default order of columns in Chainsaw to first display ID, 
level, logger, message and exception</li>
 <li>Added default level expressions (example: LEVEL == DEBUG) to the 'refine 
focus' combobox</li>
-<li>Modified Chainsaw initialization logic to load Chainsaw-specified config 
when specified.  <b>NOTE:</b> Chainsaw will load configurations from BOTH the 
log4j.configuration system property and Chainsaw's automatic configuration URL 
if the two are specified</li>
 <li>Corrected date pattern format bug (was displaying minutes where it should 
be displaying months in the detail panel)</li>
 </ul>
 


Reply via email to