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
