Merge remote-tracking branch 'asf/trunk' into trunk
diff --git a/benchmark/pom.xml b/benchmark/pom.xml
index bcdf0e1..77630d5 100644
--- a/benchmark/pom.xml
+++ b/benchmark/pom.xml
@@ -31,7 +31,7 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <jmh.version>1.19</jmh.version>
+    <jmh.version>1.21</jmh.version>
     <javac.target>1.7</javac.target>
     <uberjar.name>benchmarks</uberjar.name>
   </properties>
diff --git a/has-project/has-server-plugin/src/main/java/org/apache/kerby/has/plugins/server/ldap/LDAPServerPlugin.java b/has-project/has-server-plugin/src/main/java/org/apache/kerby/has/plugins/server/ldap/LDAPServerPlugin.java
index 1502920..513e21d 100755
--- a/has-project/has-server-plugin/src/main/java/org/apache/kerby/has/plugins/server/ldap/LDAPServerPlugin.java
+++ b/has-project/has-server-plugin/src/main/java/org/apache/kerby/has/plugins/server/ldap/LDAPServerPlugin.java
@@ -17,6 +17,7 @@
  */
 package org.apache.kerby.has.plugins.server.ldap;
 
+import org.apache.directory.api.ldap.model.exception.LdapInvalidAttributeValueException;
 import org.apache.kerby.has.common.HasException;
 import org.apache.kerby.has.server.AbstractHasServerPlugin;
 import org.apache.kerby.has.server.HasAuthenException;
@@ -60,7 +61,7 @@
             } else {
                 throw new HasAuthenException("LDAP user auth failed");
             }
-        } catch (HasException | IOException e) {
+        } catch (HasException | IOException | LdapInvalidAttributeValueException e) {
             throw new HasAuthenException("LDAP user auth failed. " + e.getMessage());
         }
     }
diff --git a/has-project/has-server-plugin/src/main/java/org/apache/kerby/has/plugins/server/ldap/LDAPUtils.java b/has-project/has-server-plugin/src/main/java/org/apache/kerby/has/plugins/server/ldap/LDAPUtils.java
index 9a703eb..d0bdcd4 100644
--- a/has-project/has-server-plugin/src/main/java/org/apache/kerby/has/plugins/server/ldap/LDAPUtils.java
+++ b/has-project/has-server-plugin/src/main/java/org/apache/kerby/has/plugins/server/ldap/LDAPUtils.java
@@ -45,7 +45,8 @@
         }
     }
 
-    public static boolean doUserAuth(String user, String pwd) throws HasException, IOException {
+    public static boolean doUserAuth(String user, String pwd)
+        throws HasException, IOException, LdapInvalidAttributeValueException {
         LdapNetworkConnection connection = new LdapNetworkConnection(
             ldapServerConf.getHost(), Integer.parseInt(ldapServerConf.getPort()));
         try {
diff --git a/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java b/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
index d5b090b..6e5ad95 100644
--- a/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
+++ b/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
@@ -24,6 +24,7 @@
 import org.apache.directory.api.ldap.model.entry.DefaultEntry;
 import org.apache.directory.api.ldap.model.entry.Entry;
 import org.apache.directory.api.ldap.model.exception.LdapException;
+import org.apache.directory.api.ldap.model.exception.LdapInvalidAttributeValueException;
 import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
 import org.apache.directory.api.ldap.model.message.ModifyRequest;
 import org.apache.directory.api.ldap.model.message.ModifyRequestImpl;
@@ -311,8 +312,9 @@
      * @param principalName The principal name to be convert.
      * @return
      * @throws org.apache.directory.api.ldap.model.exception.LdapInvalidDnException if a remote exception occurs.
+     * @throws LdapInvalidAttributeValueException 
      */
-    private Dn toDn(String principalName) throws LdapInvalidDnException {
+    private Dn toDn(String principalName) throws LdapInvalidDnException, LdapInvalidAttributeValueException {
         String[] names = principalName.split("@");
         String uid = names[0];
         Dn dn = new Dn(new Rdn("uid", uid), new Dn(getConfig().getString("base_dn")));
diff --git a/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityGetHelper.java b/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityGetHelper.java
index bc070dc..eb8807f 100644
--- a/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityGetHelper.java
+++ b/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityGetHelper.java
@@ -68,7 +68,7 @@
      * @return keys
      */
     public List<EncryptionKey> getKeys() throws IOException {
-        Iterator<Value<?>> iterator1 = entry.get(KerberosAttribute.KRB5_KEY_AT).iterator();
+        Iterator<Value> iterator1 = entry.get(KerberosAttribute.KRB5_KEY_AT).iterator();
         List<EncryptionKey> keys = new ArrayList<>();
         while (iterator1.hasNext()) {
             byte[] encryKey = iterator1.next().getBytes();
diff --git a/pom.xml b/pom.xml
index 65cffb3..db3e5bd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,10 +47,10 @@
   </distributionManagement>
 
   <properties>
-    <apacheds.version>2.0.0-M24</apacheds.version>
+    <apacheds.version>2.0.0.AM25</apacheds.version>
     <commons-io.version>2.6</commons-io.version>
     <gson.version>2.6.2</gson.version>
-    <ldap.api.version>1.0.1</ldap.api.version>
+    <ldap.api.version>2.0.0.AM1</ldap.api.version>
     <log4j.version>1.2.17</log4j.version>
     <junit.version>4.12</junit.version>
     <nimbus.jose.version>4.41.2</nimbus.jose.version>
@@ -72,7 +72,7 @@
     <commons-dbutils.version>1.6</commons-dbutils.version>
     <drizzle-jdbc.version>1.4</drizzle-jdbc.version>
     <jsch.version>0.1.54</jsch.version>
-    <maven-owasp-plugin-version>3.3.1</maven-owasp-plugin-version>
+    <maven-owasp-plugin-version>4.0.1</maven-owasp-plugin-version>
     <commons-codec.version>1.4</commons-codec.version>
     <commons-logging.version>1.2</commons-logging.version>
     <ini4j.version>0.5.4</ini4j.version>