You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rg...@apache.org on 2012/08/08 08:28:56 UTC

svn commit: r1370673 - in /logging/log4j/log4j2/trunk: core/src/main/java/org/apache/logging/log4j/core/appender/ core/src/main/java/org/apache/logging/log4j/core/appender/rolling/ core/src/main/java/org/apache/logging/log4j/core/impl/ core/src/main/ja...

Author: rgoers
Date: Wed Aug  8 06:28:55 2012
New Revision: 1370673

URL: http://svn.apache.org/viewvc?rev=1370673&view=rev
Log:
Fix Log4J2-64 - Fix compilation errors under Java 7

Modified:
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/TCPSocketManager.java
    logging/log4j/log4j2/trunk/flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAvroAppender.java
    logging/log4j/log4j2/trunk/src/changes/changes.xml

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java?rev=1370673&r1=1370672&r2=1370673&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java Wed Aug  8 06:28:55 2012
@@ -42,7 +42,7 @@ public abstract class AbstractManager {
 
     private String name;
 
-    private int count;
+    protected int count;
 
     protected AbstractManager(String name) {
         this.name = name;

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java?rev=1370673&r1=1370672&r2=1370673&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java Wed Aug  8 06:28:55 2012
@@ -87,8 +87,8 @@ public final class ConsoleAppender exten
     private static OutputStreamManager getManager(Target target) {
         String type = target.name();
         OutputStream os = target == Target.SYSTEM_OUT ? System.out : System.err;
-        OutputStreamManager manager = OutputStreamManager.getManager(target.name(), factory,
-            new FactoryData(os, type));
+        OutputStreamManager manager = OutputStreamManager.getManager(target.name(), new FactoryData(os, type), factory
+        );
         return manager;
     }
 

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java?rev=1370673&r1=1370672&r2=1370673&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java Wed Aug  8 06:28:55 2012
@@ -55,7 +55,7 @@ public class FileManager extends OutputS
         if (locking && bufferedIO) {
             locking = false;
         }
-        return (FileManager) getManager(fileName, factory, new FactoryData(append, locking, bufferedIO));
+        return (FileManager) getManager(fileName, new FactoryData(append, locking, bufferedIO), factory);
     }
 
     protected synchronized void write(byte[] bytes, int offset, int length)  {

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java?rev=1370673&r1=1370672&r2=1370673&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java Wed Aug  8 06:28:55 2012
@@ -36,13 +36,14 @@ public class OutputStreamManager extends
 
     /**
      * Create a Manager.
+     *
      * @param name The name of the stream to manage.
-     * @param factory The factory to use to create the Manager.
      * @param data The data to pass to the Manager.
+     * @param factory The factory to use to create the Manager.
      * @return An OutputStreamManager.
      */
-    public static OutputStreamManager getManager(String name, ManagerFactory<OutputStreamManager, Object> factory,
-                                                 Object data) {
+    public static OutputStreamManager getManager(String name, Object data,
+                                                 ManagerFactory<OutputStreamManager, Object> factory) {
         return AbstractManager.getManager(name, factory, data);
     }
 

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java?rev=1370673&r1=1370672&r2=1370673&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java Wed Aug  8 06:28:55 2012
@@ -61,8 +61,8 @@ public class RollingFileManager extends 
     public static RollingFileManager getFileManager(String fileName, String pattern, boolean append,
                                                     boolean bufferedIO) {
 
-        return (RollingFileManager) getManager(fileName, factory, new FactoryData(pattern, append,
-            bufferedIO));
+        return (RollingFileManager) getManager(fileName, new FactoryData(pattern, append,
+            bufferedIO), factory);
     }
 
     protected synchronized void write(byte[] bytes, int offset, int length) {

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java?rev=1370673&r1=1370672&r2=1370673&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java Wed Aug  8 06:28:55 2012
@@ -43,10 +43,10 @@ public class ThrowableProxy extends Thro
     private static final org.apache.logging.log4j.Logger LOGGER = StatusLogger.getLogger();
 
     private static Method getSuppressed;
+    private static Method addSuppressed;
 
     private final Throwable throwable;
     private final ThrowableProxy cause;
-    private final ThrowableProxy[] suppressed;
     private int commonElementCount;
 
     private final StackTracePackageElement[] callerPackageData;
@@ -68,7 +68,7 @@ public class ThrowableProxy extends Thro
         callerPackageData = resolvePackageData(stack, map, null, throwable.getStackTrace());
         this.cause = (throwable.getCause() == null) ? null :
             new ThrowableProxy(throwable, stack, map, throwable.getCause());
-        suppressed = getSuppressed(throwable);
+        setSuppressed(throwable);
     }
 
     /**
@@ -84,7 +84,7 @@ public class ThrowableProxy extends Thro
         callerPackageData = resolvePackageData(stack, map, parent.getStackTrace(), cause.getStackTrace());
         this.cause = (throwable.getCause() == null) ? null :
             new ThrowableProxy(parent, stack, map, throwable.getCause());
-        suppressed = getSuppressed(throwable);
+        setSuppressed(throwable);
     }
 
 
@@ -108,22 +108,6 @@ public class ThrowableProxy extends Thro
         return cause;
     }
 
-    /**
-     * Added in Java 7.
-     * @param exception A Throwable that was suppressed.
-     */
-    public void addSuppressed(Throwable exception) {
-        throw new UnsupportedOperationException("Cannot add suppressed exceptions to a ThrowableProxy");
-    }
-
-    /**
-     * Added in Java 7.
-     * @return Any suppressed exceptions.
-     */
-    public Throwable[] getSuppressed() {
-        return suppressed;
-    }
-
     @Override
     public Throwable initCause(Throwable throwable) {
         throw new IllegalStateException("Cannot set the cause on a ThrowableProxy");
@@ -209,6 +193,7 @@ public class ThrowableProxy extends Thro
      * @return The formatted suppressed Throwables.
      */
     public String getSuppressedStackTrace() {
+        ThrowableProxy[] suppressed = getSuppressedProxies();
         if (suppressed == null || suppressed.length == 0) {
             return "";
         }
@@ -427,6 +412,8 @@ public class ThrowableProxy extends Thro
         for (Method method : methods) {
             if (method.getName().equals("getSuppressed")) {
                 getSuppressed = method;
+            } else if (method.getName().equals("addSuppressed")) {
+                addSuppressed = method;
             }
         }
     }
@@ -463,22 +450,29 @@ public class ThrowableProxy extends Thro
         }
     }
 
-    private ThrowableProxy[] getSuppressed(Throwable throwable) {
-        ThrowableProxy[] supp = null;
+    private ThrowableProxy[] getSuppressedProxies() {
         if (getSuppressed != null) {
             try {
+                return (ThrowableProxy[]) getSuppressed.invoke(this, null);
+            } catch (Exception ex) {
+                return null;
+            }
+        }
+        return null;
+    }
+
+    private void setSuppressed(Throwable throwable) {
+        if (getSuppressed != null && addSuppressed != null) {
+            try {
                 Throwable[] array = (Throwable[]) getSuppressed.invoke(throwable, null);
-                supp = new ThrowableProxy[array.length];
                 int i = 0;
                 for (Throwable t : array) {
-                    supp[i] = new ThrowableProxy(t);
-                    ++i;
+                    addSuppressed.invoke(this, new ThrowableProxy(t));
                 }
             } catch (Exception ex) {
                 //
             }
         }
-        return supp;
     }
 
     /**

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java?rev=1370673&r1=1370672&r2=1370673&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java Wed Aug  8 06:28:55 2012
@@ -51,8 +51,8 @@ public class DatagramSocketManager exten
         if (port <= 0) {
             throw new IllegalArgumentException("A port value is required");
         }
-        return (DatagramSocketManager) getManager("UDP:" + host + ":" + port, factory,
-            new FactoryData(host, port));
+        return (DatagramSocketManager) getManager("UDP:" + host + ":" + port, new FactoryData(host, port), factory
+        );
     }
 
     /**

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/TCPSocketManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/TCPSocketManager.java?rev=1370673&r1=1370672&r2=1370673&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/TCPSocketManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/TCPSocketManager.java Wed Aug  8 06:28:55 2012
@@ -85,7 +85,7 @@ public class TCPSocketManager extends Ab
         if (delay == 0) {
             delay = DEFAULT_RECONNECTION_DELAY;
         }
-        return (TCPSocketManager) getManager("TCP:" + host + ":" + port, factory, new FactoryData(host, port, delay));
+        return (TCPSocketManager) getManager("TCP:" + host + ":" + port, new FactoryData(host, port, delay), factory);
     }
 
     @Override

Modified: logging/log4j/log4j2/trunk/flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAvroAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAvroAppender.java?rev=1370673&r1=1370672&r2=1370673&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAvroAppender.java (original)
+++ logging/log4j/log4j2/trunk/flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAvroAppender.java Wed Aug  8 06:28:55 2012
@@ -27,6 +27,10 @@ import org.apache.logging.log4j.core.con
 import org.apache.logging.log4j.core.layout.RFC5424Layout;
 
 import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.net.UnknownHostException;
+import java.util.Enumeration;
 
 /**
  * An Appender that uses the Avro protocol to route events to Flume.
@@ -145,7 +149,7 @@ public final class FlumeAvroAppender ext
 
         String hostname;
         try {
-            hostname = InetAddress.getLocalHost().getHostName();
+            hostname = getHostName();
         } catch (Exception ex) {
             LOGGER.error("Unable to determine local hostname", ex);
             return null;
@@ -180,4 +184,29 @@ public final class FlumeAvroAppender ext
         return new FlumeAvroAppender(name, filter, layout,  handleExceptions, hostname, includes,
             excludes, required, mdcPrefix, eventPrefix, compress, reconnectDelay, retries, factory, manager);
     }
+
+    private static String getHostName() throws Exception {
+        try {
+            return InetAddress.getLocalHost().getHostName();
+        } catch (Exception ex) {
+            // Could not locate host the easy way.
+        }
+
+        Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
+        while (interfaces.hasMoreElements()) {
+            NetworkInterface nic = interfaces.nextElement();
+            Enumeration<InetAddress> addresses = nic.getInetAddresses();
+            while (addresses.hasMoreElements()) {
+                InetAddress address = addresses.nextElement();
+                if (!address.isLoopbackAddress()) {
+                    String hostname = address.getHostName();
+                    if (hostname != null) {
+                        return hostname;
+                    }
+                }
+            }
+        }
+        throw new UnknownHostException("Unable to determine host name");
+
+    }
 }

Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1370673&r1=1370672&r2=1370673&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/src/changes/changes.xml (original)
+++ logging/log4j/log4j2/trunk/src/changes/changes.xml Wed Aug  8 06:28:55 2012
@@ -23,7 +23,10 @@
 
   <body>
     <release version="2.0-alpha2" date="TBD" description="Bug fixes and minor enhancements">
-      <action issue="LOG4J2-65" dev="rgoers">
+      <action issue="LOG4J2-64" dev="rgoers" type="fix">
+        Fix compilation problems in Java 7.
+      </action>
+      <action issue="LOG4J2-65" dev="rgoers" type="fix">
         Allow variable substitution on the configuration attributes and on the root log level.
       </action>
     </release>