X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=liblttng-ust-java-agent%2Fjava%2Flttng-ust-agent-common%2Forg%2Flttng%2Fust%2Fagent%2FLTTngAgent.java;h=c98301d738b8aa3a81f17ce240e687c88a047794;hb=502d6e0f22a4f181d278371b63ce301953c6639a;hp=3c9a7997d558950d40064130c18f2a21596356bd;hpb=d60dfbe48a0ceff16852f46419bcbc405502c61d;p=lttng-ust.git diff --git a/liblttng-ust-java-agent/java/lttng-ust-agent-common/org/lttng/ust/agent/LTTngAgent.java b/liblttng-ust-java-agent/java/lttng-ust-agent-common/org/lttng/ust/agent/LTTngAgent.java index 3c9a7997..c98301d7 100644 --- a/liblttng-ust-java-agent/java/lttng-ust-agent-common/org/lttng/ust/agent/LTTngAgent.java +++ b/liblttng-ust-java-agent/java/lttng-ust-agent-common/org/lttng/ust/agent/LTTngAgent.java @@ -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 */