diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index 8c5398a..a7f0750 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -15,7 +15,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- java-version: [ 8, 11 ]
+ java-version: [ 11, 17 ]
steps:
- uses: actions/checkout@v2
@@ -46,11 +46,11 @@ jobs:
needs: build
steps:
- uses: actions/checkout@v2
- - name: Set up Java 8
+ - name: Set up Java 11
uses: actions/setup-java@v3
with:
distribution: 'zulu'
- java-version: 8
+ java-version: 11
server-id: sonatype-nexus-snapshots
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
diff --git a/embedded-ldap-core/pom.xml b/embedded-ldap-core/pom.xml
new file mode 100644
index 0000000..7e6b4ad
--- /dev/null
+++ b/embedded-ldap-core/pom.xml
@@ -0,0 +1,33 @@
+
+
+
+ org.zapodot
+ embedded-ldap-junit-parent
+ 0.9.1-SNAPSHOT
+
+ 4.0.0
+
+ embedded-ldap-core
+
+
+
+ com.unboundid
+ unboundid-ldapsdk
+
+
+ net.bytebuddy
+ byte-buddy
+
+
+ com.google.guava
+ guava
+
+
+ org.slf4j
+ slf4j-api
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/org/zapodot/junit/ldap/EmbeddedLdapRuleBuilder.java b/embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/AbstractEmbeddedLdapSupportBuilder.java
old mode 100755
new mode 100644
similarity index 74%
rename from src/main/java/org/zapodot/junit/ldap/EmbeddedLdapRuleBuilder.java
rename to embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/AbstractEmbeddedLdapSupportBuilder.java
index 83ba6f5..d83c90b
--- a/src/main/java/org/zapodot/junit/ldap/EmbeddedLdapRuleBuilder.java
+++ b/embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/AbstractEmbeddedLdapSupportBuilder.java
@@ -9,7 +9,6 @@
import com.unboundid.ldap.sdk.schema.Schema;
import com.unboundid.ldif.LDIFException;
import org.zapodot.junit.ldap.internal.AuthenticationConfiguration;
-import org.zapodot.junit.ldap.internal.EmbeddedLdapRuleImpl;
import javax.net.ssl.SSLSocketFactory;
import java.io.File;
@@ -22,53 +21,38 @@
import java.util.List;
import java.util.Objects;
-/**
- * A builder providing a fluent way of defining EmbeddedLdapRule instances
- */
-public class EmbeddedLdapRuleBuilder {
-
+public abstract class AbstractEmbeddedLdapSupportBuilder {
public static final String DEFAULT_DOMAIN = "dc=example,dc=com";
public static final String DEFAULT_BIND_DSN = "cn=Directory manager";
public static final String DEFAULT_BIND_CREDENTIALS = "password";
public static final String LDAP_SERVER_LISTENER_NAME = "test-listener";
public static final int MIN_PORT_EXCLUSIVE = 0;
public static final int MAX_PORT_EXCLUSIVE = 65535;
- private List domainDsn = new LinkedList<>();
-
- private String bindDSN = DEFAULT_BIND_DSN;
+ protected List domainDsn = new LinkedList<>();
- private String bindCredentials = DEFAULT_BIND_CREDENTIALS;
+ protected String bindDSN = DEFAULT_BIND_DSN;
- private List ldifsToImport = new LinkedList<>();
+ protected String bindCredentials = DEFAULT_BIND_CREDENTIALS;
- private List schemaLdifs = new LinkedList<>();
+ protected List ldifsToImport = new LinkedList<>();
- private boolean addDefaultSchema = true;
+ protected List schemaLdifs = new LinkedList<>();
- private Integer bindPort = 0;
+ protected boolean addDefaultSchema = true;
- private InetAddress bindAddress = InetAddress.getLoopbackAddress();
+ protected Integer bindPort = 0;
- private AuthenticationConfiguration authenticationConfiguration;
+ protected InetAddress bindAddress = InetAddress.getLoopbackAddress();
- private InMemoryListenerConfig listenerConfig = null;
+ protected AuthenticationConfiguration authenticationConfiguration;
- private boolean useTls = false;
- private SSLSocketFactory socketFactory = null;
+ protected InMemoryListenerConfig listenerConfig = null;
- private Integer maxSizeLimit = null;
+ protected boolean useTls = false;
+ protected SSLSocketFactory socketFactory = null;
- public EmbeddedLdapRuleBuilder() {
- }
+ protected Integer maxSizeLimit = null;
- /**
- * Creates a new builder
- *
- * @return a new EmbeddedLdapRuleBuilder instance
- */
- public static EmbeddedLdapRuleBuilder newInstance() {
- return new EmbeddedLdapRuleBuilder();
- }
/**
* Sets a domainDsn to be used. May be multiple values. If not set, it will default to the value of the {@link #DEFAULT_DOMAIN DEFAULT_DOMAIN} field
@@ -76,7 +60,7 @@ public static EmbeddedLdapRuleBuilder newInstance() {
* @param domainDsn a valid DSN string
* @return same EmbeddedLdapRuleBuilder instance with the domainDsn field set
*/
- public EmbeddedLdapRuleBuilder usingDomainDsn(final String domainDsn) {
+ public AbstractEmbeddedLdapSupportBuilder usingDomainDsn(final String domainDsn) {
this.domainDsn.add(domainDsn);
return this;
}
@@ -87,7 +71,7 @@ public EmbeddedLdapRuleBuilder usingDomainDsn(final String domainDsn) {
* @param bindDSN a valid DSN string
* @return same EmbeddedLdapRuleBuilder instance with the bindDSN field set
*/
- public EmbeddedLdapRuleBuilder usingBindDSN(final String bindDSN) {
+ public AbstractEmbeddedLdapSupportBuilder usingBindDSN(final String bindDSN) {
this.bindDSN = bindDSN;
return this;
}
@@ -98,7 +82,7 @@ public EmbeddedLdapRuleBuilder usingBindDSN(final String bindDSN) {
* @param bindCredentials a password string
* @return same EmbeddedLdapRuleBuilder instance with the bindCredentials field set
*/
- public EmbeddedLdapRuleBuilder usingBindCredentials(final String bindCredentials) {
+ public AbstractEmbeddedLdapSupportBuilder usingBindCredentials(final String bindCredentials) {
this.bindCredentials = bindCredentials;
return this;
}
@@ -111,7 +95,7 @@ public EmbeddedLdapRuleBuilder usingBindCredentials(final String bindCredentials
* @throws IllegalArgumentException if the provided value for port is not between @{link MIN_PORT_EXCLUSIVE}
* and @{MAX_PORT_EXCLUSIVE} (exclusive)
*/
- public EmbeddedLdapRuleBuilder bindingToPort(final int port) {
+ public AbstractEmbeddedLdapSupportBuilder bindingToPort(final int port) {
if ((port < MIN_PORT_EXCLUSIVE) || (port > MAX_PORT_EXCLUSIVE)) {
throw new IllegalArgumentException(String.format("Value \"%s\" is not a valid port number", port));
}
@@ -126,7 +110,7 @@ public EmbeddedLdapRuleBuilder bindingToPort(final int port) {
* @return same EmbeddedLdapRuleBuilder instance with the bindAddress field set
* @throws IllegalArgumentException if the value provided for \"address\" is invalid
*/
- public EmbeddedLdapRuleBuilder bindingToAddress(final String address) {
+ public AbstractEmbeddedLdapSupportBuilder bindingToAddress(final String address) {
Objects.requireNonNull(address);
try {
final InetAddress addressByName = InetAddress.getByName(address);
@@ -137,7 +121,7 @@ public EmbeddedLdapRuleBuilder bindingToAddress(final String address) {
return this;
}
- public EmbeddedLdapRuleBuilder withMaxSizeLimit(final int maxSizeLimit) {
+ public AbstractEmbeddedLdapSupportBuilder withMaxSizeLimit(final int maxSizeLimit) {
this.maxSizeLimit = Integer.valueOf(maxSizeLimit);
return this;
}
@@ -147,7 +131,7 @@ public EmbeddedLdapRuleBuilder withMaxSizeLimit(final int maxSizeLimit) {
*
* @return same EmbeddedLdapRuleBuilder instance with the withoutDefaultSchema field set to FALSE
*/
- public EmbeddedLdapRuleBuilder withoutDefaultSchema() {
+ public AbstractEmbeddedLdapSupportBuilder withoutDefaultSchema() {
this.addDefaultSchema = false;
return this;
}
@@ -158,7 +142,7 @@ public EmbeddedLdapRuleBuilder withoutDefaultSchema() {
* @param ldifSchemaFiles LDIF-files containing schema element definitions
* @return same EmbeddedLdapRuleBuilder with the given LDIF-files added to the internal schema file collection.
*/
- public EmbeddedLdapRuleBuilder withSchema(final String... ldifSchemaFiles) {
+ public AbstractEmbeddedLdapSupportBuilder withSchema(final String... ldifSchemaFiles) {
this.schemaLdifs.addAll(Arrays.asList(ldifSchemaFiles));
return this;
}
@@ -169,19 +153,19 @@ public EmbeddedLdapRuleBuilder withSchema(final String... ldifSchemaFiles) {
* @param ldifFiles LDIF-files to import
* @return same EmbeddedLdapRuleBuilder instance with the provided ldifFiles added to the list of LDIF files to import
*/
- public EmbeddedLdapRuleBuilder importingLdifs(final String... ldifFiles) {
+ public AbstractEmbeddedLdapSupportBuilder importingLdifs(final String... ldifFiles) {
if (ldifFiles != null) {
ldifsToImport.addAll(Arrays.asList(ldifFiles));
}
return this;
}
- public EmbeddedLdapRuleBuilder withListener(InMemoryListenerConfig listenerConfig) {
+ public AbstractEmbeddedLdapSupportBuilder withListener(InMemoryListenerConfig listenerConfig) {
this.listenerConfig = listenerConfig;
return this;
}
- public EmbeddedLdapRuleBuilder useTls(boolean useTls) {
+ public AbstractEmbeddedLdapSupportBuilder useTls(boolean useTls) {
this.useTls = useTls;
return this;
}
@@ -191,14 +175,10 @@ public EmbeddedLdapRuleBuilder useTls(boolean useTls) {
*
* @return a new EmbeddedLdapRule instance
*/
- public EmbeddedLdapRule build() {
- Objects.requireNonNull(bindDSN, "\"bindDSN\" can not be null");
- return EmbeddedLdapRuleImpl.createForConfiguration(createInMemoryServerConfiguration(),
- authenticationConfiguration,
- ldifsToImport, useTls, socketFactory);
- }
+ abstract public T build();
- private InMemoryDirectoryServerConfig createInMemoryServerConfiguration() {
+
+ protected InMemoryDirectoryServerConfig createInMemoryServerConfiguration() {
try {
final InMemoryDirectoryServerConfig inMemoryDirectoryServerConfig =
new InMemoryDirectoryServerConfig(domainDsnArray());
@@ -210,10 +190,10 @@ private InMemoryDirectoryServerConfig createInMemoryServerConfiguration() {
if (listenerConfig == null) {
listenerConfig = InMemoryListenerConfig.createLDAPConfig(
- LDAP_SERVER_LISTENER_NAME,
- bindAddress,
- bindPort,
- null);
+ LDAP_SERVER_LISTENER_NAME,
+ bindAddress,
+ bindPort,
+ null);
}
inMemoryDirectoryServerConfig.setListenerConfigs(listenerConfig);
inMemoryDirectoryServerConfig.setSchema(customSchema());
@@ -243,8 +223,8 @@ private Schema customSchema() {
final Schema initialSchema = (addDefaultSchema ? Schema.getDefaultStandardSchema() : null);
if (!schemaFiles.isEmpty()) {
final Schema customSchema = initialSchema == null
- ? Schema.getSchema(schemaFiles)
- : Schema.mergeSchemas(initialSchema, Schema.getSchema(schemaFiles));
+ ? Schema.getSchema(schemaFiles)
+ : Schema.mergeSchemas(initialSchema, Schema.getSchema(schemaFiles));
return customSchema;
} else {
return null;
@@ -278,8 +258,9 @@ public File apply(final String input) {
}));
}
- public EmbeddedLdapRuleBuilder withSocketFactory(SSLSocketFactory socketFactory) {
+ public AbstractEmbeddedLdapSupportBuilder withSocketFactory(SSLSocketFactory socketFactory) {
this.socketFactory = socketFactory;
return this;
}
+
}
diff --git a/src/main/java/org/zapodot/junit/ldap/internal/AuthenticationConfiguration.java b/embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/AuthenticationConfiguration.java
similarity index 100%
rename from src/main/java/org/zapodot/junit/ldap/internal/AuthenticationConfiguration.java
rename to embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/AuthenticationConfiguration.java
diff --git a/src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextInterceptor.java b/embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextInterceptor.java
similarity index 100%
rename from src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextInterceptor.java
rename to embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextInterceptor.java
diff --git a/src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextProxy.java b/embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextProxy.java
similarity index 100%
rename from src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextProxy.java
rename to embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextProxy.java
diff --git a/src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextProxyFactory.java b/embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextProxyFactory.java
similarity index 98%
rename from src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextProxyFactory.java
rename to embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextProxyFactory.java
index 9f50508..76ae1fd 100755
--- a/src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextProxyFactory.java
+++ b/embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextProxyFactory.java
@@ -98,10 +98,10 @@ private static Constructor extends Context> getDeclaredConstructor() {
public static DirContext asDelegatingDirContext(final InitialDirContext initialDirContext) {
try {
- final DirContext dirContext = DIR_CONTEXT_PROXY_TYPE.newInstance();
+ final DirContext dirContext = DIR_CONTEXT_PROXY_TYPE.getDeclaredConstructor().newInstance();
((DirContextProxy) dirContext).setDelegatedDirContext(initialDirContext);
return dirContext;
- } catch (InstantiationException | IllegalAccessException e) {
+ } catch (InstantiationException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) {
throw new IllegalStateException("Could not wrap DirContext", e);
}
}
diff --git a/src/main/java/org/zapodot/junit/ldap/internal/jndi/DirContextProxy.java b/embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/jndi/DirContextProxy.java
similarity index 100%
rename from src/main/java/org/zapodot/junit/ldap/internal/jndi/DirContextProxy.java
rename to embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/jndi/DirContextProxy.java
diff --git a/src/main/java/org/zapodot/junit/ldap/internal/package-info.java b/embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/package-info.java
similarity index 100%
rename from src/main/java/org/zapodot/junit/ldap/internal/package-info.java
rename to embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/package-info.java
diff --git a/src/main/java/org/zapodot/junit/ldap/internal/unboundid/LDAPConnectionProxy.java b/embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/unboundid/LDAPConnectionProxy.java
similarity index 100%
rename from src/main/java/org/zapodot/junit/ldap/internal/unboundid/LDAPConnectionProxy.java
rename to embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/unboundid/LDAPConnectionProxy.java
diff --git a/src/main/java/org/zapodot/junit/ldap/internal/unboundid/LDAPInterfaceProxyFactory.java b/embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/unboundid/LDAPInterfaceProxyFactory.java
similarity index 100%
rename from src/main/java/org/zapodot/junit/ldap/internal/unboundid/LDAPInterfaceProxyFactory.java
rename to embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/unboundid/LDAPInterfaceProxyFactory.java
diff --git a/embedded-ldap-junit-jupiter/pom.xml b/embedded-ldap-junit-jupiter/pom.xml
new file mode 100644
index 0000000..6981d9d
--- /dev/null
+++ b/embedded-ldap-junit-jupiter/pom.xml
@@ -0,0 +1,42 @@
+
+
+
+ embedded-ldap-junit-parent
+ org.zapodot
+ 0.9.1-SNAPSHOT
+
+ 4.0.0
+
+ embedded-ldap-junit-jupiter
+
+
+
+ org.zapodot
+ embedded-ldap-core
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+
+
+
+
+
+
+ org.junit
+ junit-bom
+ ${junit-jupiter.version}
+ pom
+ import
+
+
+
+
+
\ No newline at end of file
diff --git a/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/EmbeddedLdapExtension.java b/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/EmbeddedLdapExtension.java
new file mode 100644
index 0000000..61b6ca5
--- /dev/null
+++ b/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/EmbeddedLdapExtension.java
@@ -0,0 +1,9 @@
+package org.zapodot.ldap.jupiter;
+
+import org.junit.jupiter.api.extension.*;
+
+/**
+ * Extension for JUnit 5 Jupiter
+ */
+public interface EmbeddedLdapExtension extends Extension, BeforeEachCallback, AfterEachCallback, BeforeAllCallback, AfterAllCallback {
+}
diff --git a/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/EmbeddedLdapExtensionBuilder.java b/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/EmbeddedLdapExtensionBuilder.java
new file mode 100644
index 0000000..83c87b4
--- /dev/null
+++ b/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/EmbeddedLdapExtensionBuilder.java
@@ -0,0 +1,15 @@
+package org.zapodot.ldap.jupiter;
+
+import org.zapodot.junit.ldap.AbstractEmbeddedLdapSupportBuilder;
+
+public class EmbeddedLdapExtensionBuilder extends AbstractEmbeddedLdapSupportBuilder {
+
+ public static EmbeddedLdapExtensionBuilder newInstance() {
+ return new EmbeddedLdapExtensionBuilder();
+ }
+
+ @Override
+ public EmbeddedLdapExtension build() {
+ return null;
+ }
+}
diff --git a/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/internal/EmbeddedLdapExtensionImpl.java b/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/internal/EmbeddedLdapExtensionImpl.java
new file mode 100644
index 0000000..66c8f85
--- /dev/null
+++ b/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/internal/EmbeddedLdapExtensionImpl.java
@@ -0,0 +1,26 @@
+package org.zapodot.ldap.jupiter.internal;
+
+import org.junit.jupiter.api.extension.ExtensionContext;
+import org.zapodot.ldap.jupiter.EmbeddedLdapExtension;
+
+public class EmbeddedLdapExtensionImpl implements EmbeddedLdapExtension {
+ @Override
+ public void afterAll(final ExtensionContext extensionContext) throws Exception {
+
+ }
+
+ @Override
+ public void afterEach(final ExtensionContext extensionContext) throws Exception {
+
+ }
+
+ @Override
+ public void beforeAll(final ExtensionContext extensionContext) throws Exception {
+
+ }
+
+ @Override
+ public void beforeEach(final ExtensionContext extensionContext) throws Exception {
+
+ }
+}
diff --git a/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/internal/package-info.java b/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/internal/package-info.java
new file mode 100755
index 0000000..a52f334
--- /dev/null
+++ b/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/internal/package-info.java
@@ -0,0 +1,6 @@
+/**
+ * Internal API. May be removed, moved or changed without prior deprecation
+ *
+ * @author zapodot at gmail dot com
+ */
+package org.zapodot.ldap.jupiter.internal;
\ No newline at end of file
diff --git a/embedded-ldap-junit/pom.xml b/embedded-ldap-junit/pom.xml
new file mode 100644
index 0000000..b434e3f
--- /dev/null
+++ b/embedded-ldap-junit/pom.xml
@@ -0,0 +1,69 @@
+
+
+ 4.0.0
+
+ org.zapodot
+ embedded-ldap-junit-parent
+ 0.9.1-SNAPSHOT
+
+
+ embedded-ldap-junit
+ ${project.artifactId}
+
+
+
+ org.zapodot
+ embedded-ldap-core
+
+
+ com.unboundid
+ unboundid-ldapsdk
+ ${unboundid-ldapsdk.version}
+
+
+ junit
+ junit
+ ${junit.version}
+
+
+ com.google.guava
+ guava
+
+
+ net.bytebuddy
+ byte-buddy
+
+
+ org.slf4j
+ slf4j-api
+
+
+ ch.qos.logback
+ logback-classic
+ ${logback.version}
+ test
+
+
+ org.bouncycastle
+ bcprov-jdk18on
+ ${bouncycastle.version}
+ test
+
+
+ org.bouncycastle
+ bcpkix-jdk18on
+ ${bouncycastle.version}
+ test
+
+
+
+
+
+ maven-surefire-plugin
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/org/zapodot/junit/ldap/EmbeddedLdapRule.java b/embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/EmbeddedLdapRule.java
similarity index 100%
rename from src/main/java/org/zapodot/junit/ldap/EmbeddedLdapRule.java
rename to embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/EmbeddedLdapRule.java
diff --git a/embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/EmbeddedLdapRuleBuilder.java b/embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/EmbeddedLdapRuleBuilder.java
new file mode 100755
index 0000000..fdc3c01
--- /dev/null
+++ b/embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/EmbeddedLdapRuleBuilder.java
@@ -0,0 +1,33 @@
+package org.zapodot.junit.ldap;
+
+import org.zapodot.junit.ldap.internal.EmbeddedLdapRuleImpl;
+
+import java.util.Objects;
+
+/**
+ * A builder providing a fluent way of defining EmbeddedLdapRule instances
+ */
+public class EmbeddedLdapRuleBuilder extends AbstractEmbeddedLdapSupportBuilder {
+
+ public EmbeddedLdapRuleBuilder() {
+ }
+
+ public static EmbeddedLdapRuleBuilder newInstance() {
+
+ return new EmbeddedLdapRuleBuilder();
+ }
+
+ /**
+ * Creates a new rule based on the information that was previously provided
+ *
+ * @return a new EmbeddedLdapRule instance
+ */
+ public EmbeddedLdapRule build() {
+ Objects.requireNonNull(bindDSN, "\"bindDSN\" can not be null");
+ return EmbeddedLdapRuleImpl.createForConfiguration(createInMemoryServerConfiguration(),
+ authenticationConfiguration,
+ ldifsToImport, useTls, socketFactory);
+ }
+
+
+}
diff --git a/src/main/java/org/zapodot/junit/ldap/internal/EmbeddedLdapRuleImpl.java b/embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/internal/EmbeddedLdapRuleImpl.java
similarity index 99%
rename from src/main/java/org/zapodot/junit/ldap/internal/EmbeddedLdapRuleImpl.java
rename to embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/internal/EmbeddedLdapRuleImpl.java
index a394874..8daaeee 100755
--- a/src/main/java/org/zapodot/junit/ldap/internal/EmbeddedLdapRuleImpl.java
+++ b/embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/internal/EmbeddedLdapRuleImpl.java
@@ -7,6 +7,9 @@
import com.unboundid.ldap.sdk.LDAPConnection;
import com.unboundid.ldap.sdk.LDAPException;
import com.unboundid.ldap.sdk.LDAPInterface;
+import net.bytebuddy.ByteBuddy;
+import net.bytebuddy.dynamic.loading.ClassLoadingStrategy;
+import net.bytebuddy.implementation.FixedValue;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;
import org.slf4j.Logger;
@@ -20,14 +23,11 @@
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.ldap.LdapContext;
-import java.io.UnsupportedEncodingException;
-import java.lang.reflect.Modifier;
-
import javax.net.SocketFactory;
import javax.net.ssl.SSLSocketFactory;
-
import java.io.IOException;
import java.io.UnsupportedEncodingException;
+import java.lang.reflect.Modifier;
import java.net.InetAddress;
import java.net.Socket;
import java.net.URLDecoder;
@@ -35,10 +35,6 @@
import java.util.Hashtable;
import java.util.List;
-import net.bytebuddy.ByteBuddy;
-import net.bytebuddy.dynamic.loading.ClassLoadingStrategy;
-import net.bytebuddy.implementation.FixedValue;
-
public class EmbeddedLdapRuleImpl implements EmbeddedLdapRule {
private static final String JAVA_RT_CONTROL_FACTORY = "com.sun.jndi.ldap.DefaultResponseControlFactory";
diff --git a/embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/internal/package-info.java b/embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/internal/package-info.java
new file mode 100755
index 0000000..c89bcca
--- /dev/null
+++ b/embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/internal/package-info.java
@@ -0,0 +1,6 @@
+/**
+ * Internal API. May be removed, moved or changed without prior deprecation
+ *
+ * @author zapodot at gmail dot com
+ */
+package org.zapodot.junit.ldap.internal;
\ No newline at end of file
diff --git a/src/main/java/org/zapodot/junit/ldap/package-info.java b/embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/package-info.java
similarity index 100%
rename from src/main/java/org/zapodot/junit/ldap/package-info.java
rename to embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/package-info.java
diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleBuilderTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleBuilderTest.java
similarity index 100%
rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleBuilderTest.java
rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleBuilderTest.java
diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleClassRuleTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleClassRuleTest.java
similarity index 100%
rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleClassRuleTest.java
rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleClassRuleTest.java
diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomSchemaDuplicatedTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomSchemaDuplicatedTest.java
similarity index 100%
rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomSchemaDuplicatedTest.java
rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomSchemaDuplicatedTest.java
diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomStandardAndCustomSchemaTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomStandardAndCustomSchemaTest.java
similarity index 100%
rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomStandardAndCustomSchemaTest.java
rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomStandardAndCustomSchemaTest.java
diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomWithoutSchemaTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomWithoutSchemaTest.java
similarity index 100%
rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomWithoutSchemaTest.java
rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomWithoutSchemaTest.java
diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomWithoutStandardSchemaTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomWithoutStandardSchemaTest.java
similarity index 100%
rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomWithoutStandardSchemaTest.java
rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomWithoutStandardSchemaTest.java
diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleMultipleDSNs.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleMultipleDSNs.java
similarity index 100%
rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleMultipleDSNs.java
rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleMultipleDSNs.java
diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleNoAuthTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleNoAuthTest.java
similarity index 100%
rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleNoAuthTest.java
rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleNoAuthTest.java
diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleStandardContext.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleStandardContext.java
similarity index 100%
rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleStandardContext.java
rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleStandardContext.java
diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleStarttlsTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleStarttlsTest.java
similarity index 100%
rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleStarttlsTest.java
rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleStarttlsTest.java
diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleTest.java
similarity index 100%
rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleTest.java
rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleTest.java
diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleTlsTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleTlsTest.java
similarity index 88%
rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleTlsTest.java
rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleTlsTest.java
index 43c703d..8a176e5 100755
--- a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleTlsTest.java
+++ b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleTlsTest.java
@@ -1,40 +1,8 @@
package org.zapodot.junit.ldap;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.Arrays;
-import java.io.IOException;
-import java.math.BigInteger;
-import java.net.InetAddress;
-import java.security.KeyManagementException;
-import java.security.KeyPair;
-import java.security.KeyPairGenerator;
-import java.security.KeyStore;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.Provider;
-import java.security.Security;
-import java.security.UnrecoverableKeyException;
-import java.security.cert.Certificate;
-import java.security.cert.CertificateException;
-import java.security.cert.X509Certificate;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Date;
-
-import javax.naming.Context;
-import javax.naming.NamingEnumeration;
-import javax.naming.directory.DirContext;
-import javax.naming.directory.SearchControls;
-
-import javax.net.ssl.KeyManager;
-import javax.net.ssl.KeyManagerFactory;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.TrustManagerFactory;
-
+import com.google.common.collect.Iterators;
+import com.unboundid.ldap.listener.InMemoryListenerConfig;
+import com.unboundid.ldap.sdk.*;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.asn1.x509.BasicConstraints;
import org.bouncycastle.cert.X509CertificateHolder;
@@ -47,16 +15,23 @@
import org.junit.Rule;
import org.junit.Test;
-import com.google.common.collect.Iterators;
-import com.unboundid.ldap.listener.InMemoryListenerConfig;
-import com.unboundid.ldap.sdk.AddRequest;
-import com.unboundid.ldap.sdk.Attribute;
-import com.unboundid.ldap.sdk.LDAPConnection;
-import com.unboundid.ldap.sdk.LDAPInterface;
-import com.unboundid.ldap.sdk.SearchRequest;
-import com.unboundid.ldap.sdk.SearchResult;
-import com.unboundid.ldap.sdk.SearchResultEntry;
-import com.unboundid.ldap.sdk.SearchScope;
+import javax.naming.Context;
+import javax.naming.NamingEnumeration;
+import javax.naming.directory.DirContext;
+import javax.naming.directory.SearchControls;
+import javax.net.ssl.*;
+import java.io.IOException;
+import java.math.BigInteger;
+import java.net.InetAddress;
+import java.security.*;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Date;
+
+import static org.junit.Assert.*;
public class EmbeddedLdapRuleTlsTest {
diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleWithListeningAddressProvidedTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleWithListeningAddressProvidedTest.java
similarity index 100%
rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleWithListeningAddressProvidedTest.java
rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleWithListeningAddressProvidedTest.java
diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleWithSpacesTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleWithSpacesTest.java
similarity index 100%
rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleWithSpacesTest.java
rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleWithSpacesTest.java
diff --git a/src/test/java/org/zapodot/junit/ldap/internal/AuthenticationConfigurationTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/internal/AuthenticationConfigurationTest.java
similarity index 100%
rename from src/test/java/org/zapodot/junit/ldap/internal/AuthenticationConfigurationTest.java
rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/internal/AuthenticationConfigurationTest.java
diff --git a/src/test/java/org/zapodot/junit/ldap/internal/jndi/ContextProxyFactoryTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/internal/jndi/ContextProxyFactoryTest.java
similarity index 100%
rename from src/test/java/org/zapodot/junit/ldap/internal/jndi/ContextProxyFactoryTest.java
rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/internal/jndi/ContextProxyFactoryTest.java
diff --git a/src/test/java/org/zapodot/junit/ldap/internal/unboundid/LDAPInterfaceProxyFactoryTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/internal/unboundid/LDAPInterfaceProxyFactoryTest.java
similarity index 100%
rename from src/test/java/org/zapodot/junit/ldap/internal/unboundid/LDAPInterfaceProxyFactoryTest.java
rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/internal/unboundid/LDAPInterfaceProxyFactoryTest.java
diff --git a/src/test/resources/custom-schema.ldif b/embedded-ldap-junit/src/test/resources/custom-schema.ldif
similarity index 100%
rename from src/test/resources/custom-schema.ldif
rename to embedded-ldap-junit/src/test/resources/custom-schema.ldif
diff --git a/src/test/resources/example.ldif b/embedded-ldap-junit/src/test/resources/example.ldif
similarity index 100%
rename from src/test/resources/example.ldif
rename to embedded-ldap-junit/src/test/resources/example.ldif
diff --git a/src/test/resources/folder with space/example.ldif b/embedded-ldap-junit/src/test/resources/folder with space/example.ldif
similarity index 100%
rename from src/test/resources/folder with space/example.ldif
rename to embedded-ldap-junit/src/test/resources/folder with space/example.ldif
diff --git a/src/test/resources/folder/.placeholder b/embedded-ldap-junit/src/test/resources/folder/.placeholder
similarity index 100%
rename from src/test/resources/folder/.placeholder
rename to embedded-ldap-junit/src/test/resources/folder/.placeholder
diff --git a/src/test/resources/invalid.ldif b/embedded-ldap-junit/src/test/resources/invalid.ldif
similarity index 100%
rename from src/test/resources/invalid.ldif
rename to embedded-ldap-junit/src/test/resources/invalid.ldif
diff --git a/src/test/resources/standard-schema.ldif b/embedded-ldap-junit/src/test/resources/standard-schema.ldif
similarity index 100%
rename from src/test/resources/standard-schema.ldif
rename to embedded-ldap-junit/src/test/resources/standard-schema.ldif
diff --git a/pom.xml b/pom.xml
index 1278128..110855c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,12 +5,19 @@
4.0.0
org.zapodot
- embedded-ldap-junit
+ embedded-ldap-junit-parent
+ pom
0.9.1-SNAPSHOT
${project.artifactId}
Library that provides a JUnit rule for setting up an in-memory LDAP server by using the glorious Unboundid LDAP SDK
https://github.com/zapodot/embedded-ldap-junit
2015
+
+
+ embedded-ldap-core
+ embedded-ldap-junit
+ embedded-ldap-junit-jupiter
+
zapodot
@@ -24,12 +31,13 @@
4.13.2
+ 5.9.1
6.0.6
1.7.36
31.1-jre
- 1.12.17
+ 1.14.4
1.2.11
- 1.70
+ 1.72
UTF-8
3.2.1
3.4.1
@@ -37,54 +45,43 @@
3.0.1
1.6.13
3.1.0
- 8
- 0.8.8
+ 11
+ 0.8.9
-
-
- com.unboundid
- unboundid-ldapsdk
- ${unboundid-ldapsdk.version}
-
-
- junit
- junit
- ${junit.version}
-
-
- com.google.guava
- guava
- ${guava.version}
-
-
- net.bytebuddy
- byte-buddy
- ${byte-buddy.version}
-
-
- org.slf4j
- slf4j-api
- ${slf4j.version}
-
-
- ch.qos.logback
- logback-classic
- ${logback.version}
- test
-
-
- org.bouncycastle
- bcprov-jdk15on
- ${bouncycastle.version}
- test
-
-
- org.bouncycastle
- bcpkix-jdk15on
- ${bouncycastle.version}
- test
-
-
+
+
+
+ org.zapodot
+ embedded-ldap-core
+ ${project.version}
+
+
+ org.zapodot
+ embedded-ldap-junit
+ ${project.version}
+
+
+ com.unboundid
+ unboundid-ldapsdk
+ ${unboundid-ldapsdk.version}
+
+
+ com.google.guava
+ guava
+ ${guava.version}
+
+
+ net.bytebuddy
+ byte-buddy
+ ${byte-buddy.version}
+
+
+ org.slf4j
+ slf4j-api
+ ${slf4j.version}
+
+
+