mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Nicolas Capponi
08.16.2013 f2090c0d863b07e3bad8d16a3efddfad6ff77960
refs
author Nicolas Capponi <nicolas.capponi@forgerock.com>
Tuesday, October 8, 2013 16:16 +0200
committer Nicolas Capponi <nicolas.capponi@forgerock.com>
Tuesday, October 8, 2013 16:16 +0200
commitf2090c0d863b07e3bad8d16a3efddfad6ff77960
tree c60a20fe9fa0aa269962c221ae50965a4bd93a37 tree | zip | gz
parent 4936231f6b43a59233dc4ee909d9a2eeb3ced31a view | diff
Fix OPENDJ-346 Consider using java.util.ServiceLoader for loading extensions and requesting transport implementations
This a a part of OPENDJ-175 - Decouple OpenDJ LDAP SDK from Grizzly
CR-2440

* LDAPConnectionFactory/LDAPListener load its implementation via java.util.ServiceLoader, the JDK loader facility.
An implementation is given by a transport provider.

Common code to load a provider is implemented in StaticUtils#getProvider

* New package org.forgerock.opendj.ldap.spi that contains interfaces for providers and implementations.
TransportProvider interface which provides:
- LDAPConnectionFactoryImpl, implementation for LDAPConnectionFactory
- LDAPListenerImpl, implementation for LDAPListener

* There is one transport provider based on Grizzly: GrizzlyTransportProvider class which provides the two implementation classes
- GrizzlyLDAPConnectionFactory
- GrizzlyLDAPListener
In order to locate transport provider to use, the file 'org.forgerock.opendj.ldap.spi.TransportProvider'
must be available in the classpath in META-INF/services directory.

That file is included with the value "com.forgerock.opendj.ldap.GrizzlyTransportProvider" to have Grizzly as the default provider

* LDAPOptions and LDAPListenerOptions:
- have no more TCPNIOTransport option,
- have two new options transportProvider and providerClassLoader to tune loading of providers.
- transportProvider allow to require a given provider (eg, "Grizzly"), otherwise the first provider found will be used.
- providerClassLoader allow to provide a class loader to use when several class loaders are used by an application.
ServiceLoader needs to load both provider-configuration file and provider class from the same class loader,
so there are case where you must provide the correct class loader to find the provider class.

* Fixed all the tests in opendj-ldap-sdk, because they suffer from the class loader problem if not providing the right class loader
- Systematically provide the class loader used by test class when creating LDAPConnectionFactory or LDAPListener
- Added utility methods in TestCaseUtils class to ease the use of custom class loader

* Fixed tests in modules: opendj-ldap-toolkit and opendj-server2x-adapter
- Same fix than for opendj-ldap-sdk
- Added new TestCaseUtils.java class in both modules to hold utility methods

10 files added
4 files renamed
16 files modified
1306 ■■■■ changed files
opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/GrizzlyLDAPConnection.java 8 ●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/GrizzlyLDAPConnectionFactory.java 50 ●●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/GrizzlyLDAPListener.java 45 ●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/GrizzlyTransportProvider.java 81 ●●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPClientFilter.java 36 ●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPServerFilter.java 4 ●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/TimeoutChecker.java 10 ●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/util/StaticUtils.java 46 ●●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/LDAPConnectionFactory.java 41 ●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/LDAPListener.java 34 ●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/LDAPListenerOptions.java 114 ●●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/LDAPOptions.java 133 ●●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/ProviderNotFoundException.java 76 ●●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/spi/LDAPConnectionFactoryImpl.java 52 ●●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/spi/LDAPListenerImpl.java 58 ●●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/spi/Provider.java 45 ●●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/spi/TransportProvider.java 79 ●●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/spi/package-info.java 31 ●●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/main/resources/META-INF/services/org.forgerock.opendj.ldap.spi.TransportProvider 26 ●●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/test/java/com/forgerock/opendj/ldap/GrizzlyLDAPConnectionTestCase.java 13 ●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/ConnectionFactoryTestCase.java 41 ●●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/LDAPConnectionFactoryTestCase.java 22 ●●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/LDAPListenerTestCase.java 94 ●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/LDAPServer.java 6 ●●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/TestCaseUtils.java 22 ●●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/ConnectionFactoryProvider.java 20 ●●●●● diff | view | raw | blame | history
opendj3/opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/ConnectionFactoryProviderTest.java 4 ●●● diff | view | raw | blame | history
opendj3/opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/TestCaseUtils.java 47 ●●●●● diff | view | raw | blame | history
opendj3/opendj-server2x-adapter/src/test/java/org/forgerock/opendj/adapter/server2x/AdaptersTestCase.java 21 ●●●●● diff | view | raw | blame | history
opendj3/opendj-server2x-adapter/src/test/java/org/forgerock/opendj/adapter/server2x/TestCaseUtils.java 47 ●●●●● diff | view | raw | blame | history