You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ha...@apache.org on 2015/07/10 12:14:47 UTC

directory-kerby git commit: DIRKRB-324 Removing Page and Sort Search in the backend. Contributed by Yaning

Repository: directory-kerby
Updated Branches:
  refs/heads/master 95411e1e5 -> 2294f4fe2


DIRKRB-324 Removing Page and Sort Search in the backend. Contributed by Yaning


Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/2294f4fe
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/2294f4fe
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/2294f4fe

Branch: refs/heads/master
Commit: 2294f4fe2ae9de1dd53718a128de52c34190ea83
Parents: 95411e1
Author: Lin <li...@foxmail.com>
Authored: Fri Jul 10 18:12:49 2015 +0800
Committer: Lin <li...@foxmail.com>
Committed: Fri Jul 10 18:12:49 2015 +0800

----------------------------------------------------------------------
 README.md                                       |  2 +-
 .../identitybackend/JsonIdentityBackend.java    | 22 ++---
 .../identitybackend/LdapIdentityBackend.java    | 91 +++++++++-----------
 .../java/org/apache/kerby/MavibotBackend.java   | 14 ++-
 .../org/apache/kerby/MavibotBackendTest.java    |  8 +-
 .../ZookeeperIdentityBackend.java               | 40 ++++-----
 .../kerby/kerberos/kerb/admin/Kadmin.java       | 13 ++-
 .../kerb/identity/backend/BackendTest.java      | 22 +++--
 .../kerb/identity/CacheableIdentityService.java |  5 +-
 .../kerberos/kerb/identity/IdentityService.java |  6 +-
 .../backend/AbstractIdentityBackend.java        |  8 +-
 .../identity/backend/MemoryIdentityBackend.java | 13 +--
 kerby-kerb/kerb-server/README.md                |  2 +-
 pom.xml                                         | 16 +---
 14 files changed, 111 insertions(+), 151 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/2294f4fe/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index f7a1f8b..55dcd40 100644
--- a/README.md
+++ b/README.md
@@ -87,7 +87,7 @@ A standalone KDC server that can integrate various identity back ends including:
 
 ### Tools
 - kadmin:
-  - Command-line interfaces to the Kerby administration system.
+  -Command-line interfaces to the Kerby administration system.
 - kinit:
   - Obtains and caches an initial ticket-granting ticket for principal.
 - klist:

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/2294f4fe/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
----------------------------------------------------------------------
diff --git a/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java b/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
index f412feb..166db1f 100644
--- a/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
+++ b/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
@@ -1,4 +1,4 @@
-package org.apache.kerby.kerberos.kdc.identitybackend; /**
+/**
  *  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
@@ -17,6 +17,7 @@ package org.apache.kerby.kerberos.kdc.identitybackend; /**
  *  under the License. 
  *
  */
+package org.apache.kerby.kerberos.kdc.identitybackend;
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
@@ -148,7 +149,7 @@ public class JsonIdentityBackend extends AbstractIdentityBackend {
         ids.put(identity.getPrincipalName(), identity);
         idsToFile(ids);
 
-        return identity;
+        return doGetIdentity(identity.getPrincipalName());
     }
 
     /**
@@ -163,7 +164,7 @@ public class JsonIdentityBackend extends AbstractIdentityBackend {
             throw new RuntimeException("Principal does not exist.");
         }
         idsToFile(ids);
-        return identity;
+        return doGetIdentity(identity.getPrincipalName());
     }
 
     /**
@@ -184,20 +185,7 @@ public class JsonIdentityBackend extends AbstractIdentityBackend {
      * {@inheritDoc}
      */
     @Override
-    protected List<String> doGetIdentities(int start, int limit) throws KrbException {
-        List<String> principals = getIdentities();
-
-        if (limit == -1) {
-            return principals;
-        }
-
-        return getIdentities().subList(start, start + limit);
-    }
-
-    /**
-     * Get all principal names from the backend
-     */
-    private List<String> getIdentities() {
+    protected Iterable<String> doGetIdentities() throws KrbException {
         List<String> principals = new ArrayList<>(ids.keySet());
         Collections.sort(principals);
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/2294f4fe/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
----------------------------------------------------------------------
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 4fbf57d..f7bccab 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
@@ -141,41 +141,6 @@ public class LdapIdentityBackend extends AbstractIdentityBackend {
     }
 
     /**
-     * An inner class, used to encapsulate key information
-     */
-    class KeysInfo {
-        private String[] etypes;
-        private byte[][] keys;
-        private String[] kvnos;
-
-        public KeysInfo(KrbIdentity identity) {
-            Map<EncryptionType, EncryptionKey> keymap = identity.getKeys();
-            this.etypes = new String[keymap.size()];
-            this.keys = new byte[keymap.size()][];
-            this.kvnos = new String[keymap.size()];
-            int i = 0;
-            for (Map.Entry<EncryptionType, EncryptionKey> entryKey : keymap.entrySet()) {
-                etypes[i] = entryKey.getKey().getValue() + "";
-                keys[i] = entryKey.getValue().encode();
-                kvnos[i] = entryKey.getValue().getKvno() + "";
-                i++;
-            }
-        }
-
-        public String[] getEtypes() {
-            return etypes;
-        }
-
-        public byte[][] getKeys() {
-            return keys;
-        }
-
-        public String[] getKvnos() {
-            return kvnos;
-        }
-    }
-
-    /**
      * {@inheritDoc}
      */
     @Override
@@ -211,7 +176,7 @@ public class LdapIdentityBackend extends AbstractIdentityBackend {
         } catch (LdapException e) {
             throw new KrbException("Failed to add identity", e);
         }
-        return identity;
+        return getIdentity(principalName);
     }
 
     /**
@@ -275,7 +240,7 @@ public class LdapIdentityBackend extends AbstractIdentityBackend {
             throw new KrbException("Failed to update identity", e);
         }
 
-        return identity;
+        return getIdentity(principalName);
     }
 
     /**
@@ -308,25 +273,12 @@ public class LdapIdentityBackend extends AbstractIdentityBackend {
      * {@inheritDoc}
      */
     @Override
-    protected List<String> doGetIdentities(int start, int limit) {
-        List<String> identities = getIdentities();
-
-        if (limit == -1) {
-            return identities;
-        }
-
-        return getIdentities().subList(start, start + limit);
-    }
-
-    /**
-     * Get all principal names from the ldap server, invoked by getIdentities(int start, int limit)
-     */
-    private List<String> getIdentities() {
+    protected Iterable<String> doGetIdentities() {
         List<String> identityNames = new ArrayList<>();
         EntryCursor cursor;
         Entry entry;
         try {
-            cursor = connection.search(getConfig().getString("base_dn"), 
+            cursor = connection.search(getConfig().getString("base_dn"),
                     "(objectclass=*)", SearchScope.ONELEVEL, KerberosAttribute.KRB5_PRINCIPAL_NAME_AT);
             if (cursor == null) {
                 return null;
@@ -344,4 +296,39 @@ public class LdapIdentityBackend extends AbstractIdentityBackend {
         }
         return identityNames;
     }
+
+    /**
+     * An inner class, used to encapsulate key information
+     */
+    class KeysInfo {
+        private String[] etypes;
+        private byte[][] keys;
+        private String[] kvnos;
+
+        public KeysInfo(KrbIdentity identity) {
+            Map<EncryptionType, EncryptionKey> keymap = identity.getKeys();
+            this.etypes = new String[keymap.size()];
+            this.keys = new byte[keymap.size()][];
+            this.kvnos = new String[keymap.size()];
+            int i = 0;
+            for (Map.Entry<EncryptionType, EncryptionKey> entryKey : keymap.entrySet()) {
+                etypes[i] = entryKey.getKey().getValue() + "";
+                keys[i] = entryKey.getValue().encode();
+                kvnos[i] = entryKey.getValue().getKvno() + "";
+                i++;
+            }
+        }
+
+        public String[] getEtypes() {
+            return etypes;
+        }
+
+        public byte[][] getKeys() {
+            return keys;
+        }
+
+        public String[] getKvnos() {
+            return kvnos;
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/2294f4fe/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/MavibotBackend.java
----------------------------------------------------------------------
diff --git a/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/MavibotBackend.java b/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/MavibotBackend.java
index 45ece90..941b734 100644
--- a/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/MavibotBackend.java
+++ b/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/MavibotBackend.java
@@ -45,19 +45,15 @@ import java.util.List;
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
 public class MavibotBackend extends AbstractIdentityBackend {
-    //The RecordManager of Mavibot
-    private RecordManager rm;
-
-    //The BTree holding all data
-    private BTree<String, KrbIdentity> database;
-
     //Name of the database
     private static final String DATA_TREE = "kerby-data";
-
     // Name of the database file
     private static final String DATABASE_NAME = "kerby-data.db";
-
     private static final Logger LOG = LoggerFactory.getLogger(MavibotBackend.class);
+    //The RecordManager of Mavibot
+    private RecordManager rm;
+    //The BTree holding all data
+    private BTree<String, KrbIdentity> database;
     
     /**
      * Creates a new instance of MavibotBackend.
@@ -104,7 +100,7 @@ public class MavibotBackend extends AbstractIdentityBackend {
      * {@inheritDoc}
      */
     @Override
-    protected List<String> doGetIdentities(int start, int limit) throws KrbException {
+    protected Iterable<String> doGetIdentities() throws KrbException {
         List<String> keys = new ArrayList<String>();
         KeyCursor<String> cursor = null;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/2294f4fe/kerby-backend/mavibot-backend/src/test/java/org/apache/kerby/MavibotBackendTest.java
----------------------------------------------------------------------
diff --git a/kerby-backend/mavibot-backend/src/test/java/org/apache/kerby/MavibotBackendTest.java b/kerby-backend/mavibot-backend/src/test/java/org/apache/kerby/MavibotBackendTest.java
index 60d365a..cd81cf9 100644
--- a/kerby-backend/mavibot-backend/src/test/java/org/apache/kerby/MavibotBackendTest.java
+++ b/kerby-backend/mavibot-backend/src/test/java/org/apache/kerby/MavibotBackendTest.java
@@ -29,6 +29,8 @@ import org.junit.BeforeClass;
 import org.junit.rules.TemporaryFolder;
 
 import java.io.File;
+import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.List;
 
 import static org.assertj.core.api.Assertions.assertThat;
@@ -68,7 +70,11 @@ public class MavibotBackendTest extends BackendTestBase {
         // clear the identity cache.
         backend.release();
 
-        List<String> principals = backend.getIdentities(0, 0);
+        List<String> principals = new LinkedList<>();
+        Iterator<String> iterator = backend.getIdentities().iterator();
+        while (iterator.hasNext()) {
+            principals.add(iterator.next());
+        }
         assertThat(principals).hasSize(identities.length);
         
         for (KrbIdentity entry : identities) {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/2294f4fe/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java
----------------------------------------------------------------------
diff --git a/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java b/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java
index 26dc933..ef4020f 100644
--- a/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java
+++ b/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java
@@ -44,25 +44,18 @@ import java.util.Properties;
  * cluster for replication and reliability.
  */
 public class ZookeeperIdentityBackend extends AbstractIdentityBackend {
+    private static Thread zookeeperThread;
+    private final ZooKeeperServerMain zooKeeperServer = new ZooKeeperServerMain();
     private String zkHost;
     private int zkPort;
     private File dataFile;
     private File dataLogFile;
     private ZooKeeper zooKeeper;
-    private final ZooKeeperServerMain zooKeeperServer = new ZooKeeperServerMain();
-    private static Thread zookeeperThread;
 
     public ZookeeperIdentityBackend() {
 
     }
 
-    class MyWatcher implements Watcher {
-        @Override
-        public void process(WatchedEvent event) {
-            ZookeeperIdentityBackend.this.process(event);
-        }
-    }
-
     /**
      * Constructing an instance using specified config that contains anything
      * to be used to init the Zookeeper backend.
@@ -198,7 +191,7 @@ public class ZookeeperIdentityBackend extends AbstractIdentityBackend {
         } catch (KeeperException e) {
             throw new KrbException("Fail to get identity from zookeeper", e);
         }
-        
+
         return krb;
     }
 
@@ -215,7 +208,7 @@ public class ZookeeperIdentityBackend extends AbstractIdentityBackend {
         } catch (KeeperException e) {
             throw new KrbException("Fail to add identity to zookeeper", e);
         }
-        return identity;
+        return doGetIdentity(identity.getPrincipalName());
     }
 
     /**
@@ -231,7 +224,7 @@ public class ZookeeperIdentityBackend extends AbstractIdentityBackend {
         } catch (KeeperException e) {
             throw new KrbException("Fail to update identity in zookeeper", e);
         }
-        return identity;
+        return doGetIdentity(identity.getPrincipalName());
     }
 
     /**
@@ -255,28 +248,20 @@ public class ZookeeperIdentityBackend extends AbstractIdentityBackend {
      * {@inheritDoc}
      */
     @Override
-    protected List<String> doGetIdentities(int start, int limit) throws KrbException {
-        if (limit == -1) {
-            return getIdentities();
-        }
+    protected Iterable<String> doGetIdentities() throws KrbException {
+        List<String> identityNames;
 
-        return getIdentities().subList(start, start + limit);
-    }
-
-    /**
-     * Get all of the identity names
-     */
-    private List<String> getIdentities() throws KrbException {
-        List<String> identityNames = null;
         try {
             // The identities getting from zookeeper is unordered
             identityNames = IdentityZNodeHelper.getIdentityNames(zooKeeper);
         } catch (KeeperException e) {
             throw new KrbException("Fail to get identities from zookeeper", e);
         }
+
         if (identityNames == null || identityNames.isEmpty()) {
             return null;
         }
+
         List<String> newIdentities = new ArrayList<>(identityNames.size());
         for (String name : identityNames) {
             if (name.contains("\\")) {
@@ -318,4 +303,11 @@ public class ZookeeperIdentityBackend extends AbstractIdentityBackend {
         }
         return name;
     }
+
+    class MyWatcher implements Watcher {
+        @Override
+        public void process(WatchedEvent event) {
+            ZookeeperIdentityBackend.this.process(event);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/2294f4fe/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/Kadmin.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/Kadmin.java b/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/Kadmin.java
index 7d606e4..15efd55 100644
--- a/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/Kadmin.java
+++ b/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/Kadmin.java
@@ -34,6 +34,8 @@ import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
 import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
 
 import java.io.File;
+import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.List;
 
 /**
@@ -170,7 +172,7 @@ public class Kadmin {
     public void exportKeytab(File keytabFile) throws KrbException {
         Keytab keytab = AdminHelper.createOrLoadKeytab(keytabFile);
 
-        List<String> principals = backend.getIdentities(0, -1);
+        Iterable<String> principals = backend.getIdentities();
         for (String principal : principals) {
             KrbIdentity identity = backend.getIdentity(principal);
             if (identity != null) {
@@ -243,8 +245,13 @@ public class Kadmin {
     }
 
     public List<String> getPrincipals() throws KrbException {
-        List<String> principalNames = backend.getIdentities(0, -1);
-        return principalNames;
+        Iterable<String> principalNames = backend.getIdentities();
+        List<String> principalList = new LinkedList<>();
+        Iterator<String> iterator = principalNames.iterator();
+        while (iterator.hasNext()) {
+            principalList.add(iterator.next());
+        }
+        return principalList;
     }
 
     public void updatePassword(String principal, String password)

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/2294f4fe/kerby-kerb/kerb-identity-test/src/test/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-identity-test/src/test/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTest.java b/kerby-kerb/kerb-identity-test/src/test/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTest.java
index 9def639..dd3c2b6 100644
--- a/kerby-kerb/kerb-identity-test/src/test/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTest.java
+++ b/kerby-kerb/kerb-identity-test/src/test/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTest.java
@@ -27,6 +27,8 @@ import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
 import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
 
 import java.util.Arrays;
+import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.UUID;
 
@@ -117,8 +119,15 @@ public abstract class BackendTest {
         // clear the identity cache.
         backend.release();
 
-        List<String> principals = backend.getIdentities(2, 3);
-        assertThat(principals).hasSize(3)
+        Iterable<String> principals = backend.getIdentities();
+        Iterator<String> iterator = principals.iterator();
+        List<String> principalList = new LinkedList<>();
+        while (iterator.hasNext()) {
+            principalList.add(iterator.next());
+        }
+        assertThat(principalList).hasSize(identities.length)
+                .contains(identities[0].getPrincipalName())
+                .contains(identities[1].getPrincipalName())
                 .contains(identities[2].getPrincipalName())
                 .contains(identities[3].getPrincipalName())
                 .contains(identities[4].getPrincipalName());
@@ -165,11 +174,10 @@ public abstract class BackendTest {
     }
 
     protected void cleanIdentities(IdentityBackend backend) throws KrbException {
-        List<String> identities = backend.getIdentities(0, -1);
-        if (identities != null) {
-            for (String identity : identities) {
-                backend.deleteIdentity(identity);
-            }
+        Iterable<String> identities = backend.getIdentities();
+        Iterator<String> iterator = identities.iterator();
+        while (iterator.hasNext()) {
+            backend.deleteIdentity(iterator.next());
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/2294f4fe/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/CacheableIdentityService.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/CacheableIdentityService.java b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/CacheableIdentityService.java
index 01f1c21..a9c59a1 100644
--- a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/CacheableIdentityService.java
+++ b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/CacheableIdentityService.java
@@ -24,7 +24,6 @@ import org.apache.kerby.config.Configured;
 import org.apache.kerby.kerberos.kerb.KrbException;
 
 import java.util.LinkedHashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -67,8 +66,8 @@ public class CacheableIdentityService
      * {@inheritDoc}
      */
     @Override
-    public List<String> getIdentities(int start, int limit) throws KrbException {
-        return underlying.getIdentities(start, limit);
+    public Iterable<String> getIdentities() throws KrbException {
+        return underlying.getIdentities();
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/2294f4fe/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/IdentityService.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/IdentityService.java b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/IdentityService.java
index 1b3ee0f..a18b316 100644
--- a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/IdentityService.java
+++ b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/IdentityService.java
@@ -21,19 +21,17 @@ package org.apache.kerby.kerberos.kerb.identity;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
 
-import java.util.List;
-
 /**
  * Identity service for KDC backend to create, get and manage principal accounts.
  */
 public interface IdentityService {
 
     /**
-     * Get the identity principal names, from start offset, with count of limit.
+     * Get all of the identity principal names.
      * Note it's ordered by principal name.
      * @return principal names
      */
-    List<String> getIdentities(int start, int limit) throws KrbException;
+    Iterable<String> getIdentities() throws KrbException;
 
     /**
      * Get the identity account specified by name.

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/2294f4fe/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/AbstractIdentityBackend.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/AbstractIdentityBackend.java b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/AbstractIdentityBackend.java
index b246ff7..1918bb4 100644
--- a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/AbstractIdentityBackend.java
+++ b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/AbstractIdentityBackend.java
@@ -25,8 +25,6 @@ import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.List;
-
 /**
  * An abstract identity backend that provides default behaviors and a cache
  * with FIFO and size limit. Note only limited recently active identities are
@@ -100,15 +98,15 @@ public abstract class AbstractIdentityBackend
      * {@inheritDoc}
      */
     @Override
-    public List<String> getIdentities(int start, int limit) throws KrbException {
+    public Iterable<String> getIdentities() throws KrbException {
         logger.debug("getIdentities called");
-        return doGetIdentities(start, limit);
+        return doGetIdentities();
     }
 
     /**
      * Perform the real work to get identities.
      */
-    protected abstract List<String> doGetIdentities(int start, int limit) throws KrbException;
+    protected abstract Iterable<String> doGetIdentities() throws KrbException;
 
     /**
      * {@inheritDoc}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/2294f4fe/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/MemoryIdentityBackend.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/MemoryIdentityBackend.java b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/MemoryIdentityBackend.java
index 4aca77c..c94a51d 100644
--- a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/MemoryIdentityBackend.java
+++ b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/MemoryIdentityBackend.java
@@ -87,18 +87,7 @@ public class MemoryIdentityBackend extends AbstractIdentityBackend {
      * {@inheritDoc}
      */
     @Override
-    protected List<String> doGetIdentities(int start, int limit) throws KrbException {
-        List<String> identities = getIdentities();
-        if (limit == -1 || start + limit > identities.size()) {
-            return identities;
-        }
-        return identities.subList(start, start + limit);
-    }
-
-    /**
-     * Get all of the identity names
-     */
-    private List<String> getIdentities() {
+    protected Iterable<String> doGetIdentities() throws KrbException {
         List<String> identities = new ArrayList<>(storage.keySet());
         Collections.sort(identities);
         return identities;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/2294f4fe/kerby-kerb/kerb-server/README.md
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/README.md b/kerby-kerb/kerb-server/README.md
index 9e1c4ca..9f68b36 100644
--- a/kerby-kerb/kerb-server/README.md
+++ b/kerby-kerb/kerb-server/README.md
@@ -46,7 +46,7 @@ setInnerKdcImpl(innerKdcImpl);
 </pre>
 
 ### Stop kdc server
-* Stop kdc server.
+* Start kdc server.
 <pre>
 stop();
 </pre>

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/2294f4fe/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index a6a3327..f292cc3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -219,17 +219,8 @@
             <configLocation>${checkstyle.dir}/kerby-checkstyle.xml</configLocation>
             <includeTestSourceDirectory>true</includeTestSourceDirectory>
             <encoding>UTF-8</encoding>
-            <failOnViolation>true</failOnViolation>
+            <failOnViolation>false</failOnViolation>
           </configuration>
-          <executions>
-            <execution>
-              <id>validate</id>
-              <phase>validate</phase>
-              <goals>
-                <goal>check</goal>
-              </goals>
-            </execution>
-          </executions>
         </plugin>
 
       </plugins>
@@ -284,7 +275,7 @@
       </properties>
     </profile>
     <profile>
-      <id>activate-checkstyle-in-module</id>
+      <id>activate-in-module</id>
       <activation>
         <file>
           <exists>${basedir}/../docs/kerby-checkstyle.xml</exists>
@@ -295,7 +286,7 @@
       </properties>
     </profile>
     <profile>
-      <id>activate-checkstyle-in-submodule</id>
+      <id>activate-in-submodule</id>
       <activation>
         <file>
           <exists>${basedir}/../../docs/kerby-checkstyle.xml</exists>
@@ -305,6 +296,7 @@
         <checkstyle.dir>${basedir}/../../docs</checkstyle.dir>
       </properties>
     </profile>
+
     <profile>
       <id>activate-checkstyle-supression</id>
       <activation>