This is an automated email from the ASF dual-hosted git repository. chetanm pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-commons-log.git
commit f553c6022e281bd1e571198bba1c4436d6686dfa Author: Chetan Mehrotra <[email protected]> AuthorDate: Tue Oct 31 17:33:04 2017 +0530 SLING-3049 - Make Logback Stacktrace Packaging data support OSGi aware Support for including BSN also along with version --- .../internal/stacktrace/OSGiAwareExceptionHandling.java | 6 +++--- .../logback/internal/stacktrace/PackageInfoCollector.java | 14 +++++++++----- .../commons/log/logback/integration/ITPackagingData.java | 5 +++-- .../log/logback/integration/PackagingDataTestUtil.java | 3 ++- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/apache/sling/commons/log/logback/internal/stacktrace/OSGiAwareExceptionHandling.java b/src/main/java/org/apache/sling/commons/log/logback/internal/stacktrace/OSGiAwareExceptionHandling.java index 45c8aeb..165d65a 100644 --- a/src/main/java/org/apache/sling/commons/log/logback/internal/stacktrace/OSGiAwareExceptionHandling.java +++ b/src/main/java/org/apache/sling/commons/log/logback/internal/stacktrace/OSGiAwareExceptionHandling.java @@ -51,9 +51,9 @@ public class OSGiAwareExceptionHandling extends EnsureExceptionHandling { @Override protected void extraData(StringBuilder builder, StackTraceElementProxy step) { if (step != null) { - String version = collector.getVersion(step.getStackTraceElement().getClassName()); - if (version != null) { - builder.append(" [").append(version).append(']'); + String bundleInfo = collector.getBundleInfo(step.getStackTraceElement().getClassName()); + if (bundleInfo != null) { + builder.append(" [").append(bundleInfo).append(']'); } } } diff --git a/src/main/java/org/apache/sling/commons/log/logback/internal/stacktrace/PackageInfoCollector.java b/src/main/java/org/apache/sling/commons/log/logback/internal/stacktrace/PackageInfoCollector.java index 36cde17..e80eed1 100644 --- a/src/main/java/org/apache/sling/commons/log/logback/internal/stacktrace/PackageInfoCollector.java +++ b/src/main/java/org/apache/sling/commons/log/logback/internal/stacktrace/PackageInfoCollector.java @@ -26,7 +26,7 @@ import org.osgi.framework.hooks.weaving.WeavingHook; import org.osgi.framework.hooks.weaving.WovenClass; public class PackageInfoCollector implements WeavingHook{ - private final Map<String, String> pkgVersionMapping = new ConcurrentHashMap<>(); + private final Map<String, String> pkgInfoMapping = new ConcurrentHashMap<>(); @Override public void weave(WovenClass wovenClass) { @@ -34,19 +34,23 @@ public class PackageInfoCollector implements WeavingHook{ } public int size() { - return pkgVersionMapping.size(); + return pkgInfoMapping.size(); } void add(Bundle bundle, String className) { - pkgVersionMapping.put(getPackageName(className), bundle.getVersion().toString()); + pkgInfoMapping.put(getPackageName(className), getInfo(bundle)); } - String getVersion(String className) { + String getBundleInfo(String className) { if (className == null) { return null; } String packageName = getPackageName(className); - return pkgVersionMapping.get(packageName); + return pkgInfoMapping.get(packageName); + } + + static String getInfo(Bundle bundle) { + return bundle.getSymbolicName() + ":" + bundle.getVersion(); } static String getPackageName(String className) { diff --git a/src/test/java/org/apache/sling/commons/log/logback/integration/ITPackagingData.java b/src/test/java/org/apache/sling/commons/log/logback/integration/ITPackagingData.java index adc44ca..e30e976 100644 --- a/src/test/java/org/apache/sling/commons/log/logback/integration/ITPackagingData.java +++ b/src/test/java/org/apache/sling/commons/log/logback/integration/ITPackagingData.java @@ -51,8 +51,9 @@ import org.osgi.util.tracker.ServiceTracker; import org.slf4j.LoggerFactory; import static org.apache.sling.commons.log.logback.integration.ITConfigAdminSupport.PID; +import static org.apache.sling.commons.log.logback.integration.PackagingDataTestUtil.TEST_BUNDLE_NAME; +import static org.apache.sling.commons.log.logback.integration.PackagingDataTestUtil.TEST_BUNDLE_VERSION; import static org.apache.sling.commons.log.logback.internal.LogConfigManager.FACTORY_PID_CONFIGS; -import static org.apache.sling.commons.log.logback.internal.LogConfigManager.LOGBACK_FILE; import static org.apache.sling.commons.log.logback.internal.LogConfigManager.LOG_FILE; import static org.apache.sling.commons.log.logback.internal.LogConfigManager.LOG_LEVEL; import static org.apache.sling.commons.log.logback.internal.LogConfigManager.LOG_LOGGERS; @@ -171,7 +172,7 @@ public class ITPackagingData extends LogTestBase { } } assertNotNull(testLine); - assertThat(testLine, containsString("["+PackagingDataTestUtil.TEST_BUNDLE_VERSION+"]")); + assertThat(testLine, containsString("["+ TEST_BUNDLE_NAME+":"+TEST_BUNDLE_VERSION+"]")); //Check that default logback support is still disabled assertFalse(((LoggerContext) LoggerFactory.getILoggerFactory()).isPackagingDataEnabled()); diff --git a/src/test/java/org/apache/sling/commons/log/logback/integration/PackagingDataTestUtil.java b/src/test/java/org/apache/sling/commons/log/logback/integration/PackagingDataTestUtil.java index db5c5ed..05de164 100644 --- a/src/test/java/org/apache/sling/commons/log/logback/integration/PackagingDataTestUtil.java +++ b/src/test/java/org/apache/sling/commons/log/logback/integration/PackagingDataTestUtil.java @@ -36,11 +36,12 @@ import static org.ops4j.pax.tinybundles.core.TinyBundles.withBnd; public class PackagingDataTestUtil { public static final String TEST_BUNDLE_VERSION = "0.0.7"; + public static final String TEST_BUNDLE_NAME = "packagedatatest"; public static InputStream createTestBundle() { return bundle() .set(Constants.BUNDLE_ACTIVATOR, PackageDataActivator.class.getName()) - .set(Constants.BUNDLE_SYMBOLICNAME, "packagedatatest") + .set(Constants.BUNDLE_SYMBOLICNAME, TEST_BUNDLE_NAME) .set(Constants.BUNDLE_VERSION, TEST_BUNDLE_VERSION) .add(PackageDataActivator.class, InnerClassStrategy.NONE) .add(TestRunnable.class, InnerClassStrategy.NONE) -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
