More complex than OSGi would be painful ;)

Gary


On Sun, Apr 27, 2014 at 4:33 PM, Matt Sicker <boa...@gmail.com> wrote:

> 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>
>



-- 
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

Reply via email to