Fix: lttng java agent: dispose is non-static
[lttng-ust.git] / liblttng-ust-java-agent / java / lttng-ust-agent-common / org / lttng / ust / agent / LTTngAgent.java
index 3c9a7997d558950d40064130c18f2a21596356bd..c98301d738b8aa3a81f17ce240e687c88a047794 100644 (file)
@@ -18,6 +18,7 @@
 package org.lttng.ust.agent;
 
 import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.logging.Handler;
 import java.util.logging.Logger;
@@ -48,9 +49,10 @@ public class LTTngAgent {
 
        /**
         * Dispose the agent. Applications should call this once they are done
-        * logging.
+        * logging. This dispose function is non-static for backwards
+        * compatibility purposes.
         */
-       public static synchronized void dispose() {
+       public synchronized void dispose() {
                if (instance != null) {
                        instance.disposeInstance();
                        instance = null;
@@ -95,11 +97,19 @@ public class LTTngAgent {
 
                        /* Attach the handler to the root JUL logger */
                        Logger.getLogger("").addHandler((Handler) julHandler);
-               } catch (ReflectiveOperationException e) {
+
                        /*
-                        * LTTng JUL classes not found, no need to create the relevant
-                        * objects
+                        * If any of the following exceptions happen, it means we could not
+                        * find or initialize LTTng JUL classes. We will not setup LTTng JUL
+                        * tracing in this case.
                         */
+               } catch (SecurityException e) {
+               } catch (IllegalAccessException e) {
+               } catch (IllegalArgumentException e) {
+               } catch (ClassNotFoundException e) {
+               } catch (NoSuchMethodException e) {
+               } catch (InstantiationException e) {
+               } catch (InvocationTargetException e) {
                }
        }
 
@@ -119,11 +129,25 @@ public class LTTngAgent {
                        Class<?> log4jAppenderClass = Class.forName("org.lttng.ust.agent.log4j.LttngLogAppender");
                        Constructor<?> log4jAppendCtor = log4jAppenderClass.getConstructor();
                        log4jAppender = (ILttngHandler) log4jAppendCtor.newInstance();
-               } catch (ReflectiveOperationException e) {
+
                        /*
-                        * LTTng Log4j classes not found, no need to create the relevant
-                        * objects.
+                        * If any of the following exceptions happen, it means we could not
+                        * find or initialize LTTng log4j classes. We will not setup LTTng
+                        * log4j tracing in this case.
                         */
+               } catch (SecurityException e) {
+                       return;
+               } catch (ClassNotFoundException e) {
+                       return;
+               } catch (NoSuchMethodException e) {
+                       return;
+               } catch (IllegalArgumentException e) {
+                       return;
+               } catch (InstantiationException e) {
+                       return;
+               } catch (IllegalAccessException e) {
+                       return;
+               } catch (InvocationTargetException e) {
                        return;
                }
 
@@ -143,12 +167,22 @@ public class LTTngAgent {
                        Object rootLogger = getRootLoggerMethod.invoke(null, (Object[]) null);
                        addAppenderMethod.invoke(rootLogger, log4jAppender);
 
-               } catch (ReflectiveOperationException e) {
                        /*
-                        * We have checked for the log4j library version previously, these
-                        * classes should exist.
+                        * We have checked for the log4j library version previously, none of
+                        * the following exceptions should happen.
                         */
-                       throw new IllegalStateException();
+               } catch (SecurityException e) {
+                       throw new IllegalStateException(e);
+               } catch (ClassNotFoundException e) {
+                       throw new IllegalStateException(e);
+               } catch (NoSuchMethodException e) {
+                       throw new IllegalStateException(e);
+               } catch (IllegalArgumentException e) {
+                       throw new IllegalStateException(e);
+               } catch (IllegalAccessException e) {
+                       throw new IllegalStateException(e);
+               } catch (InvocationTargetException e) {
+                       throw new IllegalStateException(e);
                }
        }
 
@@ -228,12 +262,22 @@ public class LTTngAgent {
                        Object rootLogger = getRootLoggerMethod.invoke(null, (Object[]) null);
                        removeAppenderMethod.invoke(rootLogger, log4jAppender);
 
-               } catch (ReflectiveOperationException e) {
                        /*
-                        * We were able to attach the appender, we should not have problems
-                        * here either!
+                        * We were able to attach the appender previously, we should not
+                        * have problems here either!
                         */
-                       throw new IllegalStateException();
+               } catch (SecurityException e) {
+                       throw new IllegalStateException(e);
+               } catch (ClassNotFoundException e) {
+                       throw new IllegalStateException(e);
+               } catch (NoSuchMethodException e) {
+                       throw new IllegalStateException(e);
+               } catch (IllegalArgumentException e) {
+                       throw new IllegalStateException(e);
+               } catch (IllegalAccessException e) {
+                       throw new IllegalStateException(e);
+               } catch (InvocationTargetException e) {
+                       throw new IllegalStateException(e);
                }
 
                /* Close the appender */
This page took 0.026101 seconds and 4 git commands to generate.