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

Reply via email to