Yeah, been doing all my well overdue JNDI stuff. Not putting it in the
top level pom was an oversight. I guess I'm still getting to grips
with maven, even after a year.

Alasdair

On 2 December 2010 22:17, Guillaume Nodet <[email protected]> wrote:
> Forget that, i've just seen you added it in the build
>
> On Thu, Dec 2, 2010 at 14:16, Guillaume Nodet <[email protected]> wrote:
>> So why is that not part of the build if it's supposed to be maintained ?
>>
>> On Thu, Dec 2, 2010 at 14:10,  <[email protected]> wrote:
>>> Author: not
>>> Date: Thu Dec  2 22:09:59 2010
>>> New Revision: 1041608
>>>
>>> URL: http://svn.apache.org/viewvc?rev=1041608&view=rev
>>> Log:
>>> ARIES-431 Reintroducing the jndi-legacy-support which was removed. Tagging 
>>> with the original JIRA used to provide the code.
>>>
>>> Added:
>>>    incubator/aries/trunk/jndi/jndi-legacy-support/pom.xml
>>>    
>>> incubator/aries/trunk/jndi/jndi-legacy-support/src/main/java/org/apache/aries/jndi/legacy/support/Activator.java
>>>    
>>> incubator/aries/trunk/jndi/jndi-legacy-support/src/main/java/org/apache/aries/jndi/legacy/support/LegacyInitialContextFinder.java
>>> Modified:
>>>    incubator/aries/trunk/jndi/jndi-legacy-support/   (props changed)
>>>
>>> Propchange: incubator/aries/trunk/jndi/jndi-legacy-support/
>>> ------------------------------------------------------------------------------
>>> --- svn:ignore (original)
>>> +++ svn:ignore Thu Dec  2 22:09:59 2010
>>> @@ -1 +1,4 @@
>>>  target
>>> +.settings
>>> +.classpath
>>> +.project
>>>
>>> Added: incubator/aries/trunk/jndi/jndi-legacy-support/pom.xml
>>> URL: 
>>> http://svn.apache.org/viewvc/incubator/aries/trunk/jndi/jndi-legacy-support/pom.xml?rev=1041608&view=auto
>>> ==============================================================================
>>> --- incubator/aries/trunk/jndi/jndi-legacy-support/pom.xml (added)
>>> +++ incubator/aries/trunk/jndi/jndi-legacy-support/pom.xml Thu Dec  2 
>>> 22:09:59 2010
>>> @@ -0,0 +1,52 @@
>>> +<!--
>>> + 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.
>>> +-->
>>> +<project xmlns="http://maven.apache.org/POM/4.0.0"; 
>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
>>> http://maven.apache.org/maven-v4_0_0.xsd";>
>>> +    <modelVersion>4.0.0</modelVersion>
>>> +    <parent>
>>> +        <groupId>org.apache.aries.jndi</groupId>
>>> +        <artifactId>jndi</artifactId>
>>> +        <version>0.3-incubating-SNAPSHOT</version>
>>> +    </parent>
>>> +
>>> +    <artifactId>org.apache.aries.jndi.legacy.support</artifactId>
>>> +    <packaging>bundle</packaging>
>>> +    <name>Apache Aries JNDI Support for Legacy Runtimes</name>
>>> +    <description>
>>> +      This bundle contains support for legacy runtimes which rely on the 
>>> thread context classloader to load JNDI implementations. It is intended for 
>>> use with OSGi Web Container implementations which do not correctly work 
>>> with the OSGi JNDI Service specification.
>>> +    </description>
>>> +
>>> +    <properties>
>>> +        <aries.osgi.export.pkg/>
>>> +        <aries.osgi.private.pkg>
>>> +            org.apache.aries.jndi.legacy.support
>>> +        </aries.osgi.private.pkg>
>>> +        <aries.osgi.activator>
>>> +            org.apache.aries.jndi.legacy.support.Activator
>>> +        </aries.osgi.activator>
>>> +    </properties>
>>> +
>>> +    <dependencies>
>>> +        <dependency>
>>> +            <groupId>org.osgi</groupId>
>>> +            <artifactId>org.osgi.core</artifactId>
>>> +            <scope>provided</scope>
>>> +        </dependency>
>>> +    </dependencies>
>>> +
>>> +</project>
>>>
>>> Added: 
>>> incubator/aries/trunk/jndi/jndi-legacy-support/src/main/java/org/apache/aries/jndi/legacy/support/Activator.java
>>> URL: 
>>> http://svn.apache.org/viewvc/incubator/aries/trunk/jndi/jndi-legacy-support/src/main/java/org/apache/aries/jndi/legacy/support/Activator.java?rev=1041608&view=auto
>>> ==============================================================================
>>> --- 
>>> incubator/aries/trunk/jndi/jndi-legacy-support/src/main/java/org/apache/aries/jndi/legacy/support/Activator.java
>>>  (added)
>>> +++ 
>>> incubator/aries/trunk/jndi/jndi-legacy-support/src/main/java/org/apache/aries/jndi/legacy/support/Activator.java
>>>  Thu Dec  2 22:09:59 2010
>>> @@ -0,0 +1,19 @@
>>> +package org.apache.aries.jndi.legacy.support;
>>> +
>>> +import javax.naming.spi.InitialContextFactoryBuilder;
>>> +
>>> +import org.osgi.framework.BundleActivator;
>>> +import org.osgi.framework.BundleContext;
>>> +
>>> +public class Activator implements BundleActivator {
>>> +
>>> +       @Override
>>> +       public void start(BundleContext context) throws Exception
>>> +       {
>>> +               
>>> context.registerService(InitialContextFactoryBuilder.class.getName(), new 
>>> LegacyInitialContextFinder(), null);
>>> +       }
>>> +
>>> +       @Override
>>> +       public void stop(BundleContext context) throws Exception { }
>>> +
>>> +}
>>>
>>> Added: 
>>> incubator/aries/trunk/jndi/jndi-legacy-support/src/main/java/org/apache/aries/jndi/legacy/support/LegacyInitialContextFinder.java
>>> URL: 
>>> http://svn.apache.org/viewvc/incubator/aries/trunk/jndi/jndi-legacy-support/src/main/java/org/apache/aries/jndi/legacy/support/LegacyInitialContextFinder.java?rev=1041608&view=auto
>>> ==============================================================================
>>> --- 
>>> incubator/aries/trunk/jndi/jndi-legacy-support/src/main/java/org/apache/aries/jndi/legacy/support/LegacyInitialContextFinder.java
>>>  (added)
>>> +++ 
>>> incubator/aries/trunk/jndi/jndi-legacy-support/src/main/java/org/apache/aries/jndi/legacy/support/LegacyInitialContextFinder.java
>>>  Thu Dec  2 22:09:59 2010
>>> @@ -0,0 +1,54 @@
>>> +package org.apache.aries.jndi.legacy.support;
>>> +
>>> +import java.security.AccessController;
>>> +import java.security.PrivilegedAction;
>>> +import java.util.Hashtable;
>>> +
>>> +import javax.naming.Context;
>>> +import javax.naming.NamingException;
>>> +import javax.naming.spi.InitialContextFactory;
>>> +import javax.naming.spi.InitialContextFactoryBuilder;
>>> +
>>> +/**
>>> + * Some OSGi based server runtimes, such as jetty OSGi and virgo rely on 
>>> the thread context classloader
>>> + * to make their JNDI InitialContextFactory's available in OSGi, rather 
>>> than relying on the OSGi JNDI spec.
>>> + * This is a little bizare, but perhaps is just a point in time statement. 
>>> In any case to support them
>>> + * using Aries JNDI we have this ICFB which uses the Thread context 
>>> classloader. We don't ship it in the
>>> + * jndi uber bundle because it is only for these runtimes which haven't 
>>> caught up with the latest OSGi specs.
>>> + * Normally we want to enourage the use of the OSGi spec, but this is a 
>>> backstop for those wanting to use
>>> + * Aries JNDI and one of these runtimes.
>>> + *
>>> + */
>>> +public class LegacyInitialContextFinder implements 
>>> InitialContextFactoryBuilder {
>>> +
>>> +       @Override
>>> +       public InitialContextFactory createInitialContextFactory(
>>> +                       Hashtable<?, ?> environment) throws NamingException
>>> +       {
>>> +               String icf = (String) 
>>> environment.get(Context.INITIAL_CONTEXT_FACTORY);
>>> +               if (icf != null) {
>>> +                       ClassLoader cl = AccessController.doPrivileged(new 
>>> PrivilegedAction<ClassLoader>() {
>>> +                               @Override
>>> +                               public ClassLoader run() {
>>> +                                       return 
>>> Thread.currentThread().getContextClassLoader();
>>> +                               }
>>> +                       });
>>> +
>>> +                       try {
>>> +                               Class<?> icfClass = Class.forName(icf, 
>>> false, cl);
>>> +                               if 
>>> (InitialContextFactory.class.isAssignableFrom(icfClass)) {
>>> +                                       return (InitialContextFactory) 
>>> icfClass.newInstance();
>>> +                               }
>>> +                       } catch (ClassNotFoundException e) {
>>> +                               // If the ICF doesn't exist this is 
>>> expected. Should return null so the next builder is queried.
>>> +                       } catch (InstantiationException e) {
>>> +                               // If the ICF couldn't be created just 
>>> ignore and return null.
>>> +                       } catch (IllegalAccessException e) {
>>> +                               // If the default constructor is private, 
>>> just ignore and return null.
>>> +                       }
>>> +               }
>>> +
>>> +               return null;
>>> +       }
>>> +
>>> +}
>>>
>>>
>>>
>>
>>
>>
>> --
>> Cheers,
>> Guillaume Nodet
>> ------------------------
>> Blog: http://gnodet.blogspot.com/
>> ------------------------
>> Open Source SOA
>> http://fusesource.com
>>
>
>
>
> --
> Cheers,
> Guillaume Nodet
> ------------------------
> Blog: http://gnodet.blogspot.com/
> ------------------------
> Open Source SOA
> http://fusesource.com
>



-- 
Alasdair Nottingham
[email protected]

Reply via email to