You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2016/03/12 02:20:51 UTC

[1/3] incubator-geode git commit: Reformat security test classes

Repository: incubator-geode
Updated Branches:
  refs/heads/feature/GEODE-949-2 37b978c25 -> 3a0fe9550


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a6388000/geode-core/src/test/java/templates/security/DummyAuthorization.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/templates/security/DummyAuthorization.java b/geode-core/src/test/java/templates/security/DummyAuthorization.java
index 4c2bfec..896ccc5 100755
--- a/geode-core/src/test/java/templates/security/DummyAuthorization.java
+++ b/geode-core/src/test/java/templates/security/DummyAuthorization.java
@@ -16,6 +16,10 @@
  */
 package templates.security;
 
+import java.security.Principal;
+import java.util.HashSet;
+import java.util.Set;
+
 import com.gemstone.gemfire.LogWriter;
 import com.gemstone.gemfire.cache.Cache;
 import com.gemstone.gemfire.cache.operations.OperationContext;
@@ -24,94 +28,95 @@ import com.gemstone.gemfire.distributed.DistributedMember;
 import com.gemstone.gemfire.security.AccessControl;
 import com.gemstone.gemfire.security.NotAuthorizedException;
 
-import java.security.Principal;
-import java.util.HashSet;
-import java.util.Set;
-
 /**
- * A dummy implementation of the <code>AccessControl</code> interface that
- * allows authorization depending on the format of the <code>Principal</code>
+ * A dummy implementation of the {@code AccessControl} interface that
+ * allows authorization depending on the format of the {@code Principal}
  * string.
  * 
- * @author Sumedh Wale
  * @since 5.5
  */
 public class DummyAuthorization implements AccessControl {
 
   private Set allowedOps;
-
-  private DistributedMember remoteDistributedMember;
-
-  private LogWriter logger;
-
-  public static final OperationCode[] READER_OPS = { OperationCode.GET,
-      OperationCode.QUERY, OperationCode.EXECUTE_CQ, OperationCode.CLOSE_CQ,
-      OperationCode.STOP_CQ, OperationCode.REGISTER_INTEREST,
-      OperationCode.UNREGISTER_INTEREST, OperationCode.KEY_SET,
-      OperationCode.CONTAINS_KEY, OperationCode.EXECUTE_FUNCTION };
-
-  public static final OperationCode[] WRITER_OPS = { OperationCode.PUT, OperationCode.PUTALL, 
-      OperationCode.DESTROY, OperationCode.INVALIDATE, OperationCode.REGION_CLEAR };
-
-  public DummyAuthorization() {
-    this.allowedOps = new HashSet(20);
-  }
+  private DistributedMember remoteMember;
+  private LogWriter securityLogWriter;
+
+  public static final OperationCode[] READER_OPS = {
+      OperationCode.GET,
+      OperationCode.QUERY,
+      OperationCode.EXECUTE_CQ,
+      OperationCode.CLOSE_CQ,
+      OperationCode.STOP_CQ,
+      OperationCode.REGISTER_INTEREST,
+      OperationCode.UNREGISTER_INTEREST,
+      OperationCode.KEY_SET,
+      OperationCode.CONTAINS_KEY,
+      OperationCode.EXECUTE_FUNCTION };
+
+  public static final OperationCode[] WRITER_OPS = {
+      OperationCode.PUT,
+      OperationCode.PUTALL,
+      OperationCode.DESTROY,
+      OperationCode.INVALIDATE,
+      OperationCode.REGION_CLEAR };
 
   public static AccessControl create() {
     return new DummyAuthorization();
   }
 
-  private void addReaderOps() {
-
-    for (int index = 0; index < READER_OPS.length; index++) {
-      this.allowedOps.add(READER_OPS[index]);
-    }
+  public DummyAuthorization() {
+    this.allowedOps = new HashSet(20);
   }
 
-  private void addWriterOps() {
-
-    for (int index = 0; index < WRITER_OPS.length; index++) {
-      this.allowedOps.add(WRITER_OPS[index]);
-    }
-  }
+  @Override
+  public void init(final Principal principal, final DistributedMember remoteMember, final Cache cache) throws NotAuthorizedException {
+    if (principal != null) {
 
-  public void init(Principal principal, 
-                   DistributedMember remoteMember,
-                   Cache cache) throws NotAuthorizedException {
+      final String name = principal.getName().toLowerCase();
 
-    if (principal != null) {
-      String name = principal.getName().toLowerCase();
       if (name != null) {
-        if (name.equals("root") || name.equals("admin")
-            || name.equals("administrator")) {
+
+        if (name.equals("root") || name.equals("admin") || name.equals("administrator")) {
           addReaderOps();
           addWriterOps();
           this.allowedOps.add(OperationCode.REGION_CREATE);
           this.allowedOps.add(OperationCode.REGION_DESTROY);
-        }
-        else if (name.startsWith("writer")) {
+
+        } else if (name.startsWith("writer")) {
           addWriterOps();
-        }
-        else if (name.startsWith("reader")) {
+
+        } else if (name.startsWith("reader")) {
           addReaderOps();
         }
+
       }
     }
-    this.remoteDistributedMember = remoteMember;
-    this.logger = cache.getSecurityLogger();
+
+    this.remoteMember = remoteMember;
+    this.securityLogWriter = cache.getSecurityLogger();
   }
 
+  @Override
   public boolean authorizeOperation(String regionName, OperationContext context) {
-
-    OperationCode opCode = context.getOperationCode();
-    this.logger.fine("Invoked authorize operation for [" + opCode
-        + "] in region [" + regionName + "] for client: " + remoteDistributedMember);
+    final OperationCode opCode = context.getOperationCode();
+    this.securityLogWriter.fine("Invoked authorize operation for [" + opCode + "] in region [" + regionName + "] for client: " + remoteMember);
     return this.allowedOps.contains(opCode);
   }
 
+  @Override
   public void close() {
-
     this.allowedOps.clear();
   }
 
+  private void addReaderOps() {
+    for (int index = 0; index < READER_OPS.length; index++) {
+      this.allowedOps.add(READER_OPS[index]);
+    }
+  }
+
+  private void addWriterOps() {
+    for (int index = 0; index < WRITER_OPS.length; index++) {
+      this.allowedOps.add(WRITER_OPS[index]);
+    }
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a6388000/geode-core/src/test/java/templates/security/FunctionSecurityPrmsHolder.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/templates/security/FunctionSecurityPrmsHolder.java b/geode-core/src/test/java/templates/security/FunctionSecurityPrmsHolder.java
index 5771fd4..e7280de 100755
--- a/geode-core/src/test/java/templates/security/FunctionSecurityPrmsHolder.java
+++ b/geode-core/src/test/java/templates/security/FunctionSecurityPrmsHolder.java
@@ -16,39 +16,35 @@
  */
 package templates.security;
 
-import java.util.HashSet;
+import java.util.Set;
 
 /**
  * This is a sample class for objects which hold information of the authorized
- * function names and authorized value for the optimizeForWrite.
+ * function names and authorized value for the {@code optimizeForWrite}.
  * 
- * @author Aneesh Karayil
  * @since 6.0
  */
 public class FunctionSecurityPrmsHolder {
 
-  private final Boolean isOptimizeForWrite;
+  private final Boolean optimizeForWrite;
+  private final Set<String> functionIds;
+  private final Set<String> keySet;
 
-  private final HashSet<String> functionIds;
-
-  private final HashSet<String> keySet;
-
-  public FunctionSecurityPrmsHolder(Boolean isOptimizeForWrite,
-      HashSet<String> functionIds, HashSet<String> keySet) {
-    this.isOptimizeForWrite = isOptimizeForWrite;
+  public FunctionSecurityPrmsHolder(final Boolean optimizeForWrite, final Set<String> functionIds, final Set<String> keySet) {
+    this.optimizeForWrite = optimizeForWrite;
     this.functionIds = functionIds;
     this.keySet = keySet;
   }
 
   public Boolean isOptimizeForWrite() {
-    return isOptimizeForWrite;
+    return this.optimizeForWrite;
   }
 
-  public HashSet<String> getFunctionIds() {
-    return functionIds;
+  public Set<String> getFunctionIds() {
+    return this.functionIds;
   }
 
-  public HashSet<String> getKeySet() {
-    return keySet;
+  public Set<String> getKeySet() {
+    return this.keySet;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a6388000/geode-core/src/test/java/templates/security/LdapUserAuthenticator.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/templates/security/LdapUserAuthenticator.java b/geode-core/src/test/java/templates/security/LdapUserAuthenticator.java
index 49059c3..3bd4717 100755
--- a/geode-core/src/test/java/templates/security/LdapUserAuthenticator.java
+++ b/geode-core/src/test/java/templates/security/LdapUserAuthenticator.java
@@ -16,6 +16,12 @@
  */
 package templates.security;
 
+import java.security.Principal;
+import java.util.Properties;
+import javax.naming.Context;
+import javax.naming.directory.DirContext;
+import javax.naming.directory.InitialDirContext;
+
 import com.gemstone.gemfire.LogWriter;
 import com.gemstone.gemfire.distributed.DistributedMember;
 import com.gemstone.gemfire.internal.logging.LogService;
@@ -23,96 +29,73 @@ import com.gemstone.gemfire.security.AuthenticationFailedException;
 import com.gemstone.gemfire.security.Authenticator;
 import org.apache.logging.log4j.Logger;
 
-import java.security.Principal;
-import java.util.Properties;
-import javax.naming.Context;
-import javax.naming.directory.DirContext;
-import javax.naming.directory.InitialDirContext;
-
 /**
- * @author Kumar Neeraj
+ * An implementation of {@link Authenticator} that uses LDAP.
+ *
  * @since 5.5
  */
 public class LdapUserAuthenticator implements Authenticator {
-  private static final Logger logger = LogService.getLogger();
 
-  private String ldapServer = null;
-
-  private String basedn = null;
-
-  private String ldapUrlScheme = null;
+  private static final Logger logger = LogService.getLogger();
 
   public static final String LDAP_SERVER_NAME = "security-ldap-server";
-
-  public static final String LDAP_BASEDN_NAME = "security-ldap-basedn";
-
+  public static final String LDAP_BASEDN_NAME = "security-ldap-baseDomainName";
   public static final String LDAP_SSL_NAME = "security-ldap-usessl";
 
+  private String ldapServer = null;
+  private String baseDomainName = null;
+  private String ldapUrlScheme = null;
+
   public static Authenticator create() {
     return new LdapUserAuthenticator();
   }
 
-  public LdapUserAuthenticator() {
-  }
-
-  public void init(Properties securityProps, LogWriter systemLogger,
-      LogWriter securityLogger) throws AuthenticationFailedException {
+  public void init(final Properties securityProps, final LogWriter systemLogWriter, final LogWriter securityLogWriter) throws AuthenticationFailedException {
     this.ldapServer = securityProps.getProperty(LDAP_SERVER_NAME);
     if (this.ldapServer == null || this.ldapServer.length() == 0) {
-      throw new AuthenticationFailedException(
-          "LdapUserAuthenticator: LDAP server property [" + LDAP_SERVER_NAME
-              + "] not specified");
+      throw new AuthenticationFailedException("LdapUserAuthenticator: LDAP server property [" + LDAP_SERVER_NAME + "] not specified");
     }
-    this.basedn = securityProps.getProperty(LDAP_BASEDN_NAME);
-    if (this.basedn == null || this.basedn.length() == 0) {
-      throw new AuthenticationFailedException(
-          "LdapUserAuthenticator: LDAP base DN property [" + LDAP_BASEDN_NAME
-              + "] not specified");
+
+    this.baseDomainName = securityProps.getProperty(LDAP_BASEDN_NAME);
+    if (this.baseDomainName == null || this.baseDomainName.length() == 0) {
+      throw new AuthenticationFailedException("LdapUserAuthenticator: LDAP base DN property [" + LDAP_BASEDN_NAME + "] not specified");
     }
-    String sslStr = securityProps.getProperty(LDAP_SSL_NAME);
-    if (sslStr != null && sslStr.toLowerCase().equals("true")) {
+
+    final String sslName = securityProps.getProperty(LDAP_SSL_NAME);
+    if (sslName != null && sslName.toLowerCase().equals("true")) {
       this.ldapUrlScheme = "ldaps://";
-    }
-    else {
+    } else {
       this.ldapUrlScheme = "ldap://";
     }
   }
 
-  public Principal authenticate(Properties props, DistributedMember member) {
-
-    String userName = props.getProperty(UserPasswordAuthInit.USER_NAME);
+  public Principal authenticate(final Properties credentials, final DistributedMember member) {
+    final String userName = credentials.getProperty(UserPasswordAuthInit.USER_NAME);
     if (userName == null) {
-      throw new AuthenticationFailedException(
-          "LdapUserAuthenticator: user name property ["
-              + UserPasswordAuthInit.USER_NAME + "] not provided");
+      throw new AuthenticationFailedException("LdapUserAuthenticator: user name property [" + UserPasswordAuthInit.USER_NAME + "] not provided");
     }
-    String passwd = props.getProperty(UserPasswordAuthInit.PASSWORD);
-    if (passwd == null) {
-      passwd = "";
+
+    String password = credentials.getProperty(UserPasswordAuthInit.PASSWORD);
+    if (password == null) {
+      password = "";
     }
 
-    Properties env = new Properties();
-    env
-        .put(Context.INITIAL_CONTEXT_FACTORY,
-            com.sun.jndi.ldap.LdapCtxFactory.class.getName());
-    env.put(Context.PROVIDER_URL, this.ldapUrlScheme + this.ldapServer + '/'
-        + this.basedn);
-    String fullentry = "uid=" + userName + "," + this.basedn;
-    env.put(Context.SECURITY_PRINCIPAL, fullentry);
-    env.put(Context.SECURITY_CREDENTIALS, passwd);
+    final Properties env = new Properties();
+    env.put(Context.INITIAL_CONTEXT_FACTORY, com.sun.jndi.ldap.LdapCtxFactory.class.getName());
+    env.put(Context.PROVIDER_URL, this.ldapUrlScheme + this.ldapServer + '/' + this.baseDomainName);
+    env.put(Context.SECURITY_PRINCIPAL, "uid=" + userName + "," + this.baseDomainName);
+    env.put(Context.SECURITY_CREDENTIALS, password);
+
     try {
-      DirContext ctx = new InitialDirContext(env);
+      final DirContext ctx = new InitialDirContext(env);
       ctx.close();
+    } catch (Exception e) {
+      throw new AuthenticationFailedException("LdapUserAuthenticator: Failure with provided username, password combination for user name: " + userName, e);
     }
-    catch (Exception e) {
-      throw new AuthenticationFailedException(
-          "LdapUserAuthenticator: Failure with provided username, password "
-              + "combination for user name: " + userName, e);
-    }
+
     return new UsernamePrincipal(userName);
   }
 
   public void close() {
   }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a6388000/geode-core/src/test/java/templates/security/PKCSAuthInit.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/templates/security/PKCSAuthInit.java b/geode-core/src/test/java/templates/security/PKCSAuthInit.java
index f4004f3..8709cc4 100755
--- a/geode-core/src/test/java/templates/security/PKCSAuthInit.java
+++ b/geode-core/src/test/java/templates/security/PKCSAuthInit.java
@@ -16,14 +16,6 @@
  */
 package templates.security;
 
-import com.gemstone.gemfire.LogWriter;
-import com.gemstone.gemfire.distributed.DistributedMember;
-import com.gemstone.gemfire.internal.logging.LogService;
-import com.gemstone.gemfire.security.AuthInitialize;
-import com.gemstone.gemfire.security.AuthenticationFailedException;
-import com.gemstone.gemfire.security.GemFireSecurityException;
-import org.apache.logging.log4j.Logger;
-
 import java.io.FileInputStream;
 import java.security.Key;
 import java.security.KeyStore;
@@ -32,101 +24,95 @@ import java.security.Signature;
 import java.security.cert.X509Certificate;
 import java.util.Properties;
 
+import com.gemstone.gemfire.LogWriter;
+import com.gemstone.gemfire.distributed.DistributedMember;
+import com.gemstone.gemfire.internal.logging.LogService;
+import com.gemstone.gemfire.security.AuthInitialize;
+import com.gemstone.gemfire.security.AuthenticationFailedException;
+import org.apache.logging.log4j.Logger;
+
 /**
  * An {@link AuthInitialize} implementation that obtains the digital signature
  * for use with PKCS scheme on server from the given set of properties.
  * 
- * To use this class the <c>security-client-auth-init</c> property should be
- * set to the fully qualified name the static <code>create</code> function
- * viz. <code>templates.security.PKCSAuthInit.create</code>
+ * To use this class the {@code security-client-auth-init} property should be
+ * set to the fully qualified name the static {@code create} function
+ * viz. <{@code templates.security.PKCSAuthInit.create}
  * 
- * @author Kumar Neeraj
  * @since 5.5
  */
 public class PKCSAuthInit implements AuthInitialize {
+
   private static final Logger logger = LogService.getLogger();
 
   public static final String KEYSTORE_FILE_PATH = "security-keystorepath";
-
   public static final String KEYSTORE_ALIAS = "security-alias";
-
   public static final String KEYSTORE_PASSWORD = "security-keystorepass";
-
   public static final String SIGNATURE_DATA = "security-signature";
 
-  protected LogWriter securitylog;
-
-  protected LogWriter systemlog;
-
-  public void close() {
-  }
+  protected LogWriter systemLogWriter;
+  protected LogWriter securityLogWriter;
 
   public static AuthInitialize create() {
     return new PKCSAuthInit();
   }
 
-  public PKCSAuthInit() {
+  public void init(final LogWriter systemLogWriter, final LogWriter securityLogWriter) throws AuthenticationFailedException {
+    this.systemLogWriter = systemLogWriter;
+    this.securityLogWriter = securityLogWriter;
   }
 
-  public void init(LogWriter systemLogger, LogWriter securityLogger)
-      throws AuthenticationFailedException {
-    this.systemlog = systemLogger;
-    this.securitylog = securityLogger;
-  }
-
-  public Properties getCredentials(Properties props, DistributedMember server,
-      boolean isPeer) throws AuthenticationFailedException {
-    String keyStorePath = props.getProperty(KEYSTORE_FILE_PATH);
+  @Override
+  public Properties getCredentials(final Properties securityProperties, final DistributedMember server, final boolean isPeer) throws AuthenticationFailedException {
+    final String keyStorePath = securityProperties.getProperty(KEYSTORE_FILE_PATH);
     if (keyStorePath == null) {
-      throw new AuthenticationFailedException(
-          "PKCSAuthInit: key-store file path property [" + KEYSTORE_FILE_PATH
-              + "] not set.");
+      throw new AuthenticationFailedException("PKCSAuthInit: key-store file path property [" + KEYSTORE_FILE_PATH + "] not set.");
     }
-    String alias = props.getProperty(KEYSTORE_ALIAS);
+
+    final String alias = securityProperties.getProperty(KEYSTORE_ALIAS);
     if (alias == null) {
-      throw new AuthenticationFailedException(
-          "PKCSAuthInit: key alias name property [" + KEYSTORE_ALIAS
-              + "] not set.");
+      throw new AuthenticationFailedException("PKCSAuthInit: key alias name property [" + KEYSTORE_ALIAS + "] not set.");
     }
-    String keyStorePass = props.getProperty(KEYSTORE_PASSWORD);
+
+    final String keyStorePass = securityProperties.getProperty(KEYSTORE_PASSWORD);
 
     try {
-      KeyStore ks = KeyStore.getInstance("PKCS12");
-      char[] passPhrase = (keyStorePass != null ? keyStorePass.toCharArray()
-          : null);
-      FileInputStream certificatefile = new FileInputStream(keyStorePath);
+      final KeyStore ks = KeyStore.getInstance("PKCS12");
+      final char[] passPhrase = (keyStorePass != null ? keyStorePass.toCharArray() : null);
+      final FileInputStream certificatefile = new FileInputStream(keyStorePath);
+
       try {
         ks.load(certificatefile, passPhrase);
-      }
-      finally {
+      } finally {
         certificatefile.close();
       }
 
-      Key key = ks.getKey(alias, passPhrase);
+      final Key key = ks.getKey(alias, passPhrase);
 
       if (key instanceof PrivateKey) {
-
-        PrivateKey privKey = (PrivateKey)key;
-        X509Certificate cert = (X509Certificate)ks.getCertificate(alias);
-        Signature sig = Signature.getInstance(cert.getSigAlgName());
+        final PrivateKey privKey = (PrivateKey)key;
+        final X509Certificate cert = (X509Certificate)ks.getCertificate(alias);
+        final Signature sig = Signature.getInstance(cert.getSigAlgName());
 
         sig.initSign(privKey);
         sig.update(alias.getBytes("UTF-8"));
-        byte[] signatureBytes = sig.sign();
+        final byte[] signatureBytes = sig.sign();
 
-        Properties newprops = new Properties();
+        final Properties newprops = new Properties();
         newprops.put(KEYSTORE_ALIAS, alias);
         newprops.put(SIGNATURE_DATA, signatureBytes);
         return newprops;
+
+      } else {
+        throw new AuthenticationFailedException("PKCSAuthInit: " + "Failed to load private key from the given file: " + keyStorePath);
       }
-      else {
-        throw new AuthenticationFailedException("PKCSAuthInit: "
-            + "Failed to load private key from the given file: " + keyStorePath);
-      }
-    }
-    catch (Exception ex) {
-      throw new AuthenticationFailedException(
-          "PKCSAuthInit: Exception while getting credentials: " + ex, ex);
+
+    } catch (Exception ex) {
+      throw new AuthenticationFailedException("PKCSAuthInit: Exception while getting credentials: " + ex, ex);
     }
   }
+
+  @Override
+  public void close() {
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a6388000/geode-core/src/test/java/templates/security/PKCSAuthenticator.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/templates/security/PKCSAuthenticator.java b/geode-core/src/test/java/templates/security/PKCSAuthenticator.java
index 7af7312..c136447 100755
--- a/geode-core/src/test/java/templates/security/PKCSAuthenticator.java
+++ b/geode-core/src/test/java/templates/security/PKCSAuthenticator.java
@@ -16,14 +16,6 @@
  */
 package templates.security;
 
-import com.gemstone.gemfire.LogWriter;
-import com.gemstone.gemfire.distributed.DistributedMember;
-import com.gemstone.gemfire.internal.logging.LogService;
-import com.gemstone.gemfire.security.AuthenticationFailedException;
-import com.gemstone.gemfire.security.Authenticator;
-import com.gemstone.gemfire.security.GemFireSecurityException;
-import org.apache.logging.log4j.Logger;
-
 import java.io.FileInputStream;
 import java.security.KeyStore;
 import java.security.NoSuchAlgorithmException;
@@ -37,130 +29,129 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
 
+import com.gemstone.gemfire.LogWriter;
+import com.gemstone.gemfire.distributed.DistributedMember;
+import com.gemstone.gemfire.internal.logging.LogService;
+import com.gemstone.gemfire.security.AuthenticationFailedException;
+import com.gemstone.gemfire.security.Authenticator;
+import org.apache.logging.log4j.Logger;
+
 /**
- * @author kneeraj
- * 
+ * An implementation of {@link Authenticator} that uses PKCS.
  */
 public class PKCSAuthenticator implements Authenticator {
+
   private static final Logger logger = LogService.getLogger();
 
   public static final String PUBLIC_KEY_FILE = "security-publickey-filepath";
-
   public static final String PUBLIC_KEYSTORE_PASSWORD = "security-publickey-pass";
 
   private String pubKeyFilePath;
-
   private String pubKeyPass;
-
   private Map aliasCertificateMap;
 
-  protected LogWriter systemlog;
-
-  protected LogWriter securitylog;
+  private LogWriter systemLogWriter;
+  private LogWriter securityLogWriter;
 
   public static Authenticator create() {
     return new PKCSAuthenticator();
   }
 
-  public PKCSAuthenticator() {
-  }
+  @Override
+  public void init(final Properties securityProperties, final LogWriter systemLogWriter, final LogWriter securityLogWriter) throws AuthenticationFailedException {
+    this.systemLogWriter = systemLogWriter;
+    this.securityLogWriter = securityLogWriter;
 
-  private void populateMap() {
-    try {
-      KeyStore ks = KeyStore.getInstance("JKS");
-      char[] passPhrase = (pubKeyPass != null ? pubKeyPass.toCharArray() : null);
-      FileInputStream keystorefile = new FileInputStream(this.pubKeyFilePath);
-      try {
-        ks.load(keystorefile, passPhrase);
-      }
-      finally {
-        keystorefile.close();
-      }
-      Enumeration e = ks.aliases();
-      while (e.hasMoreElements()) {
-        Object alias = e.nextElement();
-        Certificate cert = ks.getCertificate((String)alias);
-        if (cert instanceof X509Certificate) {
-          this.aliasCertificateMap.put(alias, cert);
-        }
-      }
-    }
-    catch (Exception e) {
-      throw new AuthenticationFailedException(
-          "Exception while getting public keys: " + e.getMessage(), e);
-    }
-  }
-
-  public void init(Properties systemProps, LogWriter systemLogger,
-      LogWriter securityLogger) throws AuthenticationFailedException {
-    this.systemlog = systemLogger;
-    this.securitylog = securityLogger;
-    this.pubKeyFilePath = systemProps.getProperty(PUBLIC_KEY_FILE);
+    this.pubKeyFilePath = securityProperties.getProperty(PUBLIC_KEY_FILE);
     if (this.pubKeyFilePath == null) {
-      throw new AuthenticationFailedException("PKCSAuthenticator: property "
-          + PUBLIC_KEY_FILE + " not specified as the public key file.");
-    }
-    this.pubKeyPass = systemProps.getProperty(PUBLIC_KEYSTORE_PASSWORD);
-    this.aliasCertificateMap = new HashMap();
-    populateMap();
-  }
-
-  private AuthenticationFailedException getException(String exStr,
-      Exception cause) {
-
-    String exMsg = "PKCSAuthenticator: Authentication of client failed due to: "
-        + exStr;
-    if (cause != null) {
-      return new AuthenticationFailedException(exMsg, cause);
-    }
-    else {
-      return new AuthenticationFailedException(exMsg);
+      throw new AuthenticationFailedException("PKCSAuthenticator: property " + PUBLIC_KEY_FILE + " not specified as the public key file.");
     }
-  }
 
-  private AuthenticationFailedException getException(String exStr) {
-    return getException(exStr, null);
-  }
+    this.pubKeyPass = securityProperties.getProperty(PUBLIC_KEYSTORE_PASSWORD);
+    this.aliasCertificateMap = new HashMap();
 
-  private X509Certificate getCertificate(String alias)
-      throws NoSuchAlgorithmException, InvalidKeySpecException {
-    if (this.aliasCertificateMap.containsKey(alias)) {
-      return (X509Certificate)this.aliasCertificateMap.get(alias);
-    }
-    return null;
+    populateMap();
   }
 
-  public Principal authenticate(Properties props, DistributedMember member)
-      throws AuthenticationFailedException {
-    String alias = (String)props.get(PKCSAuthInit.KEYSTORE_ALIAS);
+  @Override
+  public Principal authenticate(final Properties credentials, final DistributedMember member) throws AuthenticationFailedException {
+    final String alias = (String)credentials.get(PKCSAuthInit.KEYSTORE_ALIAS);
     if (alias == null || alias.length() <= 0) {
       throw new AuthenticationFailedException("No alias received");
     }
+
     try {
-      X509Certificate cert = getCertificate(alias);
+      final X509Certificate cert = getCertificate(alias);
       if (cert == null) {
-        throw getException("No certificate found for alias:" + alias);
+        throw newException("No certificate found for alias:" + alias);
       }
-      byte[] signatureBytes = (byte[])props.get(PKCSAuthInit.SIGNATURE_DATA);
+
+      final byte[] signatureBytes = (byte[])credentials.get(PKCSAuthInit.SIGNATURE_DATA);
       if (signatureBytes == null) {
-        throw getException("signature data property ["
-            + PKCSAuthInit.SIGNATURE_DATA + "] not provided");
+        throw newException("signature data property [" + PKCSAuthInit.SIGNATURE_DATA + "] not provided");
       }
-      Signature sig = Signature.getInstance(cert.getSigAlgName());
+
+      final Signature sig = Signature.getInstance(cert.getSigAlgName());
       sig.initVerify(cert);
       sig.update(alias.getBytes("UTF-8"));
 
       if (!sig.verify(signatureBytes)) {
-        throw getException("verification of client signature failed");
+        throw newException("verification of client signature failed");
       }
+
       return new PKCSPrincipal(alias);
-    }
-    catch (Exception ex) {
-      throw getException(ex.toString(), ex);
+
+    } catch (Exception ex) {
+      throw newException(ex.toString(), ex);
     }
   }
 
+  @Override
   public void close() {
   }
 
+  private void populateMap() {
+    try {
+      final KeyStore keyStore = KeyStore.getInstance("JKS");
+      final char[] passPhrase = this.pubKeyPass != null ? this.pubKeyPass.toCharArray() : null;
+      final FileInputStream keyStoreFile = new FileInputStream(this.pubKeyFilePath);
+
+      try {
+        keyStore.load(keyStoreFile, passPhrase);
+      } finally {
+        keyStoreFile.close();
+      }
+
+      for (Enumeration e = keyStore.aliases(); e.hasMoreElements();) {
+        final Object alias = e.nextElement();
+        final Certificate cert = keyStore.getCertificate((String)alias);
+        if (cert instanceof X509Certificate) {
+          this.aliasCertificateMap.put(alias, cert);
+        }
+      }
+
+    } catch (Exception e) {
+      throw new AuthenticationFailedException("Exception while getting public keys: " + e.getMessage(), e);
+    }
+  }
+
+  private AuthenticationFailedException newException(final String message, final Exception cause) {
+    final String fullMessage = "PKCSAuthenticator: Authentication of client failed due to: " + message;
+    if (cause != null) {
+      return new AuthenticationFailedException(fullMessage, cause);
+    } else {
+      return new AuthenticationFailedException(fullMessage);
+    }
+  }
+
+  private AuthenticationFailedException newException(final String message) {
+    return newException(message, null);
+  }
+
+  private X509Certificate getCertificate(final String alias) throws NoSuchAlgorithmException, InvalidKeySpecException {
+    if (this.aliasCertificateMap.containsKey(alias)) {
+      return (X509Certificate) this.aliasCertificateMap.get(alias);
+    }
+    return null;
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a6388000/geode-core/src/test/java/templates/security/PKCSPrincipal.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/templates/security/PKCSPrincipal.java b/geode-core/src/test/java/templates/security/PKCSPrincipal.java
index bc3049f..5d878bf 100755
--- a/geode-core/src/test/java/templates/security/PKCSPrincipal.java
+++ b/geode-core/src/test/java/templates/security/PKCSPrincipal.java
@@ -20,18 +20,15 @@ package templates.security;
 import java.io.Serializable;
 import java.security.Principal;
 
-/**
- * @author kneeraj
- * 
- */
 public class PKCSPrincipal implements Principal, Serializable {
 
-  private String alias;
+  private final String alias;
 
-  public PKCSPrincipal(String alias) {
+  public PKCSPrincipal(final String alias) {
     this.alias = alias;
   }
 
+  @Override
   public String getName() {
     return this.alias;
   }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a6388000/geode-core/src/test/java/templates/security/PKCSPrincipalTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/templates/security/PKCSPrincipalTest.java b/geode-core/src/test/java/templates/security/PKCSPrincipalTest.java
index fc8454c..6ce216f 100644
--- a/geode-core/src/test/java/templates/security/PKCSPrincipalTest.java
+++ b/geode-core/src/test/java/templates/security/PKCSPrincipalTest.java
@@ -16,15 +16,15 @@
  */
 package templates.security;
 
+import static org.assertj.core.api.Assertions.*;
+
+import java.io.Serializable;
+
 import com.gemstone.gemfire.test.junit.categories.UnitTest;
 import org.apache.commons.lang.SerializationUtils;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
-import java.io.Serializable;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
 /**
  * Unit tests for {@link PKCSPrincipal}
  */

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a6388000/geode-core/src/test/java/templates/security/UserPasswordAuthInit.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/templates/security/UserPasswordAuthInit.java b/geode-core/src/test/java/templates/security/UserPasswordAuthInit.java
index 1c48773..58f356e 100755
--- a/geode-core/src/test/java/templates/security/UserPasswordAuthInit.java
+++ b/geode-core/src/test/java/templates/security/UserPasswordAuthInit.java
@@ -16,68 +16,60 @@
  */
 package templates.security;
 
+import java.util.Properties;
+
 import com.gemstone.gemfire.LogWriter;
 import com.gemstone.gemfire.distributed.DistributedMember;
 import com.gemstone.gemfire.security.AuthInitialize;
 import com.gemstone.gemfire.security.AuthenticationFailedException;
 
-import java.util.Properties;
-
 /**
  * An {@link AuthInitialize} implementation that obtains the user name and
  * password as the credentials from the given set of properties.
  * 
- * To use this class the <c>security-client-auth-init</c> property should be
- * set to the fully qualified name the static <code>create</code> function
- * viz. <code>templates.security.UserPasswordAuthInit.create</code>
+ * To use this class the {@code security-client-auth-init} property should be
+ * set to the fully qualified name the static {@code create} function
+ * viz. {@code templates.security.UserPasswordAuthInit.create}
  * 
- * @author Sumedh Wale
  * @since 5.5
  */
 public class UserPasswordAuthInit implements AuthInitialize {
 
   public static final String USER_NAME = "security-username";
-
   public static final String PASSWORD = "security-password";
 
-  protected LogWriter securitylog;
-
-  protected LogWriter systemlog;
+  protected LogWriter systemLogWriter;
+  protected LogWriter securityLogWriter;
 
   public static AuthInitialize create() {
     return new UserPasswordAuthInit();
   }
 
-  public void init(LogWriter systemLogger, LogWriter securityLogger)
-      throws AuthenticationFailedException {
-    this.systemlog = systemLogger;
-    this.securitylog = securityLogger;
+  @Override
+  public void init(final LogWriter systemLogWriter, final LogWriter securityLogWriter) throws AuthenticationFailedException {
+    this.systemLogWriter = systemLogWriter;
+    this.securityLogWriter = securityLogWriter;
   }
 
-  public UserPasswordAuthInit() {
-  }
-
-  public Properties getCredentials(Properties props, DistributedMember server,
-      boolean isPeer) throws AuthenticationFailedException {
-
-    Properties newProps = new Properties();
-    String userName = props.getProperty(USER_NAME);
+  @Override
+  public Properties getCredentials(final Properties securityProperties, final DistributedMember server, final boolean isPeer) throws AuthenticationFailedException {
+    String userName = securityProperties.getProperty(USER_NAME);
     if (userName == null) {
-      throw new AuthenticationFailedException(
-          "UserPasswordAuthInit: user name property [" + USER_NAME
-              + "] not set.");
+      throw new AuthenticationFailedException("UserPasswordAuthInit: user name property [" + USER_NAME + "] not set.");
     }
-    newProps.setProperty(USER_NAME, userName);
-    String passwd = props.getProperty(PASSWORD);
-    // If password is not provided then use empty string as the password.
-    if (passwd == null) {
-      passwd = "";
+
+    String password = securityProperties.getProperty(PASSWORD);
+    if (password == null) {
+      password = "";
     }
-    newProps.setProperty(PASSWORD, passwd);
-    return newProps;
+
+    Properties securityPropertiesCopy = new Properties();
+    securityPropertiesCopy.setProperty(USER_NAME, userName);
+    securityPropertiesCopy.setProperty(PASSWORD, password);
+    return securityPropertiesCopy;
   }
 
+  @Override
   public void close() {
   }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a6388000/geode-core/src/test/java/templates/security/UsernamePrincipal.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/templates/security/UsernamePrincipal.java b/geode-core/src/test/java/templates/security/UsernamePrincipal.java
index 781dd5a..b6d94ae 100755
--- a/geode-core/src/test/java/templates/security/UsernamePrincipal.java
+++ b/geode-core/src/test/java/templates/security/UsernamePrincipal.java
@@ -22,17 +22,17 @@ import java.security.Principal;
 /**
  * An implementation of {@link Principal} class for a simple user name.
  * 
- * @author Kumar Neeraj
  * @since 5.5
  */
 public class UsernamePrincipal implements Principal, Serializable {
 
   private final String userName;
 
-  public UsernamePrincipal(String userName) {
+  public UsernamePrincipal(final String userName) {
     this.userName = userName;
   }
 
+  @Override
   public String getName() {
     return this.userName;
   }
@@ -41,5 +41,4 @@ public class UsernamePrincipal implements Principal, Serializable {
   public String toString() {
     return this.userName;
   }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a6388000/geode-core/src/test/java/templates/security/UsernamePrincipalTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/templates/security/UsernamePrincipalTest.java b/geode-core/src/test/java/templates/security/UsernamePrincipalTest.java
index 023c214..e88fd18 100644
--- a/geode-core/src/test/java/templates/security/UsernamePrincipalTest.java
+++ b/geode-core/src/test/java/templates/security/UsernamePrincipalTest.java
@@ -16,15 +16,15 @@
  */
 package templates.security;
 
+import static org.assertj.core.api.Assertions.*;
+
+import java.io.Serializable;
+
 import com.gemstone.gemfire.test.junit.categories.UnitTest;
 import org.apache.commons.lang.SerializationUtils;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
-import java.io.Serializable;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
 /**
  * Unit tests for {@link UsernamePrincipal}
  */

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a6388000/geode-core/src/test/java/templates/security/XmlAuthorization.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/templates/security/XmlAuthorization.java b/geode-core/src/test/java/templates/security/XmlAuthorization.java
index 29d94de..3f18b62 100755
--- a/geode-core/src/test/java/templates/security/XmlAuthorization.java
+++ b/geode-core/src/test/java/templates/security/XmlAuthorization.java
@@ -16,6 +16,19 @@
  */
 package templates.security;
 
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.Principal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
 import com.gemstone.gemfire.LogWriter;
 import com.gemstone.gemfire.cache.Cache;
 import com.gemstone.gemfire.cache.operations.ExecuteFunctionOperationContext;
@@ -35,28 +48,15 @@ import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.SAXParseException;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.security.Principal;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
 /**
- * An implementation of the <code>{@link AccessControl}</code> interface that
- * allows authorization using the permissions as specified in the given XML
+ * An implementation of the {@link AccessControl} interface that allows
+ * authorization using the permissions as specified in the given XML
  * file.
  * 
  * The format of the XML file is specified in <a href="authz5_5.dtd"/>. It
  * implements a role-based authorization at the operation level for each region.
  * Each principal name may be associated with a set of roles. The name of the
- * principal is obtained using the {@link Principal#getName} method and no other
+ * principal is obtained using the {@link Principal#getName()} method and no other
  * information of the principal is utilized. Each role can be provided
  * permissions to execute operations for each region.
  * 
@@ -83,99 +83,106 @@ import javax.xml.parsers.DocumentBuilderFactory;
  * (e.g. {@link OperationCode#REGION_DESTROY}) specified for a particular region
  * is ignored i.e. the cache-level operations are only applicable when no region
  * name is specified. A {@link OperationCode#QUERY} operation is permitted when
- * either the <code>QUERY</code> permission is provided at the cache-level for
- * the user or when <code>QUERY</code> permission is provided for all the
+ * either the {@code QUERY} permission is provided at the cache-level for
+ * the user or when {@code QUERY} permission is provided for all the
  * regions that are part of the query string.
  * 
  * Any roles specified in the "user" tag that do not have a specified permission
  * set using the "permission" tags are ignored. When no {@link Principal} is
  * associated with the current connection, then empty user name is used to
  * search for the roles so an empty user name can be used to specify roles of
- * unauthenticated clients (i.e. <code>Everyone</code>).
+ * unauthenticated clients (i.e. {@code Everyone}).
  * 
  * This sample implementation is useful only for pre-operation checks and should
  * not be used for post-operation authorization since it does nothing useful for
  * post-operation case.
  * 
- * @author Sumedh Wale
  * @since 5.5
  */
 public class XmlAuthorization implements AccessControl {
 
   public static final String DOC_URI_PROP_NAME = "security-authz-xml-uri";
 
-  private static final String TAG_ROLE = "role";
+  private static final Object sync = new Object();
+  private static final String EMPTY_VALUE = "";
 
+  private static final String TAG_ROLE = "role";
   private static final String TAG_USER = "user";
-
   private static final String TAG_PERMS = "permission";
-
   private static final String TAG_OP = "operation";
 
   private static final String ATTR_ROLENAME = "name";
-
   private static final String ATTR_ROLE = "role";
-
   private static final String ATTR_REGIONS = "regions";
-
   private static final String ATTR_FUNCTION_IDS = "functionIds";
-
-  private static final String ATTR_FUNCTION_OPTIMIZE_FOR_WRITE =
-    "optimizeForWrite";
-
+  private static final String ATTR_FUNCTION_OPTIMIZE_FOR_WRITE = "optimizeForWrite";
   private static final String ATTR_FUNCTION_KEY_SET = "keySet";
 
   private static String currentDocUri = null;
-
   private static Map<String, HashSet<String>> userRoles = null;
-
-  private static Map<String, Map<String,
-    Map<OperationCode, FunctionSecurityPrmsHolder>>> rolePermissions = null;
-
+  private static Map<String, Map<String, Map<OperationCode, FunctionSecurityPrmsHolder>>> rolePermissions = null;
   private static NotAuthorizedException xmlLoadFailure = null;
 
-  private static final Object sync = new Object();
-
-  private static final String EMPTY_VALUE = "";
-
-  private final Map<String, Map<OperationCode,
-    FunctionSecurityPrmsHolder>> allowedOps;
+  private final Map<String, Map<OperationCode, FunctionSecurityPrmsHolder>> allowedOps;
 
-  protected LogWriter logger;
+  protected LogWriter systemLogWriter;
+  protected LogWriter securityLogWriter;
 
-  protected LogWriter securityLogger;
-
-  private XmlAuthorization() {
+  /**
+   * Public static factory method to create an instance of
+   * {@code XmlAuthorization}. The fully qualified name of the class
+   * ({@code templates.security.XmlAuthorization.create})
+   * should be mentioned as the {@code security-client-accessor} system
+   * property to enable pre-operation authorization checks as implemented in
+   * this class.
+   *
+   * @return an object of {@code XmlAuthorization} class
+   */
+  public static AccessControl create() {
+    return new XmlAuthorization();
+  }
 
-    this.allowedOps = new HashMap<String, Map<OperationCode,
-        FunctionSecurityPrmsHolder>>();
-    this.logger = null;
-    this.securityLogger = null;
+  /**
+   * Clear all the statically cached information.
+   */
+  public static void clear() {
+    XmlAuthorization.currentDocUri = null;
+    if (XmlAuthorization.userRoles != null) {
+      XmlAuthorization.userRoles.clear();
+      XmlAuthorization.userRoles = null;
+    }
+    if (XmlAuthorization.rolePermissions != null) {
+      XmlAuthorization.rolePermissions.clear();
+      XmlAuthorization.rolePermissions = null;
+    }
+    XmlAuthorization.xmlLoadFailure = null;
   }
 
   /**
    * Change the region name to a standard format having single '/' as separator
    * and starting with a '/' as in standard POSIX paths
    */
-  public static String normalizeRegionName(String regionName) {
-
+  public static String normalizeRegionName(final String regionName) {
     if (regionName == null || regionName.length() == 0) {
       return EMPTY_VALUE;
     }
+
     char[] resultName = new char[regionName.length() + 1];
     boolean changed = false;
     boolean isPrevCharSlash = false;
     int startIndex;
+
     if (regionName.charAt(0) != '/') {
       changed = true;
       startIndex = 0;
-    }
-    else {
+    } else {
       isPrevCharSlash = true;
       startIndex = 1;
     }
+
     resultName[0] = '/';
     int resultLength = 1;
+
     // Replace all more than one '/'s with a single '/'
     for (int index = startIndex; index < regionName.length(); ++index) {
       char currChar = regionName.charAt(index);
@@ -185,294 +192,82 @@ public class XmlAuthorization implements AccessControl {
           continue;
         }
         isPrevCharSlash = true;
-      }
-      else {
+      } else {
         isPrevCharSlash = false;
       }
       resultName[resultLength++] = currChar;
     }
+
     // Remove any trailing slash
     if (resultName[resultLength - 1] == '/') {
       --resultLength;
       changed = true;
     }
+
     if (changed) {
       return new String(resultName, 0, resultLength);
-    }
-    else {
+    } else {
       return regionName;
     }
   }
 
-  /** Get the attribute value for a given attribute name of a node. */
-  private static String getAttributeValue(Node node, String attrName) {
-
-    NamedNodeMap attrMap = node.getAttributes();
-    Node attrNode;
-    if (attrMap != null && (attrNode = attrMap.getNamedItem(attrName)) != null) {
-      return ((Attr)attrNode).getValue();
-    }
-    return EMPTY_VALUE;
-  }
-
-  /** Get the string contained in the first text child of the node. */
-  private static String getNodeValue(Node node) {
-
-    NodeList childNodes = node.getChildNodes();
-    for (int index = 0; index < childNodes.getLength(); index++) {
-      Node childNode = childNodes.item(index);
-      if (childNode.getNodeType() == Node.TEXT_NODE) {
-        return childNode.getNodeValue();
-      }
-    }
-    return EMPTY_VALUE;
-  }
-
-  /**
-   * Public static factory method to create an instance of
-   * <code>XmlAuthorization</code>. The fully qualified name of the class
-   * (<code>templates.security.XmlAuthorization.create</code>)
-   * should be mentioned as the <code>security-client-accessor</code> system
-   * property to enable pre-operation authorization checks as implemented in
-   * this class.
-   * 
-   * @return an object of <code>XmlAuthorization</code> class
-   */
-  public static AccessControl create() {
-
-    return new XmlAuthorization();
-  }
-
-  /**
-   * Cache authorization information for all users statically. This method is
-   * not thread-safe and is should either be invoked only once, or the caller
-   * should take the appropriate locks.
-   * 
-   * @param cache
-   *                reference to the cache object for the distributed system
-   */
-  private static void init(Cache cache) throws NotAuthorizedException {
-
-    LogWriter logger = cache.getLogger();
-    String xmlDocumentUri = (String)cache.getDistributedSystem()
-        .getSecurityProperties().get(DOC_URI_PROP_NAME);
-    try {
-      if (xmlDocumentUri == null) {
-        throw new NotAuthorizedException("No ACL file defined using tag ["
-            + DOC_URI_PROP_NAME + "] in system properties");
-      }
-      if (xmlDocumentUri.equals(XmlAuthorization.currentDocUri)) {
-        if (XmlAuthorization.xmlLoadFailure != null) {
-          throw XmlAuthorization.xmlLoadFailure;
-        }
-        return;
-      }
-      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-      factory.setIgnoringComments(true);
-      factory.setIgnoringElementContentWhitespace(true);
-      factory.setValidating(true);
-      DocumentBuilder builder = factory.newDocumentBuilder();
-      XmlErrorHandler errorHandler = new XmlErrorHandler(logger, xmlDocumentUri);
-      builder.setErrorHandler(errorHandler);
-      builder.setEntityResolver(new AuthzDtdResolver());
-      Document xmlDocument = builder.parse(xmlDocumentUri);
-
-      XmlAuthorization.userRoles = new HashMap<String, HashSet<String>>();
-      XmlAuthorization.rolePermissions = new HashMap<String, Map<String,
-          Map<OperationCode, FunctionSecurityPrmsHolder>>>();
-      NodeList roleUserNodes = xmlDocument.getElementsByTagName(TAG_ROLE);
-      for (int roleIndex = 0; roleIndex < roleUserNodes.getLength();
-          roleIndex++) {
-        Node roleUserNode = roleUserNodes.item(roleIndex);
-        String roleName = getAttributeValue(roleUserNode, ATTR_ROLENAME);
-        NodeList userNodes = roleUserNode.getChildNodes();
-        for (int userIndex = 0; userIndex < userNodes.getLength();
-            userIndex++) {
-          Node userNode = userNodes.item(userIndex);
-          if (userNode.getNodeName() == TAG_USER) {
-            String userName = getNodeValue(userNode);
-            HashSet<String> userRoleSet = XmlAuthorization.userRoles
-                .get(userName);
-            if (userRoleSet == null) {
-              userRoleSet = new HashSet<String>();
-              XmlAuthorization.userRoles.put(userName, userRoleSet);
-            }
-            userRoleSet.add(roleName);
-          }
-          else {
-            throw new SAXParseException("Unknown tag ["
-                + userNode.getNodeName() + "] as child of tag [" + TAG_ROLE
-                + ']', null);
-          }
-        }
-      }
-      NodeList rolePermissionNodes = xmlDocument
-          .getElementsByTagName(TAG_PERMS);
-      for (int permIndex = 0; permIndex < rolePermissionNodes.getLength();
-          permIndex++) {
-        Node rolePermissionNode = rolePermissionNodes.item(permIndex);
-        String roleName = getAttributeValue(rolePermissionNode, ATTR_ROLE);
-        Map<String, Map<OperationCode, FunctionSecurityPrmsHolder>>
-          regionOperationMap = XmlAuthorization.rolePermissions.get(roleName);
-        if (regionOperationMap == null) {
-          regionOperationMap = new HashMap<String,
-            Map<OperationCode, FunctionSecurityPrmsHolder>>();
-          XmlAuthorization.rolePermissions.put(roleName, regionOperationMap);
-        }
-        NodeList operationNodes = rolePermissionNode.getChildNodes();
-        HashMap<OperationCode, FunctionSecurityPrmsHolder> operationMap =
-          new HashMap<OperationCode, FunctionSecurityPrmsHolder>();
-        for (int opIndex = 0; opIndex < operationNodes.getLength(); opIndex++) {
-          Node operationNode = operationNodes.item(opIndex);
-          if (operationNode.getNodeName() == TAG_OP) {
-            String operationName = getNodeValue(operationNode);
-            OperationCode code = OperationCode.parse(operationName);
-            if (code == null) {
-              throw new SAXParseException("Unknown operation [" + operationName
-                  + ']', null);
-            }
-            if (code != OperationCode.EXECUTE_FUNCTION) {
-              operationMap.put(code, null);
-            }
-            else {
-              String optimizeForWrite = getAttributeValue(operationNode,
-                  ATTR_FUNCTION_OPTIMIZE_FOR_WRITE);
-              String functionAttr = getAttributeValue(operationNode,
-                  ATTR_FUNCTION_IDS);
-              String keysAttr = getAttributeValue(operationNode,
-                  ATTR_FUNCTION_KEY_SET);
-
-              Boolean isOptimizeForWrite;
-              HashSet<String> functionIds;
-              HashSet<String> keySet;
-
-              if (optimizeForWrite == null || optimizeForWrite.length() == 0) {
-                isOptimizeForWrite = null;
-              }
-              else {
-                isOptimizeForWrite = Boolean.parseBoolean(optimizeForWrite);
-              }
-
-              if (functionAttr == null || functionAttr.length() == 0) {
-                functionIds = null;
-              }
-              else {
-                String[] functionArray = functionAttr.split(",");
-                functionIds = new HashSet<String>();
-                for (int strIndex = 0; strIndex < functionArray.length;
-                    ++strIndex) {
-                  functionIds.add((functionArray[strIndex]));
-                }
-              }
-
-              if (keysAttr == null || keysAttr.length() == 0) {
-                keySet = null;
-              }
-              else {
-                String[] keySetArray = keysAttr.split(",");
-                keySet = new HashSet<String>();
-                for (int strIndex = 0; strIndex < keySetArray.length;
-                    ++strIndex) {
-                  keySet.add((keySetArray[strIndex]));
-                }
-              }
-              FunctionSecurityPrmsHolder functionContext =
-                new FunctionSecurityPrmsHolder(isOptimizeForWrite,
-                    functionIds, keySet);
-              operationMap.put(code, functionContext);
-            }
-          }
-          else {
-            throw new SAXParseException("Unknown tag ["
-                + operationNode.getNodeName() + "] as child of tag ["
-                + TAG_PERMS + ']', null);
-          }
-        }
-        String regionNames = getAttributeValue(rolePermissionNode, ATTR_REGIONS);
-        if (regionNames == null || regionNames.length() == 0) {
-          regionOperationMap.put(EMPTY_VALUE, operationMap);
-        }
-        else {
-          String[] regionNamesSplit = regionNames.split(",");
-          for (int strIndex = 0; strIndex < regionNamesSplit.length;
-              ++strIndex) {
-            regionOperationMap.put(
-                normalizeRegionName(regionNamesSplit[strIndex]), operationMap);
-          }
-        }
-      }
-      XmlAuthorization.currentDocUri = xmlDocumentUri;
-    }
-    catch (Exception ex) {
-      String exStr;
-      if (ex instanceof NotAuthorizedException) {
-        exStr = ex.getMessage();
-      }
-      else {
-        exStr = ex.getClass().getName() + ": " + ex.getMessage();
-      }
-      logger.warning("XmlAuthorization.init: " + exStr);
-      XmlAuthorization.xmlLoadFailure = new NotAuthorizedException(exStr, ex);
-      throw XmlAuthorization.xmlLoadFailure;
-    }
+  private XmlAuthorization() {
+    this.allowedOps = new HashMap<String, Map<OperationCode, FunctionSecurityPrmsHolder>>();
+    this.systemLogWriter = null;
+    this.securityLogWriter = null;
   }
 
   /**
-   * Initialize the <code>XmlAuthorization</code> callback for a client having
+   * Initialize the {@code XmlAuthorization} callback for a client having
    * the given principal.
    * 
    * This method caches the full XML authorization file the first time it is
    * invoked and caches all the permissions for the provided
-   * <code>principal</code> to speed up lookup the
-   * <code>authorizeOperation</code> calls. The permissions for the principal
+   * {@code principal} to speed up lookup the
+   * {@code authorizeOperation} calls. The permissions for the principal
    * are maintained as a {@link Map} of region name to the {@link HashSet} of
    * operations allowed for that region. A global entry with region name as
    * empty string is also made for permissions provided for all the regions.
    * 
-   * @param principal
-   *                the principal associated with the authenticated client
-   * @param cache
-   *                reference to the cache object
-   * @param remoteMember
-   *                the {@link DistributedMember} object for the remote
-   *                authenticated client
+   * @param  principal
+   *         the principal associated with the authenticated client
+   * @param  cache
+   *         reference to the cache object
+   * @param  remoteMember
+   *         the {@link DistributedMember} object for the remote authenticated
+   *         client
    * 
    * @throws NotAuthorizedException
-   *                 if some exception condition happens during the
-   *                 initialization while reading the XML; in such a case all
-   *                 subsequent client operations will throw
-   *                 <code>NotAuthorizedException</code>
+   *         if some exception condition happens during the initialization
+   *         while reading the XML; in such a case all subsequent client
+   *         operations will throw {@code NotAuthorizedException}
    */
-  public void init(Principal principal, DistributedMember remoteMember,
-      Cache cache) throws NotAuthorizedException {
-
+  @Override
+  public void init(final Principal principal, final DistributedMember remoteMember, final Cache cache) throws NotAuthorizedException {
     synchronized (sync) {
       XmlAuthorization.init(cache);
     }
-    this.logger = cache.getLogger();
-    this.securityLogger = cache.getSecurityLogger();
+
+    this.systemLogWriter = cache.getLogger();
+    this.securityLogWriter = cache.getSecurityLogger();
 
     String name;
     if (principal != null) {
       name = principal.getName();
-    }
-    else {
+    } else {
       name = EMPTY_VALUE;
     }
+
     HashSet<String> roles = XmlAuthorization.userRoles.get(name);
     if (roles != null) {
       for (String roleName : roles) {
-        Map<String, Map<OperationCode, FunctionSecurityPrmsHolder>>
-          regionOperationMap = XmlAuthorization.rolePermissions.get(roleName);
+        Map<String, Map<OperationCode, FunctionSecurityPrmsHolder>> regionOperationMap = XmlAuthorization.rolePermissions.get(roleName);
         if (regionOperationMap != null) {
-          for (Map.Entry<String, Map<OperationCode, FunctionSecurityPrmsHolder>>
-              regionEntry : regionOperationMap.entrySet()) {
+          for (Map.Entry<String, Map<OperationCode, FunctionSecurityPrmsHolder>> regionEntry : regionOperationMap.entrySet()) {
             String regionName = regionEntry.getKey();
-            Map<OperationCode, FunctionSecurityPrmsHolder> regionOperations =
-              this.allowedOps.get(regionName);
+            Map<OperationCode, FunctionSecurityPrmsHolder> regionOperations = this.allowedOps.get(regionName);
             if (regionOperations == null) {
-              regionOperations =
-                new HashMap<OperationCode, FunctionSecurityPrmsHolder>();
+              regionOperations = new HashMap<OperationCode, FunctionSecurityPrmsHolder>();
               this.allowedOps.put(regionName, regionOperations);
             }
             regionOperations.putAll(regionEntry.getValue());
@@ -490,19 +285,18 @@ public class XmlAuthorization implements AccessControl {
    * empty region name are looked up. The operation is allowed if it is found
    * this permission list.
    * 
-   * @param regionName
-   *                When null then it indicates a cache-level operation, else
-   *                the name of the region for the operation.
-   * @param context
-   *                the data required by the operation
+   * @param  regionName
+   *         When null then it indicates a cache-level operation, else the
+   *         name of the region for the operation.
+   * @param  context
+   *         the data required by the operation
    * 
    * @return true if the operation is authorized and false otherwise
-   * 
    */
-  public boolean authorizeOperation(String regionName,
-      final OperationContext context) {
-
+  @Override
+  public boolean authorizeOperation(String regionName, final OperationContext context) {
     Map<OperationCode, FunctionSecurityPrmsHolder> operationMap;
+
     // Check GET permissions for updates from server to client
     if (context.isClientUpdate()) {
       operationMap = this.allowedOps.get(regionName);
@@ -516,17 +310,15 @@ public class XmlAuthorization implements AccessControl {
     }
 
     OperationCode opCode = context.getOperationCode();
-    if (opCode.isQuery() || opCode.isExecuteCQ() || opCode.isCloseCQ()
-        || opCode.isStopCQ()) {
+    if (opCode.isQuery() || opCode.isExecuteCQ() || opCode.isCloseCQ() || opCode.isStopCQ()) {
       // First check if cache-level permission has been provided
       operationMap = this.allowedOps.get(EMPTY_VALUE);
-      boolean globalPermission = (operationMap != null && operationMap
-          .containsKey(opCode));
-      Set<String> regionNames = ((QueryOperationContext)context)
-          .getRegionNames();
+      boolean globalPermission = (operationMap != null && operationMap .containsKey(opCode));
+      Set<String> regionNames = ((QueryOperationContext)context) .getRegionNames();
       if (regionNames == null || regionNames.size() == 0) {
         return globalPermission;
       }
+
       for (String r : regionNames) {
         regionName = normalizeRegionName(r);
         operationMap = this.allowedOps.get(regionName);
@@ -534,8 +326,7 @@ public class XmlAuthorization implements AccessControl {
           if (!globalPermission) {
             return false;
           }
-        }
-        else if (!operationMap.containsKey(opCode)) {
+        } else if (!operationMap.containsKey(opCode)) {
           return false;
         }
       }
@@ -550,67 +341,52 @@ public class XmlAuthorization implements AccessControl {
     if (operationMap != null) {
       if (context.getOperationCode() != OperationCode.EXECUTE_FUNCTION) {
         return operationMap.containsKey(context.getOperationCode());
-      }else {
+
+      } else {
         if (!operationMap.containsKey(context.getOperationCode())) {
           return false;
-        }
-        else {
+
+        } else {
           if (!context.isPostOperation()) {
-            FunctionSecurityPrmsHolder functionParameter =
-              operationMap.get(
-                context.getOperationCode());
-            ExecuteFunctionOperationContext functionContext =
-              (ExecuteFunctionOperationContext)context;
+            FunctionSecurityPrmsHolder functionParameter = operationMap.get(context.getOperationCode());
+            ExecuteFunctionOperationContext functionContext = (ExecuteFunctionOperationContext) context;
             // OnRegion execution
             if (functionContext.getRegionName() != null) {
-              if (functionParameter.isOptimizeForWrite() != null
-                  && functionParameter.isOptimizeForWrite().booleanValue()
-                    != functionContext.isOptimizeForWrite()) {
+              if (functionParameter.isOptimizeForWrite() != null && functionParameter.isOptimizeForWrite().booleanValue() != functionContext.isOptimizeForWrite()) {
                 return false;
               }
-              if (functionParameter.getFunctionIds() != null
-                  && !functionParameter.getFunctionIds().contains(
-                      functionContext.getFunctionId())) {
+              if (functionParameter.getFunctionIds() != null && !functionParameter.getFunctionIds().contains( functionContext.getFunctionId())) {
                 return false;
               }
-              if (functionParameter.getKeySet() != null
-                  && functionContext.getKeySet() != null) {
-                if (functionContext.getKeySet().containsAll(
-                    functionParameter.getKeySet())) {
+              if (functionParameter.getKeySet() != null && functionContext.getKeySet() != null) {
+                if (functionContext.getKeySet().containsAll( functionParameter.getKeySet())) {
                   return false;
                 }
               }
               return true;
-            }
-            else {// On Server execution
-              if (functionParameter.getFunctionIds() != null
-                  && !functionParameter.getFunctionIds().contains(
-                      functionContext.getFunctionId())) {
+
+            } else {// On Server execution
+              if (functionParameter.getFunctionIds() != null && !functionParameter.getFunctionIds().contains(functionContext.getFunctionId())) {
                 return false;
               }
               return true;
             }
-          }
-          else {
-            ExecuteFunctionOperationContext functionContext =
-              (ExecuteFunctionOperationContext)context;
-            FunctionSecurityPrmsHolder functionParameter = operationMap.get(
-                context.getOperationCode());
+
+          } else {
+            ExecuteFunctionOperationContext functionContext = (ExecuteFunctionOperationContext)context;
+            FunctionSecurityPrmsHolder functionParameter = operationMap.get(context.getOperationCode());
             if (functionContext.getRegionName() != null) {
-              if (functionContext.getResult() instanceof ArrayList
-                  && functionParameter.getKeySet() != null) {
-                ArrayList<String> resultList = (ArrayList)functionContext
-                    .getResult();
-                HashSet<String> nonAllowedKeys = functionParameter.getKeySet();
+              if (functionContext.getResult() instanceof ArrayList && functionParameter.getKeySet() != null) {
+                ArrayList<String> resultList = (ArrayList)functionContext.getResult();
+                Set<String> nonAllowedKeys = functionParameter.getKeySet();
                 if (resultList.containsAll(nonAllowedKeys)) {
                   return false;
                 }
               }
               return true;
-            }
-            else {
-              ArrayList<String> resultList = (ArrayList)functionContext
-                  .getResult();
+
+            } else {
+              ArrayList<String> resultList = (ArrayList)functionContext.getResult();
               final String inSecureItem = "Insecure item";
               if (resultList.contains(inSecureItem)) {
                 return false;
@@ -627,41 +403,207 @@ public class XmlAuthorization implements AccessControl {
   /**
    * Clears the cached information for this principal.
    */
+  @Override
   public void close() {
-
     this.allowedOps.clear();
   }
 
+  /** Get the attribute value for a given attribute name of a node. */
+  private static String getAttributeValue(final Node node, final String attrName) {
+    NamedNodeMap attrMap = node.getAttributes();
+    Node attrNode;
+    if (attrMap != null && (attrNode = attrMap.getNamedItem(attrName)) != null) {
+      return ((Attr)attrNode).getValue();
+    }
+    return EMPTY_VALUE;
+  }
+
+  /** Get the string contained in the first text child of the node. */
+  private static String getNodeValue(final Node node) {
+    NodeList childNodes = node.getChildNodes();
+    for (int index = 0; index < childNodes.getLength(); index++) {
+      Node childNode = childNodes.item(index);
+      if (childNode.getNodeType() == Node.TEXT_NODE) {
+        return childNode.getNodeValue();
+      }
+    }
+    return EMPTY_VALUE;
+  }
+
   /**
-   * Clear all the statically cached information.
+   * Cache authorization information for all users statically. This method is
+   * not thread-safe and is should either be invoked only once, or the caller
+   * should take the appropriate locks.
+   *
+   * @param cache reference to the cache object for the distributed system
    */
-  public static void clear() {
+  private static void init(final Cache cache) throws NotAuthorizedException {
+    final LogWriter systemLogWriter = cache.getLogger();
+    final String xmlDocumentUri = (String)cache.getDistributedSystem().getSecurityProperties().get(DOC_URI_PROP_NAME);
 
-    XmlAuthorization.currentDocUri = null;
-    if (XmlAuthorization.userRoles != null) {
-      XmlAuthorization.userRoles.clear();
-      XmlAuthorization.userRoles = null;
-    }
-    if (XmlAuthorization.rolePermissions != null) {
-      XmlAuthorization.rolePermissions.clear();
-      XmlAuthorization.rolePermissions = null;
+    try {
+      if (xmlDocumentUri == null) {
+        throw new NotAuthorizedException("No ACL file defined using tag [" + DOC_URI_PROP_NAME + "] in system properties");
+      }
+      if (xmlDocumentUri.equals(XmlAuthorization.currentDocUri)) {
+        if (XmlAuthorization.xmlLoadFailure != null) {
+          throw XmlAuthorization.xmlLoadFailure;
+        }
+        return;
+      }
+
+      final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+      factory.setIgnoringComments(true);
+      factory.setIgnoringElementContentWhitespace(true);
+      factory.setValidating(true);
+
+      final DocumentBuilder builder = factory.newDocumentBuilder();
+      final XmlErrorHandler errorHandler = new XmlErrorHandler(systemLogWriter, xmlDocumentUri);
+      builder.setErrorHandler(errorHandler);
+      builder.setEntityResolver(new AuthzDtdResolver());
+
+      final Document xmlDocument = builder.parse(xmlDocumentUri);
+
+      XmlAuthorization.userRoles = new HashMap<String, HashSet<String>>();
+      XmlAuthorization.rolePermissions = new HashMap<String, Map<String, Map<OperationCode, FunctionSecurityPrmsHolder>>>();
+
+      final NodeList roleUserNodes = xmlDocument.getElementsByTagName(TAG_ROLE);
+
+      for (int roleIndex = 0; roleIndex < roleUserNodes.getLength(); roleIndex++) {
+        final Node roleUserNode = roleUserNodes.item(roleIndex);
+        final String roleName = getAttributeValue(roleUserNode, ATTR_ROLENAME);
+        final NodeList userNodes = roleUserNode.getChildNodes();
+
+        for (int userIndex = 0; userIndex < userNodes.getLength(); userIndex++) {
+          final Node userNode = userNodes.item(userIndex);
+
+          if (userNode.getNodeName() == TAG_USER) {
+            final String userName = getNodeValue(userNode);
+            HashSet<String> userRoleSet = XmlAuthorization.userRoles.get(userName);
+            if (userRoleSet == null) {
+              userRoleSet = new HashSet<String>();
+              XmlAuthorization.userRoles.put(userName, userRoleSet);
+            }
+            userRoleSet.add(roleName);
+
+          } else {
+            throw new SAXParseException("Unknown tag [" + userNode.getNodeName() + "] as child of tag [" + TAG_ROLE + ']', null);
+          }
+        }
+      }
+
+      final NodeList rolePermissionNodes = xmlDocument.getElementsByTagName(TAG_PERMS);
+
+      for (int permIndex = 0; permIndex < rolePermissionNodes.getLength(); permIndex++) {
+        final Node rolePermissionNode = rolePermissionNodes.item(permIndex);
+        final String roleName = getAttributeValue(rolePermissionNode, ATTR_ROLE);
+        Map<String, Map<OperationCode, FunctionSecurityPrmsHolder>> regionOperationMap = XmlAuthorization.rolePermissions.get(roleName);
+
+        if (regionOperationMap == null) {
+          regionOperationMap = new HashMap<String, Map<OperationCode, FunctionSecurityPrmsHolder>>();
+          XmlAuthorization.rolePermissions.put(roleName, regionOperationMap);
+        }
+
+        final NodeList operationNodes = rolePermissionNode.getChildNodes();
+        final HashMap<OperationCode, FunctionSecurityPrmsHolder> operationMap = new HashMap<OperationCode, FunctionSecurityPrmsHolder>();
+
+        for (int opIndex = 0; opIndex < operationNodes.getLength(); opIndex++) {
+          final Node operationNode = operationNodes.item(opIndex);
+
+          if (operationNode.getNodeName() == TAG_OP) {
+            final String operationName = getNodeValue(operationNode);
+            final OperationCode code = OperationCode.parse(operationName);
+
+            if (code == null) {
+              throw new SAXParseException("Unknown operation [" + operationName + ']', null);
+            }
+
+            if (code != OperationCode.EXECUTE_FUNCTION) {
+              operationMap.put(code, null);
+
+            } else {
+              final String optimizeForWrite = getAttributeValue(operationNode, ATTR_FUNCTION_OPTIMIZE_FOR_WRITE);
+              final String functionAttr = getAttributeValue(operationNode, ATTR_FUNCTION_IDS);
+              final String keysAttr = getAttributeValue(operationNode, ATTR_FUNCTION_KEY_SET);
+
+              Boolean isOptimizeForWrite;
+              HashSet<String> functionIds;
+              HashSet<String> keySet;
+
+              if (optimizeForWrite == null || optimizeForWrite.length() == 0) {
+                isOptimizeForWrite = null;
+              } else {
+                isOptimizeForWrite = Boolean.parseBoolean(optimizeForWrite);
+              }
+
+              if (functionAttr == null || functionAttr.length() == 0) {
+                functionIds = null;
+              } else {
+                final String[] functionArray = functionAttr.split(",");
+                functionIds = new HashSet<String>();
+                for (int strIndex = 0; strIndex < functionArray.length; ++strIndex) {
+                  functionIds.add((functionArray[strIndex]));
+                }
+              }
+
+              if (keysAttr == null || keysAttr.length() == 0) {
+                keySet = null;
+              } else {
+                final String[] keySetArray = keysAttr.split(",");
+                keySet = new HashSet<String>();
+                for (int strIndex = 0; strIndex < keySetArray.length; ++strIndex) {
+                  keySet.add((keySetArray[strIndex]));
+                }
+              }
+
+              final FunctionSecurityPrmsHolder functionContext = new FunctionSecurityPrmsHolder(isOptimizeForWrite, functionIds, keySet);
+              operationMap.put(code, functionContext);
+            }
+
+          } else {
+            throw new SAXParseException("Unknown tag [" + operationNode.getNodeName() + "] as child of tag [" + TAG_PERMS + ']', null);
+          }
+        }
+
+        final String regionNames = getAttributeValue(rolePermissionNode, ATTR_REGIONS);
+        if (regionNames == null || regionNames.length() == 0) {
+          regionOperationMap.put(EMPTY_VALUE, operationMap);
+        } else {
+          final String[] regionNamesSplit = regionNames.split(",");
+          for (int strIndex = 0; strIndex < regionNamesSplit.length; ++strIndex) {
+            regionOperationMap.put(normalizeRegionName(regionNamesSplit[strIndex]), operationMap);
+          }
+        }
+      }
+      XmlAuthorization.currentDocUri = xmlDocumentUri;
+
+    } catch (Exception ex) {
+      String message;
+      if (ex instanceof NotAuthorizedException) {
+        message = ex.getMessage();
+      }
+      else {
+        message = ex.getClass().getName() + ": " + ex.getMessage();
+      }
+      systemLogWriter.warning("XmlAuthorization.init: " + message);
+      XmlAuthorization.xmlLoadFailure = new NotAuthorizedException(message, ex);
+      throw XmlAuthorization.xmlLoadFailure;
     }
-    XmlAuthorization.xmlLoadFailure = null;
   }
-  
+
   private static class AuthzDtdResolver implements EntityResolver {
-    Pattern authzPattern = Pattern.compile("authz.*\\.dtd");
+    final Pattern authzPattern = Pattern.compile("authz.*\\.dtd");
 
     @Override
-    public InputSource resolveEntity(String publicId, String systemId)
-        throws SAXException, IOException {
+    public InputSource resolveEntity(final String publicId, final String systemId) throws SAXException, IOException {
       try {
-        Matcher matcher = authzPattern.matcher(systemId);
-        if(matcher.find()) {
-          String dtdName = matcher.group(0);
-          InputStream stream = XmlAuthorization.class.getResourceAsStream(dtdName);
+        final Matcher matcher = authzPattern.matcher(systemId);
+        if (matcher.find()) {
+          final String dtdName = matcher.group(0);
+          final InputStream stream = XmlAuthorization.class.getResourceAsStream(dtdName);
           return new InputSource(stream);
         }
+
       } catch(Exception e) {
         //do nothing, use the default resolver
       }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a6388000/geode-core/src/test/java/templates/security/XmlErrorHandler.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/templates/security/XmlErrorHandler.java b/geode-core/src/test/java/templates/security/XmlErrorHandler.java
index 1326548..8e30f46 100755
--- a/geode-core/src/test/java/templates/security/XmlErrorHandler.java
+++ b/geode-core/src/test/java/templates/security/XmlErrorHandler.java
@@ -27,23 +27,21 @@ import org.xml.sax.SAXParseException;
  * Implementation of {@link ErrorHandler} interface to handle validation errors
  * while XML parsing.
  * 
- * This throws back exceptions raised for <code>error</code> and
- * <code>fatalError</code> cases while a {@link LogWriter#warning(String)} level
- * logging is done for the <code>warning</code> case.
+ * This throws back exceptions raised for {@code error} and {@code fatalError}
+ * cases while a {@link LogWriter#warning(String)} level logging is done for
+ * the {@code warning} case.
  * 
- * @author Sumedh Wale
  * @since 5.5
  */
 public class XmlErrorHandler implements ErrorHandler {
-  private static final Logger logger = LogService.getLogger();
-
-  private LogWriter logWriter;
 
-  private String xmlFileName;
+  private static final Logger logger = LogService.getLogger();
 
-  public XmlErrorHandler(LogWriter logWriter, String xmlFileName) {
+  private final LogWriter systemLogWriter;
+  private final String xmlFileName;
 
-    this.logWriter = logWriter;
+  public XmlErrorHandler(final LogWriter systemLogWriter, final String xmlFileName) {
+    this.systemLogWriter = systemLogWriter;
     this.xmlFileName = xmlFileName;
   }
 
@@ -51,31 +49,23 @@ public class XmlErrorHandler implements ErrorHandler {
    * Throws back the exception with the name of the XML file and the position
    * where the exception occurred.
    */
-  public void error(SAXParseException exception) throws SAXException {
-    throw new SAXParseException("Error while parsing XML at line "
-        + exception.getLineNumber() + " column " + exception.getColumnNumber()
-        + ": " + exception.getMessage(), null, exception);
+  public void error(final SAXParseException exception) throws SAXException {
+    throw new SAXParseException("Error while parsing XML at line " + exception.getLineNumber() + " column " + exception.getColumnNumber() + ": " + exception.getMessage(), null, exception);
   }
 
   /**
    * Throws back the exception with the name of the XML file and the position
    * where the exception occurred.
    */
-  public void fatalError(SAXParseException exception) throws SAXException {
-    throw new SAXParseException("Fatal error while parsing XML at line "
-        + exception.getLineNumber() + " column " + exception.getColumnNumber()
-        + ": " + exception.getMessage(), null, exception);
+  public void fatalError(final SAXParseException exception) throws SAXException {
+    throw new SAXParseException("Fatal error while parsing XML at line " + exception.getLineNumber() + " column " + exception.getColumnNumber() + ": " + exception.getMessage(), null, exception);
   }
 
   /**
    * Log the exception at {@link LogWriter#warning(String)} level with XML
    * filename and the position of exception in the file.
    */
-  public void warning(SAXParseException exception) throws SAXException {
-    this.logWriter.warning("Warning while parsing XML [" + this.xmlFileName
-        + "] at line " + exception.getLineNumber() + " column "
-        + exception.getColumnNumber() + ": " + exception.getMessage(), exception);
+  public void warning(final SAXParseException exception) throws SAXException {
+    this.systemLogWriter.warning("Warning while parsing XML [" + this.xmlFileName + "] at line " + exception.getLineNumber() + " column " + exception.getColumnNumber() + ": " + exception.getMessage(), exception);
   }
-
-
 }


[3/3] incubator-geode git commit: Fix static ordering problems

Posted by kl...@apache.org.
Fix static ordering problems


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/3a0fe955
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/3a0fe955
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/3a0fe955

Branch: refs/heads/feature/GEODE-949-2
Commit: 3a0fe9550c6e97295c11e6e2f058969197132d64
Parents: a638800
Author: Kirk Lund <kl...@apache.org>
Authored: Fri Mar 11 17:20:30 2016 -0800
Committer: Kirk Lund <kl...@apache.org>
Committed: Fri Mar 11 17:20:30 2016 -0800

----------------------------------------------------------------------
 .../src/test/java/security/AuthzCredentialGenerator.java  |  8 ++++----
 .../src/test/java/security/CredentialGenerator.java       | 10 +++++-----
 2 files changed, 9 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3a0fe955/geode-core/src/test/java/security/AuthzCredentialGenerator.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/security/AuthzCredentialGenerator.java b/geode-core/src/test/java/security/AuthzCredentialGenerator.java
index e7644ee..7a2378c 100755
--- a/geode-core/src/test/java/security/AuthzCredentialGenerator.java
+++ b/geode-core/src/test/java/security/AuthzCredentialGenerator.java
@@ -323,16 +323,16 @@ public abstract class AuthzCredentialGenerator {
    */
   public static final class ClassCode {
 
+    private static byte nextOrdinal = 0;
+
     private static final byte ID_DUMMY = 1;
     private static final byte ID_XML = 2;
 
-    public static final ClassCode DUMMY = new ClassCode(templates.security.DummyAuthorization.class.getName() + ".create", ID_DUMMY);
-    public static final ClassCode XML = new ClassCode(templates.security.XmlAuthorization.class.getName() + ".create", ID_XML);
-
     private static final ClassCode[] VALUES = new ClassCode[10];
     private static final Map CODE_NAME_MAP = new HashMap();
 
-    private static byte nextOrdinal = 0;
+    public static final ClassCode DUMMY = new ClassCode(templates.security.DummyAuthorization.class.getName() + ".create", ID_DUMMY);
+    public static final ClassCode XML = new ClassCode(templates.security.XmlAuthorization.class.getName() + ".create", ID_XML);
 
     /** The name of this class. */
     private final String name;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3a0fe955/geode-core/src/test/java/security/CredentialGenerator.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/security/CredentialGenerator.java b/geode-core/src/test/java/security/CredentialGenerator.java
index 704343c..6ff86dc 100755
--- a/geode-core/src/test/java/security/CredentialGenerator.java
+++ b/geode-core/src/test/java/security/CredentialGenerator.java
@@ -191,21 +191,21 @@ public abstract class CredentialGenerator {
    */
   public static final class ClassCode {
 
+    private static byte nextOrdinal = 0;
+
     private static final byte ID_DUMMY = 1;
     private static final byte ID_LDAP = 2;
     private static final byte ID_PKCS = 3;
     private static final byte ID_SSL = 4;
 
+    private static final ClassCode[] VALUES = new ClassCode[10];
+    private static final Map CODE_NAME_MAP = new HashMap();
+
     public static final ClassCode DUMMY = new ClassCode(templates.security.DummyAuthenticator.class.getName() + ".create", ID_DUMMY);
     public static final ClassCode LDAP = new ClassCode(templates.security.LdapUserAuthenticator.class.getName() + ".create", ID_LDAP);
     public static final ClassCode PKCS = new ClassCode(templates.security.PKCSAuthenticator.class.getName() + ".create", ID_PKCS);
     public static final ClassCode SSL = new ClassCode("SSL", ID_SSL);
 
-    private static final ClassCode[] VALUES = new ClassCode[10];
-    private static final Map CODE_NAME_MAP = new HashMap();
-
-    private static byte nextOrdinal = 0;
-
     /** The name of this class. */
     private final String name;
 


[2/3] incubator-geode git commit: Reformat security test classes

Posted by kl...@apache.org.
Reformat security test classes


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/a6388000
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/a6388000
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/a6388000

Branch: refs/heads/feature/GEODE-949-2
Commit: a63880009bda01a247c0f0d1ead4dbfd7b73dd49
Parents: 37b978c
Author: Kirk Lund <kl...@apache.org>
Authored: Fri Mar 11 16:04:15 2016 -0800
Committer: Kirk Lund <kl...@apache.org>
Committed: Fri Mar 11 16:04:15 2016 -0800

----------------------------------------------------------------------
 .../java/security/AuthzCredentialGenerator.java | 516 +++++++-------
 .../test/java/security/CredentialGenerator.java | 354 +++++-----
 .../security/DummyAuthzCredentialGenerator.java |  78 +--
 .../java/security/DummyCredentialGenerator.java |  39 +-
 .../security/LdapUserCredentialGenerator.java   |  76 +-
 .../java/security/PKCSCredentialGenerator.java  |  54 +-
 .../java/security/SSLCredentialGenerator.java   | 101 +--
 .../UserPasswordWithExtraPropsAuthInit.java     |  28 +-
 .../security/XmlAuthzCredentialGenerator.java   | 208 +++---
 .../templates/security/DummyAuthenticator.java  |  57 +-
 .../templates/security/DummyAuthorization.java  | 111 +--
 .../security/FunctionSecurityPrmsHolder.java    |  28 +-
 .../security/LdapUserAuthenticator.java         |  99 ++-
 .../java/templates/security/PKCSAuthInit.java   | 106 ++-
 .../templates/security/PKCSAuthenticator.java   | 171 +++--
 .../java/templates/security/PKCSPrincipal.java  |   9 +-
 .../templates/security/PKCSPrincipalTest.java   |   8 +-
 .../security/UserPasswordAuthInit.java          |  58 +-
 .../templates/security/UsernamePrincipal.java   |   5 +-
 .../security/UsernamePrincipalTest.java         |   8 +-
 .../templates/security/XmlAuthorization.java    | 686 +++++++++----------
 .../templates/security/XmlErrorHandler.java     |  38 +-
 22 files changed, 1340 insertions(+), 1498 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a6388000/geode-core/src/test/java/security/AuthzCredentialGenerator.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/security/AuthzCredentialGenerator.java b/geode-core/src/test/java/security/AuthzCredentialGenerator.java
index fdd10b0..e7644ee 100755
--- a/geode-core/src/test/java/security/AuthzCredentialGenerator.java
+++ b/geode-core/src/test/java/security/AuthzCredentialGenerator.java
@@ -36,186 +36,22 @@ import java.util.Properties;
  * operation in a region. Implementations will be for different kinds of
  * authorization scheme and authentication scheme combos.
  * 
- * @author sumedh
  * @since 5.5
  */
 public abstract class AuthzCredentialGenerator {
+  
   private static final Logger logger = LogService.getLogger();
 
   /**
-   * Enumeration for various {@link AuthzCredentialGenerator} implementations.
-   * 
-   * The following schemes are supported as of now:
-   * <ul>
-   * <li><code>DummyAuthorization</code> with <code>DummyAuthenticator</code></li>
-   * <li><code>XMLAuthorization</code> with <code>DummyAuthenticator</code></li>
-   * <li><code>XMLAuthorization</code> with <code>LDAPAuthenticator</code></li>
-   * <li><code>XMLAuthorization</code> with <code>PKCSAuthenticator</code></li>
-   * <li><code>XMLAuthorization</code> when using SSL sockets</li>
-   * </ul>
-   * 
-   * To add a new authorization scheme the following needs to be done:
-   * <ul>
-   * <li>Add implementation for {@link AccessControl}.</li>
-   * <li>Choose the authentication schemes that it shall work with from
-   * {@link CredentialGenerator.ClassCode}</li>
-   * <li>Add a new enumeration value for the scheme in this class. Notice the
-   * size of <code>VALUES</code> array and increase that if it is getting
-   * overflowed. Note the methods and fields for existing schemes and add for
-   * the new one in a similar manner.</li>
-   * <li>Add an implementation for {@link AuthzCredentialGenerator}. Note the
-   * {@link AuthzCredentialGenerator#init} method where different authentication
-   * schemes can be passed and initialize differently for the authentication
-   * schemes that shall be handled.</li>
-   * <li>Modify the {@link AuthzCredentialGenerator#create} method to add
-   * creation of an instance of the new implementation for the
-   * <code>ClassCode</code> enumeration value.</li>
-   * </ul>
-   * All dunit tests will automagically start testing the new implementation
-   * after this.
-   * 
-   * @author sumedh
-   * @since 5.5
-   */
-  public static final class ClassCode {
-
-    private static final byte ID_DUMMY = 1;
-
-    private static final byte ID_XML = 2;
-
-    private static byte nextOrdinal = 0;
-
-    private static final ClassCode[] VALUES = new ClassCode[10];
-
-    private static final Map CodeNameMap = new HashMap();
-
-    public static final ClassCode DUMMY = new ClassCode(
-        templates.security.DummyAuthorization.class.getName() + ".create", ID_DUMMY);
-
-    public static final ClassCode XML = new ClassCode(
-        templates.security.XmlAuthorization.class.getName() + ".create", ID_XML);
-
-    /** The name of this class. */
-    private final String name;
-
-    /** byte used as ordinal to represent this class */
-    private final byte ordinal;
-
-    /**
-     * One of the following: ID_DUMMY, ID_LDAP, ID_PKI
-     */
-    private final byte classType;
-
-    /** Creates a new instance of class code. */
-    private ClassCode(String name, byte classType) {
-      this.name = name;
-      this.classType = classType;
-      this.ordinal = nextOrdinal++;
-      VALUES[this.ordinal] = this;
-      CodeNameMap.put(name, this);
-    }
-
-    public boolean isDummy() {
-      return (this.classType == ID_DUMMY);
-    }
-
-    public boolean isXml() {
-      return (this.classType == ID_XML);
-    }
-
-    /**
-     * Returns the <code>ClassCode</code> represented by specified ordinal.
-     */
-    public static ClassCode fromOrdinal(byte ordinal) {
-      return VALUES[ordinal];
-    }
-
-    /**
-     * Returns the <code>ClassCode</code> represented by specified string.
-     */
-    public static ClassCode parse(String operationName) {
-      return (ClassCode)CodeNameMap.get(operationName);
-    }
-
-    /**
-     * Returns all the possible values.
-     */
-    public static List getAll() {
-      List codes = new ArrayList();
-      Iterator iter = CodeNameMap.values().iterator();
-      while (iter.hasNext()) {
-        codes.add(iter.next());
-      }
-      return codes;
-    }
-
-    /**
-     * Returns the ordinal for this class code.
-     * 
-     * @return the ordinal of this class code.
-     */
-    public byte toOrdinal() {
-      return this.ordinal;
-    }
-
-    /**
-     * Returns a string representation for this class code.
-     * 
-     * @return the name of this class code.
-     */
-    final public String toString() {
-      return this.name;
-    }
-
-    /**
-     * Indicates whether other object is same as this one.
-     * 
-     * @return true if other object is same as this one.
-     */
-    @Override
-    final public boolean equals(final Object obj) {
-      if (obj == this) {
-        return true;
-      }
-      if (!(obj instanceof ClassCode)) {
-        return false;
-      }
-      final ClassCode other = (ClassCode)obj;
-      return (other.ordinal == this.ordinal);
-    }
-
-    /**
-     * Indicates whether other <code>ClassCode</code> is same as this one.
-     * 
-     * @return true if other <code>ClassCode</code> is same as this one.
-     */
-    final public boolean equals(final ClassCode opCode) {
-      return (opCode != null && opCode.ordinal == this.ordinal);
-    }
-
-    /**
-     * Returns a hash code value for this <code>ClassCode</code> which is the
-     * same as its ordinal.
-     * 
-     * @return the ordinal of this <code>ClassCode</code>.
-     */
-    @Override
-    final public int hashCode() {
-      return this.ordinal;
-    }
-
-  }
-
-  /**
    * The {@link CredentialGenerator} being used.
    */
-  protected CredentialGenerator cGen;
+  protected CredentialGenerator generator;
 
   /**
    * A set of system properties that should be added to the gemfire system
    * properties before using the authorization module.
    */
-  private Properties sysProps;
+  private Properties systemProperties;
 
   /**
    * A factory method to create a new instance of an
@@ -223,14 +59,14 @@ public abstract class AuthzCredentialGenerator {
    * is supposed to invoke {@link AuthzCredentialGenerator#init} immediately
    * after obtaining the instance.
    * 
-   * @param classCode
-   *                the <code>ClassCode</code> of the
-   *                <code>AuthzCredentialGenerator</code> implementation
+   * @param  classCode
+   *         the {@code ClassCode} of the {@code AuthzCredentialGenerator}
+   *         implementation
    * 
-   * @return an instance of <code>AuthzCredentialGenerator</code> for the
-   *         given class code
+   * @return an instance of {@code AuthzCredentialGenerator} for the given
+   *         class code
    */
-  public static AuthzCredentialGenerator create(ClassCode classCode) {
+  public static AuthzCredentialGenerator create(final ClassCode classCode) {
     switch (classCode.classType) {
       case ClassCode.ID_DUMMY:
         return new DummyAuthzCredentialGenerator();
@@ -244,20 +80,19 @@ public abstract class AuthzCredentialGenerator {
   /**
    * Initialize the authorized credential generator.
    * 
-   * @param cGen
-   *                an instance of {@link CredentialGenerator} of the credential
-   *                implementation for which to obtain authorized/unauthorized
-   *                credentials.
+   * @param  generator
+   *         an instance of {@link CredentialGenerator} of the credential
+   *         implementation for which to obtain authorized/unauthorized
+   *         credentials.
    * 
    * @return false when the given {@link CredentialGenerator} is incompatible
    *         with this authorization module.
    */
-  public boolean init(CredentialGenerator cGen) {
-    this.cGen = cGen;
+  public boolean init(final CredentialGenerator generator) {
+    this.generator = generator;
     try {
-      this.sysProps = init();
-    }
-    catch (IllegalArgumentException ex) {
+      this.systemProperties = init();
+    } catch (IllegalArgumentException ex) {
       return false;
     }
     return true;
@@ -269,20 +104,34 @@ public abstract class AuthzCredentialGenerator {
    *         properties when not null.
    */
   public Properties getSystemProperties() {
-    return this.sysProps;
+    return this.systemProperties;
   }
 
   /**
    * Get the {@link CredentialGenerator} being used by this instance.
    */
   public CredentialGenerator getCredentialGenerator() {
-    return this.cGen;
+    return this.generator;
   }
 
   /**
+   * Initialize the authorized credential generator.
+   *
+   * Required to be implemented by concrete classes that implement this abstract
+   * class.
+   *
+   * @return A set of extra properties that should be added to Gemfire system
+   *         properties when not null.
+   *
+   * @throws IllegalArgumentException when the {@link CredentialGenerator} is
+   *         incompatible with this authorization module.
+   */
+  protected abstract Properties init() throws IllegalArgumentException;
+
+  /**
    * The {@link ClassCode} of the particular implementation.
    * 
-   * @return the <code>ClassCode</code>
+   * @return the {@code ClassCode}
    */
   public abstract ClassCode classCode();
 
@@ -290,7 +139,7 @@ public abstract class AuthzCredentialGenerator {
    * The name of the {@link AccessControl} factory function that should be used
    * as the authorization module on the server side.
    * 
-   * @return name of the <code>AccessControl</code> factory function
+   * @return name of the {@code AccessControl} factory function
    */
   public abstract String getAuthorizationCallback();
 
@@ -298,33 +147,30 @@ public abstract class AuthzCredentialGenerator {
    * Get a set of credentials generated using the given index allowed to perform
    * the given {@link OperationCode}s for the given regions.
    * 
-   * @param opCodes
-   *                the list of {@link OperationCode}s of the operations
-   *                requiring authorization; should not be null
-   * @param regionNames
-   *                list of the region names requiring authorization; a value of
-   *                null indicates all regions
-   * @param index
-   *                used to generate multiple such credentials by passing
-   *                different values for this
+   * @param  opCodes
+   *         the list of {@link OperationCode}s of the operations requiring
+   *         authorization; should not be null
+   * @param  regionNames
+   *         list of the region names requiring authorization; a value of
+   *         null indicates all regions
+   * @param  index
+   *         used to generate multiple such credentials by passing different
+   *         values for this
    * 
    * @return the set of credentials authorized to perform the given operation in
    *         the given regions
    */
-  public Properties getAllowedCredentials(OperationCode[] opCodes,
-      String[] regionNames, int index) {
-
+  public Properties getAllowedCredentials(final OperationCode[] opCodes, final String[] regionNames, final int index) {
     int numTries = getNumPrincipalTries(opCodes, regionNames);
     if (numTries <= 0) {
       numTries = 1;
     }
+
     for (int tries = 0; tries < numTries; tries++) {
-      Principal principal = getAllowedPrincipal(opCodes, regionNames,
-          (index + tries) % numTries);
+      final Principal principal = getAllowedPrincipal(opCodes, regionNames, (index + tries) % numTries);
       try {
-        return this.cGen.getValidCredentials(principal);
-      }
-      catch (IllegalArgumentException ex) {
+        return this.generator.getValidCredentials(principal);
+      } catch (IllegalArgumentException ex) {
       }
     }
     return null;
@@ -335,63 +181,46 @@ public abstract class AuthzCredentialGenerator {
    * perform the given {@link OperationCode}s for the given regions. The
    * credentials are required to be valid for authentication.
    * 
-   * @param opCodes
-   *                the {@link OperationCode}s of the operations requiring
-   *                authorization failure; should not be null
-   * @param regionNames
-   *                list of the region names requiring authorization failure; a
-   *                value of null indicates all regions
-   * @param index
-   *                used to generate multiple such credentials by passing
-   *                different values for this
+   * @param  opCodes
+   *         the {@link OperationCode}s of the operations requiring
+   *         authorization failure; should not be null
+   * @param  regionNames
+   *         list of the region names requiring authorization failure; a value
+   *         of null indicates all regions
+   * @param  index
+   *         used to generate multiple such credentials by passing different
+   *         values for this
    * 
    * @return the set of credentials that are not authorized to perform the given
    *         operation in the given region
    */
-  public Properties getDisallowedCredentials(OperationCode[] opCodes,
-      String[] regionNames, int index) {
-
+  public Properties getDisallowedCredentials(final OperationCode[] opCodes, final String[] regionNames, final int index) {
     // This may not be very correct since we use the value of
     // getNumPrincipalTries() but is used to avoid adding another method.
     // Also something like getNumDisallowedPrincipals() will be normally always
     // infinite, and the number here is just to perform some number of tries
     // before giving up.
+
     int numTries = getNumPrincipalTries(opCodes, regionNames);
     if (numTries <= 0) {
       numTries = 1;
     }
+
     for (int tries = 0; tries < numTries; tries++) {
-      Principal principal = getDisallowedPrincipal(opCodes, regionNames,
-          (index + tries) % numTries);
+      final Principal principal = getDisallowedPrincipal(opCodes, regionNames, (index + tries) % numTries);
       try {
-        return this.cGen.getValidCredentials(principal);
-      }
-      catch (IllegalArgumentException ex) {
+        return this.generator.getValidCredentials(principal);
+      } catch (IllegalArgumentException ex) {
       }
     }
     return null;
   }
 
   /**
-   * Initialize the authorized credential generator.
-   * 
-   * Required to be implemented by concrete classes that implement this abstract
-   * class.
-   * 
-   * @return A set of extra properties that should be added to Gemfire system
-   *         properties when not null.
-   * 
-   * @throws IllegalArgumentException
-   *                 when the {@link CredentialGenerator} is incompatible with
-   *                 this authorization module.
-   */
-  protected abstract Properties init() throws IllegalArgumentException;
-
-  /**
    * Get the number of tries to be done for obtaining valid credentials for the
    * given operations in the given region. It is required that
    * {@link #getAllowedPrincipal} method returns valid principals for values of
-   * <code>index</code> from 0 through (n-1) where <code>n</code> is the
+   * {@code index} from 0 through (n-1) where {@code n} is the
    * value returned by this method. It is recommended that the principals so
    * returned be unique for efficiency.
    * 
@@ -401,18 +230,17 @@ public abstract class AuthzCredentialGenerator {
    * Required to be implemented by concrete classes that implement this abstract
    * class.
    * 
-   * @param opCodes
-   *                the {@link OperationCode}s of the operations requiring
-   *                authorization
-   * @param regionNames
-   *                list of the region names requiring authorization; a value of
-   *                null indicates all regions
+   * @param  opCodes
+   *         the {@link OperationCode}s of the operations requiring
+   *         authorization
+   * @param  regionNames
+   *         list of the region names requiring authorization; a value of null
+   *         indicates all regions
    * 
    * @return the number of principals allowed to perform the given operation in
    *         the given region
    */
-  protected abstract int getNumPrincipalTries(OperationCode[] opCodes,
-      String[] regionNames);
+  protected abstract int getNumPrincipalTries(final OperationCode[] opCodes, final String[] regionNames);
 
   /**
    * Get a {@link Principal} generated using the given index allowed to perform
@@ -421,21 +249,20 @@ public abstract class AuthzCredentialGenerator {
    * Required to be implemented by concrete classes that implement this abstract
    * class.
    * 
-   * @param opCodes
-   *                the {@link OperationCode}s of the operations requiring
-   *                authorization
-   * @param regionNames
-   *                list of the region names requiring authorization; a value of
-   *                null indicates all regions
-   * @param index
-   *                used to generate multiple such principals by passing
-   *                different values for this
+   * @param  opCodes
+   *         the {@link OperationCode}s of the operations requiring
+   *         authorization
+   * @param  regionNames
+   *         list of the region names requiring authorization; a value of null
+   *         indicates all regions
+   * @param  index
+   *         used to generate multiple such principals by passing different
+   *         values for this
    * 
    * @return the {@link Principal} authorized to perform the given operation in
    *         the given region
    */
-  protected abstract Principal getAllowedPrincipal(OperationCode[] opCodes,
-      String[] regionNames, int index);
+  protected abstract Principal getAllowedPrincipal(final OperationCode[] opCodes, final String[] regionNames, final int index);
 
   /**
    * Get a {@link Principal} generated using the given index not allowed to
@@ -444,19 +271,176 @@ public abstract class AuthzCredentialGenerator {
    * Required to be implemented by concrete classes that implement this abstract
    * class.
    * 
-   * @param opCodes
-   *                the {@link OperationCode}s of the operations requiring
-   *                authorization failure
-   * @param regionNames
-   *                list of the region names requiring authorization failure; a
-   *                value of null indicates all regions
-   * @param index
-   *                used to generate multiple such principals by passing
-   *                different values for this
+   * @param  opCodes
+   *         the {@link OperationCode}s of the operations requiring
+   *         authorization failure
+   * @param  regionNames
+   *         list of the region names requiring authorization failure; a value
+   *         of null indicates all regions
+   * @param  index
+   *         used to generate multiple such principals by passing different
+   *         values for this
    * 
    * @return a {@link Principal} not authorized to perform the given operation
    *         in the given region
    */
-  protected abstract Principal getDisallowedPrincipal(OperationCode[] opCodes,
-      String[] regionNames, int index);
+  protected abstract Principal getDisallowedPrincipal(final OperationCode[] opCodes, final String[] regionNames, final int index);
+
+  /**
+   * Enumeration for various {@link AuthzCredentialGenerator} implementations.
+   *
+   * <p>The following schemes are supported as of now:
+   * <ul>
+   * <li>{@code DummyAuthorization} with {@code DummyAuthenticator}</li>
+   * <li>{@code XMLAuthorization} with {@code DummyAuthenticator}</li>
+   * <li>{@code XMLAuthorization} with {@code LDAPAuthenticator}</li>
+   * <li>{@code XMLAuthorization} with {@code PKCSAuthenticator}</li>
+   * <li>{@code XMLAuthorization} when using SSL sockets</li>
+   * </ul>
+   *
+   * <p>To add a new authorization scheme the following needs to be done:
+   * <ul>
+   * <li>Add implementation for {@link AccessControl}.</li>
+   * <li>Choose the authentication schemes that it shall work with from
+   * {@link CredentialGenerator.ClassCode}</li>
+   * <li>Add a new enumeration value for the scheme in this class. Notice the
+   * size of {@code VALUES} array and increase that if it is getting
+   * overflowed. Note the methods and fields for existing schemes and add for
+   * the new one in a similar manner.</li>
+   * <li>Add an implementation for {@link AuthzCredentialGenerator}. Note the
+   * {@link AuthzCredentialGenerator#init} method where different authentication
+   * schemes can be passed and initialize differently for the authentication
+   * schemes that shall be handled.</li>
+   * <li>Modify the {@link AuthzCredentialGenerator#create} method to add
+   * creation of an instance of the new implementation for the
+   * {@code ClassCode} enumeration value.</li>
+   * </ul>
+   *
+   * <p>All dunit tests will automagically start testing the new implementation
+   * after this.
+   *
+   * @since 5.5
+   */
+  public static final class ClassCode {
+
+    private static final byte ID_DUMMY = 1;
+    private static final byte ID_XML = 2;
+
+    public static final ClassCode DUMMY = new ClassCode(templates.security.DummyAuthorization.class.getName() + ".create", ID_DUMMY);
+    public static final ClassCode XML = new ClassCode(templates.security.XmlAuthorization.class.getName() + ".create", ID_XML);
+
+    private static final ClassCode[] VALUES = new ClassCode[10];
+    private static final Map CODE_NAME_MAP = new HashMap();
+
+    private static byte nextOrdinal = 0;
+
+    /** The name of this class. */
+    private final String name;
+
+    /** byte used as ordinal to represent this class */
+    private final byte ordinal;
+
+    /**
+     * One of the following: ID_DUMMY, ID_LDAP, ID_PKI
+     */
+    private final byte classType;
+
+    /** Creates a new instance of class code. */
+    private ClassCode(final String name, final byte classType) {
+      this.name = name;
+      this.classType = classType;
+      this.ordinal = nextOrdinal++;
+      VALUES[this.ordinal] = this;
+      CODE_NAME_MAP.put(name, this);
+    }
+
+    public boolean isDummy() {
+      return this.classType == ID_DUMMY;
+    }
+
+    public boolean isXml() {
+      return this.classType == ID_XML;
+    }
+
+    /**
+     * Returns the {@code ClassCode} represented by specified ordinal.
+     */
+    public static ClassCode fromOrdinal(final byte ordinal) {
+      return VALUES[ordinal];
+    }
+
+    /**
+     * Returns the {@code ClassCode} represented by specified string.
+     */
+    public static ClassCode parse(final String operationName) {
+      return (ClassCode) CODE_NAME_MAP.get(operationName);
+    }
+
+    /**
+     * Returns all the possible values.
+     */
+    public static List getAll() {
+      final List codes = new ArrayList();
+      for (Iterator iter = CODE_NAME_MAP.values().iterator(); iter.hasNext();) {
+        codes.add(iter.next());
+      }
+      return codes;
+    }
+
+    /**
+     * Returns the ordinal for this class code.
+     *
+     * @return the ordinal of this class code.
+     */
+    public byte toOrdinal() {
+      return this.ordinal;
+    }
+
+    /**
+     * Returns a string representation for this class code.
+     *
+     * @return the name of this class code.
+     */
+    @Override
+    public final String toString() {
+      return this.name;
+    }
+
+    /**
+     * Indicates whether other object is same as this one.
+     *
+     * @return true if other object is same as this one.
+     */
+    @Override
+    public final boolean equals(final Object obj) {
+      if (obj == this) {
+        return true;
+      }
+      if (!(obj instanceof ClassCode)) {
+        return false;
+      }
+      final ClassCode other = (ClassCode)obj;
+      return other.ordinal == this.ordinal;
+    }
+
+    /**
+     * Indicates whether other {@code ClassCode} is same as this one.
+     *
+     * @return true if other {@code ClassCode} is same as this one.
+     */
+    public final boolean equals(final ClassCode opCode) {
+      return opCode != null && opCode.ordinal == this.ordinal;
+    }
+
+    /**
+     * Returns a hash code value for this {@code ClassCode} which is the
+     * same as its ordinal.
+     *
+     * @return the ordinal of this {@code ClassCode}.
+     */
+    @Override
+    public final int hashCode() {
+      return this.ordinal;
+    }
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a6388000/geode-core/src/test/java/security/CredentialGenerator.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/security/CredentialGenerator.java b/geode-core/src/test/java/security/CredentialGenerator.java
index 475cefa..704343c 100755
--- a/geode-core/src/test/java/security/CredentialGenerator.java
+++ b/geode-core/src/test/java/security/CredentialGenerator.java
@@ -33,64 +33,178 @@ import java.util.Properties;
  * Encapsulates obtaining valid and invalid credentials. Implementations will be
  * for different kinds of authentication schemes.
  * 
- * @author sumedh
  * @since 5.5
  */
 public abstract class CredentialGenerator {
 
   /**
-   * Enumeration for various {@link CredentialGenerator} implementations.
+   * A set of properties that should be added to the Gemfire system properties
+   * before using the authentication module.
+   */
+  private Properties systemProperties = null;
+
+  /**
+   * A set of properties that should be added to the java system properties
+   * before using the authentication module.
+   */
+  protected Properties javaProperties = null;
+
+  /**
+   * A factory method to create a new instance of an {@link CredentialGenerator}
+   * for the given {@link ClassCode}. Caller is supposed to invoke
+   * {@link CredentialGenerator#init} immediately after obtaining the instance.
    * 
-   * The following schemes are supported as of now:
-   * <code>DummyAuthenticator</code>, <code>LdapUserAuthenticator</code>,
-   * <code>PKCSAuthenticator</code>. In addition SSL socket mode with mutual
-   * authentication is also supported.
+   * @param  classCode
+   *         the {@code ClassCode} of the {@code CredentialGenerator}
+   *         implementation
+   * 
+   * @return an instance of {@code CredentialGenerator} for the given class
+   *         code
+   */
+  public static CredentialGenerator create(final ClassCode classCode) {
+    switch (classCode.classType) {
+      // Removing dummy one to reduce test run times
+      // case ClassCode.ID_DUMMY:
+      // return new DummyCredentialGenerator();
+      case ClassCode.ID_LDAP:
+        return new LdapUserCredentialGenerator();
+        // case ClassCode.ID_SSL:ø
+        // return new SSLCredentialGenerator();
+      case ClassCode.ID_PKCS:
+        return new PKCSCredentialGenerator();
+      default:
+        return null;
+    }
+  }
+
+  /**
+   * Initialize the credential generator.
+   *
+   * @throws IllegalArgumentException when there is a problem during
+   *         initialization
+   */
+  public void init() throws IllegalArgumentException {
+    this.systemProperties = initialize();
+  }
+
+  /**
+   * @return A set of extra properties that should be added to Gemfire system
+   *         properties when not null.
+   */
+  public Properties getSystemProperties() {
+    return this.systemProperties;
+  }
+
+  /**
+   * @return A set of extra properties that should be added to Gemfire system
+   *         properties when not null.
+   */
+  public Properties getJavaProperties() {
+    return this.javaProperties;
+  }
+
+  /**
+   * The {@link ClassCode} of this particular implementation.
+   * 
+   * @return the {@code ClassCode}
+   */
+  public abstract ClassCode classCode();
+
+  /**
+   * The name of the {@link AuthInitialize} factory function that should be used
+   * in conjunction with the credentials generated by this generator.
    * 
-   * To add a new authentication scheme the following needs to be done:
+   * @return name of the {@code AuthInitialize} factory function
+   */
+  public abstract String getAuthInit();
+
+  /**
+   * The name of the {@link Authenticator} factory function that should be used
+   * in conjunction with the credentials generated by this generator.
+   * 
+   * @return name of the {@code Authenticator} factory function
+   */
+  public abstract String getAuthenticator();
+
+  /**
+   * Get a set of valid credentials generated using the given index.
+   */
+  public abstract Properties getValidCredentials(final int index);
+
+  /**
+   * Get a set of valid credentials for the given {@link Principal}.
+   * 
+   * @return credentials for the given {@code Principal} or null if none
+   *         possible.
+   */
+  public abstract Properties getValidCredentials(final Principal principal);
+
+  /**
+   * Get a set of invalid credentials generated using the given index.
+   */
+  public abstract Properties getInvalidCredentials(final int index);
+
+  /**
+   * Initialize the credential generator. This is provided separately from the
+   * {@link #init()} method for convenience of implementations so that they do not
+   * need to store in {@link #systemProperties}. The latter is convenient for the users
+   * who do not need to store these properties rather can obtain it later by
+   * invoking {@link #getSystemProperties()}
+   *
+   * <p>Required to be implemented by concrete classes that implement this abstract
+   * class.
+   *
+   * @return A set of extra properties that should be added to Gemfire system
+   *         properties when not null.
+   *
+   * @throws IllegalArgumentException when there is a problem during
+   *         initialization
+   */
+  protected abstract Properties initialize() throws IllegalArgumentException;
+
+  /**
+   * Enumeration for various {@link CredentialGenerator} implementations.
+   *
+   * <p>The following schemes are supported as of now:
+   * {@code DummyAuthenticator}, {@code LdapUserAuthenticator},
+   * {@code PKCSAuthenticator}. In addition SSL socket mode with mutual
+   * authentication is also supported.
+   *
+   * <p>To add a new authentication scheme the following needs to be done:
    * <ul>
    * <li>Add implementations for {@link AuthInitialize} and
    * {@link Authenticator} classes for clients/peers.</li>
    * <li>Add a new enumeration value for the scheme in this class. Notice the
-   * size of <code>VALUES</code> array and increase that if it is getting
+   * size of {@code VALUES} array and increase that if it is getting
    * overflowed. Note the methods and fields for existing schemes and add for
    * the new one in a similar manner.</li>
    * <li>Add an implementation for {@link CredentialGenerator}.</li>
    * <li>Modify the CredentialGenerator.Factory#create [no such Factory exists] method to add
    * creation of an instance of the new implementation for the
-   * <code>ClassCode</code> enumeration value.</li>
+   * {@code ClassCode} enumeration value.</li>
    * </ul>
-   * All security dunit tests will automagically start testing the new
+   *
+   * <p>All security dunit tests will automagically start testing the new
    * implementation after this.
-   * 
-   * @author sumedh
+   *
    * @since 5.5
    */
   public static final class ClassCode {
 
     private static final byte ID_DUMMY = 1;
-
     private static final byte ID_LDAP = 2;
-
     private static final byte ID_PKCS = 3;
-
     private static final byte ID_SSL = 4;
 
-    private static byte nextOrdinal = 0;
+    public static final ClassCode DUMMY = new ClassCode(templates.security.DummyAuthenticator.class.getName() + ".create", ID_DUMMY);
+    public static final ClassCode LDAP = new ClassCode(templates.security.LdapUserAuthenticator.class.getName() + ".create", ID_LDAP);
+    public static final ClassCode PKCS = new ClassCode(templates.security.PKCSAuthenticator.class.getName() + ".create", ID_PKCS);
+    public static final ClassCode SSL = new ClassCode("SSL", ID_SSL);
 
     private static final ClassCode[] VALUES = new ClassCode[10];
+    private static final Map CODE_NAME_MAP = new HashMap();
 
-    private static final Map CodeNameMap = new HashMap();
-
-    public static final ClassCode DUMMY = new ClassCode(
-        templates.security.DummyAuthenticator.class.getName() + ".create", ID_DUMMY);
-
-    public static final ClassCode LDAP = new ClassCode(
-        templates.security.LdapUserAuthenticator.class.getName() + ".create", ID_LDAP);
-
-    public static final ClassCode PKCS = new ClassCode(
-        templates.security.PKCSAuthenticator.class.getName() + ".create", ID_PKCS);
-
-    public static final ClassCode SSL = new ClassCode("SSL", ID_SSL);
+    private static byte nextOrdinal = 0;
 
     /** The name of this class. */
     private final String name;
@@ -104,51 +218,50 @@ public abstract class CredentialGenerator {
     private final byte classType;
 
     /** Creates a new instance of class code. */
-    private ClassCode(String name, byte classType) {
+    private ClassCode(final String name, final byte classType) {
       this.name = name;
       this.classType = classType;
       this.ordinal = nextOrdinal++;
       VALUES[this.ordinal] = this;
-      CodeNameMap.put(name, this);
+      CODE_NAME_MAP.put(name, this);
     }
 
     public boolean isDummy() {
-      return (this.classType == ID_DUMMY);
+      return this.classType == ID_DUMMY;
     }
 
     public boolean isLDAP() {
-      return (this.classType == ID_LDAP);
+      return this.classType == ID_LDAP;
     }
 
     public boolean isPKCS() {
-      return (this.classType == ID_PKCS);
+      return this.classType == ID_PKCS;
     }
 
     public boolean isSSL() {
-      return (this.classType == ID_SSL);
+      return this.classType == ID_SSL;
     }
 
     /**
-     * Returns the <code>ClassCode</code> represented by specified ordinal.
+     * Returns the {@code ClassCode} represented by specified ordinal.
      */
-    public static ClassCode fromOrdinal(byte ordinal) {
+    public static ClassCode fromOrdinal(final byte ordinal) {
       return VALUES[ordinal];
     }
 
     /**
-     * Returns the <code>ClassCode</code> represented by specified string.
+     * Returns the {@code ClassCode} represented by specified string.
      */
-    public static ClassCode parse(String operationName) {
-      return (ClassCode)CodeNameMap.get(operationName);
+    public static ClassCode parse(final String operationName) {
+      return (ClassCode) CODE_NAME_MAP.get(operationName);
     }
 
     /**
      * Returns all the possible values.
      */
     public static List getAll() {
-      List codes = new ArrayList();
-      Iterator iter = CodeNameMap.values().iterator();
-      while (iter.hasNext()) {
+      final List codes = new ArrayList();
+      for (Iterator iter = CODE_NAME_MAP.values().iterator(); iter.hasNext();) {
         codes.add(iter.next());
       }
       return codes;
@@ -156,7 +269,7 @@ public abstract class CredentialGenerator {
 
     /**
      * Returns the ordinal for this operation code.
-     * 
+     *
      * @return the ordinal of this operation.
      */
     public byte toOrdinal() {
@@ -165,20 +278,21 @@ public abstract class CredentialGenerator {
 
     /**
      * Returns a string representation for this operation.
-     * 
+     *
      * @return the name of this operation.
      */
-    final public String toString() {
+    @Override
+    public final String toString() {
       return this.name;
     }
 
     /**
      * Indicates whether other object is same as this one.
-     * 
+     *
      * @return true if other object is same as this one.
      */
     @Override
-    final public boolean equals(final Object obj) {
+    public final boolean equals(final Object obj) {
       if (obj == this) {
         return true;
       }
@@ -186,155 +300,27 @@ public abstract class CredentialGenerator {
         return false;
       }
       final ClassCode other = (ClassCode)obj;
-      return (other.ordinal == this.ordinal);
+      return other.ordinal == this.ordinal;
     }
 
     /**
-     * Indicates whether other <code>ClassCode</code> is same as this one.
-     * 
-     * @return true if other <code>ClassCode</code> is same as this one.
+     * Indicates whether other {@code ClassCode} is same as this one.
+     *
+     * @return true if other {@code ClassCode} is same as this one.
      */
-    final public boolean equals(final ClassCode opCode) {
-      return (opCode != null && opCode.ordinal == this.ordinal);
+    public final boolean equals(final ClassCode opCode) {
+      return opCode != null && opCode.ordinal == this.ordinal;
     }
 
     /**
-     * Returns a hash code value for this <code>ClassCode</code> which is the
+     * Returns a hash code value for this {@code ClassCode} which is the
      * same as its ordinal.
-     * 
+     *
      * @return the ordinal of this operation.
      */
     @Override
-    final public int hashCode() {
+    public final int hashCode() {
       return this.ordinal;
     }
-
-  }
-
-  /**
-   * A set of properties that should be added to the Gemfire system properties
-   * before using the authentication module.
-   */
-  private Properties sysProps = null;
-
-  /**
-   * A set of properties that should be added to the java system properties
-   * before using the authentication module.
-   */
-  protected Properties javaProps = null;
-
-  /**
-   * A factory method to create a new instance of an {@link CredentialGenerator}
-   * for the given {@link ClassCode}. Caller is supposed to invoke
-   * {@link CredentialGenerator#init} immediately after obtaining the instance.
-   * 
-   * @param classCode
-   *                the <code>ClassCode</code> of the
-   *                <code>CredentialGenerator</code> implementation
-   * 
-   * @return an instance of <code>CredentialGenerator</code> for the given
-   *         class code
-   */
-  public static CredentialGenerator create(ClassCode classCode) {
-    switch (classCode.classType) {
-      // Removing dummy one to reduce test run times
-      // case ClassCode.ID_DUMMY:
-      // return new DummyCredentialGenerator();
-      case ClassCode.ID_LDAP:
-        return new LdapUserCredentialGenerator();
-        // case ClassCode.ID_SSL:ø
-        // return new SSLCredentialGenerator();
-      case ClassCode.ID_PKCS:
-        return new PKCSCredentialGenerator();
-      default:
-        return null;
-    }
-  }
-
-  /**
-   * Initialize the credential generator.
-   * 
-   * @throws IllegalArgumentException
-   *                 when there is a problem during initialization
-   */
-  public void init() throws IllegalArgumentException {
-    this.sysProps = initialize();
-  }
-
-  /**
-   * Initialize the credential generator. This is provided separately from the
-   * {@link #init} method for convenience of implementations so that they do not
-   * need to store in {@link #sysProps}. The latter is convenient for the users
-   * who do not need to store these properties rather can obtain it later by
-   * invoking {@link #getSystemProperties}
-   * 
-   * Required to be implemented by concrete classes that implement this abstract
-   * class.
-   * 
-   * @return A set of extra properties that should be added to Gemfire system
-   *         properties when not null.
-   * 
-   * @throws IllegalArgumentException
-   *                 when there is a problem during initialization
-   */
-  protected abstract Properties initialize() throws IllegalArgumentException;
-
-  /**
-   * 
-   * @return A set of extra properties that should be added to Gemfire system
-   *         properties when not null.
-   */
-  public Properties getSystemProperties() {
-    return this.sysProps;
   }
-
-  /**
-   * 
-   * @return A set of extra properties that should be added to Gemfire system
-   *         properties when not null.
-   */
-  public Properties getJavaProperties() {
-    return this.javaProps;
-  }
-
-  /**
-   * The {@link ClassCode} of this particular implementation.
-   * 
-   * @return the <code>ClassCode</code>
-   */
-  public abstract ClassCode classCode();
-
-  /**
-   * The name of the {@link AuthInitialize} factory function that should be used
-   * in conjunction with the credentials generated by this generator.
-   * 
-   * @return name of the <code>AuthInitialize</code> factory function
-   */
-  public abstract String getAuthInit();
-
-  /**
-   * The name of the {@link Authenticator} factory function that should be used
-   * in conjunction with the credentials generated by this generator.
-   * 
-   * @return name of the <code>Authenticator</code> factory function
-   */
-  public abstract String getAuthenticator();
-
-  /**
-   * Get a set of valid credentials generated using the given index.
-   */
-  public abstract Properties getValidCredentials(int index);
-
-  /**
-   * Get a set of valid credentials for the given {@link Principal}.
-   * 
-   * @return credentials for the given <code>Principal</code> or null if none
-   *         possible.
-   */
-  public abstract Properties getValidCredentials(Principal principal);
-
-  /**
-   * Get a set of invalid credentials generated using the given index.
-   */
-  public abstract Properties getInvalidCredentials(int index);
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a6388000/geode-core/src/test/java/security/DummyAuthzCredentialGenerator.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/security/DummyAuthzCredentialGenerator.java b/geode-core/src/test/java/security/DummyAuthzCredentialGenerator.java
index 8496be3..5e30a89 100755
--- a/geode-core/src/test/java/security/DummyAuthzCredentialGenerator.java
+++ b/geode-core/src/test/java/security/DummyAuthzCredentialGenerator.java
@@ -30,49 +30,25 @@ import templates.security.UsernamePrincipal;
 public class DummyAuthzCredentialGenerator extends AuthzCredentialGenerator {
 
   public static final byte READER_ROLE = 1;
-
   public static final byte WRITER_ROLE = 2;
-
   public static final byte ADMIN_ROLE = 3;
 
   private static Set readerOpsSet;
-
   private static Set writerOpsSet;
 
   static {
-
     readerOpsSet = new HashSet();
     for (int index = 0; index < DummyAuthorization.READER_OPS.length; index++) {
       readerOpsSet.add(DummyAuthorization.READER_OPS[index]);
     }
+
     writerOpsSet = new HashSet();
     for (int index = 0; index < DummyAuthorization.WRITER_OPS.length; index++) {
       writerOpsSet.add(DummyAuthorization.WRITER_OPS[index]);
     }
   }
 
-  public DummyAuthzCredentialGenerator() {
-  }
-
-  protected Properties init() throws IllegalArgumentException {
-
-    if (!this.cGen.classCode().isDummy()) {
-      throw new IllegalArgumentException(
-          "DummyAuthorization module only works with DummyAuthenticator");
-    }
-    return null;
-  }
-
-  public ClassCode classCode() {
-    return ClassCode.DUMMY;
-  }
-
-  public String getAuthorizationCallback() {
-    return templates.security.DummyAuthorization.class.getName() + ".create";
-  }
-
-  public static byte getRequiredRole(OperationCode[] opCodes) {
-
+  public static byte getRequiredRole(final OperationCode[] opCodes) {
     byte roleType = ADMIN_ROLE;
     boolean requiresReader = true;
     boolean requiresWriter = true;
@@ -94,29 +70,32 @@ public class DummyAuthzCredentialGenerator extends AuthzCredentialGenerator {
     return roleType;
   }
 
-  private Principal getPrincipal(byte roleType, int index) {
-
-    String[] admins = new String[] { "root", "admin", "administrator" };
-    switch (roleType) {
-      case READER_ROLE:
-        return new UsernamePrincipal("reader" + index);
-      case WRITER_ROLE:
-        return new UsernamePrincipal("writer" + index);
-      default:
-        return new UsernamePrincipal(admins[index % admins.length]);
+  @Override
+  protected Properties init() throws IllegalArgumentException {
+    if (!this.generator.classCode().isDummy()) {
+      throw new IllegalArgumentException("DummyAuthorization module only works with DummyAuthenticator");
     }
+    return null;
   }
 
-  protected Principal getAllowedPrincipal(OperationCode[] opCodes,
-      String[] regionNames, int index) {
+  @Override
+  public ClassCode classCode() {
+    return ClassCode.DUMMY;
+  }
 
-    byte roleType = getRequiredRole(opCodes);
-    return getPrincipal(roleType, index);
+  @Override
+  public String getAuthorizationCallback() {
+    return templates.security.DummyAuthorization.class.getName() + ".create";
   }
 
-  protected Principal getDisallowedPrincipal(OperationCode[] opCodes,
-      String[] regionNames, int index) {
+  @Override
+  protected Principal getAllowedPrincipal(final OperationCode[] opCodes, final String[] regionNames, final int index) {
+    final byte roleType = getRequiredRole(opCodes);
+    return getPrincipal(roleType, index);
+  }
 
+  @Override
+  protected Principal getDisallowedPrincipal(final OperationCode[] opCodes, final String[] regionNames, final int index) {
     byte roleType = getRequiredRole(opCodes);
     byte disallowedRoleType;
     switch (roleType) {
@@ -133,9 +112,20 @@ public class DummyAuthzCredentialGenerator extends AuthzCredentialGenerator {
     return getPrincipal(disallowedRoleType, index);
   }
 
-  protected int getNumPrincipalTries(OperationCode[] opCodes,
-      String[] regionNames) {
+  @Override
+  protected int getNumPrincipalTries(final OperationCode[] opCodes,  final String[] regionNames) {
     return 5;
   }
 
+  private Principal getPrincipal(final byte roleType, final int index) {
+    String[] admins = new String[] { "root", "admin", "administrator" };
+    switch (roleType) {
+      case READER_ROLE:
+        return new UsernamePrincipal("reader" + index);
+      case WRITER_ROLE:
+        return new UsernamePrincipal("writer" + index);
+      default:
+        return new UsernamePrincipal(admins[index % admins.length]);
+    }
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a6388000/geode-core/src/test/java/security/DummyCredentialGenerator.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/security/DummyCredentialGenerator.java b/geode-core/src/test/java/security/DummyCredentialGenerator.java
index 5419587..9f15f88 100755
--- a/geode-core/src/test/java/security/DummyCredentialGenerator.java
+++ b/geode-core/src/test/java/security/DummyCredentialGenerator.java
@@ -26,65 +26,66 @@ import java.util.Properties;
 
 public class DummyCredentialGenerator extends CredentialGenerator {
 
-  public DummyCredentialGenerator() {
-  }
-
+  @Override
   protected Properties initialize() throws IllegalArgumentException {
     return null;
   }
 
+  @Override
   public ClassCode classCode() {
     return ClassCode.DUMMY;
   }
 
+  @Override
   public String getAuthInit() {
     return templates.security.UserPasswordAuthInit.class.getName() + ".create";
   }
 
+  @Override
   public String getAuthenticator() {
     return templates.security.DummyAuthenticator.class.getName() + ".create";
   }
 
-  public Properties getValidCredentials(int index) {
+  @Override
+  public Properties getValidCredentials(final int index) {
+    final String[] validGroups = new String[] { "admin", "user", "reader", "writer" };
+    final String[] admins = new String[] { "root", "admin", "administrator" };
 
-    String[] validGroups = new String[] { "admin", "user", "reader", "writer" };
-    String[] admins = new String[] { "root", "admin", "administrator" };
+    final Properties props = new Properties();
+    final int groupNum = index % validGroups.length;
 
-    Properties props = new Properties();
-    int groupNum = (index % validGroups.length);
     String userName;
     if (groupNum == 0) {
       userName = admins[index % admins.length];
-    }
-    else {
+    } else {
       userName = validGroups[groupNum] + (index / validGroups.length);
     }
+
     props.setProperty(UserPasswordAuthInit.USER_NAME, userName);
     props.setProperty(UserPasswordAuthInit.PASSWORD, userName);
     return props;
   }
 
-  public Properties getValidCredentials(Principal principal) {
+  @Override
+  public Properties getValidCredentials(final Principal principal) {
+    final String userName = principal.getName();
 
-    String userName = principal.getName();
-    if (DummyAuthenticator.testValidName(userName)) {
+    if (DummyAuthenticator.checkValidName(userName)) {
       Properties props = new Properties();
       props.setProperty(UserPasswordAuthInit.USER_NAME, userName);
       props.setProperty(UserPasswordAuthInit.PASSWORD, userName);
       return props;
-    }
-    else {
-      throw new IllegalArgumentException("Dummy: [" + userName
-          + "] is not a valid user");
+
+    } else {
+      throw new IllegalArgumentException("Dummy: [" + userName + "] is not a valid user");
     }
   }
 
+  @Override
   public Properties getInvalidCredentials(int index) {
-
     Properties props = new Properties();
     props.setProperty(UserPasswordAuthInit.USER_NAME, "invalid" + index);
     props.setProperty(UserPasswordAuthInit.PASSWORD, "none");
     return props;
   }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a6388000/geode-core/src/test/java/security/LdapUserCredentialGenerator.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/security/LdapUserCredentialGenerator.java b/geode-core/src/test/java/security/LdapUserCredentialGenerator.java
index 2b95616..bed169e 100755
--- a/geode-core/src/test/java/security/LdapUserCredentialGenerator.java
+++ b/geode-core/src/test/java/security/LdapUserCredentialGenerator.java
@@ -31,42 +31,42 @@ import java.util.Random;
 public class LdapUserCredentialGenerator extends CredentialGenerator {
 
   private static final String USER_PREFIX = "gemfire";
+  private static final Random RANDOM = new Random();
+  private static final String[] CIPHERS = new String[] { "", "DESede", "AES:128", "Blowfish:128" };
 
   private static boolean enableServerAuthentication = false;
 
   private boolean serverAuthEnabled = false;
 
-  private static final Random prng = new Random();
-
-  private static final String[] algos = new String[] { "", "DESede", "AES:128",
-      "Blowfish:128" };
-
   public LdapUserCredentialGenerator() {
     // Toggle server authentication enabled for each test
     // This is done instead of running all the tests with both
     // server auth enabled/disabled to reduce test run time.
     enableServerAuthentication = !enableServerAuthentication;
-    serverAuthEnabled = enableServerAuthentication;
+    this.serverAuthEnabled = enableServerAuthentication;
   }
 
   @Override
   protected Properties initialize() throws IllegalArgumentException {
+    final String ldapServer = System.getProperty("gf.ldap.server", "ldap");
+    final String ldapBaseDN = System.getProperty("gf.ldap.basedn", "ou=ldapTesting,dc=pune,dc=gemstone,dc=com");
+    final String ldapUseSSL = System.getProperty("gf.ldap.usessl");
 
-    Properties extraProps = new Properties();
-    String ldapServer = System.getProperty("gf.ldap.server", "ldap");
-    String ldapBaseDN = System.getProperty("gf.ldap.basedn", "ou=ldapTesting,dc=pune,dc=gemstone,dc=com");
-    String ldapUseSSL = System.getProperty("gf.ldap.usessl");
+    final Properties extraProps = new Properties();
     extraProps.setProperty(LdapUserAuthenticator.LDAP_SERVER_NAME, ldapServer);
     extraProps.setProperty(LdapUserAuthenticator.LDAP_BASEDN_NAME, ldapBaseDN);
+
     if (ldapUseSSL != null && ldapUseSSL.length() > 0) {
       extraProps.setProperty(LdapUserAuthenticator.LDAP_SSL_NAME, ldapUseSSL);
     }
+
     if (serverAuthEnabled) {
       String keyStoreFile = TestUtil.getResourcePath(LdapUserCredentialGenerator.class, PKCSCredentialGenerator.keyStoreDir + "/gemfire1.keystore");
       extraProps.setProperty(HandShake.PRIVATE_KEY_FILE_PROP, keyStoreFile);
       extraProps.setProperty(HandShake.PRIVATE_KEY_ALIAS_PROP, "gemfire1");
       extraProps.setProperty(HandShake.PRIVATE_KEY_PASSWD_PROP, "gemfire");
     }
+
     return extraProps;
   }
 
@@ -86,71 +86,71 @@ public class LdapUserCredentialGenerator extends CredentialGenerator {
   }
 
   @Override
-  public Properties getValidCredentials(int index) {
-
-    Properties props = new Properties();
-    props.setProperty(UserPasswordAuthInit.USER_NAME, USER_PREFIX
-        + ((index % 10) + 1));
-    props.setProperty(UserPasswordAuthInit.PASSWORD, USER_PREFIX
-        + ((index % 10) + 1));
-    props.setProperty(DistributionConfig.SECURITY_CLIENT_DHALGO_NAME,
-        algos[prng.nextInt(algos.length)]);
+  public Properties getValidCredentials(final int index) {
+    final Properties props = new Properties();
+    props.setProperty(UserPasswordAuthInit.USER_NAME, USER_PREFIX + ((index % 10) + 1));
+    props.setProperty(UserPasswordAuthInit.PASSWORD, USER_PREFIX + ((index % 10) + 1));
+    props.setProperty(DistributionConfig.SECURITY_CLIENT_DHALGO_NAME, CIPHERS[RANDOM.nextInt(CIPHERS.length)]);
+
     if (serverAuthEnabled) {
-      String keyStoreFile = TestUtil.getResourcePath(PKCSCredentialGenerator.class, PKCSCredentialGenerator.keyStoreDir + "/publickeyfile");
+      final String keyStoreFile = TestUtil.getResourcePath(PKCSCredentialGenerator.class, PKCSCredentialGenerator.keyStoreDir + "/publickeyfile");
       props.setProperty(HandShake.PUBLIC_KEY_FILE_PROP, keyStoreFile);
       props.setProperty(HandShake.PUBLIC_KEY_PASSWD_PROP, "gemfire");
     }
+
     return props;
   }
 
   @Override
-  public Properties getValidCredentials(Principal principal) {
-
+  public Properties getValidCredentials(final Principal principal) {
     Properties props = null;
-    String userName = principal.getName();
+    final String userName = principal.getName();
+
     if (userName != null && userName.startsWith(USER_PREFIX)) {
       boolean isValid;
+
       try {
-        int suffix = Integer.parseInt(userName.substring(USER_PREFIX.length()));
+        final int suffix = Integer.parseInt(userName.substring(USER_PREFIX.length()));
         isValid = (suffix >= 1 && suffix <= 10);
-      }
-      catch (Exception ex) {
+      } catch (Exception ex) {
         isValid = false;
       }
+
       if (isValid) {
         props = new Properties();
         props.setProperty(UserPasswordAuthInit.USER_NAME, userName);
         props.setProperty(UserPasswordAuthInit.PASSWORD, userName);
       }
     }
+
     if (props == null) {
-      throw new IllegalArgumentException("LDAP: [" + userName
-          + "] not a valid user");
+      throw new IllegalArgumentException("LDAP: [" + userName + "] not a valid user");
     }
-    props.setProperty(DistributionConfig.SECURITY_CLIENT_DHALGO_NAME,
-        algos[prng.nextInt(algos.length)]);
+
+    props.setProperty(DistributionConfig.SECURITY_CLIENT_DHALGO_NAME, CIPHERS[RANDOM.nextInt(CIPHERS.length)]);
+
     if (serverAuthEnabled) {
-      String keyStoreFile = TestUtil.getResourcePath(PKCSCredentialGenerator.class, PKCSCredentialGenerator.keyStoreDir + "/publickeyfile");
+      final String keyStoreFile = TestUtil.getResourcePath(PKCSCredentialGenerator.class, PKCSCredentialGenerator.keyStoreDir + "/publickeyfile");
       props.setProperty(HandShake.PUBLIC_KEY_FILE_PROP, keyStoreFile);
       props.setProperty(HandShake.PUBLIC_KEY_PASSWD_PROP, "gemfire");
     }
+
     return props;
   }
 
   @Override
-  public Properties getInvalidCredentials(int index) {
-
-    Properties props = new Properties();
+  public Properties getInvalidCredentials(final int index) {
+    final Properties props = new Properties();
     props.setProperty(UserPasswordAuthInit.USER_NAME, "invalid" + index);
     props.setProperty(UserPasswordAuthInit.PASSWORD, "none");
-    props.setProperty(DistributionConfig.SECURITY_CLIENT_DHALGO_NAME,
-        algos[prng.nextInt(algos.length)]);
+    props.setProperty(DistributionConfig.SECURITY_CLIENT_DHALGO_NAME, CIPHERS[RANDOM.nextInt(CIPHERS.length)]);
+
     if (serverAuthEnabled) {
-      String keyStoreFile = TestUtil.getResourcePath(PKCSCredentialGenerator.class, PKCSCredentialGenerator.keyStoreDir + "/publickeyfile");
+      final String keyStoreFile = TestUtil.getResourcePath(PKCSCredentialGenerator.class, PKCSCredentialGenerator.keyStoreDir + "/publickeyfile");
       props.setProperty(HandShake.PUBLIC_KEY_FILE_PROP, keyStoreFile);
       props.setProperty(HandShake.PUBLIC_KEY_PASSWD_PROP, "gemfire");
     }
+
     return props;
   }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a6388000/geode-core/src/test/java/security/PKCSCredentialGenerator.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/security/PKCSCredentialGenerator.java b/geode-core/src/test/java/security/PKCSCredentialGenerator.java
index 5b6d5fa..8239697 100755
--- a/geode-core/src/test/java/security/PKCSCredentialGenerator.java
+++ b/geode-core/src/test/java/security/PKCSCredentialGenerator.java
@@ -27,19 +27,14 @@ import java.security.Provider;
 import java.security.Security;
 import java.util.Properties;
 
-/**
- * @author kneeraj
- * 
- */
 public class PKCSCredentialGenerator extends CredentialGenerator {
 
   public static String keyStoreDir = getKeyStoreDir();
-
   public static boolean usesIBMJSSE;
 
   // Checks if the current JVM uses only IBM JSSE providers.
   private static boolean usesIBMProviders() {
-    Provider[] providers = Security.getProviders();
+    final Provider[] providers = Security.getProviders();
     for (int index = 0; index < providers.length; ++index) {
       if (!providers[index].getName().toLowerCase().startsWith("ibm")) {
         return false;
@@ -52,58 +47,71 @@ public class PKCSCredentialGenerator extends CredentialGenerator {
     usesIBMJSSE = usesIBMProviders();
     if (usesIBMJSSE) {
       return "/lib/keys/ibm";
-    }
-    else {
+    } else {
       return "/lib/keys";
     }
   }
 
+  @Override
+  protected Properties initialize() throws IllegalArgumentException {
+    final String keyStoreFile = TestUtil.getResourcePath(PKCSCredentialGenerator.class, keyStoreDir + "/publickeyfile");
+
+    final Properties props = new Properties();
+    props.setProperty(PKCSAuthenticator.PUBLIC_KEY_FILE, keyStoreFile);
+    props.setProperty(PKCSAuthenticator.PUBLIC_KEYSTORE_PASSWORD, "gemfire");
+
+    return props;
+  }
+
+  @Override
   public ClassCode classCode() {
     return ClassCode.PKCS;
   }
 
+  @Override
   public String getAuthInit() {
     return templates.security.PKCSAuthInit.class.getName() + ".create";
   }
 
+  @Override
   public String getAuthenticator() {
     return templates.security.PKCSAuthenticator.class.getName() + ".create";
   }
 
+  @Override
   public Properties getInvalidCredentials(int index) {
-    Properties props = new Properties();
-    String keyStoreFile = TestUtil.getResourcePath(PKCSCredentialGenerator.class, keyStoreDir + "/gemfire11.keystore");
+    final String keyStoreFile = TestUtil.getResourcePath(PKCSCredentialGenerator.class, keyStoreDir + "/gemfire11.keystore");
+
+    final Properties props = new Properties();
     props.setProperty(PKCSAuthInit.KEYSTORE_FILE_PATH, keyStoreFile);
     props.setProperty(PKCSAuthInit.KEYSTORE_ALIAS, "gemfire11");
     props.setProperty(PKCSAuthInit.KEYSTORE_PASSWORD, "gemfire");
+
     return props;
   }
 
+  @Override
   public Properties getValidCredentials(int index) {
-    Properties props = new Properties();
-    int aliasnum = (index % 10) + 1;
-    String keyStoreFile = TestUtil.getResourcePath(PKCSCredentialGenerator.class, keyStoreDir + "/gemfire" + aliasnum + ".keystore");
+    final int aliasnum = (index % 10) + 1;
+    final String keyStoreFile = TestUtil.getResourcePath(PKCSCredentialGenerator.class, keyStoreDir + "/gemfire" + aliasnum + ".keystore");
+
+    final Properties props = new Properties();
     props.setProperty(PKCSAuthInit.KEYSTORE_FILE_PATH, keyStoreFile);
     props.setProperty(PKCSAuthInit.KEYSTORE_ALIAS, "gemfire" + aliasnum);
     props.setProperty(PKCSAuthInit.KEYSTORE_PASSWORD, "gemfire");
+
     return props;
   }
 
+  @Override
   public Properties getValidCredentials(Principal principal) {
-    Properties props = new Properties();
-    String keyStoreFile = TestUtil.getResourcePath(PKCSCredentialGenerator.class, keyStoreDir + principal.getName() + ".keystore");
+    final String keyStoreFile = TestUtil.getResourcePath(PKCSCredentialGenerator.class, keyStoreDir + principal.getName() + ".keystore");
+
+    final Properties props = new Properties();
     props.setProperty(PKCSAuthInit.KEYSTORE_FILE_PATH, keyStoreFile);
     props.setProperty(PKCSAuthInit.KEYSTORE_ALIAS, principal.getName());
     props.setProperty(PKCSAuthInit.KEYSTORE_PASSWORD, "gemfire");
-    return props;
-  }
 
-  protected Properties initialize() throws IllegalArgumentException {
-    Properties props = new Properties();
-    String keyStoreFile = TestUtil.getResourcePath(PKCSCredentialGenerator.class, keyStoreDir + "/publickeyfile");
-    props.setProperty(PKCSAuthenticator.PUBLIC_KEY_FILE, keyStoreFile);
-    props.setProperty(PKCSAuthenticator.PUBLIC_KEYSTORE_PASSWORD, "gemfire");
     return props;
   }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a6388000/geode-core/src/test/java/security/SSLCredentialGenerator.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/security/SSLCredentialGenerator.java b/geode-core/src/test/java/security/SSLCredentialGenerator.java
index e547630..fb4dfc8 100755
--- a/geode-core/src/test/java/security/SSLCredentialGenerator.java
+++ b/geode-core/src/test/java/security/SSLCredentialGenerator.java
@@ -28,47 +28,87 @@ import java.security.Principal;
 import java.util.Properties;
 
 public class SSLCredentialGenerator extends CredentialGenerator {
+
   private static final Logger logger = LogService.getLogger();
 
+  @Override
+  protected Properties initialize() throws IllegalArgumentException {
+    this.javaProperties = getValidJavaSSLProperties();
+    return getSSLProperties();
+  }
+
+  @Override
+  public ClassCode classCode() {
+    return ClassCode.SSL;
+  }
+
+  @Override
+  public String getAuthInit() {
+    return null;
+  }
+
+  @Override
+  public String getAuthenticator() {
+    return null;
+  }
+
+  @Override
+  public Properties getValidCredentials(int index) {
+    this.javaProperties = getValidJavaSSLProperties();
+    return getSSLProperties();
+  }
+
+  @Override
+  public Properties getValidCredentials(final Principal principal) {
+    this.javaProperties = getValidJavaSSLProperties();
+    return getSSLProperties();
+  }
+
+  @Override
+  public Properties getInvalidCredentials(final int index) {
+    this.javaProperties = getInvalidJavaSSLProperties();
+    return getSSLProperties();
+  }
+
   private File findTrustedJKS() {
-    File ssldir = new File(System.getProperty("JTESTS") + "/ssl");
+    final File ssldir = new File(System.getProperty("JTESTS") + "/ssl");
     return new File(ssldir, "trusted.keystore");
   }
 
   private File findUntrustedJKS() {
-    File ssldir = new File(System.getProperty("JTESTS") + "/ssl");
+    final File ssldir = new File(System.getProperty("JTESTS") + "/ssl");
     return new File(ssldir, "untrusted.keystore");
   }
 
   private Properties getValidJavaSSLProperties() {
-    File jks = findTrustedJKS();
+    final File jks = findTrustedJKS();
+
     try {
-      Properties props = new Properties();
+      final Properties props = new Properties();
       props.setProperty("javax.net.ssl.trustStore", jks.getCanonicalPath());
       props.setProperty("javax.net.ssl.trustStorePassword", "password");
       props.setProperty("javax.net.ssl.keyStore", jks.getCanonicalPath());
       props.setProperty("javax.net.ssl.keyStorePassword", "password");
       return props;
-    }
-    catch (IOException ex) {
-      throw new AuthenticationFailedException(
-          "SSL: Exception while opening the key store: " + ex.getMessage(), ex);
+
+    } catch (IOException ex) {
+      throw new AuthenticationFailedException("SSL: Exception while opening the key store: " + ex.getMessage(), ex);
     }
   }
 
   private Properties getInvalidJavaSSLProperties() {
-    File jks = findUntrustedJKS();
+    final File jks = findUntrustedJKS();
+
     try {
-      Properties props = new Properties();
+      final Properties props = new Properties();
       props.setProperty("javax.net.ssl.trustStore", jks.getCanonicalPath());
       props.setProperty("javax.net.ssl.trustStorePassword", "password");
       props.setProperty("javax.net.ssl.keyStore", jks.getCanonicalPath());
       props.setProperty("javax.net.ssl.keyStorePassword", "password");
       return props;
-    }
-    catch (IOException ex) {
-      throw new AuthenticationFailedException(
-          "SSL: Exception while opening the key store: " + ex.getMessage(), ex);
+
+    } catch (IOException ex) {
+      throw new AuthenticationFailedException("SSL: Exception while opening the key store: " + ex.getMessage(), ex);
     }
   }
 
@@ -80,37 +120,4 @@ public class SSLCredentialGenerator extends CredentialGenerator {
     props.setProperty("ssl-protocols", "TLSv1");
     return props;
   }
-
-  protected Properties initialize() throws IllegalArgumentException {
-    this.javaProps = getValidJavaSSLProperties();
-    return getSSLProperties();
-  }
-
-  public ClassCode classCode() {
-    return ClassCode.SSL;
-  }
-
-  public String getAuthInit() {
-    return null;
-  }
-
-  public String getAuthenticator() {
-    return null;
-  }
-
-  public Properties getValidCredentials(int index) {
-    this.javaProps = getValidJavaSSLProperties();
-    return getSSLProperties();
-  }
-
-  public Properties getValidCredentials(Principal principal) {
-    this.javaProps = getValidJavaSSLProperties();
-    return getSSLProperties();
-  }
-
-  public Properties getInvalidCredentials(int index) {
-    this.javaProps = getInvalidJavaSSLProperties();
-    return getSSLProperties();
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a6388000/geode-core/src/test/java/security/UserPasswordWithExtraPropsAuthInit.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/security/UserPasswordWithExtraPropsAuthInit.java b/geode-core/src/test/java/security/UserPasswordWithExtraPropsAuthInit.java
index cc585cd..5965e5c 100755
--- a/geode-core/src/test/java/security/UserPasswordWithExtraPropsAuthInit.java
+++ b/geode-core/src/test/java/security/UserPasswordWithExtraPropsAuthInit.java
@@ -33,15 +33,13 @@ import java.util.Properties;
  * properties provided in getCredential props argument will also be 
  * copied as new credentials.
  * 
- * @author Soubhik
  * @since 5.5
  */
 public class UserPasswordWithExtraPropsAuthInit extends UserPasswordAuthInit {
 
+  public static final String SECURITY_PREFIX = "security-";
   public static final String EXTRA_PROPS = "security-keep-extra-props";
 
-  public static final String SECURITY_PREFIX = "security-";
-  
   public static AuthInitialize create() {
     return new UserPasswordWithExtraPropsAuthInit();
   }
@@ -50,25 +48,23 @@ public class UserPasswordWithExtraPropsAuthInit extends UserPasswordAuthInit {
     super();
   }
 
-  public Properties getCredentials(Properties props, DistributedMember server,
-      boolean isPeer) throws AuthenticationFailedException {
+  public Properties getCredentials(final Properties securityProperties, final DistributedMember server, final boolean isPeer) throws AuthenticationFailedException {
+    final Properties securityPropertiesCopy = super.getCredentials(securityProperties, server, isPeer);
+    final String extraProps = securityProperties.getProperty(EXTRA_PROPS);
 
-    Properties newProps = super.getCredentials(props, server, isPeer);
-    String extraProps = props.getProperty(EXTRA_PROPS);
-    if(extraProps != null) {
-    	for(Iterator it = props.keySet().iterator(); it.hasNext();) {
-    		String key = (String)it.next();
-    		if( key.startsWith(SECURITY_PREFIX) && 
+    if (extraProps != null) {
+    	for (Iterator it = securityProperties.keySet().iterator(); it.hasNext();) {
+    		final String key = (String) it.next();
+    		if (key.startsWith(SECURITY_PREFIX) &&
     		    key.equalsIgnoreCase(USER_NAME) == false &&
     		    key.equalsIgnoreCase(PASSWORD) == false &&
     		    key.equalsIgnoreCase(EXTRA_PROPS) == false) {
-    			newProps.setProperty(key, props.getProperty(key));
+    			securityPropertiesCopy.setProperty(key, securityProperties.getProperty(key));
     		}
     	}
-    	this.securitylog.fine("got everything and now have: "
-          + newProps.keySet().toString());
+    	this.securityLogWriter.fine("got everything and now have: " + securityPropertiesCopy.keySet().toString());
     }
-    return newProps;
-  }
 
+    return securityPropertiesCopy;
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a6388000/geode-core/src/test/java/security/XmlAuthzCredentialGenerator.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/security/XmlAuthzCredentialGenerator.java b/geode-core/src/test/java/security/XmlAuthzCredentialGenerator.java
index 118e86f..4eaf01a 100755
--- a/geode-core/src/test/java/security/XmlAuthzCredentialGenerator.java
+++ b/geode-core/src/test/java/security/XmlAuthzCredentialGenerator.java
@@ -31,106 +31,104 @@ import java.util.Set;
 public class XmlAuthzCredentialGenerator extends AuthzCredentialGenerator {
 
   private static final String dummyXml = "authz-dummy.xml";
-
   private static final String ldapXml = "authz-ldap.xml";
-
   private static final String pkcsXml = "authz-pkcs.xml";
-
   private static final String sslXml = "authz-ssl.xml";
 
-  private static final String[] QUERY_REGIONS = { "/Portfolios", "/Positions",
-      "/AuthRegion" };
+  private static final String[] QUERY_REGIONS = { "/Portfolios", "/Positions", "/AuthRegion" };
 
-  public static OperationCode[] READER_OPS = { OperationCode.GET,
-      OperationCode.REGISTER_INTEREST, OperationCode.UNREGISTER_INTEREST,
-      OperationCode.KEY_SET, OperationCode.CONTAINS_KEY, OperationCode.EXECUTE_FUNCTION };
+  public static OperationCode[] READER_OPS = {
+      OperationCode.GET,
+      OperationCode.REGISTER_INTEREST,
+      OperationCode.UNREGISTER_INTEREST,
+      OperationCode.KEY_SET,
+      OperationCode.CONTAINS_KEY,
+      OperationCode.EXECUTE_FUNCTION };
 
-  public static OperationCode[] WRITER_OPS = { OperationCode.PUT,
-      OperationCode.DESTROY, OperationCode.INVALIDATE, OperationCode.REGION_CLEAR };
+  public static OperationCode[] WRITER_OPS = {
+      OperationCode.PUT,
+      OperationCode.DESTROY,
+      OperationCode.INVALIDATE,
+      OperationCode.REGION_CLEAR };
 
-  public static OperationCode[] QUERY_OPS = { OperationCode.QUERY,
-      OperationCode.EXECUTE_CQ, OperationCode.STOP_CQ, OperationCode.CLOSE_CQ };
+  public static OperationCode[] QUERY_OPS = {
+      OperationCode.QUERY,
+      OperationCode.EXECUTE_CQ,
+      OperationCode.STOP_CQ,
+      OperationCode.CLOSE_CQ };
 
   private static final byte READER_ROLE = 1;
-
   private static final byte WRITER_ROLE = 2;
-
   private static final byte QUERY_ROLE = 3;
-
   private static final byte ADMIN_ROLE = 4;
 
   private static Set readerOpsSet;
-
   private static Set writerOpsSet;
-
   private static Set queryOpsSet;
-
   private static Set queryRegionSet;
 
   static {
-
     readerOpsSet = new HashSet();
     for (int index = 0; index < READER_OPS.length; index++) {
       readerOpsSet.add(READER_OPS[index]);
     }
+
     writerOpsSet = new HashSet();
     for (int index = 0; index < WRITER_OPS.length; index++) {
       writerOpsSet.add(WRITER_OPS[index]);
     }
+
     queryOpsSet = new HashSet();
     for (int index = 0; index < QUERY_OPS.length; index++) {
       queryOpsSet.add(QUERY_OPS[index]);
     }
+
     queryRegionSet = new HashSet();
     for (int index = 0; index < QUERY_REGIONS.length; index++) {
       queryRegionSet.add(QUERY_REGIONS[index]);
     }
   }
 
-  public XmlAuthzCredentialGenerator() {
-  }
-
+  @Override
   protected Properties init() throws IllegalArgumentException {
+    final Properties sysProps = new Properties();
+    final String dirName = "/lib/";
 
-    Properties sysProps = new Properties();
-    String dirName = "/lib/";
-    if (this.cGen.classCode().isDummy()) {
-      String xmlFilename = TestUtil.getResourcePath(XmlAuthzCredentialGenerator.class, dirName + dummyXml);
+    if (this.generator.classCode().isDummy()) {
+      final String xmlFilename = TestUtil.getResourcePath(XmlAuthzCredentialGenerator.class, dirName + dummyXml);
       sysProps.setProperty(XmlAuthorization.DOC_URI_PROP_NAME, xmlFilename);
-    }
-    else if (this.cGen.classCode().isLDAP()) {
-      String xmlFilename = TestUtil.getResourcePath(XmlAuthzCredentialGenerator.class, dirName + ldapXml);
+
+    } else if (this.generator.classCode().isLDAP()) {
+      final String xmlFilename = TestUtil.getResourcePath(XmlAuthzCredentialGenerator.class, dirName + ldapXml);
       sysProps.setProperty(XmlAuthorization.DOC_URI_PROP_NAME, xmlFilename);
-    }
-    // else if (this.cGen.classCode().isPKCS()) {
-    // sysProps
-    // .setProperty(XmlAuthorization.DOC_URI_PROP_NAME, dirName + pkcsXml);
-    // }
-    // else if (this.cGen.classCode().isSSL()) {
-    // sysProps
-    // .setProperty(XmlAuthorization.DOC_URI_PROP_NAME, dirName + sslXml);
-    // }
-    else {
-      throw new IllegalArgumentException(
-          "No XML defined for XmlAuthorization module to work with "
-              + this.cGen.getAuthenticator());
+
+      // } else if (this.generator.classCode().isPKCS()) {
+      //   sysProps.setProperty(XmlAuthorization.DOC_URI_PROP_NAME, dirName + pkcsXml);
+      // }
+      // } else if (this.generator.classCode().isSSL()) {
+      //   sysProps.setProperty(XmlAuthorization.DOC_URI_PROP_NAME, dirName + sslXml);
+      // }
+
+    } else {
+      throw new IllegalArgumentException("No XML defined for XmlAuthorization module to work with " + this.generator.getAuthenticator());
     }
     return sysProps;
   }
 
+  @Override
   public ClassCode classCode() {
     return ClassCode.XML;
   }
 
+  @Override
   public String getAuthorizationCallback() {
     return templates.security.XmlAuthorization.class.getName() + ".create";
   }
 
-  private Principal getDummyPrincipal(byte roleType, int index) {
-
-    String[] admins = new String[] { "root", "admin", "administrator" };
-    int numReaders = 3;
-    int numWriters = 3;
+  private Principal getDummyPrincipal(final byte roleType, final int index) {
+    final String[] admins = new String[] { "root", "admin", "administrator" };
+    final int numReaders = 3;
+    final int numWriters = 3;
 
     switch (roleType) {
       case READER_ROLE:
@@ -144,8 +142,56 @@ public class XmlAuthzCredentialGenerator extends AuthzCredentialGenerator {
     }
   }
 
-  private Principal getLdapPrincipal(byte roleType, int index) {
+  @Override
+  protected Principal getAllowedPrincipal(final OperationCode[] opCodes, final String[] regionNames, final int index) {
+    if (this.generator.classCode().isDummy()) {
+      final byte roleType = getRequiredRole(opCodes, regionNames);
+      return getDummyPrincipal(roleType, index);
+
+    } else if (this.generator.classCode().isLDAP()) {
+      final byte roleType = getRequiredRole(opCodes, regionNames);
+      return getLdapPrincipal(roleType, index);
+    }
+
+    return null;
+  }
+
+  @Override
+  protected Principal getDisallowedPrincipal(final OperationCode[] opCodes, final String[] regionNames, final int index) {
+    final byte roleType = getRequiredRole(opCodes, regionNames);
+
+    byte disallowedRoleType = READER_ROLE;
+    switch (roleType) {
+      case READER_ROLE:
+        disallowedRoleType = WRITER_ROLE;
+        break;
+      case WRITER_ROLE:
+        disallowedRoleType = READER_ROLE;
+        break;
+      case QUERY_ROLE:
+        disallowedRoleType = READER_ROLE;
+        break;
+      case ADMIN_ROLE:
+        disallowedRoleType = READER_ROLE;
+        break;
+    }
+
+    if (this.generator.classCode().isDummy()) {
+      return getDummyPrincipal(disallowedRoleType, index);
+
+    } else if (this.generator.classCode().isLDAP()) {
+      return getLdapPrincipal(disallowedRoleType, index);
+    }
+
+    return null;
+  }
+
+  @Override
+  protected int getNumPrincipalTries(final OperationCode[] opCodes, final String[] regionNames) {
+    return 5;
+  }
 
+  private Principal getLdapPrincipal(final byte roleType, final int index) {
     final String userPrefix = "gemfire";
     final int[] readerIndices = { 3, 4, 5 };
     final int[] writerIndices = { 6, 7, 8 };
@@ -168,15 +214,14 @@ public class XmlAuthzCredentialGenerator extends AuthzCredentialGenerator {
     }
   }
 
-  private byte getRequiredRole(OperationCode[] opCodes, String[] regionNames) {
-
+  private byte getRequiredRole(final OperationCode[] opCodes, final String[] regionNames) {
     byte roleType = ADMIN_ROLE;
     boolean requiresReader = true;
     boolean requiresWriter = true;
     boolean requiresQuery = true;
 
     for (int opNum = 0; opNum < opCodes.length; opNum++) {
-      OperationCode opCode = opCodes[opNum];
+      final OperationCode opCode = opCodes[opNum];
       if (requiresReader && !readerOpsSet.contains(opCode)) {
         requiresReader = false;
       }
@@ -187,17 +232,17 @@ public class XmlAuthzCredentialGenerator extends AuthzCredentialGenerator {
         requiresQuery = false;
       }
     }
+
     if (requiresReader) {
       roleType = READER_ROLE;
-    }
-    else if (requiresWriter) {
+
+    } else if (requiresWriter) {
       roleType = WRITER_ROLE;
-    }
-    else if (requiresQuery) {
+
+    } else if (requiresQuery) {
       if (regionNames != null && regionNames.length > 0) {
         for (int index = 0; index < regionNames.length; index++) {
-          String regionName = XmlAuthorization
-              .normalizeRegionName(regionNames[index]);
+          final String regionName = XmlAuthorization.normalizeRegionName(regionNames[index]);
           if (requiresQuery && !queryRegionSet.contains(regionName)) {
             requiresQuery = false;
             break;
@@ -208,54 +253,7 @@ public class XmlAuthzCredentialGenerator extends AuthzCredentialGenerator {
         }
       }
     }
-    return roleType;
-  }
-
-  protected Principal getAllowedPrincipal(OperationCode[] opCodes,
-      String[] regionNames, int index) {
-
-    if (this.cGen.classCode().isDummy()) {
-      byte roleType = getRequiredRole(opCodes, regionNames);
-      return getDummyPrincipal(roleType, index);
-    }
-    else if (this.cGen.classCode().isLDAP()) {
-      byte roleType = getRequiredRole(opCodes, regionNames);
-      return getLdapPrincipal(roleType, index);
-    }
-    return null;
-  }
-
-  protected Principal getDisallowedPrincipal(OperationCode[] opCodes,
-      String[] regionNames, int index) {
 
-    byte roleType = getRequiredRole(opCodes, regionNames);
-    byte disallowedRoleType = READER_ROLE;
-    switch (roleType) {
-      case READER_ROLE:
-        disallowedRoleType = WRITER_ROLE;
-        break;
-      case WRITER_ROLE:
-        disallowedRoleType = READER_ROLE;
-        break;
-      case QUERY_ROLE:
-        disallowedRoleType = READER_ROLE;
-        break;
-      case ADMIN_ROLE:
-        disallowedRoleType = READER_ROLE;
-        break;
-    }
-    if (this.cGen.classCode().isDummy()) {
-      return getDummyPrincipal(disallowedRoleType, index);
-    }
-    else if (this.cGen.classCode().isLDAP()) {
-      return getLdapPrincipal(disallowedRoleType, index);
-    }
-    return null;
-  }
-
-  protected int getNumPrincipalTries(OperationCode[] opCodes,
-      String[] regionNames) {
-    return 5;
+    return roleType;
   }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a6388000/geode-core/src/test/java/templates/security/DummyAuthenticator.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/templates/security/DummyAuthenticator.java b/geode-core/src/test/java/templates/security/DummyAuthenticator.java
index 5070836..c7fd39e 100755
--- a/geode-core/src/test/java/templates/security/DummyAuthenticator.java
+++ b/geode-core/src/test/java/templates/security/DummyAuthenticator.java
@@ -16,20 +16,19 @@
  */
 package templates.security;
 
+import java.security.Principal;
+import java.util.Properties;
+
 import com.gemstone.gemfire.LogWriter;
 import com.gemstone.gemfire.distributed.DistributedMember;
 import com.gemstone.gemfire.security.AuthenticationFailedException;
 import com.gemstone.gemfire.security.Authenticator;
 
-import java.security.Principal;
-import java.util.Properties;
-
 /**
  * A dummy implementation of the {@link Authenticator} interface that expects a
  * user name and password allowing authentication depending on the format of the
  * user name.
- * 
- * @author Sumedh Wale
+ *
  * @since 5.5
  */
 public class DummyAuthenticator implements Authenticator {
@@ -38,47 +37,39 @@ public class DummyAuthenticator implements Authenticator {
     return new DummyAuthenticator();
   }
 
-  public DummyAuthenticator() {
+  public static boolean checkValidName(final String userName) {
+    return userName.startsWith("user") ||
+           userName.startsWith("reader") ||
+           userName.startsWith("writer") ||
+           userName.equals("admin") ||
+           userName.equals("root") ||
+           userName.equals("administrator");
   }
 
-  public void init(Properties systemProps, LogWriter systemLogger,
-      LogWriter securityLogger) throws AuthenticationFailedException {
+  @Override
+  public void init(final Properties securityProperties, final LogWriter systemLogWriter, final LogWriter securityLogWriter) throws AuthenticationFailedException {
   }
 
-  public static boolean testValidName(String userName) {
-
-    return (userName.startsWith("user") || userName.startsWith("reader")
-        || userName.startsWith("writer") || userName.equals("admin")
-        || userName.equals("root") || userName.equals("administrator"));
-  }
-
-  public Principal authenticate(Properties props, DistributedMember member)
-      throws AuthenticationFailedException {
-
-    String userName = props.getProperty(UserPasswordAuthInit.USER_NAME);
+  @Override
+  public Principal authenticate(final Properties credentials, final DistributedMember member) throws AuthenticationFailedException {
+    final String userName = credentials.getProperty(UserPasswordAuthInit.USER_NAME);
     if (userName == null) {
-      throw new AuthenticationFailedException(
-          "DummyAuthenticator: user name property ["
-              + UserPasswordAuthInit.USER_NAME + "] not provided");
+      throw new AuthenticationFailedException("DummyAuthenticator: user name property [" + UserPasswordAuthInit.USER_NAME + "] not provided");
     }
-    String password = props.getProperty(UserPasswordAuthInit.PASSWORD);
+
+    final String password = credentials.getProperty(UserPasswordAuthInit.PASSWORD);
     if (password == null) {
-      throw new AuthenticationFailedException(
-          "DummyAuthenticator: password property ["
-              + UserPasswordAuthInit.PASSWORD + "] not provided");
+      throw new AuthenticationFailedException( "DummyAuthenticator: password property [" + UserPasswordAuthInit.PASSWORD + "] not provided");
     }
 
-    if (userName.equals(password) && testValidName(userName)) {
+    if (userName.equals(password) && checkValidName(userName)) {
       return new UsernamePrincipal(userName);
-    }
-    else {
-      throw new AuthenticationFailedException(
-          "DummyAuthenticator: Invalid user name [" + userName
-              + "], password supplied.");
+    } else {
+      throw new AuthenticationFailedException("DummyAuthenticator: Invalid user name [" + userName + "], password supplied.");
     }
   }
 
+  @Override
   public void close() {
   }
-
 }