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/10/30 21:17:21 UTC
svn commit: r1403858 - in /logging/log4j/log4j2/trunk: core/pom.xml
core/src/main/java/org/apache/logging/log4j/core/config/plugins/ResolverUtil.java
src/changes/changes.xml
Author: rgoers
Date: Tue Oct 30 20:17:21 2012
New Revision: 1403858
URL: http://svn.apache.org/viewvc?rev=1403858&view=rev
Log:
LOG4J2-95 - Add support for loading plugins inside the OSGi bundle.
Modified:
logging/log4j/log4j2/trunk/core/pom.xml
logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/plugins/ResolverUtil.java
logging/log4j/log4j2/trunk/src/changes/changes.xml
Modified: logging/log4j/log4j2/trunk/core/pom.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/pom.xml?rev=1403858&r1=1403857&r2=1403858&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/pom.xml (original)
+++ logging/log4j/log4j2/trunk/core/pom.xml Tue Oct 30 20:17:21 2012
@@ -39,6 +39,12 @@
<artifactId>log4j-api</artifactId>
</dependency>
<dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>core</artifactId>
+ <version>4.3.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.2</version>
Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/plugins/ResolverUtil.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/plugins/ResolverUtil.java?rev=1403858&r1=1403857&r2=1403858&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/plugins/ResolverUtil.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/plugins/ResolverUtil.java Tue Oct 30 20:17:21 2012
@@ -19,6 +19,8 @@ package org.apache.logging.log4j.core.co
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.helpers.Loader;
import org.apache.logging.log4j.status.StatusLogger;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.wiring.BundleWiring;
import java.io.File;
import java.io.FileInputStream;
@@ -28,6 +30,7 @@ import java.lang.annotation.Annotation;
import java.net.URI;
import java.net.URL;
import java.net.URLDecoder;
+import java.util.Collection;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Set;
@@ -76,6 +79,8 @@ public class ResolverUtil<T> {
private static final String VFSZIP = "vfszip";
+ private static final String BUNDLE_RESOURCE = "bundleresource";
+
/** The set of matches being accumulated. */
private Set<Class<? extends T>> classMatches = new HashSet<Class<?extends T>>();
@@ -254,6 +259,8 @@ public class ResolverUtil<T> {
URL newURL = new URL(url.getProtocol(), url.getHost(), path);
JarInputStream stream = new JarInputStream(newURL.openStream());
loadImplementationsInJar(test, packageName, path, stream);
+ } else if (BUNDLE_RESOURCE.equals(url.getProtocol())) {
+ loadImplementationsInBundle(test, packageName);
} else {
File file = new File(urlPath);
if (file.isDirectory()) {
@@ -268,6 +275,14 @@ public class ResolverUtil<T> {
}
}
+ private void loadImplementationsInBundle(Test test, String packageName) {
+ Collection<String> list = FrameworkUtil.getBundle(ResolverUtil.class).adapt(BundleWiring.class)
+ .listResources(packageName, "*.class", BundleWiring.LISTRESOURCES_RECURSE);
+ for (String name : list) {
+ addIfMatching(test, name);
+ }
+ }
+
/**
* Finds matches in a physical directory on a filesystem. Examines all
@@ -383,7 +398,7 @@ public class ResolverUtil<T> {
}
} catch (Throwable t) {
LOG.warn("Could not examine class '" + fqn + "' due to a " +
- t.getClass().getName() + " with message: " + t.getMessage());
+ t.getClass().getName() + " with message: " + t.getMessage());
}
}
Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1403858&r1=1403857&r2=1403858&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/src/changes/changes.xml (original)
+++ logging/log4j/log4j2/trunk/src/changes/changes.xml Tue Oct 30 20:17:21 2012
@@ -23,6 +23,9 @@
<body>
<release version="2.0-beta3" date="TBD" description= "Bug fixes and enhancements">
+ <action issue="LOG4J2-95" dev="rgoers" type="fix">
+ Add support for loading plugins inside the OSGi bundle.
+ </action>
<action issue="LOG4J2-85" dev="rgoers" type="update">
Add ThreadContext.push(String format, Object... args)
</action>