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]
