Author: carnold
Date: Thu Aug 14 00:56:20 2008
New Revision: 685796

URL: http://svn.apache.org/viewvc?rev=685796&view=rev
Log:
Bug 44157: InterruptedIOException ignored by log4j, round 2

Modified:
    logging/log4j/trunk/src/main/java/org/apache/log4j/PropertyConfigurator.java
    
logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/AbstractDynamicMBean.java
    logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/Agent.java
    
logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/AppenderDynamicMBean.java
    
logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/HierarchyDynamicMBean.java
    
logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/LayoutDynamicMBean.java
    
logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/LoggerDynamicMBean.java
    logging/log4j/trunk/src/main/java/org/apache/log4j/net/JMSAppender.java
    logging/log4j/trunk/src/main/java/org/apache/log4j/net/JMSSink.java
    logging/log4j/trunk/src/main/java/org/apache/log4j/net/SMTPAppender.java
    logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketAppender.java
    
logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketHubAppender.java
    logging/log4j/trunk/src/main/java/org/apache/log4j/net/TelnetAppender.java
    logging/log4j/trunk/src/main/java/org/apache/log4j/spi/LoggingEvent.java
    
logging/log4j/trunk/src/main/java/org/apache/log4j/varia/ExternallyRolledFileAppender.java
    logging/log4j/trunk/src/main/java/org/apache/log4j/xml/DOMConfigurator.java

Modified: 
logging/log4j/trunk/src/main/java/org/apache/log4j/PropertyConfigurator.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/PropertyConfigurator.java?rev=685796&r1=685795&r2=685796&view=diff
==============================================================================
--- 
logging/log4j/trunk/src/main/java/org/apache/log4j/PropertyConfigurator.java 
(original)
+++ 
logging/log4j/trunk/src/main/java/org/apache/log4j/PropertyConfigurator.java 
Thu Aug 14 00:56:20 2008
@@ -35,6 +35,8 @@
 
 import java.io.FileInputStream;
 import java.io.InputStream;
+import java.io.InterruptedIOException;
+import java.io.IOException;
 import java.util.Enumeration;
 import java.util.Hashtable;
 import java.util.Properties;
@@ -318,6 +320,9 @@
       istream.close();
     }
     catch (Exception e) {
+      if (e instanceof InterruptedIOException || e instanceof 
InterruptedException) {
+          Thread.currentThread().interrupt();
+      }
       LogLog.error("Could not read configuration file ["+configFileName+"].", 
e);
       LogLog.error("Ignoring configuration file [" + configFileName+"].");
       return;
@@ -325,6 +330,8 @@
         if(istream != null) {
             try {
                 istream.close();
+            } catch(InterruptedIOException ignore) {
+                Thread.currentThread().interrupt();
             } catch(Throwable ignore) {
             }
 
@@ -460,6 +467,9 @@
       props.load(istream);
     }
     catch (Exception e) {
+      if (e instanceof InterruptedIOException || e instanceof 
InterruptedException) {
+          Thread.currentThread().interrupt();
+      }
       LogLog.error("Could not read configuration file from URL [" + configURL
                   + "].", e);
       LogLog.error("Ignoring configuration file [" + configURL +"].");
@@ -469,7 +479,10 @@
         if (istream != null) {
             try {
                 istream.close();
-            } catch(Exception ignore) {
+            } catch(InterruptedIOException ignore) {
+                Thread.currentThread().interrupt();
+            } catch(IOException ignore) {
+            } catch(RuntimeException ignore) {
             }
         }
     }

Modified: 
logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/AbstractDynamicMBean.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/AbstractDynamicMBean.java?rev=685796&r1=685795&r2=685796&view=diff
==============================================================================
--- 
logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/AbstractDynamicMBean.java
 (original)
+++ 
logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/AbstractDynamicMBean.java
 Thu Aug 14 00:56:20 2008
@@ -18,16 +18,18 @@
 package org.apache.log4j.jmx;
 
 //import java.lang.reflect.Constructor;
-import java.util.Iterator;
-import javax.management.DynamicMBean;
-import javax.management.AttributeList;
+
+import org.apache.log4j.Logger;
+
 import javax.management.Attribute;
-import javax.management.RuntimeOperationsException;
+import javax.management.AttributeList;
+import javax.management.DynamicMBean;
+import javax.management.JMException;
 import javax.management.MBeanRegistration;
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
-
-import org.apache.log4j.Logger;
+import javax.management.RuntimeOperationsException;
+import java.util.Iterator;
 
 public abstract class AbstractDynamicMBean implements DynamicMBean,
                                                       MBeanRegistration {
@@ -59,8 +61,10 @@
       try {
        Object value = getAttribute((String) attributeNames[i]);
        resultList.add(new Attribute(attributeNames[i],value));
-      } catch (Exception e) {
-       e.printStackTrace();
+      } catch (JMException e) {
+            e.printStackTrace();
+      } catch (RuntimeException e) {
+            e.printStackTrace();
       }
     }
     return(resultList);
@@ -92,8 +96,10 @@
        String name = attr.getName();
        Object value = getAttribute(name);
        resultList.add(new Attribute(name,value));
-      } catch(Exception e) {
-       e.printStackTrace();
+      } catch(JMException e) {
+           e.printStackTrace();
+      } catch(RuntimeException e) {
+           e.printStackTrace();
       }
     }
     return(resultList);

Modified: logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/Agent.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/Agent.java?rev=685796&r1=685795&r2=685796&view=diff
==============================================================================
--- logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/Agent.java (original)
+++ logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/Agent.java Thu Aug 
14 00:56:20 2008
@@ -17,12 +17,12 @@
 
 package org.apache.log4j.jmx;
 
-import javax.management.ObjectName;
-import javax.management.MBeanServer;
-import javax.management.MBeanServerFactory;
-
 import org.apache.log4j.Logger;
 
+import javax.management.JMException;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import javax.management.ObjectName;
 import java.lang.reflect.InvocationTargetException;
 
 
@@ -62,7 +62,11 @@
       try {
         newInstance = Class.forName(
                 "com.sun.jdmk.comm.HtmlAdapterServer").newInstance();
-      } catch (Exception ex) {
+      } catch (ClassNotFoundException ex) {
+          throw new RuntimeException(ex.toString());
+      } catch (InstantiationException ex) {
+          throw new RuntimeException(ex.toString());
+      } catch (IllegalAccessException ex) {
           throw new RuntimeException(ex.toString());
       }
       return newInstance;
@@ -87,9 +91,11 @@
           } else {
               throw new RuntimeException();
           }
-      } catch(Exception ex) {
+      } catch(NoSuchMethodException ex) {
           throw new RuntimeException(ex.toString());
-      }
+      } catch(IllegalAccessException ex) {
+        throw new RuntimeException(ex.toString());
+    }
   }
 
 
@@ -108,8 +114,10 @@
       log.info("Registering HierarchyDynamicMBean instance.");
       HierarchyDynamicMBean hdm = new HierarchyDynamicMBean();
       server.registerMBean(hdm, new ObjectName("log4j:hiearchy=default"));
-
-    } catch(Exception e) {
+    } catch(JMException e) {
+      log.error("Problem while registering MBeans instances.", e);
+      return;
+    } catch(RuntimeException e) {
       log.error("Problem while registering MBeans instances.", e);
       return;
     }

Modified: 
logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/AppenderDynamicMBean.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/AppenderDynamicMBean.java?rev=685796&r1=685795&r2=685796&view=diff
==============================================================================
--- 
logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/AppenderDynamicMBean.java
 (original)
+++ 
logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/AppenderDynamicMBean.java
 Thu Aug 14 00:56:20 2008
@@ -17,34 +17,39 @@
 
 package org.apache.log4j.jmx;
 
-import java.lang.reflect.Constructor;
-import org.apache.log4j.*;
+import org.apache.log4j.Appender;
+import org.apache.log4j.Layout;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.Priority;
 import org.apache.log4j.helpers.OptionConverter;
 import org.apache.log4j.spi.OptionHandler;
 
-import java.util.Vector;
-import java.util.Hashtable;
-import java.lang.reflect.Method;
-import javax.management.MBeanAttributeInfo;
-import javax.management.MBeanConstructorInfo;
-import javax.management.MBeanNotificationInfo;
-import javax.management.ObjectName;
-import javax.management.MBeanInfo;
 import javax.management.Attribute;
-import javax.management.MBeanServer;
-
-import javax.management.MBeanException;
 import javax.management.AttributeNotFoundException;
-import javax.management.RuntimeOperationsException;
-import javax.management.ReflectionException;
 import javax.management.InvalidAttributeValueException;
+import javax.management.JMException;
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanConstructorInfo;
+import javax.management.MBeanException;
+import javax.management.MBeanInfo;
+import javax.management.MBeanNotificationInfo;
 import javax.management.MBeanOperationInfo;
 import javax.management.MBeanParameterInfo;
-
-import java.beans.Introspector;
+import javax.management.MBeanServer;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.management.ReflectionException;
+import javax.management.RuntimeOperationsException;
 import java.beans.BeanInfo;
-import java.beans.PropertyDescriptor;
 import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Hashtable;
+import java.util.Vector;
 
 public class AppenderDynamicMBean extends AbstractDynamicMBean {
 
@@ -199,7 +204,11 @@
                 "The " + name + " layout.", true, true, false));
       }
 
-    } catch(Exception e) {
+    } catch(JMException e) {
+      cat.error("Could not add DynamicLayoutMBean for ["+name+"].", e);
+    } catch(java.beans.IntrospectionException e) {
+      cat.error("Could not add DynamicLayoutMBean for ["+name+"].", e);
+    } catch(RuntimeException e) {
       cat.error("Could not add DynamicLayoutMBean for ["+name+"].", e);
     }
   }
@@ -225,9 +234,11 @@
     cat.debug("getAttribute called with ["+attributeName+"].");
     if(attributeName.startsWith("appender="+appender.getName()+",layout")) {
       try {
-       return new ObjectName("log4j:"+attributeName );
-      } catch(Exception e) {
-       cat.error("attributeName", e);
+           return new ObjectName("log4j:"+attributeName );
+      } catch(MalformedObjectNameException e) {
+           cat.error("attributeName", e);
+      } catch(RuntimeException e) {
+           cat.error("attributeName", e);
       }
     }
 
@@ -238,8 +249,12 @@
     if(mu != null && mu.readMethod != null) {
       try {
        return mu.readMethod.invoke(appender, null);
-      } catch(Exception e) {
-       return null;
+      } catch(IllegalAccessException e) {
+           return null;
+      } catch(InvocationTargetException e) {
+           return null;
+      } catch(RuntimeException e) {
+           return null;
       }
     }
 
@@ -292,8 +307,12 @@
       try {
        mu.writeMethod.invoke(appender,  o);
 
-      } catch(Exception e) {
-       cat.error("FIXME", e);
+      } catch(InvocationTargetException e) {
+           cat.error("FIXME", e);
+      } catch(IllegalAccessException e) {
+           cat.error("FIXME", e);
+      } catch(RuntimeException e) {
+           cat.error("FIXME", e);
       }
     } else if(name.endsWith(".layout")) {
 

Modified: 
logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/HierarchyDynamicMBean.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/HierarchyDynamicMBean.java?rev=685796&r1=685795&r2=685796&view=diff
==============================================================================
--- 
logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/HierarchyDynamicMBean.java
 (original)
+++ 
logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/HierarchyDynamicMBean.java
 Thu Aug 14 00:56:20 2008
@@ -18,36 +18,38 @@
 package org.apache.log4j.jmx;
 
 
-import java.lang.reflect.Constructor;
-import org.apache.log4j.*;
-
+import org.apache.log4j.Appender;
+import org.apache.log4j.Category;
+import org.apache.log4j.Level;
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
+import org.apache.log4j.helpers.OptionConverter;
 import org.apache.log4j.spi.HierarchyEventListener;
 import org.apache.log4j.spi.LoggerRepository;
-import org.apache.log4j.helpers.OptionConverter;
 
-import java.util.Vector;
+import javax.management.Attribute;
+import javax.management.AttributeNotFoundException;
+import javax.management.InvalidAttributeValueException;
+import javax.management.JMException;
+import javax.management.ListenerNotFoundException;
 import javax.management.MBeanAttributeInfo;
 import javax.management.MBeanConstructorInfo;
+import javax.management.MBeanException;
+import javax.management.MBeanInfo;
 import javax.management.MBeanNotificationInfo;
 import javax.management.MBeanOperationInfo;
 import javax.management.MBeanParameterInfo;
-
-import javax.management.ObjectName;
-import javax.management.MBeanInfo;
-import javax.management.Attribute;
-
-import javax.management.MBeanException;
-import javax.management.AttributeNotFoundException;
-import javax.management.RuntimeOperationsException;
-import javax.management.ReflectionException;
-import javax.management.InvalidAttributeValueException;
-import javax.management.NotificationBroadcasterSupport;
-import javax.management.NotificationBroadcaster;
 import javax.management.Notification;
-import javax.management.NotificationListener;
+import javax.management.NotificationBroadcaster;
+import javax.management.NotificationBroadcasterSupport;
 import javax.management.NotificationFilter;
 import javax.management.NotificationFilterSupport;
-import javax.management.ListenerNotFoundException;
+import javax.management.NotificationListener;
+import javax.management.ObjectName;
+import javax.management.ReflectionException;
+import javax.management.RuntimeOperationsException;
+import java.lang.reflect.Constructor;
+import java.util.Vector;
 
 public class HierarchyDynamicMBean extends AbstractDynamicMBean
                                    implements HierarchyEventListener,
@@ -132,7 +134,9 @@
         
       }
 
-    } catch(Exception e) {
+    } catch(JMException e) {
+      log.error("Could not add loggerMBean for ["+name+"].", e);
+    } catch(RuntimeException e) {
       log.error("Could not add loggerMBean for ["+name+"].", e);
     }
     return objectName;
@@ -219,8 +223,10 @@
       }
       try {
        return new ObjectName("log4j:"+val);
-      } catch(Exception e) {
-       log.error("Could not create ObjectName" + val);
+      } catch(JMException e) {
+           log.error("Could not create ObjectName" + val);
+      } catch(RuntimeException e) {
+           log.error("Could not create ObjectName" + val);
       }
     }
 

Modified: 
logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/LayoutDynamicMBean.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/LayoutDynamicMBean.java?rev=685796&r1=685795&r2=685796&view=diff
==============================================================================
--- 
logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/LayoutDynamicMBean.java 
(original)
+++ 
logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/LayoutDynamicMBean.java 
Thu Aug 14 00:56:20 2008
@@ -27,6 +27,7 @@
 import java.util.Vector;
 import java.util.Hashtable;
 import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
 import javax.management.MBeanAttributeInfo;
 import javax.management.MBeanConstructorInfo;
 import javax.management.MBeanNotificationInfo;
@@ -188,8 +189,12 @@
     if(mu != null && mu.readMethod != null) {
       try {
        return mu.readMethod.invoke(layout, null);
-      } catch(Exception e) {
-       return null;
+      } catch(InvocationTargetException e) {
+           return null;
+      } catch(IllegalAccessException e) {
+           return null;
+      } catch(RuntimeException e) {
+           return null;
       }
     }
 
@@ -242,8 +247,12 @@
       try {
        mu.writeMethod.invoke(layout,  o);
 
-      } catch(Exception e) {
-       cat.error("FIXME", e);
+      } catch(InvocationTargetException e) {
+           cat.error("FIXME", e);
+      } catch(IllegalAccessException e) {
+           cat.error("FIXME", e);
+      } catch(RuntimeException e) {
+           cat.error("FIXME", e);
       }
     } else {
       throw(new AttributeNotFoundException("Attribute " + name +

Modified: 
logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/LoggerDynamicMBean.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/LoggerDynamicMBean.java?rev=685796&r1=685795&r2=685796&view=diff
==============================================================================
--- 
logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/LoggerDynamicMBean.java 
(original)
+++ 
logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/LoggerDynamicMBean.java 
Thu Aug 14 00:56:20 2008
@@ -17,31 +17,32 @@
 
 package org.apache.log4j.jmx;
 
-import java.lang.reflect.Constructor;
-import org.apache.log4j.Logger;
-import org.apache.log4j.Level;
 import org.apache.log4j.Appender;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
 import org.apache.log4j.helpers.OptionConverter;
 
-import java.util.Vector;
-import java.util.Enumeration;
-
+import javax.management.Attribute;
+import javax.management.AttributeNotFoundException;
+import javax.management.InvalidAttributeValueException;
+import javax.management.JMException;
 import javax.management.MBeanAttributeInfo;
 import javax.management.MBeanConstructorInfo;
+import javax.management.MBeanException;
+import javax.management.MBeanInfo;
 import javax.management.MBeanNotificationInfo;
 import javax.management.MBeanOperationInfo;
 import javax.management.MBeanParameterInfo;
+import javax.management.MalformedObjectNameException;
+import javax.management.Notification;
+import javax.management.NotificationListener;
 import javax.management.ObjectName;
-import javax.management.MBeanInfo;
-import javax.management.Attribute;
-
-import javax.management.MBeanException;
-import javax.management.AttributeNotFoundException;
-import javax.management.RuntimeOperationsException;
 import javax.management.ReflectionException;
-import javax.management.InvalidAttributeValueException;
-import javax.management.NotificationListener;
-import javax.management.Notification;
+import javax.management.RuntimeOperationsException;
+import javax.management.IntrospectionException;
+import java.lang.reflect.Constructor;
+import java.util.Enumeration;
+import java.util.Vector;
 
 public class LoggerDynamicMBean extends AbstractDynamicMBean
                                   implements NotificationListener {
@@ -174,8 +175,10 @@
     } else if(attributeName.startsWith("appender=")) {
       try {
        return new ObjectName("log4j:"+attributeName );
-      } catch(Exception e) {
-       cat.error("Could not create ObjectName" + attributeName);
+      } catch(MalformedObjectNameException e) {
+           cat.error("Could not create ObjectName" + attributeName);
+      } catch(RuntimeException e) {
+           cat.error("Could not create ObjectName" + attributeName);
       }
     }
 
@@ -264,7 +267,11 @@
                 "The " + name + " appender.", true, true, false));
       }
 
-    } catch(Exception e) {
+    } catch(JMException e) {
+      cat.error("Could not add appenderMBean for ["+name+"].", e);
+    } catch(java.beans.IntrospectionException e) {
+      cat.error("Could not add appenderMBean for ["+name+"].", e);
+    } catch(RuntimeException e) {
       cat.error("Could not add appenderMBean for ["+name+"].", e);
     }
   }

Modified: 
logging/log4j/trunk/src/main/java/org/apache/log4j/net/JMSAppender.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/net/JMSAppender.java?rev=685796&r1=685795&r2=685796&view=diff
==============================================================================
--- logging/log4j/trunk/src/main/java/org/apache/log4j/net/JMSAppender.java 
(original)
+++ logging/log4j/trunk/src/main/java/org/apache/log4j/net/JMSAppender.java Thu 
Aug 14 00:56:20 2008
@@ -18,22 +18,23 @@
 package org.apache.log4j.net;
 
 import org.apache.log4j.AppenderSkeleton;
-import org.apache.log4j.spi.LoggingEvent;
-import org.apache.log4j.spi.ErrorCode;
 import org.apache.log4j.helpers.LogLog;
+import org.apache.log4j.spi.ErrorCode;
+import org.apache.log4j.spi.LoggingEvent;
 
-import java.util.Properties;
+import javax.jms.JMSException;
+import javax.jms.ObjectMessage;
+import javax.jms.Session;
+import javax.jms.Topic;
 import javax.jms.TopicConnection;
 import javax.jms.TopicConnectionFactory;
-import javax.jms.Topic;
 import javax.jms.TopicPublisher;
 import javax.jms.TopicSession;
-import javax.jms.Session;
-import javax.jms.ObjectMessage;
-import javax.naming.InitialContext;
 import javax.naming.Context;
+import javax.naming.InitialContext;
 import javax.naming.NameNotFoundException;
 import javax.naming.NamingException;
+import java.util.Properties;
 
 /**
  * A simple appender that publishes events to a JMS Topic. The events
@@ -227,7 +228,13 @@
       topicConnection.start();
 
       jndi.close();
-    } catch(Exception e) {
+    } catch(JMSException e) {
+      errorHandler.error("Error while activating options for appender named 
["+name+
+                        "].", e, ErrorCode.GENERIC_FAILURE);
+    } catch(NamingException e) {
+      errorHandler.error("Error while activating options for appender named 
["+name+
+                        "].", e, ErrorCode.GENERIC_FAILURE);
+    } catch(RuntimeException e) {
       errorHandler.error("Error while activating options for appender named 
["+name+
                         "].", e, ErrorCode.GENERIC_FAILURE);
     }
@@ -278,7 +285,9 @@
        topicSession.close();
       if(topicConnection != null)
        topicConnection.close();
-    } catch(Exception e) {
+    } catch(JMSException e) {
+      LogLog.error("Error while closing JMSAppender ["+name+"].", e);
+    } catch(RuntimeException e) {
       LogLog.error("Error while closing JMSAppender ["+name+"].", e);
     }
     // Help garbage collection
@@ -302,7 +311,10 @@
       }
       msg.setObject(event);
       topicPublisher.publish(msg);
-    } catch(Exception e) {
+    } catch(JMSException e) {
+      errorHandler.error("Could not publish message in JMSAppender 
["+name+"].", e,
+                        ErrorCode.GENERIC_FAILURE);
+    } catch(RuntimeException e) {
       errorHandler.error("Could not publish message in JMSAppender 
["+name+"].", e,
                         ErrorCode.GENERIC_FAILURE);
     }

Modified: logging/log4j/trunk/src/main/java/org/apache/log4j/net/JMSSink.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/net/JMSSink.java?rev=685796&r1=685795&r2=685796&view=diff
==============================================================================
--- logging/log4j/trunk/src/main/java/org/apache/log4j/net/JMSSink.java 
(original)
+++ logging/log4j/trunk/src/main/java/org/apache/log4j/net/JMSSink.java Thu Aug 
14 00:56:20 2008
@@ -105,7 +105,11 @@
     
       topicSubscriber.setMessageListener(this);
 
-    } catch(Exception e) {
+    } catch(JMSException e) {
+      logger.error("Could not read JMS message.", e);
+    } catch(NamingException e) {
+      logger.error("Could not read JMS message.", e);
+    } catch(RuntimeException e) {
       logger.error("Could not read JMS message.", e);
     }
   }

Modified: 
logging/log4j/trunk/src/main/java/org/apache/log4j/net/SMTPAppender.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/net/SMTPAppender.java?rev=685796&r1=685795&r2=685796&view=diff
==============================================================================
--- logging/log4j/trunk/src/main/java/org/apache/log4j/net/SMTPAppender.java 
(original)
+++ logging/log4j/trunk/src/main/java/org/apache/log4j/net/SMTPAppender.java 
Thu Aug 14 00:56:20 2008
@@ -332,7 +332,9 @@
 
       msg.setSentDate(new Date());
       Transport.send(msg);
-    } catch(Exception e) {
+    } catch(MessagingException e) {
+      LogLog.error("Error occured while sending e-mail notification.", e);
+    } catch(RuntimeException e) {
       LogLog.error("Error occured while sending e-mail notification.", e);
     }
   }

Modified: 
logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketAppender.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketAppender.java?rev=685796&r1=685795&r2=685796&view=diff
==============================================================================
--- logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketAppender.java 
(original)
+++ logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketAppender.java 
Thu Aug 14 00:56:20 2008
@@ -208,6 +208,9 @@
       cleanUp();
       oos = new ObjectOutputStream(new Socket(address, 
port).getOutputStream());
     } catch(IOException e) {
+      if (e instanceof InterruptedIOException) {
+          Thread.currentThread().interrupt();
+      }
       String msg = "Could not connect to remote log4j server at ["
        +address.getHostName()+"].";
       if(reconnectionDelay > 0) {
@@ -252,14 +255,17 @@
          oos.reset();
        }
       } catch(IOException e) {
-       oos = null;
-       LogLog.warn("Detected problem with connection: "+e);
-       if(reconnectionDelay > 0) {
-         fireConnector();
-       } else {
-           errorHandler.error("Detected problem with connection, not 
reconnecting.", e,
+          if (e instanceof InterruptedIOException) {
+              Thread.currentThread().interrupt();
+          }
+             oos = null;
+             LogLog.warn("Detected problem with connection: "+e);
+             if(reconnectionDelay > 0) {
+                fireConnector();
+             } else {
+                errorHandler.error("Detected problem with connection, not 
reconnecting.", e,
                       ErrorCode.GENERIC_FAILURE);
-       }
+             }
       }
     }
   }
@@ -279,6 +285,9 @@
     try {
       return InetAddress.getByName(host);
     } catch(Exception e) {
+      if (e instanceof InterruptedIOException || e instanceof 
InterruptedException) {
+          Thread.currentThread().interrupt();
+      }
       LogLog.error("Could not find address of ["+host+"].", e);
       return null;
     }

Modified: 
logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketHubAppender.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketHubAppender.java?rev=685796&r1=685795&r2=685796&view=diff
==============================================================================
--- 
logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketHubAppender.java 
(original)
+++ 
logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketHubAppender.java 
Thu Aug 14 00:56:20 2008
@@ -168,9 +168,11 @@
       if(oos != null) {
         try {
                oos.close();
-        }
-        catch(IOException e) {
-               LogLog.error("could not close oos.", e);
+        } catch(InterruptedIOException e) {
+            Thread.currentThread().interrupt();
+            LogLog.error("could not close oos.", e);
+        } catch(IOException e) {
+            LogLog.error("could not close oos.", e);
         }
         
         oosList.removeElementAt(0);     
@@ -226,7 +228,10 @@
        oos.reset();
       }
       catch(IOException e) {
-       // there was an io exception so just drop the connection
+        if (e instanceof InterruptedIOException) {
+            Thread.currentThread().interrupt();
+        }
+          // there was an io exception so just drop the connection
        oosList.removeElementAt(streamCount);
        LogLog.debug("dropped connection");
        
@@ -398,6 +403,9 @@
         serverSocket.setSoTimeout(1000);
       }
       catch (Exception e) {
+        if (e instanceof InterruptedIOException || e instanceof 
InterruptedException) {
+            Thread.currentThread().interrupt();
+        }
         LogLog.error("exception setting timeout, shutting down server 
socket.", e);
         keepRunning = false;
         return;

Modified: 
logging/log4j/trunk/src/main/java/org/apache/log4j/net/TelnetAppender.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/net/TelnetAppender.java?rev=685796&r1=685795&r2=685796&view=diff
==============================================================================
--- logging/log4j/trunk/src/main/java/org/apache/log4j/net/TelnetAppender.java 
(original)
+++ logging/log4j/trunk/src/main/java/org/apache/log4j/net/TelnetAppender.java 
Thu Aug 14 00:56:20 2008
@@ -77,7 +77,12 @@
       sh = new SocketHandler(port);
       sh.start();
     }
-    catch(Exception e) {
+    catch(InterruptedIOException e) {
+      Thread.currentThread().interrupt();
+      e.printStackTrace();
+    } catch(IOException e) {
+      e.printStackTrace();
+    } catch(RuntimeException e) {
       e.printStackTrace();
     }
     super.activateOptions();
@@ -149,14 +154,20 @@
         for(Enumeration e = connections.elements();e.hasMoreElements();) {
             try {
                 ((Socket)e.nextElement()).close();
-            } catch(Exception ex) {
+            } catch(InterruptedIOException ex) {
+                Thread.currentThread().interrupt();
+            } catch(IOException ex) {
+            } catch(RuntimeException ex) {
             }
         }
       }
 
       try {
         serverSocket.close();
-      } catch(Exception ex) {
+      } catch(InterruptedIOException ex) {
+          Thread.currentThread().interrupt();
+      } catch(IOException ex) {
+      } catch(RuntimeException ex) {
       }
     }
 
@@ -197,6 +208,9 @@
             newClient.close();
           }
         } catch(Exception e) {
+          if (e instanceof InterruptedIOException || e instanceof 
InterruptedException) {
+              Thread.currentThread().interrupt();
+          }
           if (!serverSocket.isClosed()) {
             LogLog.error("Encountered error while in SocketHandler loop.", e);
           }

Modified: 
logging/log4j/trunk/src/main/java/org/apache/log4j/spi/LoggingEvent.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/spi/LoggingEvent.java?rev=685796&r1=685795&r2=685796&view=diff
==============================================================================
--- logging/log4j/trunk/src/main/java/org/apache/log4j/spi/LoggingEvent.java 
(original)
+++ logging/log4j/trunk/src/main/java/org/apache/log4j/spi/LoggingEvent.java 
Thu Aug 14 00:56:20 2008
@@ -17,18 +17,23 @@
 
 package org.apache.log4j.spi;
 
-import org.apache.log4j.*;
-
-import org.apache.log4j.helpers.LogLog;
+import org.apache.log4j.Category;
+import org.apache.log4j.Level;
+import org.apache.log4j.MDC;
+import org.apache.log4j.NDC;
+import org.apache.log4j.Priority;
 import org.apache.log4j.helpers.Loader;
-import java.lang.reflect.Method;
-import java.io.ObjectOutputStream;
+import org.apache.log4j.helpers.LogLog;
+
 import java.io.ObjectInputStream;
-import java.util.Hashtable;
-import java.util.Set;
+import java.io.ObjectOutputStream;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
 import java.util.Collections;
-import java.util.Map;
 import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.Set;
 
 // Contributors:   Nelson Minar <[EMAIL PROTECTED]>
 //                 Wolf Siberski
@@ -433,7 +438,16 @@
        PARAM_ARRAY[0] = new Integer(p);
        level = (Level) m.invoke(null,  PARAM_ARRAY);
       }
-    } catch(Exception e) {
+    } catch(InvocationTargetException e) {
+       LogLog.warn("Level deserialization failed, reverting to default.", e);
+       level = Level.toLevel(p);
+    } catch(NoSuchMethodException e) {
+       LogLog.warn("Level deserialization failed, reverting to default.", e);
+       level = Level.toLevel(p);
+    } catch(IllegalAccessException e) {
+       LogLog.warn("Level deserialization failed, reverting to default.", e);
+       level = Level.toLevel(p);
+    } catch(RuntimeException e) {
        LogLog.warn("Level deserialization failed, reverting to default.", e);
        level = Level.toLevel(p);
     }

Modified: 
logging/log4j/trunk/src/main/java/org/apache/log4j/varia/ExternallyRolledFileAppender.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/varia/ExternallyRolledFileAppender.java?rev=685796&r1=685795&r2=685796&view=diff
==============================================================================
--- 
logging/log4j/trunk/src/main/java/org/apache/log4j/varia/ExternallyRolledFileAppender.java
 (original)
+++ 
logging/log4j/trunk/src/main/java/org/apache/log4j/varia/ExternallyRolledFileAppender.java
 Thu Aug 14 00:56:20 2008
@@ -19,6 +19,8 @@
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.InterruptedIOException;
 import java.net.ServerSocket;
 import java.net.Socket;
 
@@ -124,9 +126,13 @@
          LogLog.debug("Connected to client at " + socket.getInetAddress());
          new Thread(new HUPNode(socket, er), 
"ExternallyRolledFileAppender-HUP").start();
        }
-      }
-      catch(Exception e) {
-       e.printStackTrace();
+      } catch(InterruptedIOException e) {
+        Thread.currentThread().interrupt();
+           e.printStackTrace();
+      } catch(IOException e) {
+           e.printStackTrace();
+      } catch(RuntimeException e) {
+           e.printStackTrace();
       }
     }
   }
@@ -146,8 +152,12 @@
     try {
       dis = new DataInputStream(socket.getInputStream());
       dos = new DataOutputStream(socket.getOutputStream());
-    }
-    catch(Exception e) {
+    } catch(InterruptedIOException e) {
+      Thread.currentThread().interrupt();
+      e.printStackTrace();
+    } catch(IOException e) {
+      e.printStackTrace();
+    } catch(RuntimeException e) {
       e.printStackTrace();
     }
   }
@@ -166,8 +176,12 @@
        dos.writeUTF("Expecting [RollOver] string.");
       }
       dos.close();
-    }
-    catch(Exception e) {
+    } catch(InterruptedIOException e) {
+      Thread.currentThread().interrupt();
+      LogLog.error("Unexpected exception. Exiting HUPNode.", e);
+    } catch(IOException e) {
+      LogLog.error("Unexpected exception. Exiting HUPNode.", e);
+    } catch(RuntimeException e) {
       LogLog.error("Unexpected exception. Exiting HUPNode.", e);
     }
   }

Modified: 
logging/log4j/trunk/src/main/java/org/apache/log4j/xml/DOMConfigurator.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/xml/DOMConfigurator.java?rev=685796&r1=685795&r2=685796&view=diff
==============================================================================
--- logging/log4j/trunk/src/main/java/org/apache/log4j/xml/DOMConfigurator.java 
(original)
+++ logging/log4j/trunk/src/main/java/org/apache/log4j/xml/DOMConfigurator.java 
Thu Aug 14 00:56:20 2008
@@ -49,6 +49,7 @@
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.InterruptedIOException;
 import java.io.Reader;
 import java.lang.reflect.Method;
 import java.net.URL;
@@ -223,6 +224,9 @@
       try {
           parseUnrecognizedElement(instance, element, props);
       } catch (Exception ex) {
+          if (ex instanceof InterruptedException || ex instanceof 
InterruptedIOException) {
+              Thread.currentThread().interrupt();
+          }
           LogLog.error("Error in extension content: ", ex);
       }
   }
@@ -289,6 +293,9 @@
     /* Yes, it's ugly.  But all of these exceptions point to the same
        problem: we can't create an Appender */
     catch (Exception oops) {
+        if (oops instanceof InterruptedException || oops instanceof 
InterruptedIOException) {
+            Thread.currentThread().interrupt();
+        }
       LogLog.error("Could not create an Appender. Reported error follows.",
                   oops);
       return null;
@@ -556,6 +563,9 @@
       return layout;
     }
     catch (Exception oops) {
+        if (oops instanceof InterruptedException || oops instanceof 
InterruptedIOException) {
+            Thread.currentThread().interrupt();
+        }
       LogLog.error("Could not create the Layout. Reported error follows.",
                   oops);
       return null;
@@ -605,6 +615,9 @@
                                                    new Object[] {priStr});
          logger.setLevel(pri);
        } catch (Exception oops) {
+        if (oops instanceof InterruptedException || oops instanceof 
InterruptedIOException) {
+            Thread.currentThread().interrupt();
+        }
          LogLog.error("Could not create level ["+priStr+
                       "]. Reported error follows.", oops);
          return;
@@ -793,6 +806,9 @@
       Document doc = action.parse(docBuilder);     
       parse(doc.getDocumentElement());
     } catch (Exception e) {
+        if (e instanceof InterruptedException || e instanceof 
InterruptedIOException) {
+            Thread.currentThread().interrupt();
+        }
       // I know this is miserable...
       LogLog.error("Could not parse "+ action.toString() + ".", e);
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to