From 6ef43b45c7ae11c1859cf969d8e11f2dc53689cc Mon Sep 17 00:00:00 2001 From: Thomas Watson Date: Fri, 11 Mar 2016 16:17:25 -0600 Subject: Bug 486950 - [osgi R7] log service is being updated - fix bugs around formatting and LoggerAdmin Change-Id: I3c183c6996b9f05b206f972b5a63e6202de4c282 Signed-off-by: Thomas Watson --- .../org/eclipse/osgi/internal/log/Arguments.java | 19 +++++---- .../osgi/internal/log/ExtendedLogEntryImpl.java | 5 +-- .../log/ExtendedLogReaderServiceFactory.java | 10 ++--- .../internal/log/ExtendedLogServiceFactory.java | 4 +- .../osgi/internal/log/LoggerContextTargetMap.java | 2 +- .../org/eclipse/osgi/internal/log/LoggerImpl.java | 45 ++++++++++++++-------- 6 files changed, 52 insertions(+), 33 deletions(-) (limited to 'bundles/org.eclipse.osgi/container') diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/Arguments.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/Arguments.java index 9eeb9883b..6308feea1 100644 --- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/Arguments.java +++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/Arguments.java @@ -25,19 +25,24 @@ public class Arguments { ServiceReference context = null; Throwable exception = null; Object object = arguments[arguments.length - 1]; - if (object instanceof Throwable) { + if (object instanceof Throwable || object instanceof ServiceReference) { length--; - exception = (Throwable) object; + if (object instanceof Throwable) { + exception = (Throwable) object; + } else { + context = (ServiceReference) object; + } if (arguments.length > 1) { object = arguments[arguments.length - 2]; - if (object instanceof ServiceReference) { + if ((object instanceof ServiceReference && context == null) || (object instanceof Throwable && exception == null)) { length--; - context = (ServiceReference) object; + if (object instanceof Throwable) { + exception = (Throwable) object; + } else { + context = (ServiceReference) object; + } } } - } else if (object instanceof ServiceReference) { - length--; - context = (ServiceReference) object; } serviceReference = context; throwable = exception; diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/ExtendedLogEntryImpl.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/ExtendedLogEntryImpl.java index 335acf19a..86eac4cc4 100644 --- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/ExtendedLogEntryImpl.java +++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/ExtendedLogEntryImpl.java @@ -55,7 +55,7 @@ public class ExtendedLogEntryImpl implements ExtendedLogEntry, LogEntry { return threadId.longValue(); } - public ExtendedLogEntryImpl(Bundle bundle, String loggerName, Object contextObject, LogLevel logLevelEnum, int level, String message, Throwable throwable) { + public ExtendedLogEntryImpl(Bundle bundle, String loggerName, StackTraceElement stackTraceElement, Object contextObject, LogLevel logLevelEnum, int level, String message, Throwable throwable) { this.time = System.currentTimeMillis(); this.loggerName = loggerName; this.bundle = bundle; @@ -73,8 +73,7 @@ public class ExtendedLogEntryImpl implements ExtendedLogEntry, LogEntry { this.sequenceNumber = nextSequenceNumber++; } - // TODO need to find the calling stack here not just 2 up. - stackTraceElement = currentThread.getStackTrace()[2]; + this.stackTraceElement = stackTraceElement; } public String getLoggerName() { diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/ExtendedLogReaderServiceFactory.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/ExtendedLogReaderServiceFactory.java index b6ef95760..1d00919a2 100644 --- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/ExtendedLogReaderServiceFactory.java +++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/ExtendedLogReaderServiceFactory.java @@ -176,21 +176,21 @@ public class ExtendedLogReaderServiceFactory implements ServiceFactory() { public Void run() { - logPrivileged(bundle, name, context, logLevelEnum, level, message, exception); + logPrivileged(bundle, name, stackTraceElement, context, logLevelEnum, level, message, exception); return null; } }); } else { - logPrivileged(bundle, name, context, logLevelEnum, level, message, exception); + logPrivileged(bundle, name, stackTraceElement, context, logLevelEnum, level, message, exception); } } - void logPrivileged(Bundle bundle, String name, Object context, LogLevel logLevelEnum, int level, String message, Throwable exception) { - LogEntry logEntry = new ExtendedLogEntryImpl(bundle, name, context, logLevelEnum, level, message, exception); + void logPrivileged(Bundle bundle, String name, StackTraceElement stackTraceElement, Object context, LogLevel logLevelEnum, int level, String message, Throwable exception) { + LogEntry logEntry = new ExtendedLogEntryImpl(bundle, name, stackTraceElement, context, logLevelEnum, level, message, exception); storeEntry(logEntry); ArrayMap listenersCopy; listenersLock.readLock(); diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/ExtendedLogServiceFactory.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/ExtendedLogServiceFactory.java index cf92c747e..11feeb46d 100644 --- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/ExtendedLogServiceFactory.java +++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/ExtendedLogServiceFactory.java @@ -80,8 +80,8 @@ public class ExtendedLogServiceFactory implements ServiceFactory