Yeah, OSGi is supposed to just be overlaid like this anyhow. I don't even know if the other method of extra bundles even worked properly. From what I know about Jigsaw so far, it's not as powerful as OSGi yet, so it might end up being rather simple to integrate with in comparison.
On 27 April 2014 15:27, Gary Gregory <garydgreg...@gmail.com> wrote: > I for one am glad to see all of this OSGi stuff layered on top of our > current modules instead of separate ones. > > So thank you for that Matt! > > Now let's see what pops up in Java 9 WRT Jigsaw... ;) > > Gary > > > On Sun, Apr 27, 2014 at 2:24 PM, <mattsic...@apache.org> wrote: > >> Author: mattsicker >> Date: Sun Apr 27 18:24:47 2014 >> New Revision: 1590443 >> >> URL: http://svn.apache.org/r1590443 >> Log: >> Add basic OSGi activator class. >> >> - Registers Log4jContextFactory as the LogManager.factory. >> - Tracks future bundle start-ups to find Log4j plugins (still need >> to add code to check existing bundles) via the plugin cache file. >> - Pre-loads plugin classes using proper ClassLoader for future use >> by configurations. >> >> Added: >> >> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/osgi/Activator.java >> (with props) >> Modified: >> logging/log4j/log4j2/trunk/log4j-core/pom.xml >> >> Modified: logging/log4j/log4j2/trunk/log4j-core/pom.xml >> URL: >> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/pom.xml?rev=1590443&r1=1590442&r2=1590443&view=diff >> >> ============================================================================== >> --- logging/log4j/log4j2/trunk/log4j-core/pom.xml (original) >> +++ logging/log4j/log4j2/trunk/log4j-core/pom.xml Sun Apr 27 18:24:47 2014 >> @@ -260,6 +260,7 @@ >> <instructions> >> >> <Bundle-SymbolicName>org.apache.logging.log4j.core</Bundle-SymbolicName> >> >> <Export-Package>org.apache.logging.log4j.core.*</Export-Package> >> + >> >> <Bundle-Activator>org.apache.logging.log4j.core.config.plugins.osgi.Activator</Bundle-Activator> >> </instructions> >> </configuration> >> </plugin> >> >> Added: >> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/osgi/Activator.java >> URL: >> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/osgi/Activator.java?rev=1590443&view=auto >> >> ============================================================================== >> --- >> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/osgi/Activator.java >> (added) >> +++ >> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/osgi/Activator.java >> Sun Apr 27 18:24:47 2014 >> @@ -0,0 +1,75 @@ >> +/* >> + * Licensed to the Apache Software Foundation (ASF) under one or more >> + * contributor license agreements. See the NOTICE file distributed with >> + * this work for additional information regarding copyright ownership. >> + * The ASF licenses this file to You under the Apache License, Version >> 2.0 >> + * (the "License"); you may not use this file except in compliance with >> + * the License. You may obtain a copy of the License at >> + * >> + * http://www.apache.org/licenses/LICENSE-2.0 >> + * >> + * Unless required by applicable law or agreed to in writing, software >> + * distributed under the License is distributed on an "AS IS" BASIS, >> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >> implied. >> + * See the License for the specific language governing permissions and >> + * limitations under the License. >> + */ >> + >> +package org.apache.logging.log4j.core.config.plugins.osgi; >> + >> +import org.apache.logging.log4j.LogManager; >> +import org.apache.logging.log4j.Logger; >> +import org.apache.logging.log4j.core.config.plugins.util.PluginManager; >> +import org.apache.logging.log4j.core.helpers.lang.BundleResourceLoader; >> +import org.apache.logging.log4j.core.impl.Log4jContextFactory; >> +import org.apache.logging.log4j.simple.SimpleLoggerContextFactory; >> +import org.apache.logging.log4j.spi.LoggerContextFactory; >> +import org.apache.logging.log4j.status.StatusLogger; >> +import org.osgi.framework.BundleContext; >> +import org.osgi.framework.BundleEvent; >> +import org.osgi.framework.BundleListener; >> + >> +/** >> + * OSGi BundleActivator. >> + */ >> +public class Activator implements org.osgi.framework.BundleActivator { >> + >> + private static final Logger LOGGER = StatusLogger.getLogger(); >> + >> + @Override >> + public void start(final BundleContext context) throws Exception { >> + registerLoggerContextFactory(); >> + context.addBundleListener(new Listener()); >> + } >> + >> + private void registerLoggerContextFactory() { >> + final LoggerContextFactory current = LogManager.getFactory(); >> + if (!(current instanceof Log4jContextFactory)) { >> + LogManager.setFactory(new Log4jContextFactory()); >> + } >> + } >> + >> + @Override >> + public void stop(final BundleContext context) throws Exception { >> + unregisterLoggerContextFactory(); >> + } >> + >> + private void unregisterLoggerContextFactory() { >> + LogManager.setFactory(new SimpleLoggerContextFactory()); >> + } >> + >> + private static class Listener implements BundleListener { >> + >> + @Override >> + public void bundleChanged(final BundleEvent event) { >> + switch (event.getType()) { >> + case BundleEvent.STARTED: >> + PluginManager.loadPlugins(new >> BundleResourceLoader(event.getBundle())); >> + break; >> + >> + default: >> + break; >> + } >> + } >> + } >> +} >> >> Propchange: >> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/osgi/Activator.java >> >> ------------------------------------------------------------------------------ >> svn:eol-style = native >> >> >> > > > -- > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org > Java Persistence with Hibernate, Second > Edition<http://www.manning.com/bauer3/> > JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> > Spring Batch in Action <http://www.manning.com/templier/> > Blog: http://garygregory.wordpress.com > Home: http://garygregory.com/ > Tweet! http://twitter.com/GaryGregory > -- Matt Sicker <boa...@gmail.com>